@cookbook/urlkit 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -35
- package/dist/{compile-path-COU1uxXm.js → compile-path-oMMfpXR8.js} +321 -84
- package/dist/compile-path-oMMfpXR8.js.map +1 -0
- package/dist/{compile-static-search-CCwJuNC3.js → compile-static-search-c2f2FB_l.js} +2 -2
- package/dist/{compile-static-search-CCwJuNC3.js.map → compile-static-search-c2f2FB_l.js.map} +1 -1
- package/dist/{create-url-contract-DAU3UCJ6.js → create-url-contract-DcYa3Jv4.js} +2 -2
- package/dist/{create-url-contract-DAU3UCJ6.js.map → create-url-contract-DcYa3Jv4.js.map} +1 -1
- package/dist/date/contracts.d.ts +1 -0
- package/dist/date/date-format-string.d.ts +9 -0
- package/dist/index.js +43 -6
- package/dist/index.js.map +1 -1
- package/dist/router-runtime.js +6 -5
- package/dist/router-runtime.js.map +1 -1
- package/dist/schema/date-time.d.ts +7 -1
- package/dist/schema/date.d.ts +2 -2
- package/dist/static.js +4 -3
- package/dist/static.js.map +1 -1
- package/dist/url/path-param-kind.d.ts +2 -1
- package/package.json +1 -1
- package/dist/compile-path-COU1uxXm.js.map +0 -1
- package/dist/url/register-urlkit-path-constraints.d.ts +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-url-contract-DAU3UCJ6.js","sources":["../src/schema/parse-compiled-runtime-schema-value.ts","../src/schema/parse-runtime-schema-value.ts","../src/schema/serialize-compiled-runtime-schema-value.ts","../src/schema/serialize-runtime-schema-value.ts","../src/schema/array.ts","../src/schema/object.ts","../src/hash/copy-normalized-hash-descriptor.ts","../src/hash/validate-normalized-hash-value.ts","../src/hash/compile-normalized-hash-descriptor.ts","../src/hash/compile-runtime-hash-descriptor.ts","../src/hash/is-normalized-hash-descriptor.ts","../src/hash/compile-hash-descriptor.ts","../src/hash/hash-fragment.ts","../src/hash/build-hash.ts","../src/hash/parse-hash.ts","../src/schema/is-runtime-schema-kind.ts","../src/search/append-search-entry.ts","../src/search/object-search-key.ts","../src/search/append-object-search-entries.ts","../src/search/are-search-values-equal.ts","../src/search/normalize-search-build-value.ts","../src/search/serialize-search-build-value.ts","../src/search/serialize-search-entries.ts","../src/search/build-compiled-search.ts","../src/search/append-raw-search-value.ts","../src/search/create-search-params.ts","../src/search/parse-raw-search.ts","../src/search/copy-raw-search-params.ts","../src/search/collect-object-search-paths.ts","../src/search/object-search-raw-key-path.ts","../src/search/object-search-path-key.ts","../src/search/delete-search-field-raw-keys.ts","../src/search/search-array-format.ts","../src/search/parse-array-search-value.ts","../src/search/assert-object-search-collisions.ts","../src/search/find-object-search-raw-value.ts","../src/search/parse-object-search-value.ts","../src/search/parse-search-field-value.ts","../src/search/parse-compiled-search.ts","../src/search/copy-unknown-structured-search.ts","../src/search/normalize-compiled-search.ts","../src/url/url-state-brand.ts","../src/url/normalize-compiled-url.ts","../src/url/build-compiled-url.ts","../src/url/parse-url.ts","../src/url/resolve-url-unknown-search.ts","../src/url/parse-compiled-url.ts","../src/url/parse-request.ts","../src/url/match-url.ts","../src/search/build-raw-search.ts","../src/search/filter-raw-search.ts","../src/url/format-parsed-url.ts","../src/url/filter-compiled-url-search.ts","../src/search/join-search-strings.ts","../src/search/has-search-field-raw-value.ts","../src/search/parse-partial-compiled-search.ts","../src/url/patch-compiled-url-search.ts","../src/url/replace-compiled-url-search.ts","../src/url/compile-url-descriptor.ts","../src/url/create-url-contract.ts"],"sourcesContent":["import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RuntimeSchemaValueOptions } from './contracts.js';\nimport type { CompiledRuntimeSchema } from './compile-runtime-schema-value.js';\nimport { createSchemaValueError } from './create-schema-value-error.js';\nimport { handleRuntimeSchemaAbsence } from './handle-runtime-schema-absence.js';\nimport { createRuntimeSchemaValueContext } from './runtime-schema-value-context.js';\n\nexport function parseCompiledRuntimeSchemaValue<Value = unknown>(\n compiled: CompiledRuntimeSchema<Value>,\n input: unknown,\n options: RuntimeSchemaValueOptions = {},\n): Value {\n const absence = handleRuntimeSchemaAbsence(compiled.descriptor, input, options);\n\n if (absence.handled) {\n return absence.value as Value;\n }\n\n if (typeof input !== 'string') {\n throw createSchemaValueError(\n options.errorCode ?? 'invalid-search',\n 'Serialized schema values must be strings.',\n options.path ?? [],\n );\n }\n\n if (!compiled.codec) {\n throw new UrlKitError(\n 'invalid-descriptor',\n `Runtime schema \"${compiled.descriptor.kind}\" does not define a parser.`,\n options.path ? { path: options.path } : undefined,\n );\n }\n\n try {\n return compiled.codec.parse(\n input,\n createRuntimeSchemaValueContext(compiled.descriptor.kind, options),\n );\n } catch (error) {\n if (error instanceof UrlKitError) {\n throw error;\n }\n\n throw createSchemaValueError(\n options.errorCode ?? 'invalid-search',\n 'Schema value is invalid.',\n options.path ?? [],\n error,\n );\n }\n}\n","import type {\n NormalizedRuntimeSchemaDescriptor,\n RuntimeSchemaBuilder,\n RuntimeSchemaOptions,\n RuntimeSchemaValueOptions,\n} from './contracts.js';\nimport { compileRuntimeSchemaValue } from './compile-runtime-schema-value.js';\nimport { parseCompiledRuntimeSchemaValue } from './parse-compiled-runtime-schema-value.js';\n\nexport function parseRuntimeSchemaValue<\n Value,\n Kind extends string,\n Options extends RuntimeSchemaOptions,\n Descriptor extends NormalizedRuntimeSchemaDescriptor<Kind, Options>,\n>(\n schema: RuntimeSchemaBuilder<Value, Kind, Options, Descriptor>,\n input: unknown,\n options: RuntimeSchemaValueOptions = {},\n): Value {\n return parseCompiledRuntimeSchemaValue(\n compileRuntimeSchemaValue(schema, options),\n input,\n options,\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RuntimeSchemaValueOptions } from './contracts.js';\nimport type { CompiledRuntimeSchema } from './compile-runtime-schema-value.js';\nimport { createSchemaValueError } from './create-schema-value-error.js';\nimport { handleRuntimeSchemaAbsence } from './handle-runtime-schema-absence.js';\nimport { createRuntimeSchemaValueContext } from './runtime-schema-value-context.js';\n\nexport function serializeCompiledRuntimeSchemaValue<Value = unknown>(\n compiled: CompiledRuntimeSchema<Value>,\n input: unknown,\n options: RuntimeSchemaValueOptions = {},\n): string | undefined {\n const absence = handleRuntimeSchemaAbsence(compiled.descriptor, input, options);\n\n if (absence.handled) {\n if (absence.value === undefined) {\n return undefined;\n }\n\n input = absence.value;\n }\n\n if (!compiled.codec) {\n throw new UrlKitError(\n 'invalid-descriptor',\n `Runtime schema \"${compiled.descriptor.kind}\" does not define a serializer.`,\n options.path ? { path: options.path } : undefined,\n );\n }\n\n try {\n const context = createRuntimeSchemaValueContext(compiled.descriptor.kind, options);\n const normalized = compiled.codec.normalize(input, context);\n return compiled.codec.serialize(normalized, context);\n } catch (error) {\n if (error instanceof UrlKitError) {\n throw error;\n }\n\n throw createSchemaValueError(\n options.errorCode ?? 'invalid-search',\n 'Schema value is invalid.',\n options.path ?? [],\n error,\n );\n }\n}\n","import type {\n NormalizedRuntimeSchemaDescriptor,\n RuntimeSchemaBuilder,\n RuntimeSchemaOptions,\n RuntimeSchemaValueOptions,\n} from './contracts.js';\nimport { compileRuntimeSchemaValue } from './compile-runtime-schema-value.js';\nimport { serializeCompiledRuntimeSchemaValue } from './serialize-compiled-runtime-schema-value.js';\n\nexport function serializeRuntimeSchemaValue<\n Value,\n Kind extends string,\n Options extends RuntimeSchemaOptions,\n Descriptor extends NormalizedRuntimeSchemaDescriptor<Kind, Options>,\n>(\n schema: RuntimeSchemaBuilder<Value, Kind, Options, Descriptor>,\n input: unknown,\n options: RuntimeSchemaValueOptions = {},\n): string | undefined {\n return serializeCompiledRuntimeSchemaValue(\n compileRuntimeSchemaValue(schema, options),\n input,\n options,\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type {\n AnyRuntimeSchemaBuilder,\n InferRuntimeSchemaValue,\n NormalizedRuntimeSchemaDescriptor,\n RequiredRuntimeSchemaDescriptor,\n RuntimeDefaultValidationContext,\n RuntimeSchemaCodec,\n RuntimeSchemaOptions,\n RuntimeSchemaBuilder,\n RuntimeSchemaValueContext,\n} from './contracts.js';\nimport {\n runtimeSchemaSymbol,\n type RuntimeSchemaBuilderWithInternals,\n} from './runtime-schema-symbol.js';\nimport { compileRuntimeSchema } from './compile-runtime-schema.js';\nimport { getRuntimeSchemaInternals } from './get-runtime-schema-internals.js';\nimport { createRuntimeSchemaBuilder } from './create-schema-builder.js';\nimport { createSchemaValueError } from './create-schema-value-error.js';\nimport { normalizeRuntimeSchemaValue } from './normalize-runtime-schema-value.js';\nimport { parseRuntimeSchemaValue } from './parse-runtime-schema-value.js';\nimport { serializeRuntimeSchemaValue } from './serialize-runtime-schema-value.js';\n\nexport interface ArraySchemaOptions<\n ElementDescriptor extends NormalizedRuntimeSchemaDescriptor = NormalizedRuntimeSchemaDescriptor,\n> extends RuntimeSchemaOptions {\n readonly element: ElementDescriptor;\n}\n\nexport interface ArraySchema<Schema extends AnyRuntimeSchemaBuilder> extends RuntimeSchemaBuilder<\n readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[],\n 'array',\n ArraySchemaOptions,\n RequiredRuntimeSchemaDescriptor<'array', ArraySchemaOptions>\n> {}\n\nconst arrayElements = new WeakMap<AnyRuntimeSchemaBuilder, AnyRuntimeSchemaBuilder>();\n\nexport function array<Schema extends AnyRuntimeSchemaBuilder>(\n element: Schema,\n): ArraySchema<Schema> {\n const elementDescriptor = createElementDescriptor(element);\n\n const builder = createRuntimeSchemaBuilder<\n readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[],\n 'array',\n ArraySchemaOptions\n >({\n kind: 'array',\n options: {\n element: elementDescriptor,\n },\n codec: createArrayCodec(element) as RuntimeSchemaCodec<\n readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[]\n >,\n validateDescriptor(context) {\n compileRuntimeSchema(element, { path: [...context.path, '*'] });\n },\n validateDefault(value, context) {\n validateArrayDefault(element, value, context);\n },\n });\n\n return withArrayElement(builder, element);\n}\n\nexport function parseArrayRuntimeSchemaValue<Schema extends AnyRuntimeSchemaBuilder>(\n schema: ArraySchema<Schema>,\n input: string | readonly string[],\n context: RuntimeSchemaValueContext,\n): readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[] {\n const values = Array.isArray(input) ? input : [input];\n const element = getArrayElementSchema(schema);\n\n return Object.freeze(\n values.map(\n (value) =>\n parseRuntimeSchemaValue(element, value, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n }) as Exclude<InferRuntimeSchemaValue<Schema>, undefined>,\n ),\n );\n}\n\nexport function serializeArrayRuntimeSchemaValue<Schema extends AnyRuntimeSchemaBuilder>(\n schema: ArraySchema<Schema>,\n input: unknown,\n context: RuntimeSchemaValueContext,\n): readonly string[] | undefined {\n const normalized = normalizeRuntimeSchemaValue(schema, input, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n });\n\n if (!normalized.length) {\n return undefined;\n }\n\n const element = getArrayElementSchema(schema);\n\n return Object.freeze(\n normalized.map(\n (value) =>\n serializeRuntimeSchemaValue(element, value, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n }) ?? '',\n ),\n );\n}\n\nfunction withArrayElement<Schema extends AnyRuntimeSchemaBuilder>(\n builder: AnyRuntimeSchemaBuilder,\n element: Schema,\n): ArraySchema<Schema> {\n const wrapped = {\n [runtimeSchemaSymbol]: (builder as RuntimeSchemaBuilderWithInternals<any, any, any, any>)[\n runtimeSchemaSymbol\n ],\n\n optional: () => withArrayElement(builder.optional(), element),\n\n required: () => withArrayElement(builder.required(), element),\n\n default: (value: readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[]) =>\n withArrayElement(builder.default(value), element),\n } as unknown as ArraySchema<Schema>;\n\n arrayElements.set(wrapped, element);\n\n return Object.freeze(wrapped);\n}\n\nfunction createArrayCodec<Schema extends AnyRuntimeSchemaBuilder>(\n schema: Schema,\n): RuntimeSchemaCodec<readonly unknown[]> {\n return {\n parse(input, context) {\n return Object.freeze([\n parseRuntimeSchemaValue(schema, input, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n }),\n ]);\n },\n\n normalize(input, context) {\n if (!Array.isArray(input)) {\n throw createSchemaValueError(context.errorCode, 'Expected an array value.', context.path);\n }\n\n return Object.freeze(\n input.map((item) =>\n normalizeRuntimeSchemaValue(schema, item, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n }),\n ),\n );\n },\n\n serialize() {\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Array schemas require repeated-key search serialization.',\n );\n },\n };\n}\n\nfunction validateArrayDefault<Schema extends AnyRuntimeSchemaBuilder>(\n schema: Schema,\n value: readonly unknown[],\n context: RuntimeDefaultValidationContext,\n): void {\n if (!Array.isArray(value)) {\n throw new UrlKitError('invalid-descriptor', 'Array schema default must be an array.', {\n path: context.path,\n });\n }\n\n for (const item of value) {\n normalizeRuntimeSchemaValue(schema, item, {\n path: context.path,\n errorCode: 'invalid-descriptor',\n missingCode: 'invalid-descriptor',\n });\n }\n}\n\nfunction createElementDescriptor(\n schema: AnyRuntimeSchemaBuilder,\n): NormalizedRuntimeSchemaDescriptor {\n return getRuntimeSchemaInternals(schema).toDescriptor();\n}\n\nfunction getArrayElementSchema<Schema extends AnyRuntimeSchemaBuilder>(\n schema: ArraySchema<Schema>,\n): Schema {\n const element = arrayElements.get(schema);\n\n if (element) {\n return element as Schema;\n }\n\n throw new UrlKitError('invalid-descriptor', 'Array schema element is missing.');\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type {\n AnyRuntimeSchemaBuilder,\n InferRuntimeSchemaValue,\n NormalizedRuntimeSchemaDescriptor,\n RequiredRuntimeSchemaDescriptor,\n RuntimeDefaultValidationContext,\n RuntimeSchemaCodec,\n RuntimeSchemaOptions,\n RuntimeSchemaBuilder,\n RuntimeSchemaValueContext,\n} from './contracts.js';\nimport {\n runtimeSchemaSymbol,\n type RuntimeSchemaBuilderWithInternals,\n} from './runtime-schema-symbol.js';\nimport { compileRuntimeSchema } from './compile-runtime-schema.js';\nimport { createRuntimeSchemaBuilder } from './create-schema-builder.js';\nimport { createSchemaValueError } from './create-schema-value-error.js';\nimport { getRuntimeSchemaInternals } from './get-runtime-schema-internals.js';\nimport { normalizeRuntimeSchemaValue } from './normalize-runtime-schema-value.js';\n\nexport type ObjectSchemaShape = Readonly<Record<string, AnyRuntimeSchemaBuilder>>;\n\nexport interface ObjectSchemaOptions extends RuntimeSchemaOptions {\n readonly shape: Readonly<Record<string, NormalizedRuntimeSchemaDescriptor>>;\n}\n\nexport interface ObjectSchema<\n Shape extends ObjectSchemaShape,\n Value = InferObjectShape<Shape>,\n Descriptor extends NormalizedRuntimeSchemaDescriptor<'object', ObjectSchemaOptions> =\n RequiredRuntimeSchemaDescriptor<'object', ObjectSchemaOptions>,\n> extends RuntimeSchemaBuilder<Value, 'object', ObjectSchemaOptions, Descriptor> {}\n\nexport type AnyObjectSchema = ObjectSchema<any, any, any>;\n\nexport type InferObjectShape<Shape extends ObjectSchemaShape> = Simplify<\n {\n readonly [Key in keyof Shape as IsOptionalObjectField<Shape[Key]> extends true\n ? never\n : Key]: InferRuntimeSchemaValue<Shape[Key]>;\n } & {\n readonly [Key in keyof Shape as IsOptionalObjectField<Shape[Key]> extends true\n ? Key\n : never]?: Exclude<InferRuntimeSchemaValue<Shape[Key]>, undefined>;\n }\n>;\n\nconst objectShapes = new WeakMap<AnyRuntimeSchemaBuilder, ObjectSchemaShape>();\n\nexport function object<const Shape extends ObjectSchemaShape>(shape: Shape): ObjectSchema<Shape> {\n validateObjectShape(shape);\n\n const builder = createRuntimeSchemaBuilder<\n InferObjectShape<Shape>,\n 'object',\n ObjectSchemaOptions\n >({\n kind: 'object',\n options: {\n shape: createShapeDescriptor(shape),\n },\n codec: createObjectCodec(shape),\n validateDescriptor(context) {\n validateObjectDescriptor(shape, context);\n },\n validateDefault(value, context) {\n validateObjectDefault(shape, value, context);\n },\n });\n\n return withObjectShape(builder, shape);\n}\n\nfunction withObjectShape<\n Shape extends ObjectSchemaShape,\n Value,\n Descriptor extends NormalizedRuntimeSchemaDescriptor<'object', ObjectSchemaOptions>,\n>(\n builder: RuntimeSchemaBuilder<Value, 'object', ObjectSchemaOptions, Descriptor>,\n shape: Shape,\n): ObjectSchema<Shape, Value, Descriptor> {\n const wrapped = {\n [runtimeSchemaSymbol]: (\n builder as RuntimeSchemaBuilderWithInternals<Value, 'object', ObjectSchemaOptions, Descriptor>\n )[runtimeSchemaSymbol],\n\n optional: () => withObjectShape(builder.optional(), shape),\n\n required: () => withObjectShape(builder.required(), shape),\n\n default: (value: NonNullable<Value>) => withObjectShape(builder.default(value), shape),\n } as unknown as ObjectSchema<Shape, Value, Descriptor>;\n\n objectShapes.set(wrapped, shape);\n\n return Object.freeze(wrapped);\n}\n\nexport function getObjectSchemaShape<Shape extends ObjectSchemaShape>(\n schema: ObjectSchema<Shape, any, any>,\n): Shape {\n const shape = objectShapes.get(schema);\n\n if (shape) {\n return shape as Shape;\n }\n\n throw new UrlKitError('invalid-descriptor', 'Object schema shape is missing.');\n}\n\nfunction createObjectCodec<Shape extends ObjectSchemaShape>(\n shape: Shape,\n): RuntimeSchemaCodec<InferObjectShape<Shape>> {\n return {\n parse(_input, context) {\n throw createSchemaValueError(\n context.errorCode,\n 'Object search values must use declared dotted keys.',\n context.path,\n );\n },\n\n normalize(input, context) {\n return normalizeObjectValue(shape, input, context) as InferObjectShape<Shape>;\n },\n\n serialize(_input, context) {\n throw createSchemaValueError(\n context.errorCode,\n 'Object search values must use declared dotted keys.',\n context.path,\n );\n },\n };\n}\n\nfunction normalizeObjectValue(\n shape: ObjectSchemaShape,\n input: unknown,\n context: RuntimeSchemaValueContext,\n): Readonly<Record<string, unknown>> {\n if (!isPlainObject(input)) {\n throw createSchemaValueError(context.errorCode, 'Expected an object value.', context.path);\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, schema] of Object.entries(shape)) {\n const value = normalizeRuntimeSchemaValue(schema, input[key], {\n path: [...context.path, key],\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n });\n\n if (value !== undefined) {\n result[key] = value;\n }\n }\n\n return Object.freeze(result);\n}\n\nfunction validateObjectDefault(\n shape: ObjectSchemaShape,\n value: InferObjectShape<ObjectSchemaShape>,\n context: RuntimeDefaultValidationContext,\n): void {\n normalizeObjectValue(shape, value, {\n kind: 'object',\n path: context.path,\n errorCode: 'invalid-descriptor',\n });\n}\n\nfunction validateObjectDescriptor(\n shape: ObjectSchemaShape,\n context: RuntimeDefaultValidationContext,\n): void {\n for (const [key, schema] of Object.entries(shape)) {\n compileRuntimeSchema(schema, { path: [...context.path, key] });\n }\n}\n\nfunction createShapeDescriptor(\n shape: ObjectSchemaShape,\n): Readonly<Record<string, NormalizedRuntimeSchemaDescriptor>> {\n const descriptors: Record<string, NormalizedRuntimeSchemaDescriptor> = {};\n\n for (const [key, schema] of Object.entries(shape)) {\n descriptors[key] = getRuntimeSchemaInternals(schema).toDescriptor();\n }\n\n return Object.freeze(descriptors);\n}\n\nfunction validateObjectShape(shape: ObjectSchemaShape): void {\n if (!isPlainObject(shape)) {\n throw new UrlKitError('invalid-descriptor', 'Object schema shape must be an object.');\n }\n\n for (const [key, schema] of Object.entries(shape)) {\n if (!key) {\n throw new UrlKitError('invalid-descriptor', 'Object schema field names must not be empty.');\n }\n\n getRuntimeSchemaInternals(schema);\n }\n}\n\nfunction isPlainObject(input: unknown): input is Record<string, unknown> {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && !(input instanceof Date)\n );\n}\n\ntype IsOptionalObjectField<Schema extends AnyRuntimeSchemaBuilder> =\n undefined extends InferRuntimeSchemaValue<Schema> ? true : false;\n\ntype Simplify<Value> = { readonly [Key in keyof Value]: Value[Key] } & {};\n","import type { NormalizedHashDescriptor } from './contracts.js';\n\nexport function copyNormalizedHashDescriptor(\n descriptor: NormalizedHashDescriptor<string | undefined>,\n): NormalizedHashDescriptor<string | undefined> {\n const values = descriptor.values ? Object.freeze([...descriptor.values]) : undefined;\n\n if (descriptor.presence === 'defaulted') {\n return Object.freeze({\n kind: descriptor.kind,\n presence: 'defaulted',\n ...(values ? { values } : {}),\n defaultValue: descriptor.defaultValue,\n });\n }\n\n return Object.freeze({\n kind: descriptor.kind,\n presence: descriptor.presence,\n ...(values ? { values } : {}),\n });\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { NormalizedHashDescriptor } from './contracts.js';\n\nconst HASH_PATH = Object.freeze(['hash']);\n\nexport interface ValidateNormalizedHashValueOptions {\n readonly serialized: boolean;\n}\n\nexport function validateNormalizedHashValue(\n descriptor: NormalizedHashDescriptor<string | undefined>,\n input: unknown,\n options: ValidateNormalizedHashValueOptions,\n): string | undefined {\n if (input === undefined || input === null) {\n if (descriptor.presence === 'optional') {\n return undefined;\n }\n\n if (descriptor.presence === 'defaulted') {\n return descriptor.defaultValue;\n }\n\n throw new UrlKitError(\n 'invalid-hash',\n input === null ? 'Required hash cannot be null.' : 'Required hash is missing.',\n {\n path: HASH_PATH,\n },\n );\n }\n\n if (typeof input !== 'string') {\n throw new UrlKitError(\n 'invalid-hash',\n options.serialized ? 'Serialized hash must be a string.' : 'Hash must be a string.',\n { path: HASH_PATH },\n );\n }\n\n if (descriptor.kind === 'enum' && !(descriptor.values ?? []).includes(input)) {\n throw new UrlKitError(\n 'invalid-hash',\n `Expected hash to be one of: ${(descriptor.values ?? []).join(', ')}.`,\n {\n path: HASH_PATH,\n },\n );\n }\n\n return input;\n}\n","import type { CompiledHashDescriptor, NormalizedHashDescriptor } from './contracts.js';\nimport { copyNormalizedHashDescriptor } from './copy-normalized-hash-descriptor.js';\nimport { validateNormalizedHashValue } from './validate-normalized-hash-value.js';\n\nexport function compileNormalizedHashDescriptor(\n descriptor: NormalizedHashDescriptor<string | undefined>,\n): CompiledHashDescriptor<string | undefined> {\n const normalizedDescriptor = copyNormalizedHashDescriptor(descriptor);\n\n return Object.freeze({\n descriptor: normalizedDescriptor,\n parse(input: unknown) {\n return validateNormalizedHashValue(normalizedDescriptor, input, { serialized: true });\n },\n normalize(input: unknown) {\n return validateNormalizedHashValue(normalizedDescriptor, input, { serialized: false });\n },\n serialize(input: unknown) {\n const value = validateNormalizedHashValue(normalizedDescriptor, input, { serialized: false });\n return value ?? undefined;\n },\n isDefault(input: unknown) {\n if (normalizedDescriptor.presence !== 'defaulted') {\n return false;\n }\n\n return (\n validateNormalizedHashValue(normalizedDescriptor, input, { serialized: false }) ===\n normalizedDescriptor.defaultValue\n );\n },\n });\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport { compileRuntimeSchemaValue } from '../schema/compile-runtime-schema-value.js';\nimport type { RuntimeSchemaBuilder, RuntimeSchemaOptions } from '../schema/contracts.js';\nimport { normalizeCompiledRuntimeSchemaValue } from '../schema/normalize-compiled-runtime-schema-value.js';\nimport { parseCompiledRuntimeSchemaValue } from '../schema/parse-compiled-runtime-schema-value.js';\nimport { serializeCompiledRuntimeSchemaValue } from '../schema/serialize-compiled-runtime-schema-value.js';\nimport type { CompiledHashDescriptor, NormalizedHashDescriptor } from './contracts.js';\n\nconst HASH_PATH = Object.freeze(['hash']);\n\nexport function compileRuntimeHashDescriptor(\n schema: RuntimeSchemaBuilder<any, 'string' | 'enum'>,\n): CompiledHashDescriptor<string | undefined> {\n const compiledSchema = compileRuntimeSchemaValue(schema, { path: HASH_PATH });\n const descriptor = compiledSchema.descriptor;\n\n if (descriptor.kind !== 'string' && descriptor.kind !== 'enum') {\n throw new UrlKitError('invalid-descriptor', 'Hash schema must be a string or enum schema.', {\n path: HASH_PATH,\n });\n }\n\n return Object.freeze({\n descriptor: toNormalizedHashDescriptor(\n descriptor as {\n readonly kind: 'string' | 'enum';\n readonly presence: 'required' | 'optional' | 'defaulted';\n readonly options: RuntimeSchemaOptions;\n readonly defaultValue?: unknown;\n },\n ),\n parse(input: unknown) {\n return parseCompiledRuntimeSchemaValue(compiledSchema, input, {\n path: HASH_PATH,\n errorCode: 'invalid-hash',\n missingCode: 'invalid-hash',\n }) as string | undefined;\n },\n normalize(input: unknown) {\n return normalizeCompiledRuntimeSchemaValue(compiledSchema, input, {\n path: HASH_PATH,\n errorCode: 'invalid-hash',\n missingCode: 'invalid-hash',\n }) as string | undefined;\n },\n serialize(input: unknown) {\n return serializeCompiledRuntimeSchemaValue(compiledSchema, input, {\n path: HASH_PATH,\n errorCode: 'invalid-hash',\n missingCode: 'invalid-hash',\n });\n },\n isDefault(input: unknown) {\n if (descriptor.presence !== 'defaulted') {\n return false;\n }\n\n return (\n normalizeCompiledRuntimeSchemaValue(compiledSchema, input, {\n path: HASH_PATH,\n errorCode: 'invalid-hash',\n missingCode: 'invalid-hash',\n }) === descriptor.defaultValue\n );\n },\n });\n}\n\nfunction toNormalizedHashDescriptor(descriptor: {\n readonly kind: 'string' | 'enum';\n readonly presence: 'required' | 'optional' | 'defaulted';\n readonly options: RuntimeSchemaOptions;\n readonly defaultValue?: unknown;\n}): NormalizedHashDescriptor<string | undefined> {\n const values = isStringArray(descriptor.options.values)\n ? [...descriptor.options.values]\n : undefined;\n\n if (descriptor.presence === 'defaulted') {\n return Object.freeze({\n kind: descriptor.kind,\n presence: 'defaulted',\n ...(values ? { values: Object.freeze(values) } : {}),\n defaultValue: descriptor.defaultValue as string,\n });\n }\n\n return Object.freeze({\n kind: descriptor.kind,\n presence: descriptor.presence,\n ...(values ? { values: Object.freeze(values) } : {}),\n });\n}\n\nfunction isStringArray(input: unknown): input is readonly string[] {\n return Array.isArray(input) && input.every((value) => typeof value === 'string');\n}\n","import type { NormalizedHashDescriptor } from './contracts.js';\n\nexport function isNormalizedHashDescriptor(\n input: unknown,\n): input is NormalizedHashDescriptor<string | undefined> {\n return (\n isRecord(input) &&\n (input.kind === 'string' || input.kind === 'enum') &&\n (input.presence === 'required' ||\n input.presence === 'optional' ||\n input.presence === 'defaulted')\n );\n}\n\nfunction isRecord(input: unknown): input is Record<string, unknown> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RuntimeSchemaBuilder } from '../schema/contracts.js';\nimport { getRuntimeSchemaInternals } from '../schema/get-runtime-schema-internals.js';\nimport type { StaticHashDescriptor } from '../static/contracts.js';\nimport { compileNormalizedHashDescriptor } from './compile-normalized-hash-descriptor.js';\nimport { compileRuntimeHashDescriptor } from './compile-runtime-hash-descriptor.js';\nimport { compileStaticHashDescriptor } from './compile-static-hash-descriptor.js';\nimport type { CompiledHashDescriptor, HashDescriptorInput } from './contracts.js';\nimport { isNormalizedHashDescriptor } from './is-normalized-hash-descriptor.js';\n\nconst HASH_PATH = Object.freeze(['hash']);\n\nexport function compileHashDescriptor(\n descriptor?: HashDescriptorInput,\n): CompiledHashDescriptor<string | undefined> {\n if (descriptor === undefined) {\n return compileNormalizedHashDescriptor({ kind: 'string', presence: 'optional' });\n }\n\n const runtimeKind = getRuntimeSchemaKind(descriptor);\n\n if (runtimeKind) {\n if (runtimeKind !== 'string' && runtimeKind !== 'enum') {\n throw new UrlKitError('invalid-descriptor', 'Hash schema must be a string or enum schema.', {\n path: HASH_PATH,\n });\n }\n\n return compileRuntimeHashDescriptor(\n descriptor as RuntimeSchemaBuilder<unknown, 'string' | 'enum'>,\n );\n }\n\n if (isNormalizedHashDescriptor(descriptor)) {\n return compileNormalizedHashDescriptor(descriptor);\n }\n\n return compileNormalizedHashDescriptor(\n compileStaticHashDescriptor(descriptor as StaticHashDescriptor),\n );\n}\n\nfunction getRuntimeSchemaKind(input: unknown): string | undefined {\n try {\n const internals = getRuntimeSchemaInternals(input as RuntimeSchemaBuilder<unknown>);\n return internals.kind;\n } catch {\n return undefined;\n }\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\n\nexport function readHashFragment(input: unknown): string | undefined {\n if (input === undefined || input === null) {\n return undefined;\n }\n\n if (input instanceof URL) {\n return readHashFragment(input.hash);\n }\n\n if (typeof input !== 'string') {\n throw new UrlKitError('invalid-hash', 'Hash must be a string.');\n }\n\n const withoutPrefix = input.startsWith('#') ? input.slice(1) : input;\n\n if (!withoutPrefix) {\n return undefined;\n }\n\n try {\n return decodeURIComponent(withoutPrefix);\n } catch (error) {\n throw new UrlKitError('invalid-hash', 'Hash is not valid URL encoding.', {\n path: ['hash'],\n cause: error,\n });\n }\n}\n\nexport function writeHashFragment(input: string): string {\n return `#${encodeURIComponent(input)}`;\n}\n","import type { BuildUrlOptions } from '../contracts.js';\nimport type { HashDescriptorInput } from './contracts.js';\nimport { compileHashDescriptor } from './compile-hash-descriptor.js';\nimport { writeHashFragment } from './hash-fragment.js';\n\nexport function buildHash(hash?: unknown, options?: BuildUrlOptions): string;\nexport function buildHash(\n hash: unknown,\n descriptor: HashDescriptorInput,\n options?: BuildUrlOptions,\n): string;\nexport function buildHash(\n hash?: unknown,\n descriptorOrOptions?: HashDescriptorInput | BuildUrlOptions,\n options?: BuildUrlOptions,\n): string {\n const descriptor = isBuildUrlOptions(descriptorOrOptions) ? undefined : descriptorOrOptions;\n const buildOptions = isBuildUrlOptions(descriptorOrOptions) ? descriptorOrOptions : options;\n const compiled = compileHashDescriptor(descriptor);\n\n if (\n buildOptions?.defaults === 'omit' &&\n hash !== undefined &&\n hash !== null &&\n compiled.isDefault(hash)\n ) {\n return '';\n }\n\n if (\n buildOptions?.defaults === 'omit' &&\n (hash === undefined || hash === null) &&\n compiled.descriptor.presence !== 'required'\n ) {\n return '';\n }\n\n const value = compiled.serialize(hash);\n return value === undefined ? '' : writeHashFragment(value);\n}\n\nfunction isBuildUrlOptions(input: unknown): input is BuildUrlOptions {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && 'defaults' in input\n );\n}\n","import type { HashDescriptorInput } from './contracts.js';\nimport { compileHashDescriptor } from './compile-hash-descriptor.js';\nimport { readHashFragment } from './hash-fragment.js';\n\nexport function parseHash(input: unknown): string | undefined;\nexport function parseHash(input: unknown, descriptor: HashDescriptorInput): unknown;\nexport function parseHash(input: unknown, descriptor?: HashDescriptorInput): unknown {\n const hash = readHashFragment(input);\n\n if (descriptor === undefined) {\n return hash;\n }\n\n return compileHashDescriptor(descriptor).parse(hash);\n}\n","import type { AnyRuntimeSchemaBuilder } from './contracts.js';\nimport { getRuntimeSchemaInternals } from './get-runtime-schema-internals.js';\n\nexport function isRuntimeSchemaKind(schema: AnyRuntimeSchemaBuilder, kind: string): boolean {\n return getRuntimeSchemaInternals(schema).kind === kind;\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport type { SearchEntry } from './search-entries.js';\n\nexport function appendSearchEntry(\n entries: SearchEntry[],\n key: string,\n value: string | readonly string[] | undefined,\n options: BuildSearchOptions = {},\n): void {\n if (value === undefined) {\n return;\n }\n\n if (typeof value === 'string') {\n entries.push({ key, value });\n return;\n }\n\n appendArraySearchEntry(entries, key, value, options);\n}\n\nfunction appendArraySearchEntry(\n entries: SearchEntry[],\n key: string,\n values: readonly string[],\n options: BuildSearchOptions,\n): void {\n if (!values.length) {\n return;\n }\n\n if (options.arrayFormat === 'comma') {\n entries.push({ key, value: values.join(',') });\n return;\n }\n\n for (const value of values) {\n entries.push({ key, value });\n }\n}\n","export function joinObjectSearchKey(parentKey: string, childKey: string): string {\n return `${parentKey}.${escapeObjectSearchSegment(childKey)}`;\n}\n\nexport function escapeObjectSearchSegment(segment: string): string {\n return segment.replaceAll('~', '~0').replaceAll('.', '~1');\n}\n\nexport function unescapeObjectSearchSegment(segment: string): string {\n let output = '';\n\n for (let index = 0; index < segment.length; index += 1) {\n const character = segment[index];\n\n if (character !== '~') {\n output += character ?? '';\n continue;\n }\n\n const escapeCode = segment[index + 1];\n\n if (escapeCode === '0') {\n output += '~';\n index += 1;\n continue;\n }\n\n if (escapeCode === '1') {\n output += '.';\n index += 1;\n continue;\n }\n\n output += character ?? '';\n }\n\n return output;\n}\n\nexport function splitObjectSearchKey(key: string): readonly string[] {\n return Object.freeze(key.split('.').map(unescapeObjectSearchSegment));\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport type { AnyRuntimeSchemaBuilder } from '../schema/contracts.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport { getObjectSchemaShape, type AnyObjectSchema } from '../schema/object.js';\nimport { serializeRuntimeSchemaValue } from '../schema/serialize-runtime-schema-value.js';\nimport { serializeArrayRuntimeSchemaValue } from '../schema/array.js';\nimport type { SearchEntry } from './search-entries.js';\nimport { appendSearchEntry } from './append-search-entry.js';\nimport { joinObjectSearchKey } from './object-search-key.js';\n\nexport function appendObjectSearchEntries(\n entries: SearchEntry[],\n parentKey: string,\n schema: AnyObjectSchema,\n value: unknown,\n options: BuildSearchOptions = {},\n): void {\n if (!isPlainObject(value)) {\n return;\n }\n\n const shape = getObjectSchemaShape(schema);\n\n for (const [key, childSchema] of Object.entries(shape)) {\n const childValue = value[key];\n\n if (childValue === undefined) {\n continue;\n }\n\n const childKey = joinObjectSearchKey(parentKey, key);\n appendObjectChildSearchEntry(\n entries,\n childKey,\n childSchema as AnyObjectSchema,\n childValue,\n options,\n );\n }\n}\n\nfunction appendObjectChildSearchEntry(\n entries: SearchEntry[],\n key: string,\n schema: AnyRuntimeSchemaBuilder,\n value: unknown,\n options: BuildSearchOptions,\n): void {\n if (isRuntimeSchemaKind(schema, 'object')) {\n appendObjectSearchEntries(entries, key, schema as AnyObjectSchema, value, options);\n return;\n }\n\n if (isRuntimeSchemaKind(schema, 'array')) {\n appendSearchEntry(\n entries,\n key,\n serializeArrayRuntimeSchemaValue(schema as never, value, {\n kind: 'array',\n path: [key],\n errorCode: 'invalid-search',\n }),\n options,\n );\n return;\n }\n\n appendSearchEntry(\n entries,\n key,\n serializeRuntimeSchemaValue(schema, value, {\n path: [key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n }),\n options,\n );\n}\n\nfunction isPlainObject(input: unknown): input is Record<string, unknown> {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && !(input instanceof Date)\n );\n}\n","export function areSearchValuesEqual(left: unknown, right: unknown): boolean {\n if (left instanceof Date || right instanceof Date) {\n return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();\n }\n\n if (Array.isArray(left) || Array.isArray(right)) {\n return Array.isArray(left) && Array.isArray(right) && areArraysEqual(left, right);\n }\n\n if (isPlainObject(left) || isPlainObject(right)) {\n return isPlainObject(left) && isPlainObject(right) && areObjectsEqual(left, right);\n }\n\n return left === right;\n}\n\nfunction areArraysEqual(left: readonly unknown[], right: readonly unknown[]): boolean {\n if (left.length !== right.length) {\n return false;\n }\n\n return left.every((value, index) => areSearchValuesEqual(value, right[index]));\n}\n\nfunction areObjectsEqual(left: Record<string, unknown>, right: Record<string, unknown>): boolean {\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n\n return leftKeys.every(\n (key) =>\n Object.prototype.hasOwnProperty.call(right, key) &&\n areSearchValuesEqual(left[key], right[key]),\n );\n}\n\nfunction isPlainObject(input: unknown): input is Record<string, unknown> {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && !(input instanceof Date)\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport { normalizeCompiledRuntimeSchemaValue } from '../schema/normalize-compiled-runtime-schema-value.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { CompiledSearchField } from './contracts.js';\n\nexport function normalizeSearchBuildValue(field: CompiledSearchField, input: unknown): unknown {\n if (isRuntimeSchemaKind(field.schema, 'array') || isRuntimeSchemaKind(field.schema, 'object')) {\n return normalizeCompiledRuntimeSchemaValue(field.compiledSchema, input, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n });\n }\n\n if (field.type === 'many') {\n return normalizeManySearchBuildValue(field, input);\n }\n\n return normalizeOneSearchBuildValue(field, input);\n}\n\nfunction normalizeOneSearchBuildValue(field: CompiledSearchField, input: unknown): unknown {\n if (input === undefined || input === null) {\n if (field.presence === 'optional') {\n return undefined;\n }\n\n if (field.presence === 'defaulted') {\n return field.defaultValue;\n }\n\n if (input === null) {\n throw new UrlKitError('invalid-search', 'Required search parameter cannot be null.', {\n path: [field.key],\n });\n }\n\n throw new UrlKitError('missing-search', 'Required search parameter is missing.', {\n path: [field.key],\n });\n }\n\n return normalizeCompiledRuntimeSchemaValue(field.compiledSchema, input, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n });\n}\n\nfunction normalizeManySearchBuildValue(\n field: CompiledSearchField,\n input: unknown,\n): readonly unknown[] | undefined {\n if (input === undefined || input === null) {\n if (field.presence === 'optional') {\n return undefined;\n }\n\n if (field.presence === 'defaulted') {\n return copyArrayDefault(field);\n }\n\n if (input === null) {\n throw new UrlKitError('invalid-search', 'Required search parameter cannot be null.', {\n path: [field.key],\n });\n }\n\n throw new UrlKitError('missing-search', 'Required search parameter is missing.', {\n path: [field.key],\n });\n }\n\n if (!Array.isArray(input)) {\n throw new UrlKitError('invalid-search', 'Expected an array search parameter value.', {\n path: [field.key],\n });\n }\n\n return Object.freeze(\n input.map((item) =>\n normalizeCompiledRuntimeSchemaValue(field.compiledSchema, item, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n }),\n ),\n );\n}\n\nfunction copyArrayDefault(field: CompiledSearchField): readonly unknown[] {\n const value = field.defaultValue;\n\n if (!Array.isArray(value)) {\n return Object.freeze([]);\n }\n\n return Object.freeze([...value]);\n}\n","import { serializeCompiledRuntimeSchemaValue } from '../schema/serialize-compiled-runtime-schema-value.js';\nimport { serializeArrayRuntimeSchemaValue } from '../schema/array.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { CompiledSearchField } from './contracts.js';\n\nexport function serializeSearchBuildValue(\n field: CompiledSearchField,\n normalized: unknown,\n): string | readonly string[] | undefined {\n if (isRuntimeSchemaKind(field.schema, 'array')) {\n return serializeArrayRuntimeSchemaValue(field.schema as never, normalized, {\n kind: 'array',\n path: [field.key],\n errorCode: 'invalid-search',\n });\n }\n\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n return undefined;\n }\n\n if (field.type === 'many') {\n if (!Array.isArray(normalized) || !normalized.length) {\n return undefined;\n }\n\n return Object.freeze(normalized.map((item) => serializeOneSearchBuildValue(field, item)));\n }\n\n return serializeOneSearchBuildValue(field, normalized);\n}\n\nfunction serializeOneSearchBuildValue(field: CompiledSearchField, value: unknown): string {\n const serialized = serializeCompiledRuntimeSchemaValue(field.compiledSchema, value, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n });\n\n return serialized ?? '';\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport type { SearchEntry } from './search-entries.js';\n\nexport function serializeSearchEntries(\n entries: readonly SearchEntry[],\n options: BuildSearchOptions = {},\n): string {\n if (!entries.length) {\n return '';\n }\n\n const orderedEntries = options.sortKeys ? [...entries].sort(compareSearchEntryKeys) : entries;\n const searchParams = new URLSearchParams();\n\n for (const entry of orderedEntries) {\n searchParams.append(entry.key, entry.value);\n }\n\n const search = searchParams.toString();\n\n return search ? `?${search}` : '';\n}\n\nfunction compareSearchEntryKeys(left: SearchEntry, right: SearchEntry): number {\n return left.key.localeCompare(right.key);\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { AnyObjectSchema } from '../schema/object.js';\nimport { appendObjectSearchEntries } from './append-object-search-entries.js';\nimport { appendSearchEntry } from './append-search-entry.js';\nimport { areSearchValuesEqual } from './are-search-values-equal.js';\nimport type { CompiledSearchSchema } from './contracts.js';\nimport { normalizeSearchBuildValue } from './normalize-search-build-value.js';\nimport type { SearchEntry } from './search-entries.js';\nimport { serializeSearchBuildValue } from './serialize-search-build-value.js';\nimport { serializeSearchEntries } from './serialize-search-entries.js';\n\nexport function buildCompiledSearch(\n input: Record<string, unknown> = {},\n compiled: CompiledSearchSchema,\n options: BuildSearchOptions = {},\n): string {\n const entries: SearchEntry[] = [];\n\n for (const field of compiled.fields) {\n const normalized = normalizeSearchBuildValue(field, input[field.key]);\n\n if (normalized === undefined || shouldOmitDefault(field.defaultValue, normalized, options)) {\n continue;\n }\n\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n appendObjectSearchEntries(\n entries,\n field.key,\n field.schema as AnyObjectSchema,\n normalized,\n options,\n );\n continue;\n }\n\n appendSearchEntry(entries, field.key, serializeSearchBuildValue(field, normalized), options);\n }\n\n return serializeSearchEntries(entries, options);\n}\n\nfunction shouldOmitDefault(\n defaultValue: unknown,\n normalized: unknown,\n options: BuildSearchOptions,\n): boolean {\n return (\n options.defaults === 'omit' &&\n defaultValue !== undefined &&\n areSearchValuesEqual(normalized, defaultValue)\n );\n}\n","import type { RawSearchValue } from './contracts.js';\n\nexport function appendRawSearchValue(\n output: Record<string, RawSearchValue>,\n key: string,\n value: string,\n): void {\n const current = output[key];\n\n if (current === undefined) {\n output[key] = value;\n return;\n }\n\n output[key] = Object.freeze(Array.isArray(current) ? [...current, value] : [current, value]);\n}\n","export function createSearchParams(input: string | URLSearchParams): URLSearchParams {\n if (input instanceof URLSearchParams) {\n return new URLSearchParams(input);\n }\n\n return new URLSearchParams(input.startsWith('?') ? input.slice(1) : input);\n}\n","import type { RawSearchParams, RawSearchValue } from './contracts.js';\nimport { appendRawSearchValue } from './append-raw-search-value.js';\nimport { createSearchParams } from './create-search-params.js';\n\nexport function parseRawSearch(input: string | URLSearchParams): RawSearchParams {\n const output: Record<string, RawSearchValue> = {};\n\n for (const [key, value] of createSearchParams(input)) {\n appendRawSearchValue(output, key, value);\n }\n\n return Object.freeze(output);\n}\n","import type { RawSearchParams, RawSearchValue } from './contracts.js';\n\nexport function copyRawSearchParams(input: RawSearchParams): RawSearchParams {\n const output: Record<string, RawSearchValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n output[key] = Array.isArray(value) ? Object.freeze([...value]) : value;\n }\n\n return Object.freeze(output);\n}\n","import type { AnyRuntimeSchemaBuilder } from '../schema/contracts.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport { getObjectSchemaShape, type AnyObjectSchema } from '../schema/object.js';\n\nexport function collectObjectSearchPaths(schema: AnyObjectSchema): readonly (readonly string[])[] {\n return Object.freeze(collectObjectSearchPathsFromShape(schema, []));\n}\n\nfunction collectObjectSearchPathsFromShape(\n schema: AnyObjectSchema,\n basePath: readonly string[],\n): readonly (readonly string[])[] {\n const shape = getObjectSchemaShape(schema);\n const paths: (readonly string[])[] = [];\n\n for (const [key, childSchema] of Object.entries(shape)) {\n const childPath = [...basePath, key];\n\n if (isRuntimeSchemaKind(childSchema as AnyRuntimeSchemaBuilder, 'object')) {\n paths.push(...collectObjectSearchPathsFromShape(childSchema as AnyObjectSchema, childPath));\n continue;\n }\n\n paths.push(Object.freeze(childPath));\n }\n\n return paths;\n}\n","import { splitObjectSearchKey } from './object-search-key.js';\n\nexport function getObjectSearchRawKeyPath(\n parentKey: string,\n rawKey: string,\n): readonly string[] | undefined {\n const prefix = `${parentKey}.`;\n\n if (!rawKey.startsWith(prefix)) {\n return undefined;\n }\n\n const childKey = rawKey.slice(prefix.length);\n\n if (!childKey) {\n return undefined;\n }\n\n return splitObjectSearchKey(childKey);\n}\n","export function createObjectSearchPathKey(path: readonly string[]): string {\n return JSON.stringify(path);\n}\n\nexport function isObjectSearchPathEqual(\n left: readonly string[],\n right: readonly string[],\n): boolean {\n if (left.length !== right.length) {\n return false;\n }\n\n return left.every((value, index) => value === right[index]);\n}\n","import { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { CompiledSearchField } from './contracts.js';\nimport { collectObjectSearchPaths } from './collect-object-search-paths.js';\nimport { getObjectSearchRawKeyPath } from './object-search-raw-key-path.js';\nimport { isObjectSearchPathEqual } from './object-search-path-key.js';\n\nexport function deleteSearchFieldRawKeys(\n field: CompiledSearchField,\n rawSearch: Record<string, unknown>,\n): void {\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n deleteObjectSearchKeys(field, rawSearch);\n return;\n }\n\n delete rawSearch[field.key];\n}\n\nfunction deleteObjectSearchKeys(\n field: CompiledSearchField,\n rawSearch: Record<string, unknown>,\n): void {\n const declaredPaths = collectObjectSearchPaths(field.schema as never);\n\n for (const rawKey of Object.keys(rawSearch)) {\n const rawPath = getObjectSearchRawKeyPath(field.key, rawKey);\n\n if (\n rawPath &&\n declaredPaths.some((declaredPath) => isObjectSearchPathEqual(rawPath, declaredPath))\n ) {\n delete rawSearch[rawKey];\n }\n }\n}\n","import type { SearchArrayFormat } from '../contracts.js';\nimport type { RawSearchValue } from './contracts.js';\n\nexport function readArraySearchValues(\n value: RawSearchValue | undefined,\n arrayFormat: SearchArrayFormat = 'repeat',\n): readonly string[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n const values: readonly string[] = Array.isArray(value) ? value : [value];\n\n if (arrayFormat !== 'comma') {\n return values;\n }\n\n return Object.freeze(values.flatMap((item) => item.split(',')));\n}\n","import { compileRuntimeSchema } from '../schema/compile-runtime-schema.js';\nimport type { RuntimeSchemaValueContext } from '../schema/contracts.js';\nimport { parseRuntimeSchemaValue } from '../schema/parse-runtime-schema-value.js';\nimport { parseArrayRuntimeSchemaValue, type ArraySchema } from '../schema/array.js';\nimport type { RawSearchValue, SearchParseOptions } from './contracts.js';\nimport { readArraySearchValues } from './search-array-format.js';\n\nexport function parseArraySearchValue(\n schema: ArraySchema<any>,\n value: RawSearchValue | undefined,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions = {},\n): unknown {\n if (value === undefined) {\n return parseRuntimeSchemaValue(schema, undefined, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: 'missing-search',\n });\n }\n\n compileRuntimeSchema(schema, { path: context.path });\n\n return parseArrayRuntimeSchemaValue(\n schema,\n readArraySearchValues(value, options.arrayFormat) ?? [],\n context,\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RawSearchParams } from './contracts.js';\nimport { getObjectSearchRawKeyPath } from './object-search-raw-key-path.js';\nimport { createObjectSearchPathKey } from './object-search-path-key.js';\n\nexport function assertNoObjectSearchCollisions(\n parentKey: string,\n rawSearch: RawSearchParams,\n parentPath: readonly string[],\n): void {\n const paths = new Map<\n string,\n { readonly path: readonly string[]; readonly rawKeys: Set<string> }\n >();\n\n for (const rawKey of Object.keys(rawSearch)) {\n const path = getObjectSearchRawKeyPath(parentKey, rawKey);\n\n if (!path) {\n continue;\n }\n\n const pathKey = createObjectSearchPathKey(path);\n const current = paths.get(pathKey);\n\n if (!current) {\n paths.set(pathKey, { path, rawKeys: new Set([rawKey]) });\n continue;\n }\n\n current.rawKeys.add(rawKey);\n\n if (current.rawKeys.size > 1) {\n throw new UrlKitError(\n 'invalid-search',\n 'Object search parameter keys resolve to the same object path.',\n {\n path: [...parentPath, ...current.path],\n },\n );\n }\n }\n}\n","import type { RawSearchParams, RawSearchValue } from './contracts.js';\nimport { getObjectSearchRawKeyPath } from './object-search-raw-key-path.js';\nimport { isObjectSearchPathEqual } from './object-search-path-key.js';\n\nexport function findObjectSearchRawValue(\n parentKey: string,\n path: readonly string[],\n rawSearch: RawSearchParams,\n): RawSearchValue | undefined {\n for (const [rawKey, value] of Object.entries(rawSearch)) {\n const rawPath = getObjectSearchRawKeyPath(parentKey, rawKey);\n\n if (rawPath && isObjectSearchPathEqual(rawPath, path)) {\n return value;\n }\n }\n\n return undefined;\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport { compileRuntimeSchema } from '../schema/compile-runtime-schema.js';\nimport type { AnyRuntimeSchemaBuilder, RuntimeSchemaValueContext } from '../schema/contracts.js';\nimport { getObjectSchemaShape, type AnyObjectSchema } from '../schema/object.js';\nimport { parseRuntimeSchemaValue } from '../schema/parse-runtime-schema-value.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport { parseArraySearchValue } from './parse-array-search-value.js';\nimport type { RawSearchParams, SearchParseOptions } from './contracts.js';\nimport { assertNoObjectSearchCollisions } from './assert-object-search-collisions.js';\nimport { findObjectSearchRawValue } from './find-object-search-raw-value.js';\n\nexport function parseObjectSearchValue(\n schema: AnyObjectSchema,\n parentKey: string,\n rawSearch: RawSearchParams,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions = {},\n): unknown {\n assertNoObjectSearchCollisions(parentKey, rawSearch, context.path);\n\n const descriptor = compileRuntimeSchema(schema, { path: context.path });\n const hasDeclaredValues = hasDeclaredObjectValues(schema, parentKey, [], rawSearch);\n\n if (!hasDeclaredValues) {\n if (descriptor.presence === 'optional') {\n return undefined;\n }\n\n if (descriptor.presence === 'defaulted') {\n return descriptor.defaultValue;\n }\n }\n\n return parseObjectShape(schema, parentKey, [], rawSearch, context, options);\n}\n\nfunction parseObjectShape(\n schema: AnyObjectSchema,\n parentKey: string,\n objectPath: readonly string[],\n rawSearch: RawSearchParams,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions,\n): Readonly<Record<string, unknown>> {\n const shape = getObjectSchemaShape(schema);\n const output: Record<string, unknown> = {};\n\n for (const [key, childSchema] of Object.entries(shape)) {\n const childObjectPath = [...objectPath, key];\n const childPath = [...context.path, key];\n const value = parseChildObjectSearchValue(\n childSchema as AnyRuntimeSchemaBuilder,\n parentKey,\n childObjectPath,\n rawSearch,\n {\n kind: 'object',\n path: childPath,\n errorCode: context.errorCode,\n },\n options,\n );\n\n if (value !== undefined) {\n output[key] = value;\n }\n }\n\n return Object.freeze(output);\n}\n\nfunction parseChildObjectSearchValue(\n schema: AnyRuntimeSchemaBuilder,\n parentKey: string,\n objectPath: readonly string[],\n rawSearch: RawSearchParams,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions,\n): unknown {\n if (isRuntimeSchemaKind(schema, 'object')) {\n return parseNestedObjectSearchValue(\n schema as AnyObjectSchema,\n parentKey,\n objectPath,\n rawSearch,\n context,\n options,\n );\n }\n\n const rawValue = findObjectSearchRawValue(parentKey, objectPath, rawSearch);\n\n if (isRuntimeSchemaKind(schema, 'array')) {\n return parseArraySearchValue(schema as never, rawValue, context, options);\n }\n\n if (Array.isArray(rawValue)) {\n throw new UrlKitError('invalid-search', 'Expected a single object search parameter value.', {\n path: context.path,\n });\n }\n\n return parseRuntimeSchemaValue(schema, rawValue, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: 'missing-search',\n });\n}\n\nfunction parseNestedObjectSearchValue(\n schema: AnyObjectSchema,\n parentKey: string,\n objectPath: readonly string[],\n rawSearch: RawSearchParams,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions,\n): unknown {\n const descriptor = compileRuntimeSchema(schema, { path: context.path });\n const hasDeclaredValues = hasDeclaredObjectValues(schema, parentKey, objectPath, rawSearch);\n\n if (!hasDeclaredValues) {\n if (descriptor.presence === 'optional') {\n return undefined;\n }\n\n if (descriptor.presence === 'defaulted') {\n return descriptor.defaultValue;\n }\n }\n\n return parseObjectShape(schema, parentKey, objectPath, rawSearch, context, options);\n}\n\nfunction hasDeclaredObjectValues(\n schema: AnyObjectSchema,\n parentKey: string,\n objectPath: readonly string[],\n rawSearch: RawSearchParams,\n): boolean {\n const shape = getObjectSchemaShape(schema);\n\n return Object.entries(shape).some(([key, childSchema]) => {\n const childObjectPath = [...objectPath, key];\n\n if (isRuntimeSchemaKind(childSchema as AnyRuntimeSchemaBuilder, 'object')) {\n return hasDeclaredObjectValues(\n childSchema as AnyObjectSchema,\n parentKey,\n childObjectPath,\n rawSearch,\n );\n }\n\n return findObjectSearchRawValue(parentKey, childObjectPath, rawSearch) !== undefined;\n });\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport { parseCompiledRuntimeSchemaValue } from '../schema/parse-compiled-runtime-schema-value.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { AnyObjectSchema } from '../schema/object.js';\nimport type { ArraySchema } from '../schema/array.js';\nimport type {\n CompiledSearchField,\n RawSearchParams,\n RawSearchValue,\n SearchParseOptions,\n} from './contracts.js';\nimport { parseArraySearchValue } from './parse-array-search-value.js';\nimport { parseObjectSearchValue } from './parse-object-search-value.js';\nimport { readArraySearchValues } from './search-array-format.js';\n\nexport function parseSearchFieldValue(\n field: CompiledSearchField,\n rawSearch: RawSearchParams,\n options: SearchParseOptions = {},\n): unknown {\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n return parseObjectSearchValue(\n field.schema as AnyObjectSchema,\n field.key,\n rawSearch,\n {\n kind: 'object',\n path: [field.key],\n errorCode: 'invalid-search',\n },\n options,\n );\n }\n\n if (isRuntimeSchemaKind(field.schema, 'array')) {\n return parseArraySearchValue(\n field.schema as ArraySchema<any>,\n rawSearch[field.key],\n {\n kind: 'array',\n path: [field.key],\n errorCode: 'invalid-search',\n },\n options,\n );\n }\n\n return parseNonObjectSearchFieldValue(field, rawSearch[field.key], options);\n}\n\nfunction parseNonObjectSearchFieldValue(\n field: CompiledSearchField,\n value: RawSearchValue | undefined,\n options: SearchParseOptions,\n): unknown {\n if (value === undefined) {\n return parseMissingSearchFieldValue(field);\n }\n\n if (field.type === 'many') {\n const values = readArraySearchValues(value, options.arrayFormat) ?? [];\n\n return Object.freeze(values.map((item) => parseRuntimeSearchValue(field, item)));\n }\n\n if (Array.isArray(value)) {\n throw new UrlKitError('invalid-search', 'Expected a single search parameter value.', {\n path: [field.key],\n });\n }\n\n return parseRuntimeSearchValue(field, value as string);\n}\n\nfunction parseMissingSearchFieldValue(field: CompiledSearchField): unknown {\n if (field.presence === 'optional') {\n return undefined;\n }\n\n if (field.presence === 'defaulted') {\n return copyDefaultValue(field.defaultValue);\n }\n\n throw new UrlKitError('missing-search', 'Required search parameter is missing.', {\n path: [field.key],\n });\n}\n\nfunction parseRuntimeSearchValue(field: CompiledSearchField, value: string): unknown {\n return parseCompiledRuntimeSchemaValue(field.compiledSchema, value, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n });\n}\n\nfunction copyDefaultValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return Object.freeze([...value]);\n }\n\n if (isPlainObject(value)) {\n return Object.freeze({ ...value });\n }\n\n return value;\n}\n\nfunction isPlainObject(input: unknown): input is Record<string, unknown> {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && !(input instanceof Date)\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type {\n CompiledSearchSchema,\n RawSearchParams,\n RawSearchValue,\n SearchParseOptions,\n SearchParseResult,\n} from './contracts.js';\nimport { copyRawSearchParams } from './copy-raw-search-params.js';\nimport { deleteSearchFieldRawKeys } from './delete-search-field-raw-keys.js';\nimport { parseSearchFieldValue } from './parse-search-field-value.js';\n\nexport function parseCompiledSearch(\n rawSearch: RawSearchParams,\n compiled: CompiledSearchSchema,\n unknownSearch: 'strip' | 'preserve' | 'error' = 'strip',\n options: SearchParseOptions = {},\n): SearchParseResult<Record<string, unknown>> {\n const remainingUnknown = { ...rawSearch } satisfies Record<string, RawSearchValue>;\n const search: Record<string, unknown> = {};\n\n for (const field of compiled.fields) {\n const value = parseSearchFieldValue(field, rawSearch, options);\n deleteSearchFieldRawKeys(field, remainingUnknown);\n\n if (value !== undefined) {\n search[field.key] = value;\n }\n }\n\n const result: SearchParseResult<Record<string, unknown>> = {\n search: Object.freeze(search),\n };\n const unknown = resolveUnknownSearch(remainingUnknown, unknownSearch);\n\n if (unknown) {\n return Object.freeze({\n ...result,\n unknownSearch: unknown,\n });\n }\n\n return Object.freeze(result);\n}\n\nfunction resolveUnknownSearch(\n unknown: RawSearchParams,\n behavior: 'strip' | 'preserve' | 'error',\n): RawSearchParams | undefined {\n const keys = Object.keys(unknown);\n\n if (!keys.length || behavior === 'strip') {\n return undefined;\n }\n\n if (behavior === 'error') {\n throw new UrlKitError('invalid-search', 'Unknown search parameter is not allowed.', {\n path: [keys[0]!],\n });\n }\n\n return copyRawSearchParams(unknown);\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { UnknownSearchParams } from '../contracts.js';\n\nexport function copyUnknownStructuredSearch(\n input: Readonly<Record<string, unknown>>,\n): UnknownSearchParams | undefined {\n const output: Record<string, string | readonly string[]> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (value === undefined || value === null) {\n continue;\n }\n\n if (typeof value === 'string') {\n output[key] = value;\n continue;\n }\n\n if (Array.isArray(value) && value.every((item) => typeof item === 'string')) {\n output[key] = Object.freeze([...value]);\n continue;\n }\n\n throw new UrlKitError(\n 'invalid-search',\n 'Unknown search parameter must be a string or string array to preserve.',\n {\n path: [key],\n },\n );\n }\n\n if (!Object.keys(output).length) {\n return undefined;\n }\n\n return Object.freeze(output);\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { UnknownSearchBehavior, UnknownSearchParams } from '../contracts.js';\nimport type { CompiledSearchSchema, SearchParseResult } from './contracts.js';\nimport { copyUnknownStructuredSearch } from './copy-unknown-structured-search.js';\nimport { normalizeSearchBuildValue } from './normalize-search-build-value.js';\n\nexport function normalizeCompiledSearch(\n input: unknown,\n compiled: CompiledSearchSchema | undefined,\n unknownSearch: UnknownSearchBehavior = 'strip',\n): SearchParseResult<Record<string, unknown>> {\n if (input === undefined || input === null) {\n return normalizeCompiledSearchObject({}, compiled, unknownSearch);\n }\n\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-search', 'Search must be an object.', { path: ['search'] });\n }\n\n return normalizeCompiledSearchObject(input, compiled, unknownSearch);\n}\n\nfunction normalizeCompiledSearchObject(\n input: Readonly<Record<string, unknown>>,\n compiled: CompiledSearchSchema | undefined,\n unknownSearch: UnknownSearchBehavior,\n): SearchParseResult<Record<string, unknown>> {\n const search: Record<string, unknown> = {};\n const knownKeys = compiled?.keys ?? emptyKeys;\n\n for (const field of compiled?.fields ?? []) {\n const value = normalizeSearchBuildValue(field, input[field.key]);\n\n if (value !== undefined) {\n search[field.key] = value;\n }\n }\n\n const unknownValues = collectUnknownValues(input, knownKeys);\n const unknown = resolveUnknownSearch(unknownValues, unknownSearch);\n\n return Object.freeze({\n search: Object.freeze(search),\n ...(unknown ? { unknownSearch: unknown } : {}),\n });\n}\n\nconst emptyKeys = Object.freeze(new Set<string>());\n\nfunction collectUnknownValues(\n input: Readonly<Record<string, unknown>>,\n knownKeys: ReadonlySet<string>,\n): Readonly<Record<string, unknown>> {\n const unknown: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (!knownKeys.has(key)) {\n unknown[key] = value;\n }\n }\n\n return unknown;\n}\n\nfunction resolveUnknownSearch(\n unknown: Readonly<Record<string, unknown>>,\n behavior: UnknownSearchBehavior,\n): UnknownSearchParams | undefined {\n const keys = Object.keys(unknown);\n\n if (!keys.length || behavior === 'strip') {\n return undefined;\n }\n\n if (behavior === 'error') {\n throw new UrlKitError('invalid-search', 'Unknown search parameter is not allowed.', {\n path: [keys[0]!],\n });\n }\n\n return copyUnknownStructuredSearch(unknown);\n}\n\nfunction isRecord(input: unknown): input is Readonly<Record<string, unknown>> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","const URL_STATE_BRAND: unique symbol = Symbol('urlkit.url-state');\n\nexport interface BrandedUrlState {\n readonly [URL_STATE_BRAND]: true;\n}\n\nexport function markUrlState<State extends object>(state: State): State & BrandedUrlState {\n Object.defineProperty(state, URL_STATE_BRAND, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n\n return state as State & BrandedUrlState;\n}\n\nexport function isUrlState(input: unknown): input is BrandedUrlState {\n return (\n typeof input === 'object' &&\n input !== null &&\n (input as Partial<BrandedUrlState>)[URL_STATE_BRAND] === true\n );\n}\n","import type { NormalizeUrlState, UnknownSearchBehavior, UrlState } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport { normalizeCompiledSearch } from '../search/normalize-compiled-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { markUrlState } from './url-state-brand.js';\n\nexport function normalizeCompiledUrl<\n Mode extends 'path' | 'pathless',\n Pathname,\n Params,\n Search,\n Hash,\n Input,\n>(\n input: Input,\n compiled: CompiledUrlDescriptor<Mode>,\n unknownSearch: UnknownSearchBehavior,\n): NormalizeUrlState<Mode, Pathname, Params, Search, Hash, Input> {\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-url', 'URL state must be an object.', { path: [] });\n }\n\n const pathnameAndParams = normalizePathnameAndParams<Pathname, Params>(input, compiled);\n const searchResult = normalizeCompiledSearch(input.search, compiled.search, unknownSearch);\n const hash = normalizeUrlHash<Hash>(input.hash, compiled);\n\n const state = {\n pathname: pathnameAndParams.pathname,\n params: pathnameAndParams.params,\n search: searchResult.search as Search,\n hash,\n ...(searchResult.unknownSearch ? { unknownSearch: searchResult.unknownSearch } : {}),\n };\n\n return Object.freeze(markUrlState(state)) as NormalizeUrlState<\n Mode,\n Pathname,\n Params,\n Search,\n Hash,\n Input\n >;\n}\n\nfunction normalizePathnameAndParams<Pathname, Params>(\n input: Readonly<Record<string, unknown>>,\n compiled: CompiledUrlDescriptor,\n): Pick<UrlState<Pathname, Params, {}, undefined>, 'pathname' | 'params'> {\n if (compiled.mode === 'path') {\n if (input.pathname !== undefined) {\n throw new UrlKitError('invalid-url', 'Path-based URL state must not include pathname.', {\n path: ['pathname'],\n });\n }\n\n if (!compiled.path) {\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Path URL descriptor is missing a compiled path.',\n { path: ['path'] },\n );\n }\n\n const pathname = (compiled.path.buildPath as (params?: unknown) => string)(\n input.params,\n ) as Pathname;\n const params = compiled.path.parsePathname(String(pathname)) as Params;\n\n return Object.freeze({ pathname, params });\n }\n\n if (input.params !== undefined) {\n throw new UrlKitError('invalid-url', 'Pathless URL state must not include params.', {\n path: ['params'],\n });\n }\n\n return Object.freeze({\n pathname: normalizePathlessPathname(input.pathname) as Pathname,\n params: Object.freeze({}) as Params,\n });\n}\n\nfunction normalizePathlessPathname(pathname: unknown): string {\n if (pathname === undefined) {\n return '';\n }\n\n if (typeof pathname !== 'string') {\n throw new UrlKitError('invalid-url', 'Pathless pathname must be a string.', {\n path: ['pathname'],\n });\n }\n\n return pathname;\n}\n\nfunction normalizeUrlHash<Hash>(input: unknown, compiled: CompiledUrlDescriptor): Hash {\n if (compiled.hash) {\n return compiled.hash.normalize(input) as Hash;\n }\n\n if (input !== undefined && input !== null) {\n throw new UrlKitError('invalid-hash', 'Hash is not declared for this URL contract.', {\n path: ['hash'],\n });\n }\n\n return undefined as Hash;\n}\n\nfunction isRecord(input: unknown): input is Readonly<Record<string, unknown>> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","import type { BuildUrlOptions, UrlBuildInput } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport { buildHash } from '../hash/build-hash.js';\nimport { buildCompiledSearch } from '../search/build-compiled-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { isUrlState } from './url-state-brand.js';\n\nexport function buildCompiledUrl<\n Mode extends 'path' | 'pathless',\n Params,\n Search,\n Hash,\n SearchInput = Partial<Search>,\n HashInput = Hash,\n>(\n input: UrlBuildInput<Mode, Params, Search, Hash, SearchInput, HashInput>,\n compiled: CompiledUrlDescriptor<Mode>,\n options: BuildUrlOptions = {},\n): string {\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-url', 'URL build input must be an object.', { path: [] });\n }\n\n const pathname = buildUrlPathname(input, compiled);\n const search = buildUrlSearch(input.search, compiled, options);\n const hash = buildUrlHash(input.hash, compiled, options);\n\n return `${pathname}${search}${hash}`;\n}\n\nfunction buildUrlPathname(\n input: Readonly<Record<string, unknown>>,\n compiled: CompiledUrlDescriptor,\n): string {\n if (compiled.mode === 'path') {\n if (input.pathname !== undefined && !isUrlState(input)) {\n throw new UrlKitError(\n 'invalid-url',\n 'Path-based URL build input must not include pathname.',\n { path: ['pathname'] },\n );\n }\n\n if (!compiled.path) {\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Path URL descriptor is missing a compiled path.',\n { path: ['path'] },\n );\n }\n\n return (compiled.path.buildPath as (params?: unknown) => string)(input.params);\n }\n\n if (input.params !== undefined && !isUrlState(input)) {\n throw new UrlKitError('invalid-url', 'Pathless URL build input must not include params.', {\n path: ['params'],\n });\n }\n\n if (input.pathname === undefined) {\n return '';\n }\n\n if (typeof input.pathname !== 'string') {\n throw new UrlKitError('invalid-url', 'Pathless pathname must be a string.', {\n path: ['pathname'],\n });\n }\n\n return input.pathname;\n}\n\nfunction buildUrlSearch(\n input: unknown,\n compiled: CompiledUrlDescriptor,\n options: BuildUrlOptions,\n): string {\n if (input === undefined) {\n return compiled.search ? buildCompiledSearch({}, compiled.search, options) : '';\n }\n\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-search', 'URL search input must be an object.', {\n path: ['search'],\n });\n }\n\n if (!compiled.search) {\n return '';\n }\n\n return buildCompiledSearch(input, compiled.search, options);\n}\n\nfunction buildUrlHash(\n input: unknown,\n compiled: CompiledUrlDescriptor,\n options: BuildUrlOptions,\n): string {\n if (compiled.hash) {\n return buildHash(input, compiled.hash.descriptor, options);\n }\n\n if (input !== undefined && input !== null) {\n throw new UrlKitError('invalid-hash', 'Hash is not declared for this URL contract.', {\n path: ['hash'],\n });\n }\n\n return '';\n}\n\nfunction isRecord(input: unknown): input is Readonly<Record<string, unknown>> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\n\nconst URLKIT_BASE_URL = 'http://urlkit.local';\n\nexport interface ParsedUrlInput {\n readonly pathname: string;\n readonly searchParams: URLSearchParams;\n readonly hash: string;\n}\n\nexport function parseUrl(input: string | URL): ParsedUrlInput {\n if (input instanceof URL) {\n return freezeParsedUrlInput(input);\n }\n\n if (typeof input !== 'string') {\n throw new UrlKitError('invalid-url', 'URL input must be a string or URL.', { path: [] });\n }\n\n try {\n return freezeParsedUrlInput(new URL(input, URLKIT_BASE_URL));\n } catch (error) {\n throw new UrlKitError('invalid-url', 'URL input is not valid.', { path: [], cause: error });\n }\n}\n\nfunction freezeParsedUrlInput(input: URL): ParsedUrlInput {\n return Object.freeze({\n pathname: input.pathname,\n searchParams: new URLSearchParams(input.searchParams),\n hash: input.hash,\n });\n}\n","import type { UnknownSearchBehavior, UnknownSearchParams } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RawSearchParams } from '../search/contracts.js';\nimport { copyRawSearchParams } from '../search/copy-raw-search-params.js';\n\nexport function resolveUrlUnknownSearch(\n rawSearch: RawSearchParams,\n behavior: UnknownSearchBehavior,\n): UnknownSearchParams | undefined {\n const keys = Object.keys(rawSearch);\n\n if (!keys.length || behavior === 'strip') {\n return undefined;\n }\n\n if (behavior === 'error') {\n throw new UrlKitError('invalid-search', 'Unknown search parameter is not allowed.', {\n path: [keys[0]!],\n });\n }\n\n return copyRawSearchParams(rawSearch);\n}\n","import type { ParseUrlOptions, UrlState, UnknownSearchBehavior } from '../contracts.js';\nimport { readHashFragment } from '../hash/hash-fragment.js';\nimport { parseCompiledSearch } from '../search/parse-compiled-search.js';\nimport { parseRawSearch } from '../search/parse-raw-search.js';\nimport { parseUrl } from './parse-url.js';\nimport { resolveUrlUnknownSearch } from './resolve-url-unknown-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { markUrlState } from './url-state-brand.js';\n\nexport function parseCompiledUrl<Pathname, Params, Search, Hash>(\n input: string | URL,\n compiled: CompiledUrlDescriptor,\n unknownSearch: UnknownSearchBehavior,\n options: Pick<ParseUrlOptions, 'arrayFormat'> = {},\n): UrlState<Pathname, Params, Search, Hash> {\n const parsedUrl = parseUrl(input);\n const params = parseUrlParams<Params>(parsedUrl.pathname, compiled);\n const searchResult = parseUrlSearch<Search>(\n parsedUrl.searchParams,\n compiled,\n unknownSearch,\n options,\n );\n const hash = parseUrlHash<Hash>(parsedUrl.hash, compiled);\n\n const state = {\n pathname: parsedUrl.pathname as Pathname,\n params,\n search: searchResult.search,\n hash,\n ...(searchResult.unknownSearch ? { unknownSearch: searchResult.unknownSearch } : {}),\n } satisfies UrlState<Pathname, Params, Search, Hash>;\n\n return Object.freeze(markUrlState(state));\n}\n\nfunction parseUrlParams<Params>(pathname: string, compiled: CompiledUrlDescriptor): Params {\n if (compiled.mode === 'path' && compiled.path) {\n return compiled.path.parsePathname(pathname) as Params;\n }\n\n return Object.freeze({}) as Params;\n}\n\nfunction parseUrlSearch<Search>(\n searchParams: URLSearchParams,\n compiled: CompiledUrlDescriptor,\n unknownSearch: UnknownSearchBehavior,\n options: Pick<ParseUrlOptions, 'arrayFormat'>,\n): Pick<UrlState<string, {}, Search, undefined>, 'search' | 'unknownSearch'> {\n const rawSearch = parseRawSearch(searchParams);\n\n if (compiled.search) {\n return parseCompiledSearch(rawSearch, compiled.search, unknownSearch, options) as Pick<\n UrlState<string, {}, Search, undefined>,\n 'search' | 'unknownSearch'\n >;\n }\n\n const unknown = resolveUrlUnknownSearch(rawSearch, unknownSearch);\n\n return Object.freeze({\n search: Object.freeze({}) as Search,\n ...(unknown ? { unknownSearch: unknown } : {}),\n });\n}\n\nfunction parseUrlHash<Hash>(hash: string, compiled: CompiledUrlDescriptor): Hash {\n if (!compiled.hash) {\n return undefined as Hash;\n }\n\n return compiled.hash.parse(readHashFragment(hash)) as Hash;\n}\n","import type { ParseRequestOptions, UrlRequestInput } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\n\nexport function resolveRequestUrlInput(\n input: Request | UrlRequestInput,\n options: ParseRequestOptions = {},\n): string | URL {\n const url = readRequestUrl(input);\n\n if (options.baseUrl) {\n return resolveRequestUrl(url, options.baseUrl);\n }\n\n return url;\n}\n\nfunction readRequestUrl(input: Request | UrlRequestInput): string {\n if (isRequest(input)) {\n return input.url;\n }\n\n if (isUrlRequestInput(input)) {\n return input.url;\n }\n\n throw new UrlKitError(\n 'invalid-url',\n 'Request input must be a Request or an object with a url string.',\n {\n path: [],\n },\n );\n}\n\nfunction resolveRequestUrl(url: string, baseUrl: string): URL {\n try {\n return new URL(url, baseUrl);\n } catch (error) {\n throw new UrlKitError('invalid-url', 'Request URL is not valid.', {\n path: [],\n cause: error,\n });\n }\n}\n\nfunction isRequest(input: Request | UrlRequestInput): input is Request {\n return typeof Request !== 'undefined' && input instanceof Request;\n}\n\nfunction isUrlRequestInput(input: Request | UrlRequestInput): input is UrlRequestInput {\n return (\n typeof input === 'object' &&\n input !== null &&\n 'url' in input &&\n typeof (input as { readonly url?: unknown }).url === 'string'\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { ParseUrlOptions, UnknownSearchBehavior } from '../contracts.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { parseCompiledUrl } from './parse-compiled-url.js';\n\nexport function matchCompiledUrl(\n input: string | URL,\n compiled: CompiledUrlDescriptor,\n unknownSearch: UnknownSearchBehavior,\n options: Pick<ParseUrlOptions, 'arrayFormat'> = {},\n): boolean {\n try {\n parseCompiledUrl(input, compiled, unknownSearch, options);\n return true;\n } catch (error) {\n if (error instanceof UrlKitError) {\n return false;\n }\n\n return false;\n }\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport type { SearchEntry } from './search-entries.js';\nimport { appendSearchEntry } from './append-search-entry.js';\nimport { serializeSearchEntries } from './serialize-search-entries.js';\n\nexport function buildRawSearch(\n input: Record<string, unknown> = {},\n options: BuildSearchOptions = {},\n): string {\n const entries: SearchEntry[] = [];\n\n for (const [key, value] of Object.entries(input)) {\n appendRawValue(entries, key, value, options);\n }\n\n return serializeSearchEntries(entries, options);\n}\n\nfunction appendRawValue(\n entries: Parameters<typeof appendSearchEntry>[0],\n key: string,\n value: unknown,\n options: BuildSearchOptions,\n): void {\n if (value === undefined || value === null) {\n return;\n }\n\n if (Array.isArray(value)) {\n appendSearchEntry(entries, key, value.filter(isPresent).map(String), options);\n return;\n }\n\n appendSearchEntry(entries, key, serializeRawScalar(value), options);\n}\n\nfunction isPresent(input: unknown): boolean {\n return input !== undefined && input !== null;\n}\n\nfunction serializeRawScalar(input: unknown): string {\n if (typeof input === 'string') {\n return input;\n }\n\n if (typeof input === 'number' || typeof input === 'boolean' || typeof input === 'bigint') {\n return String(input);\n }\n\n return JSON.stringify(input) ?? String(input);\n}\n","import type { RawSearchParams, RawSearchValue } from './contracts.js';\n\nexport function omitRawSearch(input: RawSearchParams, keys: readonly string[]): RawSearchParams {\n const keySet = new Set(keys);\n const output: Record<string, RawSearchValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (keySet.has(key)) {\n continue;\n }\n\n output[key] = copyRawSearchValue(value);\n }\n\n return Object.freeze(output);\n}\n\nexport function pickRawSearch(input: RawSearchParams, keys: readonly string[]): RawSearchParams {\n const keySet = new Set(keys);\n const output: Record<string, RawSearchValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (!keySet.has(key)) {\n continue;\n }\n\n output[key] = copyRawSearchValue(value);\n }\n\n return Object.freeze(output);\n}\n\nfunction copyRawSearchValue(value: RawSearchValue): RawSearchValue {\n return Array.isArray(value) ? Object.freeze([...value]) : value;\n}\n","import type { ParsedUrlInput } from './parse-url.js';\n\nexport function formatParsedUrl(input: ParsedUrlInput, search: string): string {\n return `${input.pathname}${search}${input.hash}`;\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport { buildRawSearch } from '../search/build-raw-search.js';\nimport { omitRawSearch, pickRawSearch } from '../search/filter-raw-search.js';\nimport { parseRawSearch } from '../search/parse-raw-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { formatParsedUrl } from './format-parsed-url.js';\nimport { parseUrl } from './parse-url.js';\n\nexport function omitCompiledUrlSearch(\n input: string | URL,\n keys: readonly string[],\n _compiled: CompiledUrlDescriptor,\n options: BuildSearchOptions = {},\n): string {\n const parsed = parseUrl(input);\n const filtered = omitRawSearch(parseRawSearch(parsed.searchParams), keys);\n\n return formatParsedUrl(parsed, buildRawSearch(filtered, options));\n}\n\nexport function pickCompiledUrlSearch(\n input: string | URL,\n keys: readonly string[],\n _compiled: CompiledUrlDescriptor,\n options: BuildSearchOptions = {},\n): string {\n const parsed = parseUrl(input);\n const filtered = pickRawSearch(parseRawSearch(parsed.searchParams), keys);\n\n return formatParsedUrl(parsed, buildRawSearch(filtered, options));\n}\n","export function joinSearchStrings(...parts: readonly string[]): string {\n const body = parts\n .map((part) => part.replace(/^\\?/, ''))\n .filter(Boolean)\n .join('&');\n\n return body ? `?${body}` : '';\n}\n","import type { AnyRuntimeSchemaBuilder } from '../schema/contracts.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport { getObjectSchemaShape, type AnyObjectSchema } from '../schema/object.js';\nimport type { CompiledSearchField, RawSearchParams } from './contracts.js';\nimport { joinObjectSearchKey } from './object-search-key.js';\n\nexport function hasSearchFieldRawValue(\n field: CompiledSearchField,\n rawSearch: RawSearchParams,\n): boolean {\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n return hasObjectRawValue(field.schema as AnyObjectSchema, field.key, rawSearch);\n }\n\n return rawSearch[field.key] !== undefined;\n}\n\nfunction hasObjectRawValue(\n schema: AnyObjectSchema,\n parentKey: string,\n rawSearch: RawSearchParams,\n): boolean {\n const shape = getObjectSchemaShape(schema);\n\n return Object.entries(shape).some(([key, childSchema]) => {\n const childSearchKey = joinObjectSearchKey(parentKey, key);\n\n if (isRuntimeSchemaKind(childSchema as AnyRuntimeSchemaBuilder, 'object')) {\n return hasObjectRawValue(childSchema as AnyObjectSchema, childSearchKey, rawSearch);\n }\n\n return rawSearch[childSearchKey] !== undefined;\n });\n}\n","import type {\n CompiledSearchSchema,\n RawSearchParams,\n RawSearchValue,\n SearchParseOptions,\n} from './contracts.js';\nimport { copyRawSearchParams } from './copy-raw-search-params.js';\nimport { deleteSearchFieldRawKeys } from './delete-search-field-raw-keys.js';\nimport { hasSearchFieldRawValue } from './has-search-field-raw-value.js';\nimport { parseSearchFieldValue } from './parse-search-field-value.js';\n\nexport interface PartialCompiledSearchParseResult {\n readonly search: Record<string, unknown>;\n readonly unknownSearch: RawSearchParams;\n}\n\nexport function parsePartialCompiledSearch(\n rawSearch: RawSearchParams,\n compiled: CompiledSearchSchema,\n options: SearchParseOptions = {},\n): PartialCompiledSearchParseResult {\n const remainingUnknown = { ...rawSearch } satisfies Record<string, RawSearchValue>;\n const search: Record<string, unknown> = {};\n\n for (const field of compiled.fields) {\n if (!hasSearchFieldRawValue(field, rawSearch)) {\n continue;\n }\n\n const value = parseSearchFieldValue(field, rawSearch, options);\n deleteSearchFieldRawKeys(field, remainingUnknown);\n\n if (value !== undefined) {\n search[field.key] = value;\n }\n }\n\n return Object.freeze({\n search: Object.freeze(search),\n unknownSearch: copyRawSearchParams(remainingUnknown),\n });\n}\n","import type { PatchSearchOptions } from '../contracts.js';\nimport { buildRawSearch } from '../search/build-raw-search.js';\nimport { buildCompiledSearch } from '../search/build-compiled-search.js';\nimport type { RawSearchParams, RawSearchValue } from '../search/contracts.js';\nimport { copyRawSearchParams } from '../search/copy-raw-search-params.js';\nimport { joinSearchStrings } from '../search/join-search-strings.js';\nimport { parsePartialCompiledSearch } from '../search/parse-partial-compiled-search.js';\nimport { parseRawSearch } from '../search/parse-raw-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { formatParsedUrl } from './format-parsed-url.js';\nimport { parseUrl } from './parse-url.js';\n\nexport function patchCompiledUrlSearch(\n input: string | URL,\n patch: Record<string, unknown>,\n compiled: CompiledUrlDescriptor,\n options: PatchSearchOptions = {},\n): string {\n const parsed = parseUrl(input);\n const rawSearch = parseRawSearch(parsed.searchParams);\n\n if (!compiled.search) {\n return formatParsedUrl(parsed, buildRawPatchSearch(rawSearch, patch, options));\n }\n\n const currentParsed = parsePartialCompiledSearch(rawSearch, compiled.search, options);\n const mergedSearch: Record<string, unknown> = { ...currentParsed.search };\n const unknownSearch: Record<string, RawSearchValue> = {\n ...copyRawSearchParams(currentParsed.unknownSearch),\n };\n const schemaKeys = compiled.search.keys;\n\n for (const [key, value] of Object.entries(patch)) {\n if (shouldRemoveUndefined(value, options) || shouldRemoveNull(value, options)) {\n delete mergedSearch[key];\n delete unknownSearch[key];\n continue;\n }\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (schemaKeys.has(key)) {\n mergedSearch[key] = value;\n }\n }\n\n const search = joinSearchStrings(\n buildCompiledSearch(mergedSearch, compiled.search, options),\n buildRawSearch(unknownSearch, options),\n );\n\n return formatParsedUrl(parsed, search);\n}\n\nfunction buildRawPatchSearch(\n rawSearch: RawSearchParams,\n patch: Record<string, unknown>,\n options: PatchSearchOptions,\n): string {\n const merged: Record<string, RawSearchValue> = { ...rawSearch };\n\n for (const [key, value] of Object.entries(patch)) {\n if (shouldRemoveUndefined(value, options) || shouldRemoveNull(value, options)) {\n delete merged[key];\n continue;\n }\n\n if (value === undefined || value === null) {\n continue;\n }\n\n merged[key] = toRawSearchValue(value);\n }\n\n return buildRawSearch(merged, options);\n}\n\nfunction shouldRemoveUndefined(value: unknown, options: PatchSearchOptions): boolean {\n return value === undefined && options.removeUndefined === true;\n}\n\nfunction shouldRemoveNull(value: unknown, options: PatchSearchOptions): boolean {\n return value === null && options.removeNull === true;\n}\n\nfunction toRawSearchValue(value: unknown): RawSearchValue {\n if (Array.isArray(value)) {\n return Object.freeze(value.filter(isPresent).map(String));\n }\n\n return String(value);\n}\n\nfunction isPresent(value: unknown): boolean {\n return value !== undefined && value !== null;\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport { buildRawSearch } from '../search/build-raw-search.js';\nimport { buildCompiledSearch } from '../search/build-compiled-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { formatParsedUrl } from './format-parsed-url.js';\nimport { parseUrl } from './parse-url.js';\n\nexport function replaceCompiledUrlSearch(\n input: string | URL,\n next: Record<string, unknown>,\n compiled: CompiledUrlDescriptor,\n options: BuildSearchOptions = {},\n): string {\n const parsed = parseUrl(input);\n const search = compiled.search\n ? buildCompiledSearch(next, compiled.search, options)\n : buildRawSearch(next, options);\n\n return formatParsedUrl(parsed, search);\n}\n","import { compileHashDescriptor } from '../hash/compile-hash-descriptor.js';\nimport type { CompiledHashDescriptor } from '../hash/contracts.js';\nimport { compileSearchSchema } from '../search/compile-search-schema.js';\nimport type { CompiledSearchSchema, RuntimeSearchSchema } from '../search/contracts.js';\nimport type { UrlMode } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport { compilePath } from './compile-path.js';\nimport type { CompiledPath, NormalizedUrlDescriptor } from './contracts.js';\n\nexport interface CompiledUrlDescriptor<Mode extends UrlMode = UrlMode> {\n readonly mode: Mode;\n readonly pattern: Mode extends 'path' ? string : undefined;\n readonly path: Mode extends 'path' ? CompiledPath : undefined;\n readonly searchSchema?: RuntimeSearchSchema;\n readonly search?: CompiledSearchSchema;\n readonly hash?: CompiledHashDescriptor;\n}\n\nexport function compileUrlDescriptor<Mode extends UrlMode>(\n descriptor: NormalizedUrlDescriptor<Mode>,\n): CompiledUrlDescriptor<Mode> {\n assertNormalizedUrlDescriptor(descriptor);\n\n const path = compileUrlPath(descriptor);\n const search = descriptor.search ? compileSearchSchema(descriptor.search) : undefined;\n const hash = descriptor.hash ? compileHashDescriptor(descriptor.hash) : undefined;\n\n return Object.freeze({\n mode: descriptor.mode,\n pattern: descriptor.pattern,\n path,\n ...(descriptor.search ? { searchSchema: descriptor.search, search } : {}),\n ...(hash ? { hash } : {}),\n }) as CompiledUrlDescriptor<Mode>;\n}\n\nfunction compileUrlPath<Mode extends UrlMode>(\n descriptor: NormalizedUrlDescriptor<Mode>,\n): CompiledUrlDescriptor<Mode>['path'] {\n if (descriptor.mode === 'path') {\n if (descriptor.path) {\n return descriptor.path;\n }\n\n if (typeof descriptor.pattern === 'string') {\n return compilePath(descriptor.pattern) as unknown as CompiledUrlDescriptor<Mode>['path'];\n }\n\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Path URL descriptor must include a path pattern.',\n { path: ['path'] },\n );\n }\n\n return undefined as CompiledUrlDescriptor<Mode>['path'];\n}\n\nfunction assertNormalizedUrlDescriptor(input: unknown): asserts input is NormalizedUrlDescriptor {\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-descriptor', 'URL descriptor must be an object.', { path: [] });\n }\n\n if (input.mode !== 'path' && input.mode !== 'pathless') {\n throw new UrlKitError('invalid-descriptor', 'URL descriptor mode must be path or pathless.', {\n path: ['mode'],\n });\n }\n\n if (input.mode === 'path' && typeof input.pattern !== 'string') {\n throw new UrlKitError('invalid-descriptor', 'Path URL descriptor pattern must be a string.', {\n path: ['pattern'],\n });\n }\n\n if (input.mode === 'pathless' && input.pattern !== undefined) {\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Pathless URL descriptor pattern must be undefined.',\n { path: ['pattern'] },\n );\n }\n}\n\nfunction isRecord(input: unknown): input is Record<string, unknown> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","import type {\n BuildSearchOptions,\n BuildUrlOptions,\n EmptyParams,\n NormalizeUrlOptions,\n NormalizeUrlState,\n ParseRequestOptions,\n ParseUrlOptions,\n PatchSearchOptions,\n SearchInputArgument,\n UrlBuildInput,\n UrlNormalizeInput,\n UrlRequestInput,\n UrlSafeNormalizeResult,\n UrlSafeParseResult,\n UrlState,\n} from '../contracts.js';\nimport { buildHash } from '../hash/build-hash.js';\nimport { parseHash } from '../hash/parse-hash.js';\nimport { buildCompiledSearch } from '../search/build-compiled-search.js';\nimport { parseRawSearch } from '../search/parse-raw-search.js';\nimport { parseCompiledSearch } from '../search/parse-compiled-search.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport { normalizeCompiledUrl } from './normalize-compiled-url.js';\nimport { buildCompiledUrl } from './build-compiled-url.js';\nimport { parseCompiledUrl } from './parse-compiled-url.js';\nimport { resolveRequestUrlInput } from './parse-request.js';\nimport { matchCompiledUrl } from './match-url.js';\nimport { omitCompiledUrlSearch, pickCompiledUrlSearch } from './filter-compiled-url-search.js';\nimport { patchCompiledUrlSearch } from './patch-compiled-url-search.js';\nimport { replaceCompiledUrlSearch } from './replace-compiled-url-search.js';\nimport { compileUrlDescriptor } from './compile-url-descriptor.js';\nimport type {\n CreateUrlContractOptions,\n NormalizedUrlDescriptor,\n UrlContract,\n} from './contracts.js';\n\nexport function createUrlContract<\n Mode extends 'path' | 'pathless',\n Pathname = Mode extends 'path' ? string : string,\n Params = Mode extends 'path' ? Record<string, string | number> : EmptyParams,\n Search = Record<string, unknown>,\n Hash = string | undefined,\n SearchInput = Partial<Search>,\n HashInput = Hash,\n>(\n descriptor: NormalizedUrlDescriptor<Mode>,\n options: CreateUrlContractOptions = {},\n): UrlContract<Mode, Pathname, Params, Search, Hash, SearchInput, HashInput> {\n const compiled = compileUrlDescriptor(descriptor);\n const unknownSearch = options.unknownSearch ?? 'strip';\n const arrayFormat = options.arrayFormat ?? 'repeat';\n\n const contract = {\n pattern: compiled.pattern,\n parse(\n input: string | URL,\n options?: ParseUrlOptions,\n ): UrlState<Pathname, Params, Search, Hash> {\n return parseCompiledUrl<Pathname, Params, Search, Hash>(\n input,\n compiled,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n );\n },\n safeParse(\n input: string | URL,\n options?: ParseUrlOptions,\n ): UrlSafeParseResult<Pathname, Params, Search, Hash> {\n try {\n return Object.freeze({\n success: true,\n data: parseCompiledUrl<Pathname, Params, Search, Hash>(\n input,\n compiled,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n ),\n });\n } catch (error) {\n return Object.freeze({\n success: false,\n error:\n error instanceof UrlKitError ? error : new UrlKitError('invalid-url', { cause: error }),\n });\n }\n },\n parseRequest(\n input: Request | UrlRequestInput,\n options?: ParseRequestOptions,\n ): UrlState<Pathname, Params, Search, Hash> {\n return parseCompiledUrl<Pathname, Params, Search, Hash>(\n resolveRequestUrlInput(input, options),\n compiled,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n );\n },\n safeParseRequest(\n input: Request | UrlRequestInput,\n options?: ParseRequestOptions,\n ): UrlSafeParseResult<Pathname, Params, Search, Hash> {\n try {\n return Object.freeze({\n success: true,\n data: parseCompiledUrl<Pathname, Params, Search, Hash>(\n resolveRequestUrlInput(input, options),\n compiled,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n ),\n });\n } catch (error) {\n return Object.freeze({\n success: false,\n error:\n error instanceof UrlKitError ? error : new UrlKitError('invalid-url', { cause: error }),\n });\n }\n },\n normalize<\n const Input extends UrlNormalizeInput<Mode, Params, Search, Hash, SearchInput, HashInput>,\n >(\n input: Input,\n options?: NormalizeUrlOptions,\n ): NormalizeUrlState<Mode, Pathname, Params, Search, Hash, Input> {\n return normalizeCompiledUrl<Mode, Pathname, Params, Search, Hash, Input>(\n input,\n compiled,\n options?.unknownSearch ?? unknownSearch,\n );\n },\n safeNormalize<\n const Input extends UrlNormalizeInput<Mode, Params, Search, Hash, SearchInput, HashInput>,\n >(\n input: Input,\n options?: NormalizeUrlOptions,\n ): UrlSafeNormalizeResult<Mode, Pathname, Params, Search, Hash, Input> {\n try {\n return Object.freeze({\n success: true,\n data: normalizeCompiledUrl<Mode, Pathname, Params, Search, Hash, Input>(\n input,\n compiled,\n options?.unknownSearch ?? unknownSearch,\n ),\n });\n } catch (error) {\n return Object.freeze({\n success: false,\n error:\n error instanceof UrlKitError ? error : new UrlKitError('invalid-url', { cause: error }),\n });\n }\n },\n build(\n input:\n | UrlBuildInput<Mode, Params, Search, Hash, SearchInput, HashInput>\n | UrlState<Pathname, Params, Search, Hash>,\n options?: BuildUrlOptions,\n ): string {\n return buildCompiledUrl<Mode, Params, Search, Hash, SearchInput, HashInput>(\n input as UrlBuildInput<Mode, Params, Search, Hash, SearchInput, HashInput>,\n compiled,\n mergeBuildOptions(arrayFormat, options),\n );\n },\n match(input: string | URL, options?: ParseUrlOptions): boolean {\n return matchCompiledUrl(input, compiled, options?.unknownSearch ?? unknownSearch, {\n arrayFormat: options?.arrayFormat ?? arrayFormat,\n });\n },\n // eslint-disable-next-line @typescript-eslint/unbound-method\n parsePathname: compiled.path?.parsePathname,\n buildPath: compiled.path?.buildPath,\n parseSearch(input: string | URLSearchParams, options?: ParseUrlOptions): Search {\n if (compiled.search) {\n return parseCompiledSearch(\n parseRawSearch(input),\n compiled.search,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n ).search as Search;\n }\n\n return Object.freeze({}) as Search;\n },\n parseHash(input: unknown): Hash {\n return compiled.hash\n ? (parseHash(input, compiled.hash.descriptor) as Hash)\n : (parseHash(input) as Hash);\n },\n buildSearch(search: SearchInputArgument<SearchInput>, options?: BuildSearchOptions): string {\n if (compiled.search) {\n return buildCompiledSearch(\n search as Record<string, unknown>,\n compiled.search,\n mergeBuildOptions(arrayFormat, options),\n );\n }\n\n return '';\n },\n buildHash(hash: Hash, options?: BuildUrlOptions): string {\n return compiled.hash\n ? buildHash(hash, compiled.hash.descriptor, options)\n : buildHash(hash, options);\n },\n withSearch(input: string | URL, search: Partial<Search>, options?: PatchSearchOptions): string {\n return patchCompiledUrlSearch(\n input,\n search,\n compiled,\n mergeBuildOptions(arrayFormat, options),\n );\n },\n replaceSearch(input: string | URL, search: SearchInput, options?: BuildSearchOptions): string {\n return replaceCompiledUrlSearch(\n input,\n search as Record<string, unknown>,\n compiled,\n mergeBuildOptions(arrayFormat, options),\n );\n },\n omitSearch(input: string | URL, keys: readonly string[], options?: BuildSearchOptions): string {\n return omitCompiledUrlSearch(input, keys, compiled, mergeBuildOptions(arrayFormat, options));\n },\n pickSearch(input: string | URL, keys: readonly string[], options?: BuildSearchOptions): string {\n return pickCompiledUrlSearch(input, keys, compiled, mergeBuildOptions(arrayFormat, options));\n },\n };\n\n return Object.freeze(contract) as unknown as UrlContract<\n Mode,\n Pathname,\n Params,\n Search,\n Hash,\n SearchInput,\n HashInput\n >;\n}\n\nfunction mergeBuildOptions<Options extends BuildUrlOptions>(\n arrayFormat: NonNullable<BuildUrlOptions['arrayFormat']>,\n options: Options | undefined,\n): Options & BuildUrlOptions {\n return {\n ...options,\n arrayFormat: options?.arrayFormat ?? arrayFormat,\n } as Options & BuildUrlOptions;\n}\n"],"names":["isPlainObject","HASH_PATH","isRecord","resolveUnknownSearch","isPresent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create-url-contract-DcYa3Jv4.js","sources":["../src/schema/parse-compiled-runtime-schema-value.ts","../src/schema/parse-runtime-schema-value.ts","../src/schema/serialize-compiled-runtime-schema-value.ts","../src/schema/serialize-runtime-schema-value.ts","../src/schema/array.ts","../src/schema/object.ts","../src/hash/copy-normalized-hash-descriptor.ts","../src/hash/validate-normalized-hash-value.ts","../src/hash/compile-normalized-hash-descriptor.ts","../src/hash/compile-runtime-hash-descriptor.ts","../src/hash/is-normalized-hash-descriptor.ts","../src/hash/compile-hash-descriptor.ts","../src/hash/hash-fragment.ts","../src/hash/build-hash.ts","../src/hash/parse-hash.ts","../src/schema/is-runtime-schema-kind.ts","../src/search/append-search-entry.ts","../src/search/object-search-key.ts","../src/search/append-object-search-entries.ts","../src/search/are-search-values-equal.ts","../src/search/normalize-search-build-value.ts","../src/search/serialize-search-build-value.ts","../src/search/serialize-search-entries.ts","../src/search/build-compiled-search.ts","../src/search/append-raw-search-value.ts","../src/search/create-search-params.ts","../src/search/parse-raw-search.ts","../src/search/copy-raw-search-params.ts","../src/search/collect-object-search-paths.ts","../src/search/object-search-raw-key-path.ts","../src/search/object-search-path-key.ts","../src/search/delete-search-field-raw-keys.ts","../src/search/search-array-format.ts","../src/search/parse-array-search-value.ts","../src/search/assert-object-search-collisions.ts","../src/search/find-object-search-raw-value.ts","../src/search/parse-object-search-value.ts","../src/search/parse-search-field-value.ts","../src/search/parse-compiled-search.ts","../src/search/copy-unknown-structured-search.ts","../src/search/normalize-compiled-search.ts","../src/url/url-state-brand.ts","../src/url/normalize-compiled-url.ts","../src/url/build-compiled-url.ts","../src/url/parse-url.ts","../src/url/resolve-url-unknown-search.ts","../src/url/parse-compiled-url.ts","../src/url/parse-request.ts","../src/url/match-url.ts","../src/search/build-raw-search.ts","../src/search/filter-raw-search.ts","../src/url/format-parsed-url.ts","../src/url/filter-compiled-url-search.ts","../src/search/join-search-strings.ts","../src/search/has-search-field-raw-value.ts","../src/search/parse-partial-compiled-search.ts","../src/url/patch-compiled-url-search.ts","../src/url/replace-compiled-url-search.ts","../src/url/compile-url-descriptor.ts","../src/url/create-url-contract.ts"],"sourcesContent":["import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RuntimeSchemaValueOptions } from './contracts.js';\nimport type { CompiledRuntimeSchema } from './compile-runtime-schema-value.js';\nimport { createSchemaValueError } from './create-schema-value-error.js';\nimport { handleRuntimeSchemaAbsence } from './handle-runtime-schema-absence.js';\nimport { createRuntimeSchemaValueContext } from './runtime-schema-value-context.js';\n\nexport function parseCompiledRuntimeSchemaValue<Value = unknown>(\n compiled: CompiledRuntimeSchema<Value>,\n input: unknown,\n options: RuntimeSchemaValueOptions = {},\n): Value {\n const absence = handleRuntimeSchemaAbsence(compiled.descriptor, input, options);\n\n if (absence.handled) {\n return absence.value as Value;\n }\n\n if (typeof input !== 'string') {\n throw createSchemaValueError(\n options.errorCode ?? 'invalid-search',\n 'Serialized schema values must be strings.',\n options.path ?? [],\n );\n }\n\n if (!compiled.codec) {\n throw new UrlKitError(\n 'invalid-descriptor',\n `Runtime schema \"${compiled.descriptor.kind}\" does not define a parser.`,\n options.path ? { path: options.path } : undefined,\n );\n }\n\n try {\n return compiled.codec.parse(\n input,\n createRuntimeSchemaValueContext(compiled.descriptor.kind, options),\n );\n } catch (error) {\n if (error instanceof UrlKitError) {\n throw error;\n }\n\n throw createSchemaValueError(\n options.errorCode ?? 'invalid-search',\n 'Schema value is invalid.',\n options.path ?? [],\n error,\n );\n }\n}\n","import type {\n NormalizedRuntimeSchemaDescriptor,\n RuntimeSchemaBuilder,\n RuntimeSchemaOptions,\n RuntimeSchemaValueOptions,\n} from './contracts.js';\nimport { compileRuntimeSchemaValue } from './compile-runtime-schema-value.js';\nimport { parseCompiledRuntimeSchemaValue } from './parse-compiled-runtime-schema-value.js';\n\nexport function parseRuntimeSchemaValue<\n Value,\n Kind extends string,\n Options extends RuntimeSchemaOptions,\n Descriptor extends NormalizedRuntimeSchemaDescriptor<Kind, Options>,\n>(\n schema: RuntimeSchemaBuilder<Value, Kind, Options, Descriptor>,\n input: unknown,\n options: RuntimeSchemaValueOptions = {},\n): Value {\n return parseCompiledRuntimeSchemaValue(\n compileRuntimeSchemaValue(schema, options),\n input,\n options,\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RuntimeSchemaValueOptions } from './contracts.js';\nimport type { CompiledRuntimeSchema } from './compile-runtime-schema-value.js';\nimport { createSchemaValueError } from './create-schema-value-error.js';\nimport { handleRuntimeSchemaAbsence } from './handle-runtime-schema-absence.js';\nimport { createRuntimeSchemaValueContext } from './runtime-schema-value-context.js';\n\nexport function serializeCompiledRuntimeSchemaValue<Value = unknown>(\n compiled: CompiledRuntimeSchema<Value>,\n input: unknown,\n options: RuntimeSchemaValueOptions = {},\n): string | undefined {\n const absence = handleRuntimeSchemaAbsence(compiled.descriptor, input, options);\n\n if (absence.handled) {\n if (absence.value === undefined) {\n return undefined;\n }\n\n input = absence.value;\n }\n\n if (!compiled.codec) {\n throw new UrlKitError(\n 'invalid-descriptor',\n `Runtime schema \"${compiled.descriptor.kind}\" does not define a serializer.`,\n options.path ? { path: options.path } : undefined,\n );\n }\n\n try {\n const context = createRuntimeSchemaValueContext(compiled.descriptor.kind, options);\n const normalized = compiled.codec.normalize(input, context);\n return compiled.codec.serialize(normalized, context);\n } catch (error) {\n if (error instanceof UrlKitError) {\n throw error;\n }\n\n throw createSchemaValueError(\n options.errorCode ?? 'invalid-search',\n 'Schema value is invalid.',\n options.path ?? [],\n error,\n );\n }\n}\n","import type {\n NormalizedRuntimeSchemaDescriptor,\n RuntimeSchemaBuilder,\n RuntimeSchemaOptions,\n RuntimeSchemaValueOptions,\n} from './contracts.js';\nimport { compileRuntimeSchemaValue } from './compile-runtime-schema-value.js';\nimport { serializeCompiledRuntimeSchemaValue } from './serialize-compiled-runtime-schema-value.js';\n\nexport function serializeRuntimeSchemaValue<\n Value,\n Kind extends string,\n Options extends RuntimeSchemaOptions,\n Descriptor extends NormalizedRuntimeSchemaDescriptor<Kind, Options>,\n>(\n schema: RuntimeSchemaBuilder<Value, Kind, Options, Descriptor>,\n input: unknown,\n options: RuntimeSchemaValueOptions = {},\n): string | undefined {\n return serializeCompiledRuntimeSchemaValue(\n compileRuntimeSchemaValue(schema, options),\n input,\n options,\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type {\n AnyRuntimeSchemaBuilder,\n InferRuntimeSchemaValue,\n NormalizedRuntimeSchemaDescriptor,\n RequiredRuntimeSchemaDescriptor,\n RuntimeDefaultValidationContext,\n RuntimeSchemaCodec,\n RuntimeSchemaOptions,\n RuntimeSchemaBuilder,\n RuntimeSchemaValueContext,\n} from './contracts.js';\nimport {\n runtimeSchemaSymbol,\n type RuntimeSchemaBuilderWithInternals,\n} from './runtime-schema-symbol.js';\nimport { compileRuntimeSchema } from './compile-runtime-schema.js';\nimport { getRuntimeSchemaInternals } from './get-runtime-schema-internals.js';\nimport { createRuntimeSchemaBuilder } from './create-schema-builder.js';\nimport { createSchemaValueError } from './create-schema-value-error.js';\nimport { normalizeRuntimeSchemaValue } from './normalize-runtime-schema-value.js';\nimport { parseRuntimeSchemaValue } from './parse-runtime-schema-value.js';\nimport { serializeRuntimeSchemaValue } from './serialize-runtime-schema-value.js';\n\nexport interface ArraySchemaOptions<\n ElementDescriptor extends NormalizedRuntimeSchemaDescriptor = NormalizedRuntimeSchemaDescriptor,\n> extends RuntimeSchemaOptions {\n readonly element: ElementDescriptor;\n}\n\nexport interface ArraySchema<Schema extends AnyRuntimeSchemaBuilder> extends RuntimeSchemaBuilder<\n readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[],\n 'array',\n ArraySchemaOptions,\n RequiredRuntimeSchemaDescriptor<'array', ArraySchemaOptions>\n> {}\n\nconst arrayElements = new WeakMap<AnyRuntimeSchemaBuilder, AnyRuntimeSchemaBuilder>();\n\nexport function array<Schema extends AnyRuntimeSchemaBuilder>(\n element: Schema,\n): ArraySchema<Schema> {\n const elementDescriptor = createElementDescriptor(element);\n\n const builder = createRuntimeSchemaBuilder<\n readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[],\n 'array',\n ArraySchemaOptions\n >({\n kind: 'array',\n options: {\n element: elementDescriptor,\n },\n codec: createArrayCodec(element) as RuntimeSchemaCodec<\n readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[]\n >,\n validateDescriptor(context) {\n compileRuntimeSchema(element, { path: [...context.path, '*'] });\n },\n validateDefault(value, context) {\n validateArrayDefault(element, value, context);\n },\n });\n\n return withArrayElement(builder, element);\n}\n\nexport function parseArrayRuntimeSchemaValue<Schema extends AnyRuntimeSchemaBuilder>(\n schema: ArraySchema<Schema>,\n input: string | readonly string[],\n context: RuntimeSchemaValueContext,\n): readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[] {\n const values = Array.isArray(input) ? input : [input];\n const element = getArrayElementSchema(schema);\n\n return Object.freeze(\n values.map(\n (value) =>\n parseRuntimeSchemaValue(element, value, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n }) as Exclude<InferRuntimeSchemaValue<Schema>, undefined>,\n ),\n );\n}\n\nexport function serializeArrayRuntimeSchemaValue<Schema extends AnyRuntimeSchemaBuilder>(\n schema: ArraySchema<Schema>,\n input: unknown,\n context: RuntimeSchemaValueContext,\n): readonly string[] | undefined {\n const normalized = normalizeRuntimeSchemaValue(schema, input, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n });\n\n if (!normalized.length) {\n return undefined;\n }\n\n const element = getArrayElementSchema(schema);\n\n return Object.freeze(\n normalized.map(\n (value) =>\n serializeRuntimeSchemaValue(element, value, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n }) ?? '',\n ),\n );\n}\n\nfunction withArrayElement<Schema extends AnyRuntimeSchemaBuilder>(\n builder: AnyRuntimeSchemaBuilder,\n element: Schema,\n): ArraySchema<Schema> {\n const wrapped = {\n [runtimeSchemaSymbol]: (builder as RuntimeSchemaBuilderWithInternals<any, any, any, any>)[\n runtimeSchemaSymbol\n ],\n\n optional: () => withArrayElement(builder.optional(), element),\n\n required: () => withArrayElement(builder.required(), element),\n\n default: (value: readonly Exclude<InferRuntimeSchemaValue<Schema>, undefined>[]) =>\n withArrayElement(builder.default(value), element),\n } as unknown as ArraySchema<Schema>;\n\n arrayElements.set(wrapped, element);\n\n return Object.freeze(wrapped);\n}\n\nfunction createArrayCodec<Schema extends AnyRuntimeSchemaBuilder>(\n schema: Schema,\n): RuntimeSchemaCodec<readonly unknown[]> {\n return {\n parse(input, context) {\n return Object.freeze([\n parseRuntimeSchemaValue(schema, input, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n }),\n ]);\n },\n\n normalize(input, context) {\n if (!Array.isArray(input)) {\n throw createSchemaValueError(context.errorCode, 'Expected an array value.', context.path);\n }\n\n return Object.freeze(\n input.map((item) =>\n normalizeRuntimeSchemaValue(schema, item, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n }),\n ),\n );\n },\n\n serialize() {\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Array schemas require repeated-key search serialization.',\n );\n },\n };\n}\n\nfunction validateArrayDefault<Schema extends AnyRuntimeSchemaBuilder>(\n schema: Schema,\n value: readonly unknown[],\n context: RuntimeDefaultValidationContext,\n): void {\n if (!Array.isArray(value)) {\n throw new UrlKitError('invalid-descriptor', 'Array schema default must be an array.', {\n path: context.path,\n });\n }\n\n for (const item of value) {\n normalizeRuntimeSchemaValue(schema, item, {\n path: context.path,\n errorCode: 'invalid-descriptor',\n missingCode: 'invalid-descriptor',\n });\n }\n}\n\nfunction createElementDescriptor(\n schema: AnyRuntimeSchemaBuilder,\n): NormalizedRuntimeSchemaDescriptor {\n return getRuntimeSchemaInternals(schema).toDescriptor();\n}\n\nfunction getArrayElementSchema<Schema extends AnyRuntimeSchemaBuilder>(\n schema: ArraySchema<Schema>,\n): Schema {\n const element = arrayElements.get(schema);\n\n if (element) {\n return element as Schema;\n }\n\n throw new UrlKitError('invalid-descriptor', 'Array schema element is missing.');\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type {\n AnyRuntimeSchemaBuilder,\n InferRuntimeSchemaValue,\n NormalizedRuntimeSchemaDescriptor,\n RequiredRuntimeSchemaDescriptor,\n RuntimeDefaultValidationContext,\n RuntimeSchemaCodec,\n RuntimeSchemaOptions,\n RuntimeSchemaBuilder,\n RuntimeSchemaValueContext,\n} from './contracts.js';\nimport {\n runtimeSchemaSymbol,\n type RuntimeSchemaBuilderWithInternals,\n} from './runtime-schema-symbol.js';\nimport { compileRuntimeSchema } from './compile-runtime-schema.js';\nimport { createRuntimeSchemaBuilder } from './create-schema-builder.js';\nimport { createSchemaValueError } from './create-schema-value-error.js';\nimport { getRuntimeSchemaInternals } from './get-runtime-schema-internals.js';\nimport { normalizeRuntimeSchemaValue } from './normalize-runtime-schema-value.js';\n\nexport type ObjectSchemaShape = Readonly<Record<string, AnyRuntimeSchemaBuilder>>;\n\nexport interface ObjectSchemaOptions extends RuntimeSchemaOptions {\n readonly shape: Readonly<Record<string, NormalizedRuntimeSchemaDescriptor>>;\n}\n\nexport interface ObjectSchema<\n Shape extends ObjectSchemaShape,\n Value = InferObjectShape<Shape>,\n Descriptor extends NormalizedRuntimeSchemaDescriptor<'object', ObjectSchemaOptions> =\n RequiredRuntimeSchemaDescriptor<'object', ObjectSchemaOptions>,\n> extends RuntimeSchemaBuilder<Value, 'object', ObjectSchemaOptions, Descriptor> {}\n\nexport type AnyObjectSchema = ObjectSchema<any, any, any>;\n\nexport type InferObjectShape<Shape extends ObjectSchemaShape> = Simplify<\n {\n readonly [Key in keyof Shape as IsOptionalObjectField<Shape[Key]> extends true\n ? never\n : Key]: InferRuntimeSchemaValue<Shape[Key]>;\n } & {\n readonly [Key in keyof Shape as IsOptionalObjectField<Shape[Key]> extends true\n ? Key\n : never]?: Exclude<InferRuntimeSchemaValue<Shape[Key]>, undefined>;\n }\n>;\n\nconst objectShapes = new WeakMap<AnyRuntimeSchemaBuilder, ObjectSchemaShape>();\n\nexport function object<const Shape extends ObjectSchemaShape>(shape: Shape): ObjectSchema<Shape> {\n validateObjectShape(shape);\n\n const builder = createRuntimeSchemaBuilder<\n InferObjectShape<Shape>,\n 'object',\n ObjectSchemaOptions\n >({\n kind: 'object',\n options: {\n shape: createShapeDescriptor(shape),\n },\n codec: createObjectCodec(shape),\n validateDescriptor(context) {\n validateObjectDescriptor(shape, context);\n },\n validateDefault(value, context) {\n validateObjectDefault(shape, value, context);\n },\n });\n\n return withObjectShape(builder, shape);\n}\n\nfunction withObjectShape<\n Shape extends ObjectSchemaShape,\n Value,\n Descriptor extends NormalizedRuntimeSchemaDescriptor<'object', ObjectSchemaOptions>,\n>(\n builder: RuntimeSchemaBuilder<Value, 'object', ObjectSchemaOptions, Descriptor>,\n shape: Shape,\n): ObjectSchema<Shape, Value, Descriptor> {\n const wrapped = {\n [runtimeSchemaSymbol]: (\n builder as RuntimeSchemaBuilderWithInternals<Value, 'object', ObjectSchemaOptions, Descriptor>\n )[runtimeSchemaSymbol],\n\n optional: () => withObjectShape(builder.optional(), shape),\n\n required: () => withObjectShape(builder.required(), shape),\n\n default: (value: NonNullable<Value>) => withObjectShape(builder.default(value), shape),\n } as unknown as ObjectSchema<Shape, Value, Descriptor>;\n\n objectShapes.set(wrapped, shape);\n\n return Object.freeze(wrapped);\n}\n\nexport function getObjectSchemaShape<Shape extends ObjectSchemaShape>(\n schema: ObjectSchema<Shape, any, any>,\n): Shape {\n const shape = objectShapes.get(schema);\n\n if (shape) {\n return shape as Shape;\n }\n\n throw new UrlKitError('invalid-descriptor', 'Object schema shape is missing.');\n}\n\nfunction createObjectCodec<Shape extends ObjectSchemaShape>(\n shape: Shape,\n): RuntimeSchemaCodec<InferObjectShape<Shape>> {\n return {\n parse(_input, context) {\n throw createSchemaValueError(\n context.errorCode,\n 'Object search values must use declared dotted keys.',\n context.path,\n );\n },\n\n normalize(input, context) {\n return normalizeObjectValue(shape, input, context) as InferObjectShape<Shape>;\n },\n\n serialize(_input, context) {\n throw createSchemaValueError(\n context.errorCode,\n 'Object search values must use declared dotted keys.',\n context.path,\n );\n },\n };\n}\n\nfunction normalizeObjectValue(\n shape: ObjectSchemaShape,\n input: unknown,\n context: RuntimeSchemaValueContext,\n): Readonly<Record<string, unknown>> {\n if (!isPlainObject(input)) {\n throw createSchemaValueError(context.errorCode, 'Expected an object value.', context.path);\n }\n\n const result: Record<string, unknown> = {};\n\n for (const [key, schema] of Object.entries(shape)) {\n const value = normalizeRuntimeSchemaValue(schema, input[key], {\n path: [...context.path, key],\n errorCode: context.errorCode,\n missingCode: context.errorCode,\n });\n\n if (value !== undefined) {\n result[key] = value;\n }\n }\n\n return Object.freeze(result);\n}\n\nfunction validateObjectDefault(\n shape: ObjectSchemaShape,\n value: InferObjectShape<ObjectSchemaShape>,\n context: RuntimeDefaultValidationContext,\n): void {\n normalizeObjectValue(shape, value, {\n kind: 'object',\n path: context.path,\n errorCode: 'invalid-descriptor',\n });\n}\n\nfunction validateObjectDescriptor(\n shape: ObjectSchemaShape,\n context: RuntimeDefaultValidationContext,\n): void {\n for (const [key, schema] of Object.entries(shape)) {\n compileRuntimeSchema(schema, { path: [...context.path, key] });\n }\n}\n\nfunction createShapeDescriptor(\n shape: ObjectSchemaShape,\n): Readonly<Record<string, NormalizedRuntimeSchemaDescriptor>> {\n const descriptors: Record<string, NormalizedRuntimeSchemaDescriptor> = {};\n\n for (const [key, schema] of Object.entries(shape)) {\n descriptors[key] = getRuntimeSchemaInternals(schema).toDescriptor();\n }\n\n return Object.freeze(descriptors);\n}\n\nfunction validateObjectShape(shape: ObjectSchemaShape): void {\n if (!isPlainObject(shape)) {\n throw new UrlKitError('invalid-descriptor', 'Object schema shape must be an object.');\n }\n\n for (const [key, schema] of Object.entries(shape)) {\n if (!key) {\n throw new UrlKitError('invalid-descriptor', 'Object schema field names must not be empty.');\n }\n\n getRuntimeSchemaInternals(schema);\n }\n}\n\nfunction isPlainObject(input: unknown): input is Record<string, unknown> {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && !(input instanceof Date)\n );\n}\n\ntype IsOptionalObjectField<Schema extends AnyRuntimeSchemaBuilder> =\n undefined extends InferRuntimeSchemaValue<Schema> ? true : false;\n\ntype Simplify<Value> = { readonly [Key in keyof Value]: Value[Key] } & {};\n","import type { NormalizedHashDescriptor } from './contracts.js';\n\nexport function copyNormalizedHashDescriptor(\n descriptor: NormalizedHashDescriptor<string | undefined>,\n): NormalizedHashDescriptor<string | undefined> {\n const values = descriptor.values ? Object.freeze([...descriptor.values]) : undefined;\n\n if (descriptor.presence === 'defaulted') {\n return Object.freeze({\n kind: descriptor.kind,\n presence: 'defaulted',\n ...(values ? { values } : {}),\n defaultValue: descriptor.defaultValue,\n });\n }\n\n return Object.freeze({\n kind: descriptor.kind,\n presence: descriptor.presence,\n ...(values ? { values } : {}),\n });\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { NormalizedHashDescriptor } from './contracts.js';\n\nconst HASH_PATH = Object.freeze(['hash']);\n\nexport interface ValidateNormalizedHashValueOptions {\n readonly serialized: boolean;\n}\n\nexport function validateNormalizedHashValue(\n descriptor: NormalizedHashDescriptor<string | undefined>,\n input: unknown,\n options: ValidateNormalizedHashValueOptions,\n): string | undefined {\n if (input === undefined || input === null) {\n if (descriptor.presence === 'optional') {\n return undefined;\n }\n\n if (descriptor.presence === 'defaulted') {\n return descriptor.defaultValue;\n }\n\n throw new UrlKitError(\n 'invalid-hash',\n input === null ? 'Required hash cannot be null.' : 'Required hash is missing.',\n {\n path: HASH_PATH,\n },\n );\n }\n\n if (typeof input !== 'string') {\n throw new UrlKitError(\n 'invalid-hash',\n options.serialized ? 'Serialized hash must be a string.' : 'Hash must be a string.',\n { path: HASH_PATH },\n );\n }\n\n if (descriptor.kind === 'enum' && !(descriptor.values ?? []).includes(input)) {\n throw new UrlKitError(\n 'invalid-hash',\n `Expected hash to be one of: ${(descriptor.values ?? []).join(', ')}.`,\n {\n path: HASH_PATH,\n },\n );\n }\n\n return input;\n}\n","import type { CompiledHashDescriptor, NormalizedHashDescriptor } from './contracts.js';\nimport { copyNormalizedHashDescriptor } from './copy-normalized-hash-descriptor.js';\nimport { validateNormalizedHashValue } from './validate-normalized-hash-value.js';\n\nexport function compileNormalizedHashDescriptor(\n descriptor: NormalizedHashDescriptor<string | undefined>,\n): CompiledHashDescriptor<string | undefined> {\n const normalizedDescriptor = copyNormalizedHashDescriptor(descriptor);\n\n return Object.freeze({\n descriptor: normalizedDescriptor,\n parse(input: unknown) {\n return validateNormalizedHashValue(normalizedDescriptor, input, { serialized: true });\n },\n normalize(input: unknown) {\n return validateNormalizedHashValue(normalizedDescriptor, input, { serialized: false });\n },\n serialize(input: unknown) {\n const value = validateNormalizedHashValue(normalizedDescriptor, input, { serialized: false });\n return value ?? undefined;\n },\n isDefault(input: unknown) {\n if (normalizedDescriptor.presence !== 'defaulted') {\n return false;\n }\n\n return (\n validateNormalizedHashValue(normalizedDescriptor, input, { serialized: false }) ===\n normalizedDescriptor.defaultValue\n );\n },\n });\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport { compileRuntimeSchemaValue } from '../schema/compile-runtime-schema-value.js';\nimport type { RuntimeSchemaBuilder, RuntimeSchemaOptions } from '../schema/contracts.js';\nimport { normalizeCompiledRuntimeSchemaValue } from '../schema/normalize-compiled-runtime-schema-value.js';\nimport { parseCompiledRuntimeSchemaValue } from '../schema/parse-compiled-runtime-schema-value.js';\nimport { serializeCompiledRuntimeSchemaValue } from '../schema/serialize-compiled-runtime-schema-value.js';\nimport type { CompiledHashDescriptor, NormalizedHashDescriptor } from './contracts.js';\n\nconst HASH_PATH = Object.freeze(['hash']);\n\nexport function compileRuntimeHashDescriptor(\n schema: RuntimeSchemaBuilder<any, 'string' | 'enum'>,\n): CompiledHashDescriptor<string | undefined> {\n const compiledSchema = compileRuntimeSchemaValue(schema, { path: HASH_PATH });\n const descriptor = compiledSchema.descriptor;\n\n if (descriptor.kind !== 'string' && descriptor.kind !== 'enum') {\n throw new UrlKitError('invalid-descriptor', 'Hash schema must be a string or enum schema.', {\n path: HASH_PATH,\n });\n }\n\n return Object.freeze({\n descriptor: toNormalizedHashDescriptor(\n descriptor as {\n readonly kind: 'string' | 'enum';\n readonly presence: 'required' | 'optional' | 'defaulted';\n readonly options: RuntimeSchemaOptions;\n readonly defaultValue?: unknown;\n },\n ),\n parse(input: unknown) {\n return parseCompiledRuntimeSchemaValue(compiledSchema, input, {\n path: HASH_PATH,\n errorCode: 'invalid-hash',\n missingCode: 'invalid-hash',\n }) as string | undefined;\n },\n normalize(input: unknown) {\n return normalizeCompiledRuntimeSchemaValue(compiledSchema, input, {\n path: HASH_PATH,\n errorCode: 'invalid-hash',\n missingCode: 'invalid-hash',\n }) as string | undefined;\n },\n serialize(input: unknown) {\n return serializeCompiledRuntimeSchemaValue(compiledSchema, input, {\n path: HASH_PATH,\n errorCode: 'invalid-hash',\n missingCode: 'invalid-hash',\n });\n },\n isDefault(input: unknown) {\n if (descriptor.presence !== 'defaulted') {\n return false;\n }\n\n return (\n normalizeCompiledRuntimeSchemaValue(compiledSchema, input, {\n path: HASH_PATH,\n errorCode: 'invalid-hash',\n missingCode: 'invalid-hash',\n }) === descriptor.defaultValue\n );\n },\n });\n}\n\nfunction toNormalizedHashDescriptor(descriptor: {\n readonly kind: 'string' | 'enum';\n readonly presence: 'required' | 'optional' | 'defaulted';\n readonly options: RuntimeSchemaOptions;\n readonly defaultValue?: unknown;\n}): NormalizedHashDescriptor<string | undefined> {\n const values = isStringArray(descriptor.options.values)\n ? [...descriptor.options.values]\n : undefined;\n\n if (descriptor.presence === 'defaulted') {\n return Object.freeze({\n kind: descriptor.kind,\n presence: 'defaulted',\n ...(values ? { values: Object.freeze(values) } : {}),\n defaultValue: descriptor.defaultValue as string,\n });\n }\n\n return Object.freeze({\n kind: descriptor.kind,\n presence: descriptor.presence,\n ...(values ? { values: Object.freeze(values) } : {}),\n });\n}\n\nfunction isStringArray(input: unknown): input is readonly string[] {\n return Array.isArray(input) && input.every((value) => typeof value === 'string');\n}\n","import type { NormalizedHashDescriptor } from './contracts.js';\n\nexport function isNormalizedHashDescriptor(\n input: unknown,\n): input is NormalizedHashDescriptor<string | undefined> {\n return (\n isRecord(input) &&\n (input.kind === 'string' || input.kind === 'enum') &&\n (input.presence === 'required' ||\n input.presence === 'optional' ||\n input.presence === 'defaulted')\n );\n}\n\nfunction isRecord(input: unknown): input is Record<string, unknown> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RuntimeSchemaBuilder } from '../schema/contracts.js';\nimport { getRuntimeSchemaInternals } from '../schema/get-runtime-schema-internals.js';\nimport type { StaticHashDescriptor } from '../static/contracts.js';\nimport { compileNormalizedHashDescriptor } from './compile-normalized-hash-descriptor.js';\nimport { compileRuntimeHashDescriptor } from './compile-runtime-hash-descriptor.js';\nimport { compileStaticHashDescriptor } from './compile-static-hash-descriptor.js';\nimport type { CompiledHashDescriptor, HashDescriptorInput } from './contracts.js';\nimport { isNormalizedHashDescriptor } from './is-normalized-hash-descriptor.js';\n\nconst HASH_PATH = Object.freeze(['hash']);\n\nexport function compileHashDescriptor(\n descriptor?: HashDescriptorInput,\n): CompiledHashDescriptor<string | undefined> {\n if (descriptor === undefined) {\n return compileNormalizedHashDescriptor({ kind: 'string', presence: 'optional' });\n }\n\n const runtimeKind = getRuntimeSchemaKind(descriptor);\n\n if (runtimeKind) {\n if (runtimeKind !== 'string' && runtimeKind !== 'enum') {\n throw new UrlKitError('invalid-descriptor', 'Hash schema must be a string or enum schema.', {\n path: HASH_PATH,\n });\n }\n\n return compileRuntimeHashDescriptor(\n descriptor as RuntimeSchemaBuilder<unknown, 'string' | 'enum'>,\n );\n }\n\n if (isNormalizedHashDescriptor(descriptor)) {\n return compileNormalizedHashDescriptor(descriptor);\n }\n\n return compileNormalizedHashDescriptor(\n compileStaticHashDescriptor(descriptor as StaticHashDescriptor),\n );\n}\n\nfunction getRuntimeSchemaKind(input: unknown): string | undefined {\n try {\n const internals = getRuntimeSchemaInternals(input as RuntimeSchemaBuilder<unknown>);\n return internals.kind;\n } catch {\n return undefined;\n }\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\n\nexport function readHashFragment(input: unknown): string | undefined {\n if (input === undefined || input === null) {\n return undefined;\n }\n\n if (input instanceof URL) {\n return readHashFragment(input.hash);\n }\n\n if (typeof input !== 'string') {\n throw new UrlKitError('invalid-hash', 'Hash must be a string.');\n }\n\n const withoutPrefix = input.startsWith('#') ? input.slice(1) : input;\n\n if (!withoutPrefix) {\n return undefined;\n }\n\n try {\n return decodeURIComponent(withoutPrefix);\n } catch (error) {\n throw new UrlKitError('invalid-hash', 'Hash is not valid URL encoding.', {\n path: ['hash'],\n cause: error,\n });\n }\n}\n\nexport function writeHashFragment(input: string): string {\n return `#${encodeURIComponent(input)}`;\n}\n","import type { BuildUrlOptions } from '../contracts.js';\nimport type { HashDescriptorInput } from './contracts.js';\nimport { compileHashDescriptor } from './compile-hash-descriptor.js';\nimport { writeHashFragment } from './hash-fragment.js';\n\nexport function buildHash(hash?: unknown, options?: BuildUrlOptions): string;\nexport function buildHash(\n hash: unknown,\n descriptor: HashDescriptorInput,\n options?: BuildUrlOptions,\n): string;\nexport function buildHash(\n hash?: unknown,\n descriptorOrOptions?: HashDescriptorInput | BuildUrlOptions,\n options?: BuildUrlOptions,\n): string {\n const descriptor = isBuildUrlOptions(descriptorOrOptions) ? undefined : descriptorOrOptions;\n const buildOptions = isBuildUrlOptions(descriptorOrOptions) ? descriptorOrOptions : options;\n const compiled = compileHashDescriptor(descriptor);\n\n if (\n buildOptions?.defaults === 'omit' &&\n hash !== undefined &&\n hash !== null &&\n compiled.isDefault(hash)\n ) {\n return '';\n }\n\n if (\n buildOptions?.defaults === 'omit' &&\n (hash === undefined || hash === null) &&\n compiled.descriptor.presence !== 'required'\n ) {\n return '';\n }\n\n const value = compiled.serialize(hash);\n return value === undefined ? '' : writeHashFragment(value);\n}\n\nfunction isBuildUrlOptions(input: unknown): input is BuildUrlOptions {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && 'defaults' in input\n );\n}\n","import type { HashDescriptorInput } from './contracts.js';\nimport { compileHashDescriptor } from './compile-hash-descriptor.js';\nimport { readHashFragment } from './hash-fragment.js';\n\nexport function parseHash(input: unknown): string | undefined;\nexport function parseHash(input: unknown, descriptor: HashDescriptorInput): unknown;\nexport function parseHash(input: unknown, descriptor?: HashDescriptorInput): unknown {\n const hash = readHashFragment(input);\n\n if (descriptor === undefined) {\n return hash;\n }\n\n return compileHashDescriptor(descriptor).parse(hash);\n}\n","import type { AnyRuntimeSchemaBuilder } from './contracts.js';\nimport { getRuntimeSchemaInternals } from './get-runtime-schema-internals.js';\n\nexport function isRuntimeSchemaKind(schema: AnyRuntimeSchemaBuilder, kind: string): boolean {\n return getRuntimeSchemaInternals(schema).kind === kind;\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport type { SearchEntry } from './search-entries.js';\n\nexport function appendSearchEntry(\n entries: SearchEntry[],\n key: string,\n value: string | readonly string[] | undefined,\n options: BuildSearchOptions = {},\n): void {\n if (value === undefined) {\n return;\n }\n\n if (typeof value === 'string') {\n entries.push({ key, value });\n return;\n }\n\n appendArraySearchEntry(entries, key, value, options);\n}\n\nfunction appendArraySearchEntry(\n entries: SearchEntry[],\n key: string,\n values: readonly string[],\n options: BuildSearchOptions,\n): void {\n if (!values.length) {\n return;\n }\n\n if (options.arrayFormat === 'comma') {\n entries.push({ key, value: values.join(',') });\n return;\n }\n\n for (const value of values) {\n entries.push({ key, value });\n }\n}\n","export function joinObjectSearchKey(parentKey: string, childKey: string): string {\n return `${parentKey}.${escapeObjectSearchSegment(childKey)}`;\n}\n\nexport function escapeObjectSearchSegment(segment: string): string {\n return segment.replaceAll('~', '~0').replaceAll('.', '~1');\n}\n\nexport function unescapeObjectSearchSegment(segment: string): string {\n let output = '';\n\n for (let index = 0; index < segment.length; index += 1) {\n const character = segment[index];\n\n if (character !== '~') {\n output += character ?? '';\n continue;\n }\n\n const escapeCode = segment[index + 1];\n\n if (escapeCode === '0') {\n output += '~';\n index += 1;\n continue;\n }\n\n if (escapeCode === '1') {\n output += '.';\n index += 1;\n continue;\n }\n\n output += character ?? '';\n }\n\n return output;\n}\n\nexport function splitObjectSearchKey(key: string): readonly string[] {\n return Object.freeze(key.split('.').map(unescapeObjectSearchSegment));\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport type { AnyRuntimeSchemaBuilder } from '../schema/contracts.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport { getObjectSchemaShape, type AnyObjectSchema } from '../schema/object.js';\nimport { serializeRuntimeSchemaValue } from '../schema/serialize-runtime-schema-value.js';\nimport { serializeArrayRuntimeSchemaValue } from '../schema/array.js';\nimport type { SearchEntry } from './search-entries.js';\nimport { appendSearchEntry } from './append-search-entry.js';\nimport { joinObjectSearchKey } from './object-search-key.js';\n\nexport function appendObjectSearchEntries(\n entries: SearchEntry[],\n parentKey: string,\n schema: AnyObjectSchema,\n value: unknown,\n options: BuildSearchOptions = {},\n): void {\n if (!isPlainObject(value)) {\n return;\n }\n\n const shape = getObjectSchemaShape(schema);\n\n for (const [key, childSchema] of Object.entries(shape)) {\n const childValue = value[key];\n\n if (childValue === undefined) {\n continue;\n }\n\n const childKey = joinObjectSearchKey(parentKey, key);\n appendObjectChildSearchEntry(\n entries,\n childKey,\n childSchema as AnyObjectSchema,\n childValue,\n options,\n );\n }\n}\n\nfunction appendObjectChildSearchEntry(\n entries: SearchEntry[],\n key: string,\n schema: AnyRuntimeSchemaBuilder,\n value: unknown,\n options: BuildSearchOptions,\n): void {\n if (isRuntimeSchemaKind(schema, 'object')) {\n appendObjectSearchEntries(entries, key, schema as AnyObjectSchema, value, options);\n return;\n }\n\n if (isRuntimeSchemaKind(schema, 'array')) {\n appendSearchEntry(\n entries,\n key,\n serializeArrayRuntimeSchemaValue(schema as never, value, {\n kind: 'array',\n path: [key],\n errorCode: 'invalid-search',\n }),\n options,\n );\n return;\n }\n\n appendSearchEntry(\n entries,\n key,\n serializeRuntimeSchemaValue(schema, value, {\n path: [key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n }),\n options,\n );\n}\n\nfunction isPlainObject(input: unknown): input is Record<string, unknown> {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && !(input instanceof Date)\n );\n}\n","export function areSearchValuesEqual(left: unknown, right: unknown): boolean {\n if (left instanceof Date || right instanceof Date) {\n return left instanceof Date && right instanceof Date && left.getTime() === right.getTime();\n }\n\n if (Array.isArray(left) || Array.isArray(right)) {\n return Array.isArray(left) && Array.isArray(right) && areArraysEqual(left, right);\n }\n\n if (isPlainObject(left) || isPlainObject(right)) {\n return isPlainObject(left) && isPlainObject(right) && areObjectsEqual(left, right);\n }\n\n return left === right;\n}\n\nfunction areArraysEqual(left: readonly unknown[], right: readonly unknown[]): boolean {\n if (left.length !== right.length) {\n return false;\n }\n\n return left.every((value, index) => areSearchValuesEqual(value, right[index]));\n}\n\nfunction areObjectsEqual(left: Record<string, unknown>, right: Record<string, unknown>): boolean {\n const leftKeys = Object.keys(left);\n const rightKeys = Object.keys(right);\n\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n\n return leftKeys.every(\n (key) =>\n Object.prototype.hasOwnProperty.call(right, key) &&\n areSearchValuesEqual(left[key], right[key]),\n );\n}\n\nfunction isPlainObject(input: unknown): input is Record<string, unknown> {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && !(input instanceof Date)\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport { normalizeCompiledRuntimeSchemaValue } from '../schema/normalize-compiled-runtime-schema-value.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { CompiledSearchField } from './contracts.js';\n\nexport function normalizeSearchBuildValue(field: CompiledSearchField, input: unknown): unknown {\n if (isRuntimeSchemaKind(field.schema, 'array') || isRuntimeSchemaKind(field.schema, 'object')) {\n return normalizeCompiledRuntimeSchemaValue(field.compiledSchema, input, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n });\n }\n\n if (field.type === 'many') {\n return normalizeManySearchBuildValue(field, input);\n }\n\n return normalizeOneSearchBuildValue(field, input);\n}\n\nfunction normalizeOneSearchBuildValue(field: CompiledSearchField, input: unknown): unknown {\n if (input === undefined || input === null) {\n if (field.presence === 'optional') {\n return undefined;\n }\n\n if (field.presence === 'defaulted') {\n return field.defaultValue;\n }\n\n if (input === null) {\n throw new UrlKitError('invalid-search', 'Required search parameter cannot be null.', {\n path: [field.key],\n });\n }\n\n throw new UrlKitError('missing-search', 'Required search parameter is missing.', {\n path: [field.key],\n });\n }\n\n return normalizeCompiledRuntimeSchemaValue(field.compiledSchema, input, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n });\n}\n\nfunction normalizeManySearchBuildValue(\n field: CompiledSearchField,\n input: unknown,\n): readonly unknown[] | undefined {\n if (input === undefined || input === null) {\n if (field.presence === 'optional') {\n return undefined;\n }\n\n if (field.presence === 'defaulted') {\n return copyArrayDefault(field);\n }\n\n if (input === null) {\n throw new UrlKitError('invalid-search', 'Required search parameter cannot be null.', {\n path: [field.key],\n });\n }\n\n throw new UrlKitError('missing-search', 'Required search parameter is missing.', {\n path: [field.key],\n });\n }\n\n if (!Array.isArray(input)) {\n throw new UrlKitError('invalid-search', 'Expected an array search parameter value.', {\n path: [field.key],\n });\n }\n\n return Object.freeze(\n input.map((item) =>\n normalizeCompiledRuntimeSchemaValue(field.compiledSchema, item, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n }),\n ),\n );\n}\n\nfunction copyArrayDefault(field: CompiledSearchField): readonly unknown[] {\n const value = field.defaultValue;\n\n if (!Array.isArray(value)) {\n return Object.freeze([]);\n }\n\n return Object.freeze([...value]);\n}\n","import { serializeCompiledRuntimeSchemaValue } from '../schema/serialize-compiled-runtime-schema-value.js';\nimport { serializeArrayRuntimeSchemaValue } from '../schema/array.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { CompiledSearchField } from './contracts.js';\n\nexport function serializeSearchBuildValue(\n field: CompiledSearchField,\n normalized: unknown,\n): string | readonly string[] | undefined {\n if (isRuntimeSchemaKind(field.schema, 'array')) {\n return serializeArrayRuntimeSchemaValue(field.schema as never, normalized, {\n kind: 'array',\n path: [field.key],\n errorCode: 'invalid-search',\n });\n }\n\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n return undefined;\n }\n\n if (field.type === 'many') {\n if (!Array.isArray(normalized) || !normalized.length) {\n return undefined;\n }\n\n return Object.freeze(normalized.map((item) => serializeOneSearchBuildValue(field, item)));\n }\n\n return serializeOneSearchBuildValue(field, normalized);\n}\n\nfunction serializeOneSearchBuildValue(field: CompiledSearchField, value: unknown): string {\n const serialized = serializeCompiledRuntimeSchemaValue(field.compiledSchema, value, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n });\n\n return serialized ?? '';\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport type { SearchEntry } from './search-entries.js';\n\nexport function serializeSearchEntries(\n entries: readonly SearchEntry[],\n options: BuildSearchOptions = {},\n): string {\n if (!entries.length) {\n return '';\n }\n\n const orderedEntries = options.sortKeys ? [...entries].sort(compareSearchEntryKeys) : entries;\n const searchParams = new URLSearchParams();\n\n for (const entry of orderedEntries) {\n searchParams.append(entry.key, entry.value);\n }\n\n const search = searchParams.toString();\n\n return search ? `?${search}` : '';\n}\n\nfunction compareSearchEntryKeys(left: SearchEntry, right: SearchEntry): number {\n return left.key.localeCompare(right.key);\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { AnyObjectSchema } from '../schema/object.js';\nimport { appendObjectSearchEntries } from './append-object-search-entries.js';\nimport { appendSearchEntry } from './append-search-entry.js';\nimport { areSearchValuesEqual } from './are-search-values-equal.js';\nimport type { CompiledSearchSchema } from './contracts.js';\nimport { normalizeSearchBuildValue } from './normalize-search-build-value.js';\nimport type { SearchEntry } from './search-entries.js';\nimport { serializeSearchBuildValue } from './serialize-search-build-value.js';\nimport { serializeSearchEntries } from './serialize-search-entries.js';\n\nexport function buildCompiledSearch(\n input: Record<string, unknown> = {},\n compiled: CompiledSearchSchema,\n options: BuildSearchOptions = {},\n): string {\n const entries: SearchEntry[] = [];\n\n for (const field of compiled.fields) {\n const normalized = normalizeSearchBuildValue(field, input[field.key]);\n\n if (normalized === undefined || shouldOmitDefault(field.defaultValue, normalized, options)) {\n continue;\n }\n\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n appendObjectSearchEntries(\n entries,\n field.key,\n field.schema as AnyObjectSchema,\n normalized,\n options,\n );\n continue;\n }\n\n appendSearchEntry(entries, field.key, serializeSearchBuildValue(field, normalized), options);\n }\n\n return serializeSearchEntries(entries, options);\n}\n\nfunction shouldOmitDefault(\n defaultValue: unknown,\n normalized: unknown,\n options: BuildSearchOptions,\n): boolean {\n return (\n options.defaults === 'omit' &&\n defaultValue !== undefined &&\n areSearchValuesEqual(normalized, defaultValue)\n );\n}\n","import type { RawSearchValue } from './contracts.js';\n\nexport function appendRawSearchValue(\n output: Record<string, RawSearchValue>,\n key: string,\n value: string,\n): void {\n const current = output[key];\n\n if (current === undefined) {\n output[key] = value;\n return;\n }\n\n output[key] = Object.freeze(Array.isArray(current) ? [...current, value] : [current, value]);\n}\n","export function createSearchParams(input: string | URLSearchParams): URLSearchParams {\n if (input instanceof URLSearchParams) {\n return new URLSearchParams(input);\n }\n\n return new URLSearchParams(input.startsWith('?') ? input.slice(1) : input);\n}\n","import type { RawSearchParams, RawSearchValue } from './contracts.js';\nimport { appendRawSearchValue } from './append-raw-search-value.js';\nimport { createSearchParams } from './create-search-params.js';\n\nexport function parseRawSearch(input: string | URLSearchParams): RawSearchParams {\n const output: Record<string, RawSearchValue> = {};\n\n for (const [key, value] of createSearchParams(input)) {\n appendRawSearchValue(output, key, value);\n }\n\n return Object.freeze(output);\n}\n","import type { RawSearchParams, RawSearchValue } from './contracts.js';\n\nexport function copyRawSearchParams(input: RawSearchParams): RawSearchParams {\n const output: Record<string, RawSearchValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n output[key] = Array.isArray(value) ? Object.freeze([...value]) : value;\n }\n\n return Object.freeze(output);\n}\n","import type { AnyRuntimeSchemaBuilder } from '../schema/contracts.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport { getObjectSchemaShape, type AnyObjectSchema } from '../schema/object.js';\n\nexport function collectObjectSearchPaths(schema: AnyObjectSchema): readonly (readonly string[])[] {\n return Object.freeze(collectObjectSearchPathsFromShape(schema, []));\n}\n\nfunction collectObjectSearchPathsFromShape(\n schema: AnyObjectSchema,\n basePath: readonly string[],\n): readonly (readonly string[])[] {\n const shape = getObjectSchemaShape(schema);\n const paths: (readonly string[])[] = [];\n\n for (const [key, childSchema] of Object.entries(shape)) {\n const childPath = [...basePath, key];\n\n if (isRuntimeSchemaKind(childSchema as AnyRuntimeSchemaBuilder, 'object')) {\n paths.push(...collectObjectSearchPathsFromShape(childSchema as AnyObjectSchema, childPath));\n continue;\n }\n\n paths.push(Object.freeze(childPath));\n }\n\n return paths;\n}\n","import { splitObjectSearchKey } from './object-search-key.js';\n\nexport function getObjectSearchRawKeyPath(\n parentKey: string,\n rawKey: string,\n): readonly string[] | undefined {\n const prefix = `${parentKey}.`;\n\n if (!rawKey.startsWith(prefix)) {\n return undefined;\n }\n\n const childKey = rawKey.slice(prefix.length);\n\n if (!childKey) {\n return undefined;\n }\n\n return splitObjectSearchKey(childKey);\n}\n","export function createObjectSearchPathKey(path: readonly string[]): string {\n return JSON.stringify(path);\n}\n\nexport function isObjectSearchPathEqual(\n left: readonly string[],\n right: readonly string[],\n): boolean {\n if (left.length !== right.length) {\n return false;\n }\n\n return left.every((value, index) => value === right[index]);\n}\n","import { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { CompiledSearchField } from './contracts.js';\nimport { collectObjectSearchPaths } from './collect-object-search-paths.js';\nimport { getObjectSearchRawKeyPath } from './object-search-raw-key-path.js';\nimport { isObjectSearchPathEqual } from './object-search-path-key.js';\n\nexport function deleteSearchFieldRawKeys(\n field: CompiledSearchField,\n rawSearch: Record<string, unknown>,\n): void {\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n deleteObjectSearchKeys(field, rawSearch);\n return;\n }\n\n delete rawSearch[field.key];\n}\n\nfunction deleteObjectSearchKeys(\n field: CompiledSearchField,\n rawSearch: Record<string, unknown>,\n): void {\n const declaredPaths = collectObjectSearchPaths(field.schema as never);\n\n for (const rawKey of Object.keys(rawSearch)) {\n const rawPath = getObjectSearchRawKeyPath(field.key, rawKey);\n\n if (\n rawPath &&\n declaredPaths.some((declaredPath) => isObjectSearchPathEqual(rawPath, declaredPath))\n ) {\n delete rawSearch[rawKey];\n }\n }\n}\n","import type { SearchArrayFormat } from '../contracts.js';\nimport type { RawSearchValue } from './contracts.js';\n\nexport function readArraySearchValues(\n value: RawSearchValue | undefined,\n arrayFormat: SearchArrayFormat = 'repeat',\n): readonly string[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n const values: readonly string[] = Array.isArray(value) ? value : [value];\n\n if (arrayFormat !== 'comma') {\n return values;\n }\n\n return Object.freeze(values.flatMap((item) => item.split(',')));\n}\n","import { compileRuntimeSchema } from '../schema/compile-runtime-schema.js';\nimport type { RuntimeSchemaValueContext } from '../schema/contracts.js';\nimport { parseRuntimeSchemaValue } from '../schema/parse-runtime-schema-value.js';\nimport { parseArrayRuntimeSchemaValue, type ArraySchema } from '../schema/array.js';\nimport type { RawSearchValue, SearchParseOptions } from './contracts.js';\nimport { readArraySearchValues } from './search-array-format.js';\n\nexport function parseArraySearchValue(\n schema: ArraySchema<any>,\n value: RawSearchValue | undefined,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions = {},\n): unknown {\n if (value === undefined) {\n return parseRuntimeSchemaValue(schema, undefined, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: 'missing-search',\n });\n }\n\n compileRuntimeSchema(schema, { path: context.path });\n\n return parseArrayRuntimeSchemaValue(\n schema,\n readArraySearchValues(value, options.arrayFormat) ?? [],\n context,\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RawSearchParams } from './contracts.js';\nimport { getObjectSearchRawKeyPath } from './object-search-raw-key-path.js';\nimport { createObjectSearchPathKey } from './object-search-path-key.js';\n\nexport function assertNoObjectSearchCollisions(\n parentKey: string,\n rawSearch: RawSearchParams,\n parentPath: readonly string[],\n): void {\n const paths = new Map<\n string,\n { readonly path: readonly string[]; readonly rawKeys: Set<string> }\n >();\n\n for (const rawKey of Object.keys(rawSearch)) {\n const path = getObjectSearchRawKeyPath(parentKey, rawKey);\n\n if (!path) {\n continue;\n }\n\n const pathKey = createObjectSearchPathKey(path);\n const current = paths.get(pathKey);\n\n if (!current) {\n paths.set(pathKey, { path, rawKeys: new Set([rawKey]) });\n continue;\n }\n\n current.rawKeys.add(rawKey);\n\n if (current.rawKeys.size > 1) {\n throw new UrlKitError(\n 'invalid-search',\n 'Object search parameter keys resolve to the same object path.',\n {\n path: [...parentPath, ...current.path],\n },\n );\n }\n }\n}\n","import type { RawSearchParams, RawSearchValue } from './contracts.js';\nimport { getObjectSearchRawKeyPath } from './object-search-raw-key-path.js';\nimport { isObjectSearchPathEqual } from './object-search-path-key.js';\n\nexport function findObjectSearchRawValue(\n parentKey: string,\n path: readonly string[],\n rawSearch: RawSearchParams,\n): RawSearchValue | undefined {\n for (const [rawKey, value] of Object.entries(rawSearch)) {\n const rawPath = getObjectSearchRawKeyPath(parentKey, rawKey);\n\n if (rawPath && isObjectSearchPathEqual(rawPath, path)) {\n return value;\n }\n }\n\n return undefined;\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport { compileRuntimeSchema } from '../schema/compile-runtime-schema.js';\nimport type { AnyRuntimeSchemaBuilder, RuntimeSchemaValueContext } from '../schema/contracts.js';\nimport { getObjectSchemaShape, type AnyObjectSchema } from '../schema/object.js';\nimport { parseRuntimeSchemaValue } from '../schema/parse-runtime-schema-value.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport { parseArraySearchValue } from './parse-array-search-value.js';\nimport type { RawSearchParams, SearchParseOptions } from './contracts.js';\nimport { assertNoObjectSearchCollisions } from './assert-object-search-collisions.js';\nimport { findObjectSearchRawValue } from './find-object-search-raw-value.js';\n\nexport function parseObjectSearchValue(\n schema: AnyObjectSchema,\n parentKey: string,\n rawSearch: RawSearchParams,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions = {},\n): unknown {\n assertNoObjectSearchCollisions(parentKey, rawSearch, context.path);\n\n const descriptor = compileRuntimeSchema(schema, { path: context.path });\n const hasDeclaredValues = hasDeclaredObjectValues(schema, parentKey, [], rawSearch);\n\n if (!hasDeclaredValues) {\n if (descriptor.presence === 'optional') {\n return undefined;\n }\n\n if (descriptor.presence === 'defaulted') {\n return descriptor.defaultValue;\n }\n }\n\n return parseObjectShape(schema, parentKey, [], rawSearch, context, options);\n}\n\nfunction parseObjectShape(\n schema: AnyObjectSchema,\n parentKey: string,\n objectPath: readonly string[],\n rawSearch: RawSearchParams,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions,\n): Readonly<Record<string, unknown>> {\n const shape = getObjectSchemaShape(schema);\n const output: Record<string, unknown> = {};\n\n for (const [key, childSchema] of Object.entries(shape)) {\n const childObjectPath = [...objectPath, key];\n const childPath = [...context.path, key];\n const value = parseChildObjectSearchValue(\n childSchema as AnyRuntimeSchemaBuilder,\n parentKey,\n childObjectPath,\n rawSearch,\n {\n kind: 'object',\n path: childPath,\n errorCode: context.errorCode,\n },\n options,\n );\n\n if (value !== undefined) {\n output[key] = value;\n }\n }\n\n return Object.freeze(output);\n}\n\nfunction parseChildObjectSearchValue(\n schema: AnyRuntimeSchemaBuilder,\n parentKey: string,\n objectPath: readonly string[],\n rawSearch: RawSearchParams,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions,\n): unknown {\n if (isRuntimeSchemaKind(schema, 'object')) {\n return parseNestedObjectSearchValue(\n schema as AnyObjectSchema,\n parentKey,\n objectPath,\n rawSearch,\n context,\n options,\n );\n }\n\n const rawValue = findObjectSearchRawValue(parentKey, objectPath, rawSearch);\n\n if (isRuntimeSchemaKind(schema, 'array')) {\n return parseArraySearchValue(schema as never, rawValue, context, options);\n }\n\n if (Array.isArray(rawValue)) {\n throw new UrlKitError('invalid-search', 'Expected a single object search parameter value.', {\n path: context.path,\n });\n }\n\n return parseRuntimeSchemaValue(schema, rawValue, {\n path: context.path,\n errorCode: context.errorCode,\n missingCode: 'missing-search',\n });\n}\n\nfunction parseNestedObjectSearchValue(\n schema: AnyObjectSchema,\n parentKey: string,\n objectPath: readonly string[],\n rawSearch: RawSearchParams,\n context: RuntimeSchemaValueContext,\n options: SearchParseOptions,\n): unknown {\n const descriptor = compileRuntimeSchema(schema, { path: context.path });\n const hasDeclaredValues = hasDeclaredObjectValues(schema, parentKey, objectPath, rawSearch);\n\n if (!hasDeclaredValues) {\n if (descriptor.presence === 'optional') {\n return undefined;\n }\n\n if (descriptor.presence === 'defaulted') {\n return descriptor.defaultValue;\n }\n }\n\n return parseObjectShape(schema, parentKey, objectPath, rawSearch, context, options);\n}\n\nfunction hasDeclaredObjectValues(\n schema: AnyObjectSchema,\n parentKey: string,\n objectPath: readonly string[],\n rawSearch: RawSearchParams,\n): boolean {\n const shape = getObjectSchemaShape(schema);\n\n return Object.entries(shape).some(([key, childSchema]) => {\n const childObjectPath = [...objectPath, key];\n\n if (isRuntimeSchemaKind(childSchema as AnyRuntimeSchemaBuilder, 'object')) {\n return hasDeclaredObjectValues(\n childSchema as AnyObjectSchema,\n parentKey,\n childObjectPath,\n rawSearch,\n );\n }\n\n return findObjectSearchRawValue(parentKey, childObjectPath, rawSearch) !== undefined;\n });\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport { parseCompiledRuntimeSchemaValue } from '../schema/parse-compiled-runtime-schema-value.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport type { AnyObjectSchema } from '../schema/object.js';\nimport type { ArraySchema } from '../schema/array.js';\nimport type {\n CompiledSearchField,\n RawSearchParams,\n RawSearchValue,\n SearchParseOptions,\n} from './contracts.js';\nimport { parseArraySearchValue } from './parse-array-search-value.js';\nimport { parseObjectSearchValue } from './parse-object-search-value.js';\nimport { readArraySearchValues } from './search-array-format.js';\n\nexport function parseSearchFieldValue(\n field: CompiledSearchField,\n rawSearch: RawSearchParams,\n options: SearchParseOptions = {},\n): unknown {\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n return parseObjectSearchValue(\n field.schema as AnyObjectSchema,\n field.key,\n rawSearch,\n {\n kind: 'object',\n path: [field.key],\n errorCode: 'invalid-search',\n },\n options,\n );\n }\n\n if (isRuntimeSchemaKind(field.schema, 'array')) {\n return parseArraySearchValue(\n field.schema as ArraySchema<any>,\n rawSearch[field.key],\n {\n kind: 'array',\n path: [field.key],\n errorCode: 'invalid-search',\n },\n options,\n );\n }\n\n return parseNonObjectSearchFieldValue(field, rawSearch[field.key], options);\n}\n\nfunction parseNonObjectSearchFieldValue(\n field: CompiledSearchField,\n value: RawSearchValue | undefined,\n options: SearchParseOptions,\n): unknown {\n if (value === undefined) {\n return parseMissingSearchFieldValue(field);\n }\n\n if (field.type === 'many') {\n const values = readArraySearchValues(value, options.arrayFormat) ?? [];\n\n return Object.freeze(values.map((item) => parseRuntimeSearchValue(field, item)));\n }\n\n if (Array.isArray(value)) {\n throw new UrlKitError('invalid-search', 'Expected a single search parameter value.', {\n path: [field.key],\n });\n }\n\n return parseRuntimeSearchValue(field, value as string);\n}\n\nfunction parseMissingSearchFieldValue(field: CompiledSearchField): unknown {\n if (field.presence === 'optional') {\n return undefined;\n }\n\n if (field.presence === 'defaulted') {\n return copyDefaultValue(field.defaultValue);\n }\n\n throw new UrlKitError('missing-search', 'Required search parameter is missing.', {\n path: [field.key],\n });\n}\n\nfunction parseRuntimeSearchValue(field: CompiledSearchField, value: string): unknown {\n return parseCompiledRuntimeSchemaValue(field.compiledSchema, value, {\n path: [field.key],\n errorCode: 'invalid-search',\n missingCode: 'missing-search',\n });\n}\n\nfunction copyDefaultValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return Object.freeze([...value]);\n }\n\n if (isPlainObject(value)) {\n return Object.freeze({ ...value });\n }\n\n return value;\n}\n\nfunction isPlainObject(input: unknown): input is Record<string, unknown> {\n return (\n typeof input === 'object' && input !== null && !Array.isArray(input) && !(input instanceof Date)\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type {\n CompiledSearchSchema,\n RawSearchParams,\n RawSearchValue,\n SearchParseOptions,\n SearchParseResult,\n} from './contracts.js';\nimport { copyRawSearchParams } from './copy-raw-search-params.js';\nimport { deleteSearchFieldRawKeys } from './delete-search-field-raw-keys.js';\nimport { parseSearchFieldValue } from './parse-search-field-value.js';\n\nexport function parseCompiledSearch(\n rawSearch: RawSearchParams,\n compiled: CompiledSearchSchema,\n unknownSearch: 'strip' | 'preserve' | 'error' = 'strip',\n options: SearchParseOptions = {},\n): SearchParseResult<Record<string, unknown>> {\n const remainingUnknown = { ...rawSearch } satisfies Record<string, RawSearchValue>;\n const search: Record<string, unknown> = {};\n\n for (const field of compiled.fields) {\n const value = parseSearchFieldValue(field, rawSearch, options);\n deleteSearchFieldRawKeys(field, remainingUnknown);\n\n if (value !== undefined) {\n search[field.key] = value;\n }\n }\n\n const result: SearchParseResult<Record<string, unknown>> = {\n search: Object.freeze(search),\n };\n const unknown = resolveUnknownSearch(remainingUnknown, unknownSearch);\n\n if (unknown) {\n return Object.freeze({\n ...result,\n unknownSearch: unknown,\n });\n }\n\n return Object.freeze(result);\n}\n\nfunction resolveUnknownSearch(\n unknown: RawSearchParams,\n behavior: 'strip' | 'preserve' | 'error',\n): RawSearchParams | undefined {\n const keys = Object.keys(unknown);\n\n if (!keys.length || behavior === 'strip') {\n return undefined;\n }\n\n if (behavior === 'error') {\n throw new UrlKitError('invalid-search', 'Unknown search parameter is not allowed.', {\n path: [keys[0]!],\n });\n }\n\n return copyRawSearchParams(unknown);\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { UnknownSearchParams } from '../contracts.js';\n\nexport function copyUnknownStructuredSearch(\n input: Readonly<Record<string, unknown>>,\n): UnknownSearchParams | undefined {\n const output: Record<string, string | readonly string[]> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (value === undefined || value === null) {\n continue;\n }\n\n if (typeof value === 'string') {\n output[key] = value;\n continue;\n }\n\n if (Array.isArray(value) && value.every((item) => typeof item === 'string')) {\n output[key] = Object.freeze([...value]);\n continue;\n }\n\n throw new UrlKitError(\n 'invalid-search',\n 'Unknown search parameter must be a string or string array to preserve.',\n {\n path: [key],\n },\n );\n }\n\n if (!Object.keys(output).length) {\n return undefined;\n }\n\n return Object.freeze(output);\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { UnknownSearchBehavior, UnknownSearchParams } from '../contracts.js';\nimport type { CompiledSearchSchema, SearchParseResult } from './contracts.js';\nimport { copyUnknownStructuredSearch } from './copy-unknown-structured-search.js';\nimport { normalizeSearchBuildValue } from './normalize-search-build-value.js';\n\nexport function normalizeCompiledSearch(\n input: unknown,\n compiled: CompiledSearchSchema | undefined,\n unknownSearch: UnknownSearchBehavior = 'strip',\n): SearchParseResult<Record<string, unknown>> {\n if (input === undefined || input === null) {\n return normalizeCompiledSearchObject({}, compiled, unknownSearch);\n }\n\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-search', 'Search must be an object.', { path: ['search'] });\n }\n\n return normalizeCompiledSearchObject(input, compiled, unknownSearch);\n}\n\nfunction normalizeCompiledSearchObject(\n input: Readonly<Record<string, unknown>>,\n compiled: CompiledSearchSchema | undefined,\n unknownSearch: UnknownSearchBehavior,\n): SearchParseResult<Record<string, unknown>> {\n const search: Record<string, unknown> = {};\n const knownKeys = compiled?.keys ?? emptyKeys;\n\n for (const field of compiled?.fields ?? []) {\n const value = normalizeSearchBuildValue(field, input[field.key]);\n\n if (value !== undefined) {\n search[field.key] = value;\n }\n }\n\n const unknownValues = collectUnknownValues(input, knownKeys);\n const unknown = resolveUnknownSearch(unknownValues, unknownSearch);\n\n return Object.freeze({\n search: Object.freeze(search),\n ...(unknown ? { unknownSearch: unknown } : {}),\n });\n}\n\nconst emptyKeys = Object.freeze(new Set<string>());\n\nfunction collectUnknownValues(\n input: Readonly<Record<string, unknown>>,\n knownKeys: ReadonlySet<string>,\n): Readonly<Record<string, unknown>> {\n const unknown: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (!knownKeys.has(key)) {\n unknown[key] = value;\n }\n }\n\n return unknown;\n}\n\nfunction resolveUnknownSearch(\n unknown: Readonly<Record<string, unknown>>,\n behavior: UnknownSearchBehavior,\n): UnknownSearchParams | undefined {\n const keys = Object.keys(unknown);\n\n if (!keys.length || behavior === 'strip') {\n return undefined;\n }\n\n if (behavior === 'error') {\n throw new UrlKitError('invalid-search', 'Unknown search parameter is not allowed.', {\n path: [keys[0]!],\n });\n }\n\n return copyUnknownStructuredSearch(unknown);\n}\n\nfunction isRecord(input: unknown): input is Readonly<Record<string, unknown>> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","const URL_STATE_BRAND: unique symbol = Symbol('urlkit.url-state');\n\nexport interface BrandedUrlState {\n readonly [URL_STATE_BRAND]: true;\n}\n\nexport function markUrlState<State extends object>(state: State): State & BrandedUrlState {\n Object.defineProperty(state, URL_STATE_BRAND, {\n value: true,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n\n return state as State & BrandedUrlState;\n}\n\nexport function isUrlState(input: unknown): input is BrandedUrlState {\n return (\n typeof input === 'object' &&\n input !== null &&\n (input as Partial<BrandedUrlState>)[URL_STATE_BRAND] === true\n );\n}\n","import type { NormalizeUrlState, UnknownSearchBehavior, UrlState } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport { normalizeCompiledSearch } from '../search/normalize-compiled-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { markUrlState } from './url-state-brand.js';\n\nexport function normalizeCompiledUrl<\n Mode extends 'path' | 'pathless',\n Pathname,\n Params,\n Search,\n Hash,\n Input,\n>(\n input: Input,\n compiled: CompiledUrlDescriptor<Mode>,\n unknownSearch: UnknownSearchBehavior,\n): NormalizeUrlState<Mode, Pathname, Params, Search, Hash, Input> {\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-url', 'URL state must be an object.', { path: [] });\n }\n\n const pathnameAndParams = normalizePathnameAndParams<Pathname, Params>(input, compiled);\n const searchResult = normalizeCompiledSearch(input.search, compiled.search, unknownSearch);\n const hash = normalizeUrlHash<Hash>(input.hash, compiled);\n\n const state = {\n pathname: pathnameAndParams.pathname,\n params: pathnameAndParams.params,\n search: searchResult.search as Search,\n hash,\n ...(searchResult.unknownSearch ? { unknownSearch: searchResult.unknownSearch } : {}),\n };\n\n return Object.freeze(markUrlState(state)) as NormalizeUrlState<\n Mode,\n Pathname,\n Params,\n Search,\n Hash,\n Input\n >;\n}\n\nfunction normalizePathnameAndParams<Pathname, Params>(\n input: Readonly<Record<string, unknown>>,\n compiled: CompiledUrlDescriptor,\n): Pick<UrlState<Pathname, Params, {}, undefined>, 'pathname' | 'params'> {\n if (compiled.mode === 'path') {\n if (input.pathname !== undefined) {\n throw new UrlKitError('invalid-url', 'Path-based URL state must not include pathname.', {\n path: ['pathname'],\n });\n }\n\n if (!compiled.path) {\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Path URL descriptor is missing a compiled path.',\n { path: ['path'] },\n );\n }\n\n const pathname = (compiled.path.buildPath as (params?: unknown) => string)(\n input.params,\n ) as Pathname;\n const params = compiled.path.parsePathname(String(pathname)) as Params;\n\n return Object.freeze({ pathname, params });\n }\n\n if (input.params !== undefined) {\n throw new UrlKitError('invalid-url', 'Pathless URL state must not include params.', {\n path: ['params'],\n });\n }\n\n return Object.freeze({\n pathname: normalizePathlessPathname(input.pathname) as Pathname,\n params: Object.freeze({}) as Params,\n });\n}\n\nfunction normalizePathlessPathname(pathname: unknown): string {\n if (pathname === undefined) {\n return '';\n }\n\n if (typeof pathname !== 'string') {\n throw new UrlKitError('invalid-url', 'Pathless pathname must be a string.', {\n path: ['pathname'],\n });\n }\n\n return pathname;\n}\n\nfunction normalizeUrlHash<Hash>(input: unknown, compiled: CompiledUrlDescriptor): Hash {\n if (compiled.hash) {\n return compiled.hash.normalize(input) as Hash;\n }\n\n if (input !== undefined && input !== null) {\n throw new UrlKitError('invalid-hash', 'Hash is not declared for this URL contract.', {\n path: ['hash'],\n });\n }\n\n return undefined as Hash;\n}\n\nfunction isRecord(input: unknown): input is Readonly<Record<string, unknown>> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","import type { BuildUrlOptions, UrlBuildInput } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport { buildHash } from '../hash/build-hash.js';\nimport { buildCompiledSearch } from '../search/build-compiled-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { isUrlState } from './url-state-brand.js';\n\nexport function buildCompiledUrl<\n Mode extends 'path' | 'pathless',\n Params,\n Search,\n Hash,\n SearchInput = Partial<Search>,\n HashInput = Hash,\n>(\n input: UrlBuildInput<Mode, Params, Search, Hash, SearchInput, HashInput>,\n compiled: CompiledUrlDescriptor<Mode>,\n options: BuildUrlOptions = {},\n): string {\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-url', 'URL build input must be an object.', { path: [] });\n }\n\n const pathname = buildUrlPathname(input, compiled);\n const search = buildUrlSearch(input.search, compiled, options);\n const hash = buildUrlHash(input.hash, compiled, options);\n\n return `${pathname}${search}${hash}`;\n}\n\nfunction buildUrlPathname(\n input: Readonly<Record<string, unknown>>,\n compiled: CompiledUrlDescriptor,\n): string {\n if (compiled.mode === 'path') {\n if (input.pathname !== undefined && !isUrlState(input)) {\n throw new UrlKitError(\n 'invalid-url',\n 'Path-based URL build input must not include pathname.',\n { path: ['pathname'] },\n );\n }\n\n if (!compiled.path) {\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Path URL descriptor is missing a compiled path.',\n { path: ['path'] },\n );\n }\n\n return (compiled.path.buildPath as (params?: unknown) => string)(input.params);\n }\n\n if (input.params !== undefined && !isUrlState(input)) {\n throw new UrlKitError('invalid-url', 'Pathless URL build input must not include params.', {\n path: ['params'],\n });\n }\n\n if (input.pathname === undefined) {\n return '';\n }\n\n if (typeof input.pathname !== 'string') {\n throw new UrlKitError('invalid-url', 'Pathless pathname must be a string.', {\n path: ['pathname'],\n });\n }\n\n return input.pathname;\n}\n\nfunction buildUrlSearch(\n input: unknown,\n compiled: CompiledUrlDescriptor,\n options: BuildUrlOptions,\n): string {\n if (input === undefined) {\n return compiled.search ? buildCompiledSearch({}, compiled.search, options) : '';\n }\n\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-search', 'URL search input must be an object.', {\n path: ['search'],\n });\n }\n\n if (!compiled.search) {\n return '';\n }\n\n return buildCompiledSearch(input, compiled.search, options);\n}\n\nfunction buildUrlHash(\n input: unknown,\n compiled: CompiledUrlDescriptor,\n options: BuildUrlOptions,\n): string {\n if (compiled.hash) {\n return buildHash(input, compiled.hash.descriptor, options);\n }\n\n if (input !== undefined && input !== null) {\n throw new UrlKitError('invalid-hash', 'Hash is not declared for this URL contract.', {\n path: ['hash'],\n });\n }\n\n return '';\n}\n\nfunction isRecord(input: unknown): input is Readonly<Record<string, unknown>> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\n\nconst URLKIT_BASE_URL = 'http://urlkit.local';\n\nexport interface ParsedUrlInput {\n readonly pathname: string;\n readonly searchParams: URLSearchParams;\n readonly hash: string;\n}\n\nexport function parseUrl(input: string | URL): ParsedUrlInput {\n if (input instanceof URL) {\n return freezeParsedUrlInput(input);\n }\n\n if (typeof input !== 'string') {\n throw new UrlKitError('invalid-url', 'URL input must be a string or URL.', { path: [] });\n }\n\n try {\n return freezeParsedUrlInput(new URL(input, URLKIT_BASE_URL));\n } catch (error) {\n throw new UrlKitError('invalid-url', 'URL input is not valid.', { path: [], cause: error });\n }\n}\n\nfunction freezeParsedUrlInput(input: URL): ParsedUrlInput {\n return Object.freeze({\n pathname: input.pathname,\n searchParams: new URLSearchParams(input.searchParams),\n hash: input.hash,\n });\n}\n","import type { UnknownSearchBehavior, UnknownSearchParams } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport type { RawSearchParams } from '../search/contracts.js';\nimport { copyRawSearchParams } from '../search/copy-raw-search-params.js';\n\nexport function resolveUrlUnknownSearch(\n rawSearch: RawSearchParams,\n behavior: UnknownSearchBehavior,\n): UnknownSearchParams | undefined {\n const keys = Object.keys(rawSearch);\n\n if (!keys.length || behavior === 'strip') {\n return undefined;\n }\n\n if (behavior === 'error') {\n throw new UrlKitError('invalid-search', 'Unknown search parameter is not allowed.', {\n path: [keys[0]!],\n });\n }\n\n return copyRawSearchParams(rawSearch);\n}\n","import type { ParseUrlOptions, UrlState, UnknownSearchBehavior } from '../contracts.js';\nimport { readHashFragment } from '../hash/hash-fragment.js';\nimport { parseCompiledSearch } from '../search/parse-compiled-search.js';\nimport { parseRawSearch } from '../search/parse-raw-search.js';\nimport { parseUrl } from './parse-url.js';\nimport { resolveUrlUnknownSearch } from './resolve-url-unknown-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { markUrlState } from './url-state-brand.js';\n\nexport function parseCompiledUrl<Pathname, Params, Search, Hash>(\n input: string | URL,\n compiled: CompiledUrlDescriptor,\n unknownSearch: UnknownSearchBehavior,\n options: Pick<ParseUrlOptions, 'arrayFormat'> = {},\n): UrlState<Pathname, Params, Search, Hash> {\n const parsedUrl = parseUrl(input);\n const params = parseUrlParams<Params>(parsedUrl.pathname, compiled);\n const searchResult = parseUrlSearch<Search>(\n parsedUrl.searchParams,\n compiled,\n unknownSearch,\n options,\n );\n const hash = parseUrlHash<Hash>(parsedUrl.hash, compiled);\n\n const state = {\n pathname: parsedUrl.pathname as Pathname,\n params,\n search: searchResult.search,\n hash,\n ...(searchResult.unknownSearch ? { unknownSearch: searchResult.unknownSearch } : {}),\n } satisfies UrlState<Pathname, Params, Search, Hash>;\n\n return Object.freeze(markUrlState(state));\n}\n\nfunction parseUrlParams<Params>(pathname: string, compiled: CompiledUrlDescriptor): Params {\n if (compiled.mode === 'path' && compiled.path) {\n return compiled.path.parsePathname(pathname) as Params;\n }\n\n return Object.freeze({}) as Params;\n}\n\nfunction parseUrlSearch<Search>(\n searchParams: URLSearchParams,\n compiled: CompiledUrlDescriptor,\n unknownSearch: UnknownSearchBehavior,\n options: Pick<ParseUrlOptions, 'arrayFormat'>,\n): Pick<UrlState<string, {}, Search, undefined>, 'search' | 'unknownSearch'> {\n const rawSearch = parseRawSearch(searchParams);\n\n if (compiled.search) {\n return parseCompiledSearch(rawSearch, compiled.search, unknownSearch, options) as Pick<\n UrlState<string, {}, Search, undefined>,\n 'search' | 'unknownSearch'\n >;\n }\n\n const unknown = resolveUrlUnknownSearch(rawSearch, unknownSearch);\n\n return Object.freeze({\n search: Object.freeze({}) as Search,\n ...(unknown ? { unknownSearch: unknown } : {}),\n });\n}\n\nfunction parseUrlHash<Hash>(hash: string, compiled: CompiledUrlDescriptor): Hash {\n if (!compiled.hash) {\n return undefined as Hash;\n }\n\n return compiled.hash.parse(readHashFragment(hash)) as Hash;\n}\n","import type { ParseRequestOptions, UrlRequestInput } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\n\nexport function resolveRequestUrlInput(\n input: Request | UrlRequestInput,\n options: ParseRequestOptions = {},\n): string | URL {\n const url = readRequestUrl(input);\n\n if (options.baseUrl) {\n return resolveRequestUrl(url, options.baseUrl);\n }\n\n return url;\n}\n\nfunction readRequestUrl(input: Request | UrlRequestInput): string {\n if (isRequest(input)) {\n return input.url;\n }\n\n if (isUrlRequestInput(input)) {\n return input.url;\n }\n\n throw new UrlKitError(\n 'invalid-url',\n 'Request input must be a Request or an object with a url string.',\n {\n path: [],\n },\n );\n}\n\nfunction resolveRequestUrl(url: string, baseUrl: string): URL {\n try {\n return new URL(url, baseUrl);\n } catch (error) {\n throw new UrlKitError('invalid-url', 'Request URL is not valid.', {\n path: [],\n cause: error,\n });\n }\n}\n\nfunction isRequest(input: Request | UrlRequestInput): input is Request {\n return typeof Request !== 'undefined' && input instanceof Request;\n}\n\nfunction isUrlRequestInput(input: Request | UrlRequestInput): input is UrlRequestInput {\n return (\n typeof input === 'object' &&\n input !== null &&\n 'url' in input &&\n typeof (input as { readonly url?: unknown }).url === 'string'\n );\n}\n","import { UrlKitError } from '../errors/url-kit-error.js';\nimport type { ParseUrlOptions, UnknownSearchBehavior } from '../contracts.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { parseCompiledUrl } from './parse-compiled-url.js';\n\nexport function matchCompiledUrl(\n input: string | URL,\n compiled: CompiledUrlDescriptor,\n unknownSearch: UnknownSearchBehavior,\n options: Pick<ParseUrlOptions, 'arrayFormat'> = {},\n): boolean {\n try {\n parseCompiledUrl(input, compiled, unknownSearch, options);\n return true;\n } catch (error) {\n if (error instanceof UrlKitError) {\n return false;\n }\n\n return false;\n }\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport type { SearchEntry } from './search-entries.js';\nimport { appendSearchEntry } from './append-search-entry.js';\nimport { serializeSearchEntries } from './serialize-search-entries.js';\n\nexport function buildRawSearch(\n input: Record<string, unknown> = {},\n options: BuildSearchOptions = {},\n): string {\n const entries: SearchEntry[] = [];\n\n for (const [key, value] of Object.entries(input)) {\n appendRawValue(entries, key, value, options);\n }\n\n return serializeSearchEntries(entries, options);\n}\n\nfunction appendRawValue(\n entries: Parameters<typeof appendSearchEntry>[0],\n key: string,\n value: unknown,\n options: BuildSearchOptions,\n): void {\n if (value === undefined || value === null) {\n return;\n }\n\n if (Array.isArray(value)) {\n appendSearchEntry(entries, key, value.filter(isPresent).map(String), options);\n return;\n }\n\n appendSearchEntry(entries, key, serializeRawScalar(value), options);\n}\n\nfunction isPresent(input: unknown): boolean {\n return input !== undefined && input !== null;\n}\n\nfunction serializeRawScalar(input: unknown): string {\n if (typeof input === 'string') {\n return input;\n }\n\n if (typeof input === 'number' || typeof input === 'boolean' || typeof input === 'bigint') {\n return String(input);\n }\n\n return JSON.stringify(input) ?? String(input);\n}\n","import type { RawSearchParams, RawSearchValue } from './contracts.js';\n\nexport function omitRawSearch(input: RawSearchParams, keys: readonly string[]): RawSearchParams {\n const keySet = new Set(keys);\n const output: Record<string, RawSearchValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (keySet.has(key)) {\n continue;\n }\n\n output[key] = copyRawSearchValue(value);\n }\n\n return Object.freeze(output);\n}\n\nexport function pickRawSearch(input: RawSearchParams, keys: readonly string[]): RawSearchParams {\n const keySet = new Set(keys);\n const output: Record<string, RawSearchValue> = {};\n\n for (const [key, value] of Object.entries(input)) {\n if (!keySet.has(key)) {\n continue;\n }\n\n output[key] = copyRawSearchValue(value);\n }\n\n return Object.freeze(output);\n}\n\nfunction copyRawSearchValue(value: RawSearchValue): RawSearchValue {\n return Array.isArray(value) ? Object.freeze([...value]) : value;\n}\n","import type { ParsedUrlInput } from './parse-url.js';\n\nexport function formatParsedUrl(input: ParsedUrlInput, search: string): string {\n return `${input.pathname}${search}${input.hash}`;\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport { buildRawSearch } from '../search/build-raw-search.js';\nimport { omitRawSearch, pickRawSearch } from '../search/filter-raw-search.js';\nimport { parseRawSearch } from '../search/parse-raw-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { formatParsedUrl } from './format-parsed-url.js';\nimport { parseUrl } from './parse-url.js';\n\nexport function omitCompiledUrlSearch(\n input: string | URL,\n keys: readonly string[],\n _compiled: CompiledUrlDescriptor,\n options: BuildSearchOptions = {},\n): string {\n const parsed = parseUrl(input);\n const filtered = omitRawSearch(parseRawSearch(parsed.searchParams), keys);\n\n return formatParsedUrl(parsed, buildRawSearch(filtered, options));\n}\n\nexport function pickCompiledUrlSearch(\n input: string | URL,\n keys: readonly string[],\n _compiled: CompiledUrlDescriptor,\n options: BuildSearchOptions = {},\n): string {\n const parsed = parseUrl(input);\n const filtered = pickRawSearch(parseRawSearch(parsed.searchParams), keys);\n\n return formatParsedUrl(parsed, buildRawSearch(filtered, options));\n}\n","export function joinSearchStrings(...parts: readonly string[]): string {\n const body = parts\n .map((part) => part.replace(/^\\?/, ''))\n .filter(Boolean)\n .join('&');\n\n return body ? `?${body}` : '';\n}\n","import type { AnyRuntimeSchemaBuilder } from '../schema/contracts.js';\nimport { isRuntimeSchemaKind } from '../schema/is-runtime-schema-kind.js';\nimport { getObjectSchemaShape, type AnyObjectSchema } from '../schema/object.js';\nimport type { CompiledSearchField, RawSearchParams } from './contracts.js';\nimport { joinObjectSearchKey } from './object-search-key.js';\n\nexport function hasSearchFieldRawValue(\n field: CompiledSearchField,\n rawSearch: RawSearchParams,\n): boolean {\n if (isRuntimeSchemaKind(field.schema, 'object')) {\n return hasObjectRawValue(field.schema as AnyObjectSchema, field.key, rawSearch);\n }\n\n return rawSearch[field.key] !== undefined;\n}\n\nfunction hasObjectRawValue(\n schema: AnyObjectSchema,\n parentKey: string,\n rawSearch: RawSearchParams,\n): boolean {\n const shape = getObjectSchemaShape(schema);\n\n return Object.entries(shape).some(([key, childSchema]) => {\n const childSearchKey = joinObjectSearchKey(parentKey, key);\n\n if (isRuntimeSchemaKind(childSchema as AnyRuntimeSchemaBuilder, 'object')) {\n return hasObjectRawValue(childSchema as AnyObjectSchema, childSearchKey, rawSearch);\n }\n\n return rawSearch[childSearchKey] !== undefined;\n });\n}\n","import type {\n CompiledSearchSchema,\n RawSearchParams,\n RawSearchValue,\n SearchParseOptions,\n} from './contracts.js';\nimport { copyRawSearchParams } from './copy-raw-search-params.js';\nimport { deleteSearchFieldRawKeys } from './delete-search-field-raw-keys.js';\nimport { hasSearchFieldRawValue } from './has-search-field-raw-value.js';\nimport { parseSearchFieldValue } from './parse-search-field-value.js';\n\nexport interface PartialCompiledSearchParseResult {\n readonly search: Record<string, unknown>;\n readonly unknownSearch: RawSearchParams;\n}\n\nexport function parsePartialCompiledSearch(\n rawSearch: RawSearchParams,\n compiled: CompiledSearchSchema,\n options: SearchParseOptions = {},\n): PartialCompiledSearchParseResult {\n const remainingUnknown = { ...rawSearch } satisfies Record<string, RawSearchValue>;\n const search: Record<string, unknown> = {};\n\n for (const field of compiled.fields) {\n if (!hasSearchFieldRawValue(field, rawSearch)) {\n continue;\n }\n\n const value = parseSearchFieldValue(field, rawSearch, options);\n deleteSearchFieldRawKeys(field, remainingUnknown);\n\n if (value !== undefined) {\n search[field.key] = value;\n }\n }\n\n return Object.freeze({\n search: Object.freeze(search),\n unknownSearch: copyRawSearchParams(remainingUnknown),\n });\n}\n","import type { PatchSearchOptions } from '../contracts.js';\nimport { buildRawSearch } from '../search/build-raw-search.js';\nimport { buildCompiledSearch } from '../search/build-compiled-search.js';\nimport type { RawSearchParams, RawSearchValue } from '../search/contracts.js';\nimport { copyRawSearchParams } from '../search/copy-raw-search-params.js';\nimport { joinSearchStrings } from '../search/join-search-strings.js';\nimport { parsePartialCompiledSearch } from '../search/parse-partial-compiled-search.js';\nimport { parseRawSearch } from '../search/parse-raw-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { formatParsedUrl } from './format-parsed-url.js';\nimport { parseUrl } from './parse-url.js';\n\nexport function patchCompiledUrlSearch(\n input: string | URL,\n patch: Record<string, unknown>,\n compiled: CompiledUrlDescriptor,\n options: PatchSearchOptions = {},\n): string {\n const parsed = parseUrl(input);\n const rawSearch = parseRawSearch(parsed.searchParams);\n\n if (!compiled.search) {\n return formatParsedUrl(parsed, buildRawPatchSearch(rawSearch, patch, options));\n }\n\n const currentParsed = parsePartialCompiledSearch(rawSearch, compiled.search, options);\n const mergedSearch: Record<string, unknown> = { ...currentParsed.search };\n const unknownSearch: Record<string, RawSearchValue> = {\n ...copyRawSearchParams(currentParsed.unknownSearch),\n };\n const schemaKeys = compiled.search.keys;\n\n for (const [key, value] of Object.entries(patch)) {\n if (shouldRemoveUndefined(value, options) || shouldRemoveNull(value, options)) {\n delete mergedSearch[key];\n delete unknownSearch[key];\n continue;\n }\n\n if (value === undefined || value === null) {\n continue;\n }\n\n if (schemaKeys.has(key)) {\n mergedSearch[key] = value;\n }\n }\n\n const search = joinSearchStrings(\n buildCompiledSearch(mergedSearch, compiled.search, options),\n buildRawSearch(unknownSearch, options),\n );\n\n return formatParsedUrl(parsed, search);\n}\n\nfunction buildRawPatchSearch(\n rawSearch: RawSearchParams,\n patch: Record<string, unknown>,\n options: PatchSearchOptions,\n): string {\n const merged: Record<string, RawSearchValue> = { ...rawSearch };\n\n for (const [key, value] of Object.entries(patch)) {\n if (shouldRemoveUndefined(value, options) || shouldRemoveNull(value, options)) {\n delete merged[key];\n continue;\n }\n\n if (value === undefined || value === null) {\n continue;\n }\n\n merged[key] = toRawSearchValue(value);\n }\n\n return buildRawSearch(merged, options);\n}\n\nfunction shouldRemoveUndefined(value: unknown, options: PatchSearchOptions): boolean {\n return value === undefined && options.removeUndefined === true;\n}\n\nfunction shouldRemoveNull(value: unknown, options: PatchSearchOptions): boolean {\n return value === null && options.removeNull === true;\n}\n\nfunction toRawSearchValue(value: unknown): RawSearchValue {\n if (Array.isArray(value)) {\n return Object.freeze(value.filter(isPresent).map(String));\n }\n\n return String(value);\n}\n\nfunction isPresent(value: unknown): boolean {\n return value !== undefined && value !== null;\n}\n","import type { BuildSearchOptions } from '../contracts.js';\nimport { buildRawSearch } from '../search/build-raw-search.js';\nimport { buildCompiledSearch } from '../search/build-compiled-search.js';\nimport type { CompiledUrlDescriptor } from './compile-url-descriptor.js';\nimport { formatParsedUrl } from './format-parsed-url.js';\nimport { parseUrl } from './parse-url.js';\n\nexport function replaceCompiledUrlSearch(\n input: string | URL,\n next: Record<string, unknown>,\n compiled: CompiledUrlDescriptor,\n options: BuildSearchOptions = {},\n): string {\n const parsed = parseUrl(input);\n const search = compiled.search\n ? buildCompiledSearch(next, compiled.search, options)\n : buildRawSearch(next, options);\n\n return formatParsedUrl(parsed, search);\n}\n","import { compileHashDescriptor } from '../hash/compile-hash-descriptor.js';\nimport type { CompiledHashDescriptor } from '../hash/contracts.js';\nimport { compileSearchSchema } from '../search/compile-search-schema.js';\nimport type { CompiledSearchSchema, RuntimeSearchSchema } from '../search/contracts.js';\nimport type { UrlMode } from '../contracts.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport { compilePath } from './compile-path.js';\nimport type { CompiledPath, NormalizedUrlDescriptor } from './contracts.js';\n\nexport interface CompiledUrlDescriptor<Mode extends UrlMode = UrlMode> {\n readonly mode: Mode;\n readonly pattern: Mode extends 'path' ? string : undefined;\n readonly path: Mode extends 'path' ? CompiledPath : undefined;\n readonly searchSchema?: RuntimeSearchSchema;\n readonly search?: CompiledSearchSchema;\n readonly hash?: CompiledHashDescriptor;\n}\n\nexport function compileUrlDescriptor<Mode extends UrlMode>(\n descriptor: NormalizedUrlDescriptor<Mode>,\n): CompiledUrlDescriptor<Mode> {\n assertNormalizedUrlDescriptor(descriptor);\n\n const path = compileUrlPath(descriptor);\n const search = descriptor.search ? compileSearchSchema(descriptor.search) : undefined;\n const hash = descriptor.hash ? compileHashDescriptor(descriptor.hash) : undefined;\n\n return Object.freeze({\n mode: descriptor.mode,\n pattern: descriptor.pattern,\n path,\n ...(descriptor.search ? { searchSchema: descriptor.search, search } : {}),\n ...(hash ? { hash } : {}),\n }) as CompiledUrlDescriptor<Mode>;\n}\n\nfunction compileUrlPath<Mode extends UrlMode>(\n descriptor: NormalizedUrlDescriptor<Mode>,\n): CompiledUrlDescriptor<Mode>['path'] {\n if (descriptor.mode === 'path') {\n if (descriptor.path) {\n return descriptor.path;\n }\n\n if (typeof descriptor.pattern === 'string') {\n return compilePath(descriptor.pattern) as unknown as CompiledUrlDescriptor<Mode>['path'];\n }\n\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Path URL descriptor must include a path pattern.',\n { path: ['path'] },\n );\n }\n\n return undefined as CompiledUrlDescriptor<Mode>['path'];\n}\n\nfunction assertNormalizedUrlDescriptor(input: unknown): asserts input is NormalizedUrlDescriptor {\n if (!isRecord(input)) {\n throw new UrlKitError('invalid-descriptor', 'URL descriptor must be an object.', { path: [] });\n }\n\n if (input.mode !== 'path' && input.mode !== 'pathless') {\n throw new UrlKitError('invalid-descriptor', 'URL descriptor mode must be path or pathless.', {\n path: ['mode'],\n });\n }\n\n if (input.mode === 'path' && typeof input.pattern !== 'string') {\n throw new UrlKitError('invalid-descriptor', 'Path URL descriptor pattern must be a string.', {\n path: ['pattern'],\n });\n }\n\n if (input.mode === 'pathless' && input.pattern !== undefined) {\n throw new UrlKitError(\n 'invalid-descriptor',\n 'Pathless URL descriptor pattern must be undefined.',\n { path: ['pattern'] },\n );\n }\n}\n\nfunction isRecord(input: unknown): input is Record<string, unknown> {\n return typeof input === 'object' && input !== null && !Array.isArray(input);\n}\n","import type {\n BuildSearchOptions,\n BuildUrlOptions,\n EmptyParams,\n NormalizeUrlOptions,\n NormalizeUrlState,\n ParseRequestOptions,\n ParseUrlOptions,\n PatchSearchOptions,\n SearchInputArgument,\n UrlBuildInput,\n UrlNormalizeInput,\n UrlRequestInput,\n UrlSafeNormalizeResult,\n UrlSafeParseResult,\n UrlState,\n} from '../contracts.js';\nimport { buildHash } from '../hash/build-hash.js';\nimport { parseHash } from '../hash/parse-hash.js';\nimport { buildCompiledSearch } from '../search/build-compiled-search.js';\nimport { parseRawSearch } from '../search/parse-raw-search.js';\nimport { parseCompiledSearch } from '../search/parse-compiled-search.js';\nimport { UrlKitError } from '../errors/url-kit-error.js';\nimport { normalizeCompiledUrl } from './normalize-compiled-url.js';\nimport { buildCompiledUrl } from './build-compiled-url.js';\nimport { parseCompiledUrl } from './parse-compiled-url.js';\nimport { resolveRequestUrlInput } from './parse-request.js';\nimport { matchCompiledUrl } from './match-url.js';\nimport { omitCompiledUrlSearch, pickCompiledUrlSearch } from './filter-compiled-url-search.js';\nimport { patchCompiledUrlSearch } from './patch-compiled-url-search.js';\nimport { replaceCompiledUrlSearch } from './replace-compiled-url-search.js';\nimport { compileUrlDescriptor } from './compile-url-descriptor.js';\nimport type {\n CreateUrlContractOptions,\n NormalizedUrlDescriptor,\n UrlContract,\n} from './contracts.js';\n\nexport function createUrlContract<\n Mode extends 'path' | 'pathless',\n Pathname = Mode extends 'path' ? string : string,\n Params = Mode extends 'path' ? Record<string, string | number> : EmptyParams,\n Search = Record<string, unknown>,\n Hash = string | undefined,\n SearchInput = Partial<Search>,\n HashInput = Hash,\n>(\n descriptor: NormalizedUrlDescriptor<Mode>,\n options: CreateUrlContractOptions = {},\n): UrlContract<Mode, Pathname, Params, Search, Hash, SearchInput, HashInput> {\n const compiled = compileUrlDescriptor(descriptor);\n const unknownSearch = options.unknownSearch ?? 'strip';\n const arrayFormat = options.arrayFormat ?? 'repeat';\n\n const contract = {\n pattern: compiled.pattern,\n parse(\n input: string | URL,\n options?: ParseUrlOptions,\n ): UrlState<Pathname, Params, Search, Hash> {\n return parseCompiledUrl<Pathname, Params, Search, Hash>(\n input,\n compiled,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n );\n },\n safeParse(\n input: string | URL,\n options?: ParseUrlOptions,\n ): UrlSafeParseResult<Pathname, Params, Search, Hash> {\n try {\n return Object.freeze({\n success: true,\n data: parseCompiledUrl<Pathname, Params, Search, Hash>(\n input,\n compiled,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n ),\n });\n } catch (error) {\n return Object.freeze({\n success: false,\n error:\n error instanceof UrlKitError ? error : new UrlKitError('invalid-url', { cause: error }),\n });\n }\n },\n parseRequest(\n input: Request | UrlRequestInput,\n options?: ParseRequestOptions,\n ): UrlState<Pathname, Params, Search, Hash> {\n return parseCompiledUrl<Pathname, Params, Search, Hash>(\n resolveRequestUrlInput(input, options),\n compiled,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n );\n },\n safeParseRequest(\n input: Request | UrlRequestInput,\n options?: ParseRequestOptions,\n ): UrlSafeParseResult<Pathname, Params, Search, Hash> {\n try {\n return Object.freeze({\n success: true,\n data: parseCompiledUrl<Pathname, Params, Search, Hash>(\n resolveRequestUrlInput(input, options),\n compiled,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n ),\n });\n } catch (error) {\n return Object.freeze({\n success: false,\n error:\n error instanceof UrlKitError ? error : new UrlKitError('invalid-url', { cause: error }),\n });\n }\n },\n normalize<\n const Input extends UrlNormalizeInput<Mode, Params, Search, Hash, SearchInput, HashInput>,\n >(\n input: Input,\n options?: NormalizeUrlOptions,\n ): NormalizeUrlState<Mode, Pathname, Params, Search, Hash, Input> {\n return normalizeCompiledUrl<Mode, Pathname, Params, Search, Hash, Input>(\n input,\n compiled,\n options?.unknownSearch ?? unknownSearch,\n );\n },\n safeNormalize<\n const Input extends UrlNormalizeInput<Mode, Params, Search, Hash, SearchInput, HashInput>,\n >(\n input: Input,\n options?: NormalizeUrlOptions,\n ): UrlSafeNormalizeResult<Mode, Pathname, Params, Search, Hash, Input> {\n try {\n return Object.freeze({\n success: true,\n data: normalizeCompiledUrl<Mode, Pathname, Params, Search, Hash, Input>(\n input,\n compiled,\n options?.unknownSearch ?? unknownSearch,\n ),\n });\n } catch (error) {\n return Object.freeze({\n success: false,\n error:\n error instanceof UrlKitError ? error : new UrlKitError('invalid-url', { cause: error }),\n });\n }\n },\n build(\n input:\n | UrlBuildInput<Mode, Params, Search, Hash, SearchInput, HashInput>\n | UrlState<Pathname, Params, Search, Hash>,\n options?: BuildUrlOptions,\n ): string {\n return buildCompiledUrl<Mode, Params, Search, Hash, SearchInput, HashInput>(\n input as UrlBuildInput<Mode, Params, Search, Hash, SearchInput, HashInput>,\n compiled,\n mergeBuildOptions(arrayFormat, options),\n );\n },\n match(input: string | URL, options?: ParseUrlOptions): boolean {\n return matchCompiledUrl(input, compiled, options?.unknownSearch ?? unknownSearch, {\n arrayFormat: options?.arrayFormat ?? arrayFormat,\n });\n },\n // eslint-disable-next-line @typescript-eslint/unbound-method\n parsePathname: compiled.path?.parsePathname,\n buildPath: compiled.path?.buildPath,\n parseSearch(input: string | URLSearchParams, options?: ParseUrlOptions): Search {\n if (compiled.search) {\n return parseCompiledSearch(\n parseRawSearch(input),\n compiled.search,\n options?.unknownSearch ?? unknownSearch,\n { arrayFormat: options?.arrayFormat ?? arrayFormat },\n ).search as Search;\n }\n\n return Object.freeze({}) as Search;\n },\n parseHash(input: unknown): Hash {\n return compiled.hash\n ? (parseHash(input, compiled.hash.descriptor) as Hash)\n : (parseHash(input) as Hash);\n },\n buildSearch(search: SearchInputArgument<SearchInput>, options?: BuildSearchOptions): string {\n if (compiled.search) {\n return buildCompiledSearch(\n search as Record<string, unknown>,\n compiled.search,\n mergeBuildOptions(arrayFormat, options),\n );\n }\n\n return '';\n },\n buildHash(hash: Hash, options?: BuildUrlOptions): string {\n return compiled.hash\n ? buildHash(hash, compiled.hash.descriptor, options)\n : buildHash(hash, options);\n },\n withSearch(input: string | URL, search: Partial<Search>, options?: PatchSearchOptions): string {\n return patchCompiledUrlSearch(\n input,\n search,\n compiled,\n mergeBuildOptions(arrayFormat, options),\n );\n },\n replaceSearch(input: string | URL, search: SearchInput, options?: BuildSearchOptions): string {\n return replaceCompiledUrlSearch(\n input,\n search as Record<string, unknown>,\n compiled,\n mergeBuildOptions(arrayFormat, options),\n );\n },\n omitSearch(input: string | URL, keys: readonly string[], options?: BuildSearchOptions): string {\n return omitCompiledUrlSearch(input, keys, compiled, mergeBuildOptions(arrayFormat, options));\n },\n pickSearch(input: string | URL, keys: readonly string[], options?: BuildSearchOptions): string {\n return pickCompiledUrlSearch(input, keys, compiled, mergeBuildOptions(arrayFormat, options));\n },\n };\n\n return Object.freeze(contract) as unknown as UrlContract<\n Mode,\n Pathname,\n Params,\n Search,\n Hash,\n SearchInput,\n HashInput\n >;\n}\n\nfunction mergeBuildOptions<Options extends BuildUrlOptions>(\n arrayFormat: NonNullable<BuildUrlOptions['arrayFormat']>,\n options: Options | undefined,\n): Options & BuildUrlOptions {\n return {\n ...options,\n arrayFormat: options?.arrayFormat ?? arrayFormat,\n } as Options & BuildUrlOptions;\n}\n"],"names":["isPlainObject","HASH_PATH","isRecord","resolveUnknownSearch","isPresent"],"mappings":"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"}
|