zod-nest 3.2.2 → 3.2.4

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.
Files changed (44) hide show
  1. package/README.md +1 -0
  2. package/dist/{chunk-LHNXO52A.mjs → chunk-2NVNXIOY.mjs} +15 -26
  3. package/dist/chunk-2NVNXIOY.mjs.map +1 -0
  4. package/dist/{chunk-LXRBMFWD.js → chunk-4LOFWANL.js} +6 -6
  5. package/dist/{chunk-LXRBMFWD.js.map → chunk-4LOFWANL.js.map} +1 -1
  6. package/dist/chunk-EV5I5HGT.js +127 -0
  7. package/dist/chunk-EV5I5HGT.js.map +1 -0
  8. package/dist/{chunk-WI4JKXT6.mjs → chunk-IMEFMJTS.mjs} +3 -3
  9. package/dist/{chunk-WI4JKXT6.mjs.map → chunk-IMEFMJTS.mjs.map} +1 -1
  10. package/dist/{chunk-FKXVNCDD.js → chunk-KNXYA5ER.js} +73 -84
  11. package/dist/chunk-KNXYA5ER.js.map +1 -0
  12. package/dist/chunk-MPNAA53V.mjs +119 -0
  13. package/dist/chunk-MPNAA53V.mjs.map +1 -0
  14. package/dist/{chunk-26E2XEJU.js → chunk-N3VWL7G7.js} +45 -45
  15. package/dist/{chunk-26E2XEJU.js.map → chunk-N3VWL7G7.js.map} +1 -1
  16. package/dist/{chunk-RAF7JGS6.mjs → chunk-VSI3SF7S.mjs} +5 -5
  17. package/dist/{chunk-RAF7JGS6.mjs.map → chunk-VSI3SF7S.mjs.map} +1 -1
  18. package/dist/express/index.d.mts +3 -3
  19. package/dist/express/index.d.ts +3 -3
  20. package/dist/express/index.js +20 -20
  21. package/dist/express/index.mjs +5 -5
  22. package/dist/fastify/index.d.mts +3 -3
  23. package/dist/fastify/index.d.ts +3 -3
  24. package/dist/fastify/index.js +11 -11
  25. package/dist/fastify/index.mjs +5 -5
  26. package/dist/helpers/index.js +24 -24
  27. package/dist/helpers/index.mjs +3 -3
  28. package/dist/index.d.mts +2 -2
  29. package/dist/index.d.ts +2 -2
  30. package/dist/index.js +215 -204
  31. package/dist/index.js.map +1 -1
  32. package/dist/index.mjs +16 -5
  33. package/dist/index.mjs.map +1 -1
  34. package/dist/{param-decorators-Dfd2Cy08.d.mts → param-decorators-1UCi-qHq.d.mts} +1 -1
  35. package/dist/{param-decorators-23pStLeF.d.ts → param-decorators-CcuRJZXu.d.ts} +1 -1
  36. package/dist/{registry-Cs1Y0a-L.d.mts → registry-D99yMzJg.d.mts} +3 -2
  37. package/dist/{registry-Cs1Y0a-L.d.ts → registry-D99yMzJg.d.ts} +3 -2
  38. package/package.json +1 -1
  39. package/dist/chunk-4RXGLSPP.js +0 -73
  40. package/dist/chunk-4RXGLSPP.js.map +0 -1
  41. package/dist/chunk-FKXVNCDD.js.map +0 -1
  42. package/dist/chunk-LHNXO52A.mjs.map +0 -1
  43. package/dist/chunk-ZZW54ETO.mjs +0 -67
  44. package/dist/chunk-ZZW54ETO.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/multipart/file-checks.ts","../src/multipart/file-marker.ts","../src/multipart/build-file-schema.ts","../src/multipart/metadata.ts","../src/multipart/zod-multipart.decorator.ts","../src/multipart/param-decorators.ts"],"names":["normalizeExtension","extension","startsWith","toLowerCase","mimeTypeCheck","accessors","options","allowed","Set","mimeTypes","map","mimeType","payload","value","has","issues","push","code","input","message","join","extensionCheck","extensions","fileName","matched","some","endsWith","sizeCheck","readSize","size","maxSize","fileSchemas","singleton","WeakSet","isZodType","innerOf","def","innerType","element","undefined","unwrapOnce","schema","inner","_zod","markFileSchema","add","isFileSchema","resolveFragment","contentMediaType","singleMimeType","binary","description","length","collectChecks","params","checks","withId","fragment","id","overrideJSONSchema","meta","buildFileSchema","base","z","custom","predicate","checked","check","MultipartFilesIn","Request","Body","ZOD_MULTIPART_METADATA_KEY","Symbol","for","MULTIPART_CONTENT_TYPE","toSchema","body","isZodSchema","object","toShape","isZodObject","shape","partitionKeys","fileKeys","textKeys","key","Object","entries","resolveBody","registry","flatten","flattenObjectIntersection","resolved","resolveSchemaRef","kind","ref","createZodMultipart","defaultFilesIn","defaultRegistry","metadata","filesIn","target","propertyKey","descriptor","handler","TypeError","Reflect","defineMetadata","swaggerDescriptor","ApiConsumes","ApiBody","required","readMetadata","ctx","decorator","getMetadata","getHandler","isMultipartMetadata","Error","requireShape","schemaFor","name","keys","pick","wanted","picked","validate","argType","result","safeParseAsync","success","data","ZodValidationException","error","type","metatype","assertFilesOnRequest","resolveUploadedFile","request","switchToHttp","getRequest","file","resolveUploadedFiles","files","resolveMultipartBody","_data","ZodUploadedFile","createParamDecorator","ZodUploadedFiles","ZodMultipartBody"],"mappings":"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","file":"chunk-RAF7JGS6.mjs","sourcesContent":["import type { z } from 'zod';\n\n/**\n * Reads the fields a check needs off a platform file object. Multer names the\n * client filename `originalname`, `@fastify/multipart` names it `filename`,\n * and only multer reports a `size` — so each platform supplies its own\n * accessors instead of the library inventing a common shape.\n */\nexport interface FileAccessors<TFile> {\n readonly mimeType: (file: TFile) => string;\n readonly fileName: (file: TFile) => string;\n readonly size?: (file: TFile) => number;\n}\n\nexport interface MimeTypeCheckOptions {\n readonly mimeTypes: readonly string[];\n}\n\nexport interface ExtensionCheckOptions {\n readonly extensions: readonly string[];\n}\n\nexport interface SizeCheckOptions {\n readonly maxSize: number;\n}\n\nexport type FileCheck<TFile> = (payload: z.core.ParsePayload<TFile>) => void;\n\nconst normalizeExtension = (extension: string): string =>\n extension.startsWith('.') ? extension.toLowerCase() : `.${extension.toLowerCase()}`;\n\nexport const mimeTypeCheck = <TFile>(\n accessors: FileAccessors<TFile>,\n options: MimeTypeCheckOptions,\n): FileCheck<TFile> => {\n const allowed = new Set(options.mimeTypes.map((mimeType) => mimeType.toLowerCase()));\n return (payload) => {\n const mimeType = accessors.mimeType(payload.value).toLowerCase();\n if (allowed.has(mimeType)) {\n return;\n }\n payload.issues.push({\n code: 'custom',\n input: payload.value,\n message: `Expected one of ${options.mimeTypes.join(', ')}, received ${mimeType}`,\n });\n };\n};\n\nexport const extensionCheck = <TFile>(\n accessors: FileAccessors<TFile>,\n options: ExtensionCheckOptions,\n): FileCheck<TFile> => {\n const allowed = new Set(options.extensions.map(normalizeExtension));\n return (payload) => {\n const fileName = accessors.fileName(payload.value).toLowerCase();\n const matched = [...allowed].some((extension) => fileName.endsWith(extension));\n if (matched) {\n return;\n }\n payload.issues.push({\n code: 'custom',\n input: payload.value,\n message: `Expected a file ending in ${options.extensions.map(normalizeExtension).join(', ')}, received ${fileName}`,\n });\n };\n};\n\nexport const sizeCheck = <TFile>(\n readSize: (file: TFile) => number,\n options: SizeCheckOptions,\n): FileCheck<TFile> => {\n return (payload) => {\n const size = readSize(payload.value);\n if (size <= options.maxSize) {\n return;\n }\n payload.issues.push({\n code: 'custom',\n input: payload.value,\n message: `Expected at most ${options.maxSize} bytes, received ${size}`,\n });\n };\n};\n","import type { z } from 'zod';\n\nimport { singleton } from '../schema/singleton.js';\n\n/**\n * Per-instance tag for schemas produced by the platform file factories.\n * WeakSet rather than `z.registry` because this is transient per-instance\n * annotation, not stable id-keyed metadata (CLAUDE.md).\n */\nconst fileSchemas = singleton('file-schemas', () => new WeakSet<z.ZodType>());\n\n// Wrapper defs expose their inner schema as Zod's internal `$ZodType`, which\n// `in` narrowing widens to `unknown`. One guard converts back to the public\n// type and rejects a non-wrapper in the same step.\nconst isZodType = (value: unknown): value is z.ZodType =>\n value !== null && typeof value === 'object' && '_zod' in value;\n\nconst innerOf = (def: object): unknown => {\n if ('innerType' in def) {\n return def.innerType;\n }\n if ('element' in def) {\n return def.element;\n }\n return undefined;\n};\n\nconst unwrapOnce = (schema: z.ZodType): z.ZodType | undefined => {\n const inner = innerOf(schema._zod.def);\n return isZodType(inner) ? inner : undefined;\n};\n\nexport const markFileSchema = <T extends z.ZodType>(schema: T): T => {\n fileSchemas.add(schema);\n return schema;\n};\n\n/**\n * True for a factory-produced file schema and for `.optional()` / `.array()`\n * wrappers around one — an optional or repeated file field is still a file\n * field for the request-vs-body split.\n */\nexport const isFileSchema = (schema: z.ZodType): boolean => {\n if (fileSchemas.has(schema)) {\n return true;\n }\n const inner = unwrapOnce(schema);\n if (inner === undefined) {\n return false;\n }\n return isFileSchema(inner);\n};\n","import { z } from 'zod';\n\nimport type { SchemaObject } from '../schema/openapi.types.js';\nimport type { FileAccessors, FileCheck } from './file-checks.js';\n\nimport { binary } from '../helpers/fragments.js';\nimport { overrideJSONSchema } from '../schema/custom-override.js';\nimport { extensionCheck, mimeTypeCheck, sizeCheck } from './file-checks.js';\nimport { markFileSchema } from './file-marker.js';\n\nexport interface BaseFileOptions {\n /**\n * Registry id for the schema. Set it to get a reusable\n * `components.schemas` entry that every field `$ref`s, instead of the\n * fragment being inlined at each use site. There is no `title` counterpart\n * — `overrideJSONSchema` replaces the emitted body and does not carry\n * `title` into it, so one would have no effect.\n */\n readonly id?: string;\n /** Allowed MIME types, matched case-insensitively against the client-supplied value. */\n readonly mimeTypes?: readonly string[];\n /** Allowed filename extensions, with or without a leading dot. */\n readonly extensions?: readonly string[];\n /** OpenAPI `description` for the emitted binary property. */\n readonly description?: string;\n /** Overrides the `contentMediaType` derived from a single-entry `mimeTypes`. */\n readonly contentMediaType?: string;\n}\n\nexport interface BuildFileSchemaParams<TFile> {\n readonly predicate: (value: unknown) => boolean;\n readonly accessors: FileAccessors<TFile>;\n readonly options: BaseFileOptions | undefined;\n /** Byte-size ceiling. Only platforms that report a size pass this. */\n readonly maxSize?: number;\n}\n\nconst resolveFragment = (options: BaseFileOptions | undefined): SchemaObject => {\n const contentMediaType = options?.contentMediaType ?? singleMimeType(options?.mimeTypes);\n return binary({\n ...(options?.description !== undefined ? { description: options.description } : {}),\n ...(contentMediaType !== undefined ? { contentMediaType } : {}),\n });\n};\n\nconst singleMimeType = (mimeTypes: readonly string[] | undefined): string | undefined => {\n if (mimeTypes === undefined || mimeTypes.length !== 1) {\n return undefined;\n }\n return mimeTypes[0];\n};\n\nconst collectChecks = <TFile>(params: BuildFileSchemaParams<TFile>): Array<FileCheck<TFile>> => {\n const { accessors, options, maxSize } = params;\n const checks: Array<FileCheck<TFile>> = [];\n if (options?.mimeTypes !== undefined) {\n checks.push(mimeTypeCheck(accessors, { mimeTypes: options.mimeTypes }));\n }\n if (options?.extensions !== undefined) {\n checks.push(extensionCheck(accessors, { extensions: options.extensions }));\n }\n if (maxSize !== undefined && accessors.size !== undefined) {\n checks.push(sizeCheck(accessors.size, { maxSize }));\n }\n return checks;\n};\n\nconst withId = <TFile>(\n schema: z.ZodType<TFile, TFile>,\n options: BaseFileOptions | undefined,\n fragment: SchemaObject,\n): z.ZodType<TFile, TFile> => {\n if (options?.id === undefined) {\n return schema;\n }\n return overrideJSONSchema(schema.meta({ id: options.id }), fragment);\n};\n\n/**\n * Assemble a platform file schema: duck-typing predicate, the option checks,\n * then `.meta({ id })` — re-registering the binary fragment after every step.\n *\n * Each registration is load-bearing. `overrideJSONSchema` keys its fragment on\n * the schema *instance*, and both `.check()` and `.meta()` clone. Emission\n * visits every instance in the chain, so a step left unregistered emits `{}`\n * — as a bare `{}` property in strict mode, or as an empty `components.schemas`\n * entry when the schema is named.\n */\nexport const buildFileSchema = <TFile>(\n params: BuildFileSchemaParams<TFile>,\n): z.ZodType<TFile, TFile> => {\n const fragment = resolveFragment(params.options);\n const base = overrideJSONSchema(z.custom<TFile>(params.predicate), fragment);\n const checks = collectChecks(params);\n const checked = checks.length === 0 ? base : overrideJSONSchema(base.check(...checks), fragment);\n return markFileSchema(withId(checked, params.options, fragment));\n};\n","import type { z } from 'zod';\n\n/**\n * Where the multipart parser puts uploaded files. Multer leaves them on the\n * request (`req.file` / `req.files`) with only text fields in `req.body`;\n * `@fastify/multipart` with `attachFieldsToBody: true` puts everything in\n * `req.body`.\n */\nexport const MultipartFilesIn = {\n Request: 'request',\n Body: 'body',\n} as const;\n\nexport type MultipartFilesIn = (typeof MultipartFilesIn)[keyof typeof MultipartFilesIn];\n\n/** Shape accepted by `@ZodMultipart` — one Zod schema per form field. */\nexport type MultipartShape = Readonly<Record<string, z.ZodType>>;\n\nexport interface MultipartMetadata {\n /**\n * Flat shape the param decorators validate against. `undefined` when the\n * body is a composite (`z.intersection` / `z.union`) with no single flat\n * shape to split — the document still emits, but `@ZodUploadedFile` and\n * friends have nothing to resolve and say so.\n */\n readonly shape: MultipartShape | undefined;\n readonly fileKeys: readonly string[];\n readonly textKeys: readonly string[];\n readonly filesIn: MultipartFilesIn;\n}\n\n/**\n * Metadata key for the shape declared by `@ZodMultipart`. `Symbol.for` so\n * consumers in other realms read the same registry (CLAUDE.md).\n */\nexport const ZOD_MULTIPART_METADATA_KEY = Symbol.for('zod-nest.multipart');\n","import { ApiBody, ApiConsumes } from '@nestjs/swagger';\nimport { z } from 'zod';\n\nimport type { ZodNestRegistry } from '../schema/registry.js';\nimport type { MultipartFilesIn, MultipartMetadata, MultipartShape } from './metadata.js';\n\nimport { flattenObjectIntersection } from '../decorators/internal/flatten-intersection.js';\nimport { isZodObject } from '../decorators/internal/zod-param-expand.js';\nimport { resolveSchemaRef } from '../decorators/internal/zod-schema-ref.js';\nimport { isZodSchema } from '../dto/predicates.js';\nimport { defaultRegistry } from '../schema/registry.js';\nimport { isFileSchema } from './file-marker.js';\nimport { ZOD_MULTIPART_METADATA_KEY } from './metadata.js';\n\nexport const MULTIPART_CONTENT_TYPE = 'multipart/form-data';\n\n/**\n * Body declaration accepted by `@ZodMultipart`: a flat shape record, or any\n * Zod schema. A record is the common case; a schema covers named bodies\n * (`.meta({ id })` → `$ref`) and composites an object literal can't express.\n */\nexport type MultipartBody = MultipartShape | z.ZodType;\n\nexport interface ZodMultipartOptions {\n /**\n * Where the parser puts uploaded files. Defaults to the platform entry\n * point's convention — `'request'` from `zod-nest/express`, `'body'` from\n * `zod-nest/fastify`.\n */\n readonly filesIn?: MultipartFilesIn;\n /**\n * Forces this id, overriding any `.meta({ id })` on the schema. A named body\n * is emitted as a `$ref` to `components.schemas`, which keeps a stable name\n * for client generators — at the cost of Swagger UI's `try-it-out` form,\n * which doesn't follow `$ref` for `multipart/form-data`.\n */\n readonly id?: string;\n /**\n * Merge an intersection / union of `z.object` arms into one flat inline\n * object. Needed for composite bodies whose `try-it-out` form must render.\n * All merged properties become optional. See `@ZodBody`'s `flatten`.\n */\n readonly flatten?: boolean;\n /** Registry to register named descendants into. Defaults to `defaultRegistry`. */\n readonly registry?: ZodNestRegistry;\n /** OpenAPI `description` for the request body. */\n readonly description?: string;\n /** Whether the body is required. Defaults to `true`. */\n readonly required?: boolean;\n}\n\nconst toSchema = (body: MultipartBody): z.ZodType =>\n isZodSchema(body) ? body : z.object({ ...body });\n\n/**\n * The flat shape the param decorators split on. A record is already flat and a\n * `z.object` exposes one; a composite has none, and the decorators report that\n * rather than guessing.\n */\nconst toShape = (body: MultipartBody): MultipartShape | undefined => {\n if (!isZodSchema(body)) {\n return body;\n }\n return isZodObject(body) ? body.shape : undefined;\n};\n\nconst partitionKeys = (\n shape: MultipartShape | undefined,\n): { fileKeys: string[]; textKeys: string[] } => {\n const fileKeys: string[] = [];\n const textKeys: string[] = [];\n for (const [key, schema] of Object.entries(shape ?? {})) {\n if (isFileSchema(schema)) {\n fileKeys.push(key);\n continue;\n }\n textKeys.push(key);\n }\n return { fileKeys, textKeys };\n};\n\n/**\n * Resolves the operation's body. Anonymous bodies emit inline because Swagger\n * UI's `multipart/form-data` form generator doesn't follow `$ref` — a\n * referenced body renders one stub field instead of file pickers. Naming the\n * body (`id` or `.meta({ id })`) opts into the `$ref` and that trade-off.\n */\nconst resolveBody = (\n schema: z.ZodType,\n options: ZodMultipartOptions | undefined,\n registry: ZodNestRegistry,\n): Record<string, unknown> | { readonly $ref: string } => {\n if (options?.flatten === true) {\n return flattenObjectIntersection(schema, registry, '@ZodMultipart');\n }\n const resolved = resolveSchemaRef(schema, {\n ...(options?.id !== undefined ? { id: options.id } : {}),\n registry,\n });\n return resolved.kind === 'ref' ? resolved.ref : resolved.schema;\n};\n\nexport const createZodMultipart = (defaultFilesIn: MultipartFilesIn) => {\n /**\n * Declares an endpoint's whole `multipart/form-data` body — file fields and\n * text fields together — as the single source of truth for both the OpenAPI\n * document and the multipart param decorators.\n */\n return (body: MultipartBody, options?: ZodMultipartOptions): MethodDecorator => {\n const registry = options?.registry ?? defaultRegistry;\n const shape = toShape(body);\n const metadata: MultipartMetadata = {\n shape,\n ...partitionKeys(shape),\n filesIn: options?.filesIn ?? defaultFilesIn,\n };\n const schema = resolveBody(toSchema(body), options, registry);\n\n return (target, propertyKey, descriptor) => {\n const handler = descriptor.value;\n if (typeof handler !== 'function') {\n throw new TypeError('[zod-nest] @ZodMultipart can only be applied to methods.');\n }\n Reflect.defineMetadata(ZOD_MULTIPART_METADATA_KEY, metadata, handler);\n\n // `TypedPropertyDescriptor<unknown>` matches what the swagger decorators\n // expect; `MethodDecorator`'s parameter is `TypedPropertyDescriptor<T>`\n // for the inferred return type, structurally compatible at runtime.\n const swaggerDescriptor = descriptor as TypedPropertyDescriptor<unknown>;\n ApiConsumes(MULTIPART_CONTENT_TYPE)(target, propertyKey, swaggerDescriptor);\n ApiBody({\n schema,\n ...(options?.description !== undefined ? { description: options.description } : {}),\n required: options?.required ?? true,\n })(target, propertyKey, swaggerDescriptor);\n };\n };\n};\n","import { createParamDecorator } from '@nestjs/common';\nimport { z } from 'zod';\n\nimport type { ExecutionContext } from '@nestjs/common';\nimport type { MultipartMetadata, MultipartShape } from './metadata.js';\n\nimport { ZodValidationException } from '../exceptions/validation.exception.js';\nimport { MultipartFilesIn, ZOD_MULTIPART_METADATA_KEY } from './metadata.js';\n\ntype ArgType = 'body' | 'custom';\n\nconst readMetadata = (ctx: ExecutionContext, decorator: string): MultipartMetadata => {\n const metadata: unknown = Reflect.getMetadata(ZOD_MULTIPART_METADATA_KEY, ctx.getHandler());\n if (!isMultipartMetadata(metadata)) {\n throw new Error(\n `[zod-nest] ${decorator} requires @ZodMultipart on the same handler — it reads the declared shape from there.`,\n );\n }\n return metadata;\n};\n\nconst isMultipartMetadata = (value: unknown): value is MultipartMetadata =>\n value !== null && typeof value === 'object' && 'shape' in value && 'filesIn' in value;\n\n/**\n * The declared shape, or a pointed error when the body is a composite. An\n * intersection / union has no single flat shape to split, so there is nothing\n * for these decorators to resolve a field against.\n */\nconst requireShape = (metadata: MultipartMetadata, decorator: string): MultipartShape => {\n if (metadata.shape !== undefined) {\n return metadata.shape;\n }\n throw new Error(\n `[zod-nest] ${decorator} needs a flat body shape, but @ZodMultipart was given a composite schema (an intersection or union). Validate it with @Body(new ZodValidationPipe(schema)) instead.`,\n );\n};\n\nconst schemaFor = (metadata: MultipartMetadata, name: string, decorator: string): z.ZodType => {\n const shape = requireShape(metadata, decorator);\n const schema = shape[name];\n if (schema === undefined) {\n throw new Error(\n `[zod-nest] ${decorator}('${name}') has no matching property in the @ZodMultipart shape. Declared: ${Object.keys(shape).join(', ')}.`,\n );\n }\n return schema;\n};\n\nconst pick = (shape: MultipartShape, keys: readonly string[]): z.ZodType => {\n const wanted = new Set(keys);\n const picked: Record<string, z.ZodType> = {};\n for (const [key, schema] of Object.entries(shape)) {\n if (wanted.has(key)) {\n picked[key] = schema;\n }\n }\n return z.object(picked);\n};\n\nconst validate = async (schema: z.ZodType, value: unknown, argType: ArgType): Promise<unknown> => {\n const result = await schema.safeParseAsync(value);\n if (result.success) {\n return result.data;\n }\n throw new ZodValidationException(result.error, {\n type: argType,\n metatype: undefined,\n data: undefined,\n });\n};\n\nconst assertFilesOnRequest = (metadata: MultipartMetadata, decorator: string): void => {\n if (metadata.filesIn === MultipartFilesIn.Request) {\n return;\n }\n throw new Error(\n `[zod-nest] ${decorator} is unavailable under filesIn: 'body' — the parser puts files in the request body, so read them with @ZodMultipartBody().`,\n );\n};\n\nexport const resolveUploadedFile = async (\n name: string,\n ctx: ExecutionContext,\n): Promise<unknown> => {\n const metadata = readMetadata(ctx, '@ZodUploadedFile');\n assertFilesOnRequest(metadata, '@ZodUploadedFile');\n const request: { file?: unknown } = ctx.switchToHttp().getRequest();\n return validate(schemaFor(metadata, name, '@ZodUploadedFile'), request.file, 'custom');\n};\n\nexport const resolveUploadedFiles = async (\n name: string | undefined,\n ctx: ExecutionContext,\n): Promise<unknown> => {\n const metadata = readMetadata(ctx, '@ZodUploadedFiles');\n assertFilesOnRequest(metadata, '@ZodUploadedFiles');\n const request: { files?: unknown } = ctx.switchToHttp().getRequest();\n const schema =\n name === undefined\n ? pick(requireShape(metadata, '@ZodUploadedFiles'), metadata.fileKeys)\n : schemaFor(metadata, name, '@ZodUploadedFiles');\n return validate(schema, request.files, 'custom');\n};\n\nexport const resolveMultipartBody = async (\n _data: unknown,\n ctx: ExecutionContext,\n): Promise<unknown> => {\n const metadata = readMetadata(ctx, '@ZodMultipartBody');\n const shape = requireShape(metadata, '@ZodMultipartBody');\n const request: { body?: unknown } = ctx.switchToHttp().getRequest();\n const keys = metadata.filesIn === MultipartFilesIn.Body ? Object.keys(shape) : metadata.textKeys;\n return validate(pick(shape, keys), request.body, 'body');\n};\n\n/**\n * Validates `req.file` against the named property of the `@ZodMultipart`\n * shape. The name selects a schema; it never searches the request. Match it\n * to your `FileInterceptor('<name>')` field name, as with plain Nest.\n */\nexport const ZodUploadedFile = createParamDecorator(resolveUploadedFile);\n\n/**\n * Validates `req.files` against the named property of the `@ZodMultipart`\n * shape, or against an object of every declared file property when called\n * with no name — the record shape `FileFieldsInterceptor` produces.\n */\nexport const ZodUploadedFiles = createParamDecorator(resolveUploadedFiles);\n\n/**\n * Validates `req.body` against the `@ZodMultipart` shape — the text fields\n * only under `filesIn: 'request'` (multer keeps files off the body), the\n * whole shape under `filesIn: 'body'`.\n */\nexport const ZodMultipartBody = createParamDecorator(resolveMultipartBody);\n"]}
1
+ {"version":3,"sources":["../src/multipart/file-checks.ts","../src/multipart/file-marker.ts","../src/multipart/build-file-schema.ts","../src/multipart/metadata.ts","../src/multipart/zod-multipart.decorator.ts","../src/multipart/param-decorators.ts"],"names":["normalizeExtension","extension","startsWith","toLowerCase","mimeTypeCheck","accessors","options","allowed","Set","mimeTypes","map","mimeType","payload","value","has","issues","push","code","input","message","join","extensionCheck","extensions","fileName","matched","some","endsWith","sizeCheck","readSize","size","maxSize","fileSchemas","singleton","WeakSet","isZodType","innerOf","def","innerType","element","undefined","unwrapOnce","schema","inner","_zod","markFileSchema","add","isFileSchema","resolveFragment","contentMediaType","singleMimeType","binary","description","length","collectChecks","params","checks","withId","fragment","id","overrideJSONSchema","meta","buildFileSchema","base","z","custom","predicate","checked","check","MultipartFilesIn","Request","Body","ZOD_MULTIPART_METADATA_KEY","Symbol","for","MULTIPART_CONTENT_TYPE","toSchema","body","isZodSchema","object","toShape","isZodObject","shape","partitionKeys","fileKeys","textKeys","key","Object","entries","resolveBody","registry","flatten","flattenObjectIntersection","resolved","resolveSchemaRef","kind","ref","createZodMultipart","defaultFilesIn","defaultRegistry","metadata","filesIn","target","propertyKey","descriptor","handler","TypeError","Reflect","defineMetadata","swaggerDescriptor","ApiConsumes","ApiBody","required","readMetadata","ctx","decorator","getMetadata","getHandler","isMultipartMetadata","Error","requireShape","schemaFor","name","keys","pick","wanted","picked","validate","argType","result","safeParseAsync","success","data","ZodValidationException","error","type","metatype","assertFilesOnRequest","resolveUploadedFile","request","switchToHttp","getRequest","file","resolveUploadedFiles","files","resolveMultipartBody","_data","ZodUploadedFile","createParamDecorator","ZodUploadedFiles","ZodMultipartBody"],"mappings":"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","file":"chunk-VSI3SF7S.mjs","sourcesContent":["import type { z } from 'zod';\n\n/**\n * Reads the fields a check needs off a platform file object. Multer names the\n * client filename `originalname`, `@fastify/multipart` names it `filename`,\n * and only multer reports a `size` — so each platform supplies its own\n * accessors instead of the library inventing a common shape.\n */\nexport interface FileAccessors<TFile> {\n readonly mimeType: (file: TFile) => string;\n readonly fileName: (file: TFile) => string;\n readonly size?: (file: TFile) => number;\n}\n\nexport interface MimeTypeCheckOptions {\n readonly mimeTypes: readonly string[];\n}\n\nexport interface ExtensionCheckOptions {\n readonly extensions: readonly string[];\n}\n\nexport interface SizeCheckOptions {\n readonly maxSize: number;\n}\n\nexport type FileCheck<TFile> = (payload: z.core.ParsePayload<TFile>) => void;\n\nconst normalizeExtension = (extension: string): string =>\n extension.startsWith('.') ? extension.toLowerCase() : `.${extension.toLowerCase()}`;\n\nexport const mimeTypeCheck = <TFile>(\n accessors: FileAccessors<TFile>,\n options: MimeTypeCheckOptions,\n): FileCheck<TFile> => {\n const allowed = new Set(options.mimeTypes.map((mimeType) => mimeType.toLowerCase()));\n return (payload) => {\n const mimeType = accessors.mimeType(payload.value).toLowerCase();\n if (allowed.has(mimeType)) {\n return;\n }\n payload.issues.push({\n code: 'custom',\n input: payload.value,\n message: `Expected one of ${options.mimeTypes.join(', ')}, received ${mimeType}`,\n });\n };\n};\n\nexport const extensionCheck = <TFile>(\n accessors: FileAccessors<TFile>,\n options: ExtensionCheckOptions,\n): FileCheck<TFile> => {\n const allowed = new Set(options.extensions.map(normalizeExtension));\n return (payload) => {\n const fileName = accessors.fileName(payload.value).toLowerCase();\n const matched = [...allowed].some((extension) => fileName.endsWith(extension));\n if (matched) {\n return;\n }\n payload.issues.push({\n code: 'custom',\n input: payload.value,\n message: `Expected a file ending in ${options.extensions.map(normalizeExtension).join(', ')}, received ${fileName}`,\n });\n };\n};\n\nexport const sizeCheck = <TFile>(\n readSize: (file: TFile) => number,\n options: SizeCheckOptions,\n): FileCheck<TFile> => {\n return (payload) => {\n const size = readSize(payload.value);\n if (size <= options.maxSize) {\n return;\n }\n payload.issues.push({\n code: 'custom',\n input: payload.value,\n message: `Expected at most ${options.maxSize} bytes, received ${size}`,\n });\n };\n};\n","import type { z } from 'zod';\n\nimport { singleton } from '../schema/singleton.js';\n\n/**\n * Per-instance tag for schemas produced by the platform file factories.\n * WeakSet rather than `z.registry` because this is transient per-instance\n * annotation, not stable id-keyed metadata (CLAUDE.md).\n */\nconst fileSchemas = singleton('file-schemas', () => new WeakSet<z.ZodType>());\n\n// Wrapper defs expose their inner schema as Zod's internal `$ZodType`, which\n// `in` narrowing widens to `unknown`. One guard converts back to the public\n// type and rejects a non-wrapper in the same step.\nconst isZodType = (value: unknown): value is z.ZodType =>\n value !== null && typeof value === 'object' && '_zod' in value;\n\nconst innerOf = (def: object): unknown => {\n if ('innerType' in def) {\n return def.innerType;\n }\n if ('element' in def) {\n return def.element;\n }\n return undefined;\n};\n\nconst unwrapOnce = (schema: z.ZodType): z.ZodType | undefined => {\n const inner = innerOf(schema._zod.def);\n return isZodType(inner) ? inner : undefined;\n};\n\nexport const markFileSchema = <T extends z.ZodType>(schema: T): T => {\n fileSchemas.add(schema);\n return schema;\n};\n\n/**\n * True for a factory-produced file schema and for `.optional()` / `.array()`\n * wrappers around one — an optional or repeated file field is still a file\n * field for the request-vs-body split.\n */\nexport const isFileSchema = (schema: z.ZodType): boolean => {\n if (fileSchemas.has(schema)) {\n return true;\n }\n const inner = unwrapOnce(schema);\n if (inner === undefined) {\n return false;\n }\n return isFileSchema(inner);\n};\n","import { z } from 'zod';\n\nimport type { SchemaObject } from '../schema/openapi.types.js';\nimport type { FileAccessors, FileCheck } from './file-checks.js';\n\nimport { binary } from '../helpers/fragments.js';\nimport { overrideJSONSchema } from '../schema/custom-override.js';\nimport { extensionCheck, mimeTypeCheck, sizeCheck } from './file-checks.js';\nimport { markFileSchema } from './file-marker.js';\n\nexport interface BaseFileOptions {\n /**\n * Registry id for the schema. Set it to get a reusable\n * `components.schemas` entry that every field `$ref`s, instead of the\n * fragment being inlined at each use site. There is no `title` counterpart\n * — `overrideJSONSchema` replaces the emitted body and does not carry\n * `title` into it, so one would have no effect.\n */\n readonly id?: string;\n /** Allowed MIME types, matched case-insensitively against the client-supplied value. */\n readonly mimeTypes?: readonly string[];\n /** Allowed filename extensions, with or without a leading dot. */\n readonly extensions?: readonly string[];\n /** OpenAPI `description` for the emitted binary property. */\n readonly description?: string;\n /** Overrides the `contentMediaType` derived from a single-entry `mimeTypes`. */\n readonly contentMediaType?: string;\n}\n\nexport interface BuildFileSchemaParams<TFile> {\n readonly predicate: (value: unknown) => boolean;\n readonly accessors: FileAccessors<TFile>;\n readonly options: BaseFileOptions | undefined;\n /** Byte-size ceiling. Only platforms that report a size pass this. */\n readonly maxSize?: number;\n}\n\nconst resolveFragment = (options: BaseFileOptions | undefined): SchemaObject => {\n const contentMediaType = options?.contentMediaType ?? singleMimeType(options?.mimeTypes);\n return binary({\n ...(options?.description !== undefined ? { description: options.description } : {}),\n ...(contentMediaType !== undefined ? { contentMediaType } : {}),\n });\n};\n\nconst singleMimeType = (mimeTypes: readonly string[] | undefined): string | undefined => {\n if (mimeTypes === undefined || mimeTypes.length !== 1) {\n return undefined;\n }\n return mimeTypes[0];\n};\n\nconst collectChecks = <TFile>(params: BuildFileSchemaParams<TFile>): Array<FileCheck<TFile>> => {\n const { accessors, options, maxSize } = params;\n const checks: Array<FileCheck<TFile>> = [];\n if (options?.mimeTypes !== undefined) {\n checks.push(mimeTypeCheck(accessors, { mimeTypes: options.mimeTypes }));\n }\n if (options?.extensions !== undefined) {\n checks.push(extensionCheck(accessors, { extensions: options.extensions }));\n }\n if (maxSize !== undefined && accessors.size !== undefined) {\n checks.push(sizeCheck(accessors.size, { maxSize }));\n }\n return checks;\n};\n\nconst withId = <TFile>(\n schema: z.ZodType<TFile, TFile>,\n options: BaseFileOptions | undefined,\n fragment: SchemaObject,\n): z.ZodType<TFile, TFile> => {\n if (options?.id === undefined) {\n return schema;\n }\n return overrideJSONSchema(schema.meta({ id: options.id }), fragment);\n};\n\n/**\n * Assemble a platform file schema: duck-typing predicate, the option checks,\n * then `.meta({ id })` — re-registering the binary fragment after every step.\n *\n * Each registration is load-bearing. `overrideJSONSchema` keys its fragment on\n * the schema *instance*, and both `.check()` and `.meta()` clone. Emission\n * visits every instance in the chain, so a step left unregistered emits `{}`\n * — as a bare `{}` property in strict mode, or as an empty `components.schemas`\n * entry when the schema is named.\n */\nexport const buildFileSchema = <TFile>(\n params: BuildFileSchemaParams<TFile>,\n): z.ZodType<TFile, TFile> => {\n const fragment = resolveFragment(params.options);\n const base = overrideJSONSchema(z.custom<TFile>(params.predicate), fragment);\n const checks = collectChecks(params);\n const checked = checks.length === 0 ? base : overrideJSONSchema(base.check(...checks), fragment);\n return markFileSchema(withId(checked, params.options, fragment));\n};\n","import type { z } from 'zod';\n\n/**\n * Where the multipart parser puts uploaded files. Multer leaves them on the\n * request (`req.file` / `req.files`) with only text fields in `req.body`;\n * `@fastify/multipart` with `attachFieldsToBody: true` puts everything in\n * `req.body`.\n */\nexport const MultipartFilesIn = {\n Request: 'request',\n Body: 'body',\n} as const;\n\nexport type MultipartFilesIn = (typeof MultipartFilesIn)[keyof typeof MultipartFilesIn];\n\n/** Shape accepted by `@ZodMultipart` — one Zod schema per form field. */\nexport type MultipartShape = Readonly<Record<string, z.ZodType>>;\n\nexport interface MultipartMetadata {\n /**\n * Flat shape the param decorators validate against. `undefined` when the\n * body is a composite (`z.intersection` / `z.union`) with no single flat\n * shape to split — the document still emits, but `@ZodUploadedFile` and\n * friends have nothing to resolve and say so.\n */\n readonly shape: MultipartShape | undefined;\n readonly fileKeys: readonly string[];\n readonly textKeys: readonly string[];\n readonly filesIn: MultipartFilesIn;\n}\n\n/**\n * Metadata key for the shape declared by `@ZodMultipart`. `Symbol.for` so\n * consumers in other realms read the same registry (CLAUDE.md).\n */\nexport const ZOD_MULTIPART_METADATA_KEY = Symbol.for('zod-nest.multipart');\n","import { ApiBody, ApiConsumes } from '@nestjs/swagger';\nimport { z } from 'zod';\n\nimport type { ZodNestRegistry } from '../schema/registry.js';\nimport type { MultipartFilesIn, MultipartMetadata, MultipartShape } from './metadata.js';\n\nimport { flattenObjectIntersection } from '../decorators/internal/flatten-intersection.js';\nimport { isZodObject } from '../decorators/internal/zod-param-expand.js';\nimport { resolveSchemaRef } from '../decorators/internal/zod-schema-ref.js';\nimport { isZodSchema } from '../dto/predicates.js';\nimport { defaultRegistry } from '../schema/registry.js';\nimport { isFileSchema } from './file-marker.js';\nimport { ZOD_MULTIPART_METADATA_KEY } from './metadata.js';\n\nexport const MULTIPART_CONTENT_TYPE = 'multipart/form-data';\n\n/**\n * Body declaration accepted by `@ZodMultipart`: a flat shape record, or any\n * Zod schema. A record is the common case; a schema covers named bodies\n * (`.meta({ id })` → `$ref`) and composites an object literal can't express.\n */\nexport type MultipartBody = MultipartShape | z.ZodType;\n\nexport interface ZodMultipartOptions {\n /**\n * Where the parser puts uploaded files. Defaults to the platform entry\n * point's convention — `'request'` from `zod-nest/express`, `'body'` from\n * `zod-nest/fastify`.\n */\n readonly filesIn?: MultipartFilesIn;\n /**\n * Forces this id, overriding any `.meta({ id })` on the schema. A named body\n * is emitted as a `$ref` to `components.schemas`, which keeps a stable name\n * for client generators — at the cost of Swagger UI's `try-it-out` form,\n * which doesn't follow `$ref` for `multipart/form-data`.\n */\n readonly id?: string;\n /**\n * Merge an intersection / union of `z.object` arms into one flat inline\n * object. Needed for composite bodies whose `try-it-out` form must render.\n * All merged properties become optional. See `@ZodBody`'s `flatten`.\n */\n readonly flatten?: boolean;\n /** Registry to register named descendants into. Defaults to `defaultRegistry`. */\n readonly registry?: ZodNestRegistry;\n /** OpenAPI `description` for the request body. */\n readonly description?: string;\n /** Whether the body is required. Defaults to `true`. */\n readonly required?: boolean;\n}\n\nconst toSchema = (body: MultipartBody): z.ZodType =>\n isZodSchema(body) ? body : z.object({ ...body });\n\n/**\n * The flat shape the param decorators split on. A record is already flat and a\n * `z.object` exposes one; a composite has none, and the decorators report that\n * rather than guessing.\n */\nconst toShape = (body: MultipartBody): MultipartShape | undefined => {\n if (!isZodSchema(body)) {\n return body;\n }\n return isZodObject(body) ? body.shape : undefined;\n};\n\nconst partitionKeys = (\n shape: MultipartShape | undefined,\n): { fileKeys: string[]; textKeys: string[] } => {\n const fileKeys: string[] = [];\n const textKeys: string[] = [];\n for (const [key, schema] of Object.entries(shape ?? {})) {\n if (isFileSchema(schema)) {\n fileKeys.push(key);\n continue;\n }\n textKeys.push(key);\n }\n return { fileKeys, textKeys };\n};\n\n/**\n * Resolves the operation's body. Anonymous bodies emit inline because Swagger\n * UI's `multipart/form-data` form generator doesn't follow `$ref` — a\n * referenced body renders one stub field instead of file pickers. Naming the\n * body (`id` or `.meta({ id })`) opts into the `$ref` and that trade-off.\n */\nconst resolveBody = (\n schema: z.ZodType,\n options: ZodMultipartOptions | undefined,\n registry: ZodNestRegistry,\n): Record<string, unknown> | { readonly $ref: string } => {\n if (options?.flatten === true) {\n return flattenObjectIntersection(schema, registry, '@ZodMultipart');\n }\n const resolved = resolveSchemaRef(schema, {\n ...(options?.id !== undefined ? { id: options.id } : {}),\n registry,\n });\n return resolved.kind === 'ref' ? resolved.ref : resolved.schema;\n};\n\nexport const createZodMultipart = (defaultFilesIn: MultipartFilesIn) => {\n /**\n * Declares an endpoint's whole `multipart/form-data` body — file fields and\n * text fields together — as the single source of truth for both the OpenAPI\n * document and the multipart param decorators.\n */\n return (body: MultipartBody, options?: ZodMultipartOptions): MethodDecorator => {\n const registry = options?.registry ?? defaultRegistry;\n const shape = toShape(body);\n const metadata: MultipartMetadata = {\n shape,\n ...partitionKeys(shape),\n filesIn: options?.filesIn ?? defaultFilesIn,\n };\n const schema = resolveBody(toSchema(body), options, registry);\n\n return (target, propertyKey, descriptor) => {\n const handler = descriptor.value;\n if (typeof handler !== 'function') {\n throw new TypeError('[zod-nest] @ZodMultipart can only be applied to methods.');\n }\n Reflect.defineMetadata(ZOD_MULTIPART_METADATA_KEY, metadata, handler);\n\n // `TypedPropertyDescriptor<unknown>` matches what the swagger decorators\n // expect; `MethodDecorator`'s parameter is `TypedPropertyDescriptor<T>`\n // for the inferred return type, structurally compatible at runtime.\n const swaggerDescriptor = descriptor as TypedPropertyDescriptor<unknown>;\n ApiConsumes(MULTIPART_CONTENT_TYPE)(target, propertyKey, swaggerDescriptor);\n ApiBody({\n schema,\n ...(options?.description !== undefined ? { description: options.description } : {}),\n required: options?.required ?? true,\n })(target, propertyKey, swaggerDescriptor);\n };\n };\n};\n","import { createParamDecorator } from '@nestjs/common';\nimport { z } from 'zod';\n\nimport type { ExecutionContext } from '@nestjs/common';\nimport type { MultipartMetadata, MultipartShape } from './metadata.js';\n\nimport { ZodValidationException } from '../exceptions/validation.exception.js';\nimport { MultipartFilesIn, ZOD_MULTIPART_METADATA_KEY } from './metadata.js';\n\ntype ArgType = 'body' | 'custom';\n\nconst readMetadata = (ctx: ExecutionContext, decorator: string): MultipartMetadata => {\n const metadata: unknown = Reflect.getMetadata(ZOD_MULTIPART_METADATA_KEY, ctx.getHandler());\n if (!isMultipartMetadata(metadata)) {\n throw new Error(\n `[zod-nest] ${decorator} requires @ZodMultipart on the same handler — it reads the declared shape from there.`,\n );\n }\n return metadata;\n};\n\nconst isMultipartMetadata = (value: unknown): value is MultipartMetadata =>\n value !== null && typeof value === 'object' && 'shape' in value && 'filesIn' in value;\n\n/**\n * The declared shape, or a pointed error when the body is a composite. An\n * intersection / union has no single flat shape to split, so there is nothing\n * for these decorators to resolve a field against.\n */\nconst requireShape = (metadata: MultipartMetadata, decorator: string): MultipartShape => {\n if (metadata.shape !== undefined) {\n return metadata.shape;\n }\n throw new Error(\n `[zod-nest] ${decorator} needs a flat body shape, but @ZodMultipart was given a composite schema (an intersection or union). Validate it with @Body(new ZodValidationPipe(schema)) instead.`,\n );\n};\n\nconst schemaFor = (metadata: MultipartMetadata, name: string, decorator: string): z.ZodType => {\n const shape = requireShape(metadata, decorator);\n const schema = shape[name];\n if (schema === undefined) {\n throw new Error(\n `[zod-nest] ${decorator}('${name}') has no matching property in the @ZodMultipart shape. Declared: ${Object.keys(shape).join(', ')}.`,\n );\n }\n return schema;\n};\n\nconst pick = (shape: MultipartShape, keys: readonly string[]): z.ZodType => {\n const wanted = new Set(keys);\n const picked: Record<string, z.ZodType> = {};\n for (const [key, schema] of Object.entries(shape)) {\n if (wanted.has(key)) {\n picked[key] = schema;\n }\n }\n return z.object(picked);\n};\n\nconst validate = async (schema: z.ZodType, value: unknown, argType: ArgType): Promise<unknown> => {\n const result = await schema.safeParseAsync(value);\n if (result.success) {\n return result.data;\n }\n throw new ZodValidationException(result.error, {\n type: argType,\n metatype: undefined,\n data: undefined,\n });\n};\n\nconst assertFilesOnRequest = (metadata: MultipartMetadata, decorator: string): void => {\n if (metadata.filesIn === MultipartFilesIn.Request) {\n return;\n }\n throw new Error(\n `[zod-nest] ${decorator} is unavailable under filesIn: 'body' — the parser puts files in the request body, so read them with @ZodMultipartBody().`,\n );\n};\n\nexport const resolveUploadedFile = async (\n name: string,\n ctx: ExecutionContext,\n): Promise<unknown> => {\n const metadata = readMetadata(ctx, '@ZodUploadedFile');\n assertFilesOnRequest(metadata, '@ZodUploadedFile');\n const request: { file?: unknown } = ctx.switchToHttp().getRequest();\n return validate(schemaFor(metadata, name, '@ZodUploadedFile'), request.file, 'custom');\n};\n\nexport const resolveUploadedFiles = async (\n name: string | undefined,\n ctx: ExecutionContext,\n): Promise<unknown> => {\n const metadata = readMetadata(ctx, '@ZodUploadedFiles');\n assertFilesOnRequest(metadata, '@ZodUploadedFiles');\n const request: { files?: unknown } = ctx.switchToHttp().getRequest();\n const schema =\n name === undefined\n ? pick(requireShape(metadata, '@ZodUploadedFiles'), metadata.fileKeys)\n : schemaFor(metadata, name, '@ZodUploadedFiles');\n return validate(schema, request.files, 'custom');\n};\n\nexport const resolveMultipartBody = async (\n _data: unknown,\n ctx: ExecutionContext,\n): Promise<unknown> => {\n const metadata = readMetadata(ctx, '@ZodMultipartBody');\n const shape = requireShape(metadata, '@ZodMultipartBody');\n const request: { body?: unknown } = ctx.switchToHttp().getRequest();\n const keys = metadata.filesIn === MultipartFilesIn.Body ? Object.keys(shape) : metadata.textKeys;\n return validate(pick(shape, keys), request.body, 'body');\n};\n\n/**\n * Validates `req.file` against the named property of the `@ZodMultipart`\n * shape. The name selects a schema; it never searches the request. Match it\n * to your `FileInterceptor('<name>')` field name, as with plain Nest.\n */\nexport const ZodUploadedFile = createParamDecorator(resolveUploadedFile);\n\n/**\n * Validates `req.files` against the named property of the `@ZodMultipart`\n * shape, or against an object of every declared file property when called\n * with no name — the record shape `FileFieldsInterceptor` produces.\n */\nexport const ZodUploadedFiles = createParamDecorator(resolveUploadedFiles);\n\n/**\n * Validates `req.body` against the `@ZodMultipart` shape — the text fields\n * only under `filesIn: 'request'` (multer keeps files off the body), the\n * whole shape under `filesIn: 'body'`.\n */\nexport const ZodMultipartBody = createParamDecorator(resolveMultipartBody);\n"]}
@@ -1,7 +1,7 @@
1
- import { B as BaseFileOptions, a as MultipartBody, c as ZodMultipartOptions } from '../param-decorators-Dfd2Cy08.mjs';
2
- export { M as MULTIPART_CONTENT_TYPE, b as MultipartShape, Z as ZodMultipartBody, d as ZodUploadedFile, e as ZodUploadedFiles } from '../param-decorators-Dfd2Cy08.mjs';
1
+ import { B as BaseFileOptions, a as MultipartBody, c as ZodMultipartOptions } from '../param-decorators-1UCi-qHq.mjs';
2
+ export { M as MULTIPART_CONTENT_TYPE, b as MultipartShape, Z as ZodMultipartBody, d as ZodUploadedFile, e as ZodUploadedFiles } from '../param-decorators-1UCi-qHq.mjs';
3
3
  import { z } from 'zod';
4
- import '../registry-Cs1Y0a-L.mjs';
4
+ import '../registry-D99yMzJg.mjs';
5
5
  import '@nestjs/common';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
- import { B as BaseFileOptions, a as MultipartBody, c as ZodMultipartOptions } from '../param-decorators-23pStLeF.js';
2
- export { M as MULTIPART_CONTENT_TYPE, b as MultipartShape, Z as ZodMultipartBody, d as ZodUploadedFile, e as ZodUploadedFiles } from '../param-decorators-23pStLeF.js';
1
+ import { B as BaseFileOptions, a as MultipartBody, c as ZodMultipartOptions } from '../param-decorators-CcuRJZXu.js';
2
+ export { M as MULTIPART_CONTENT_TYPE, b as MultipartShape, Z as ZodMultipartBody, d as ZodUploadedFile, e as ZodUploadedFiles } from '../param-decorators-CcuRJZXu.js';
3
3
  import { z } from 'zod';
4
- import '../registry-Cs1Y0a-L.js';
4
+ import '../registry-D99yMzJg.js';
5
5
  import '@nestjs/common';
6
6
 
7
7
  /**
@@ -1,25 +1,25 @@
1
1
  'use strict';
2
2
 
3
- var chunk26E2XEJU_js = require('../chunk-26E2XEJU.js');
4
- require('../chunk-FKXVNCDD.js');
5
- require('../chunk-LXRBMFWD.js');
6
- var chunk4RXGLSPP_js = require('../chunk-4RXGLSPP.js');
3
+ var chunkN3VWL7G7_js = require('../chunk-N3VWL7G7.js');
4
+ require('../chunk-KNXYA5ER.js');
5
+ require('../chunk-4LOFWANL.js');
6
+ var chunkEV5I5HGT_js = require('../chunk-EV5I5HGT.js');
7
7
 
8
8
  // src/express/index.ts
9
- var hasCommonFields = /* @__PURE__ */ chunk4RXGLSPP_js.__name((value) => value !== null && typeof value === "object" && "mimetype" in value && "originalname" in value && "size" in value, "hasCommonFields");
10
- var isMulterMemoryFile = /* @__PURE__ */ chunk4RXGLSPP_js.__name((value) => hasCommonFields(value) && Buffer.isBuffer(value.buffer), "isMulterMemoryFile");
11
- var isMulterDiskFile = /* @__PURE__ */ chunk4RXGLSPP_js.__name((value) => hasCommonFields(value) && typeof value.path === "string", "isMulterDiskFile");
9
+ var hasCommonFields = /* @__PURE__ */ chunkEV5I5HGT_js.__name((value) => value !== null && typeof value === "object" && "mimetype" in value && "originalname" in value && "size" in value, "hasCommonFields");
10
+ var isMulterMemoryFile = /* @__PURE__ */ chunkEV5I5HGT_js.__name((value) => hasCommonFields(value) && Buffer.isBuffer(value.buffer), "isMulterMemoryFile");
11
+ var isMulterDiskFile = /* @__PURE__ */ chunkEV5I5HGT_js.__name((value) => hasCommonFields(value) && typeof value.path === "string", "isMulterDiskFile");
12
12
  var memoryAccessors = {
13
- mimeType: /* @__PURE__ */ chunk4RXGLSPP_js.__name((file) => file.mimetype, "mimeType"),
14
- fileName: /* @__PURE__ */ chunk4RXGLSPP_js.__name((file) => file.originalname, "fileName"),
15
- size: /* @__PURE__ */ chunk4RXGLSPP_js.__name((file) => file.size, "size")
13
+ mimeType: /* @__PURE__ */ chunkEV5I5HGT_js.__name((file) => file.mimetype, "mimeType"),
14
+ fileName: /* @__PURE__ */ chunkEV5I5HGT_js.__name((file) => file.originalname, "fileName"),
15
+ size: /* @__PURE__ */ chunkEV5I5HGT_js.__name((file) => file.size, "size")
16
16
  };
17
17
  var diskAccessors = {
18
- mimeType: /* @__PURE__ */ chunk4RXGLSPP_js.__name((file) => file.mimetype, "mimeType"),
19
- fileName: /* @__PURE__ */ chunk4RXGLSPP_js.__name((file) => file.originalname, "fileName"),
20
- size: /* @__PURE__ */ chunk4RXGLSPP_js.__name((file) => file.size, "size")
18
+ mimeType: /* @__PURE__ */ chunkEV5I5HGT_js.__name((file) => file.mimetype, "mimeType"),
19
+ fileName: /* @__PURE__ */ chunkEV5I5HGT_js.__name((file) => file.originalname, "fileName"),
20
+ size: /* @__PURE__ */ chunkEV5I5HGT_js.__name((file) => file.size, "size")
21
21
  };
22
- var multerMemoryFile = /* @__PURE__ */ chunk4RXGLSPP_js.__name((options) => chunk26E2XEJU_js.buildFileSchema({
22
+ var multerMemoryFile = /* @__PURE__ */ chunkEV5I5HGT_js.__name((options) => chunkN3VWL7G7_js.buildFileSchema({
23
23
  predicate: isMulterMemoryFile,
24
24
  accessors: memoryAccessors,
25
25
  options,
@@ -27,7 +27,7 @@ var multerMemoryFile = /* @__PURE__ */ chunk4RXGLSPP_js.__name((options) => chun
27
27
  maxSize: options.maxSize
28
28
  } : {}
29
29
  }), "multerMemoryFile");
30
- var multerDiskFile = /* @__PURE__ */ chunk4RXGLSPP_js.__name((options) => chunk26E2XEJU_js.buildFileSchema({
30
+ var multerDiskFile = /* @__PURE__ */ chunkEV5I5HGT_js.__name((options) => chunkN3VWL7G7_js.buildFileSchema({
31
31
  predicate: isMulterDiskFile,
32
32
  accessors: diskAccessors,
33
33
  options,
@@ -37,23 +37,23 @@ var multerDiskFile = /* @__PURE__ */ chunk4RXGLSPP_js.__name((options) => chunk2
37
37
  }), "multerDiskFile");
38
38
  var MulterMemoryFileSchema = multerMemoryFile();
39
39
  var MulterDiskFileSchema = multerDiskFile();
40
- var ZodMultipart = chunk26E2XEJU_js.createZodMultipart(chunk26E2XEJU_js.MultipartFilesIn.Request);
40
+ var ZodMultipart = chunkN3VWL7G7_js.createZodMultipart(chunkN3VWL7G7_js.MultipartFilesIn.Request);
41
41
 
42
42
  Object.defineProperty(exports, "MULTIPART_CONTENT_TYPE", {
43
43
  enumerable: true,
44
- get: function () { return chunk26E2XEJU_js.MULTIPART_CONTENT_TYPE; }
44
+ get: function () { return chunkN3VWL7G7_js.MULTIPART_CONTENT_TYPE; }
45
45
  });
46
46
  Object.defineProperty(exports, "ZodMultipartBody", {
47
47
  enumerable: true,
48
- get: function () { return chunk26E2XEJU_js.ZodMultipartBody; }
48
+ get: function () { return chunkN3VWL7G7_js.ZodMultipartBody; }
49
49
  });
50
50
  Object.defineProperty(exports, "ZodUploadedFile", {
51
51
  enumerable: true,
52
- get: function () { return chunk26E2XEJU_js.ZodUploadedFile; }
52
+ get: function () { return chunkN3VWL7G7_js.ZodUploadedFile; }
53
53
  });
54
54
  Object.defineProperty(exports, "ZodUploadedFiles", {
55
55
  enumerable: true,
56
- get: function () { return chunk26E2XEJU_js.ZodUploadedFiles; }
56
+ get: function () { return chunkN3VWL7G7_js.ZodUploadedFiles; }
57
57
  });
58
58
  exports.MulterDiskFileSchema = MulterDiskFileSchema;
59
59
  exports.MulterMemoryFileSchema = MulterMemoryFileSchema;
@@ -1,8 +1,8 @@
1
- import { createZodMultipart, MultipartFilesIn, buildFileSchema } from '../chunk-RAF7JGS6.mjs';
2
- export { MULTIPART_CONTENT_TYPE, ZodMultipartBody, ZodUploadedFile, ZodUploadedFiles } from '../chunk-RAF7JGS6.mjs';
3
- import '../chunk-LHNXO52A.mjs';
4
- import '../chunk-WI4JKXT6.mjs';
5
- import { __name } from '../chunk-ZZW54ETO.mjs';
1
+ import { createZodMultipart, MultipartFilesIn, buildFileSchema } from '../chunk-VSI3SF7S.mjs';
2
+ export { MULTIPART_CONTENT_TYPE, ZodMultipartBody, ZodUploadedFile, ZodUploadedFiles } from '../chunk-VSI3SF7S.mjs';
3
+ import '../chunk-2NVNXIOY.mjs';
4
+ import '../chunk-IMEFMJTS.mjs';
5
+ import { __name } from '../chunk-MPNAA53V.mjs';
6
6
 
7
7
  // src/express/index.ts
8
8
  var hasCommonFields = /* @__PURE__ */ __name((value) => value !== null && typeof value === "object" && "mimetype" in value && "originalname" in value && "size" in value, "hasCommonFields");
@@ -1,7 +1,7 @@
1
- import { B as BaseFileOptions, a as MultipartBody, c as ZodMultipartOptions } from '../param-decorators-Dfd2Cy08.mjs';
2
- export { M as MULTIPART_CONTENT_TYPE, b as MultipartShape, Z as ZodMultipartBody } from '../param-decorators-Dfd2Cy08.mjs';
1
+ import { B as BaseFileOptions, a as MultipartBody, c as ZodMultipartOptions } from '../param-decorators-1UCi-qHq.mjs';
2
+ export { M as MULTIPART_CONTENT_TYPE, b as MultipartShape, Z as ZodMultipartBody } from '../param-decorators-1UCi-qHq.mjs';
3
3
  import { z } from 'zod';
4
- import '../registry-Cs1Y0a-L.mjs';
4
+ import '../registry-D99yMzJg.mjs';
5
5
  import '@nestjs/common';
6
6
 
7
7
  /**
@@ -1,7 +1,7 @@
1
- import { B as BaseFileOptions, a as MultipartBody, c as ZodMultipartOptions } from '../param-decorators-23pStLeF.js';
2
- export { M as MULTIPART_CONTENT_TYPE, b as MultipartShape, Z as ZodMultipartBody } from '../param-decorators-23pStLeF.js';
1
+ import { B as BaseFileOptions, a as MultipartBody, c as ZodMultipartOptions } from '../param-decorators-CcuRJZXu.js';
2
+ export { M as MULTIPART_CONTENT_TYPE, b as MultipartShape, Z as ZodMultipartBody } from '../param-decorators-CcuRJZXu.js';
3
3
  import { z } from 'zod';
4
- import '../registry-Cs1Y0a-L.js';
4
+ import '../registry-D99yMzJg.js';
5
5
  import '@nestjs/common';
6
6
 
7
7
  /**
@@ -1,31 +1,31 @@
1
1
  'use strict';
2
2
 
3
- var chunk26E2XEJU_js = require('../chunk-26E2XEJU.js');
4
- require('../chunk-FKXVNCDD.js');
5
- require('../chunk-LXRBMFWD.js');
6
- var chunk4RXGLSPP_js = require('../chunk-4RXGLSPP.js');
3
+ var chunkN3VWL7G7_js = require('../chunk-N3VWL7G7.js');
4
+ require('../chunk-KNXYA5ER.js');
5
+ require('../chunk-4LOFWANL.js');
6
+ var chunkEV5I5HGT_js = require('../chunk-EV5I5HGT.js');
7
7
 
8
8
  // src/fastify/index.ts
9
- var isFastifyMultipartFile = /* @__PURE__ */ chunk4RXGLSPP_js.__name((value) => value !== null && typeof value === "object" && "type" in value && value.type === "file" && "mimetype" in value && "filename" in value && "toBuffer" in value && typeof value.toBuffer === "function", "isFastifyMultipartFile");
9
+ var isFastifyMultipartFile = /* @__PURE__ */ chunkEV5I5HGT_js.__name((value) => value !== null && typeof value === "object" && "type" in value && value.type === "file" && "mimetype" in value && "filename" in value && "toBuffer" in value && typeof value.toBuffer === "function", "isFastifyMultipartFile");
10
10
  var accessors = {
11
- mimeType: /* @__PURE__ */ chunk4RXGLSPP_js.__name((file) => file.mimetype, "mimeType"),
12
- fileName: /* @__PURE__ */ chunk4RXGLSPP_js.__name((file) => file.filename, "fileName")
11
+ mimeType: /* @__PURE__ */ chunkEV5I5HGT_js.__name((file) => file.mimetype, "mimeType"),
12
+ fileName: /* @__PURE__ */ chunkEV5I5HGT_js.__name((file) => file.filename, "fileName")
13
13
  };
14
- var fastifyMultipartFile = /* @__PURE__ */ chunk4RXGLSPP_js.__name((options) => chunk26E2XEJU_js.buildFileSchema({
14
+ var fastifyMultipartFile = /* @__PURE__ */ chunkEV5I5HGT_js.__name((options) => chunkN3VWL7G7_js.buildFileSchema({
15
15
  predicate: isFastifyMultipartFile,
16
16
  accessors,
17
17
  options
18
18
  }), "fastifyMultipartFile");
19
19
  var FastifyMultipartFileSchema = fastifyMultipartFile();
20
- var ZodMultipart = chunk26E2XEJU_js.createZodMultipart(chunk26E2XEJU_js.MultipartFilesIn.Body);
20
+ var ZodMultipart = chunkN3VWL7G7_js.createZodMultipart(chunkN3VWL7G7_js.MultipartFilesIn.Body);
21
21
 
22
22
  Object.defineProperty(exports, "MULTIPART_CONTENT_TYPE", {
23
23
  enumerable: true,
24
- get: function () { return chunk26E2XEJU_js.MULTIPART_CONTENT_TYPE; }
24
+ get: function () { return chunkN3VWL7G7_js.MULTIPART_CONTENT_TYPE; }
25
25
  });
26
26
  Object.defineProperty(exports, "ZodMultipartBody", {
27
27
  enumerable: true,
28
- get: function () { return chunk26E2XEJU_js.ZodMultipartBody; }
28
+ get: function () { return chunkN3VWL7G7_js.ZodMultipartBody; }
29
29
  });
30
30
  exports.FastifyMultipartFileSchema = FastifyMultipartFileSchema;
31
31
  exports.ZodMultipart = ZodMultipart;
@@ -1,8 +1,8 @@
1
- import { createZodMultipart, MultipartFilesIn, buildFileSchema } from '../chunk-RAF7JGS6.mjs';
2
- export { MULTIPART_CONTENT_TYPE, ZodMultipartBody } from '../chunk-RAF7JGS6.mjs';
3
- import '../chunk-LHNXO52A.mjs';
4
- import '../chunk-WI4JKXT6.mjs';
5
- import { __name } from '../chunk-ZZW54ETO.mjs';
1
+ import { createZodMultipart, MultipartFilesIn, buildFileSchema } from '../chunk-VSI3SF7S.mjs';
2
+ export { MULTIPART_CONTENT_TYPE, ZodMultipartBody } from '../chunk-VSI3SF7S.mjs';
3
+ import '../chunk-2NVNXIOY.mjs';
4
+ import '../chunk-IMEFMJTS.mjs';
5
+ import { __name } from '../chunk-MPNAA53V.mjs';
6
6
 
7
7
  // src/fastify/index.ts
8
8
  var isFastifyMultipartFile = /* @__PURE__ */ __name((value) => value !== null && typeof value === "object" && "type" in value && value.type === "file" && "mimetype" in value && "filename" in value && "toBuffer" in value && typeof value.toBuffer === "function", "isFastifyMultipartFile");
@@ -1,88 +1,88 @@
1
1
  'use strict';
2
2
 
3
- var chunkLXRBMFWD_js = require('../chunk-LXRBMFWD.js');
4
- var chunk4RXGLSPP_js = require('../chunk-4RXGLSPP.js');
3
+ var chunk4LOFWANL_js = require('../chunk-4LOFWANL.js');
4
+ var chunkEV5I5HGT_js = require('../chunk-EV5I5HGT.js');
5
5
  var zod = require('zod');
6
6
 
7
- var FileSchema = chunk4RXGLSPP_js.overrideJSONSchema(zod.z.instanceof(File), chunkLXRBMFWD_js.binaryFragment);
8
- var BlobSchema = chunk4RXGLSPP_js.overrideJSONSchema(zod.z.instanceof(Blob), chunkLXRBMFWD_js.binaryFragment);
9
- var BufferSchema = chunk4RXGLSPP_js.overrideJSONSchema(zod.z.instanceof(Buffer), chunkLXRBMFWD_js.binaryFragment);
7
+ var FileSchema = chunkEV5I5HGT_js.overrideJSONSchema(zod.z.instanceof(File), chunk4LOFWANL_js.binaryFragment);
8
+ var BlobSchema = chunkEV5I5HGT_js.overrideJSONSchema(zod.z.instanceof(Blob), chunk4LOFWANL_js.binaryFragment);
9
+ var BufferSchema = chunkEV5I5HGT_js.overrideJSONSchema(zod.z.instanceof(Buffer), chunk4LOFWANL_js.binaryFragment);
10
10
 
11
11
  Object.defineProperty(exports, "binary", {
12
12
  enumerable: true,
13
- get: function () { return chunkLXRBMFWD_js.binary; }
13
+ get: function () { return chunk4LOFWANL_js.binary; }
14
14
  });
15
15
  Object.defineProperty(exports, "binaryFragment", {
16
16
  enumerable: true,
17
- get: function () { return chunkLXRBMFWD_js.binaryFragment; }
17
+ get: function () { return chunk4LOFWANL_js.binaryFragment; }
18
18
  });
19
19
  Object.defineProperty(exports, "byteFragment", {
20
20
  enumerable: true,
21
- get: function () { return chunkLXRBMFWD_js.byteFragment; }
21
+ get: function () { return chunk4LOFWANL_js.byteFragment; }
22
22
  });
23
23
  Object.defineProperty(exports, "dateFragment", {
24
24
  enumerable: true,
25
- get: function () { return chunkLXRBMFWD_js.dateFragment; }
25
+ get: function () { return chunk4LOFWANL_js.dateFragment; }
26
26
  });
27
27
  Object.defineProperty(exports, "dateTimeFragment", {
28
28
  enumerable: true,
29
- get: function () { return chunkLXRBMFWD_js.dateTimeFragment; }
29
+ get: function () { return chunk4LOFWANL_js.dateTimeFragment; }
30
30
  });
31
31
  Object.defineProperty(exports, "doubleFragment", {
32
32
  enumerable: true,
33
- get: function () { return chunkLXRBMFWD_js.doubleFragment; }
33
+ get: function () { return chunk4LOFWANL_js.doubleFragment; }
34
34
  });
35
35
  Object.defineProperty(exports, "emailFragment", {
36
36
  enumerable: true,
37
- get: function () { return chunkLXRBMFWD_js.emailFragment; }
37
+ get: function () { return chunk4LOFWANL_js.emailFragment; }
38
38
  });
39
39
  Object.defineProperty(exports, "enrich", {
40
40
  enumerable: true,
41
- get: function () { return chunkLXRBMFWD_js.enrich; }
41
+ get: function () { return chunk4LOFWANL_js.enrich; }
42
42
  });
43
43
  Object.defineProperty(exports, "floatFragment", {
44
44
  enumerable: true,
45
- get: function () { return chunkLXRBMFWD_js.floatFragment; }
45
+ get: function () { return chunk4LOFWANL_js.floatFragment; }
46
46
  });
47
47
  Object.defineProperty(exports, "hostnameFragment", {
48
48
  enumerable: true,
49
- get: function () { return chunkLXRBMFWD_js.hostnameFragment; }
49
+ get: function () { return chunk4LOFWANL_js.hostnameFragment; }
50
50
  });
51
51
  Object.defineProperty(exports, "int32Fragment", {
52
52
  enumerable: true,
53
- get: function () { return chunkLXRBMFWD_js.int32Fragment; }
53
+ get: function () { return chunk4LOFWANL_js.int32Fragment; }
54
54
  });
55
55
  Object.defineProperty(exports, "int64Fragment", {
56
56
  enumerable: true,
57
- get: function () { return chunkLXRBMFWD_js.int64Fragment; }
57
+ get: function () { return chunk4LOFWANL_js.int64Fragment; }
58
58
  });
59
59
  Object.defineProperty(exports, "ipv4Fragment", {
60
60
  enumerable: true,
61
- get: function () { return chunkLXRBMFWD_js.ipv4Fragment; }
61
+ get: function () { return chunk4LOFWANL_js.ipv4Fragment; }
62
62
  });
63
63
  Object.defineProperty(exports, "ipv6Fragment", {
64
64
  enumerable: true,
65
- get: function () { return chunkLXRBMFWD_js.ipv6Fragment; }
65
+ get: function () { return chunk4LOFWANL_js.ipv6Fragment; }
66
66
  });
67
67
  Object.defineProperty(exports, "opaque", {
68
68
  enumerable: true,
69
- get: function () { return chunkLXRBMFWD_js.opaque; }
69
+ get: function () { return chunk4LOFWANL_js.opaque; }
70
70
  });
71
71
  Object.defineProperty(exports, "opaqueFragment", {
72
72
  enumerable: true,
73
- get: function () { return chunkLXRBMFWD_js.opaqueFragment; }
73
+ get: function () { return chunk4LOFWANL_js.opaqueFragment; }
74
74
  });
75
75
  Object.defineProperty(exports, "timeFragment", {
76
76
  enumerable: true,
77
- get: function () { return chunkLXRBMFWD_js.timeFragment; }
77
+ get: function () { return chunk4LOFWANL_js.timeFragment; }
78
78
  });
79
79
  Object.defineProperty(exports, "uriFragment", {
80
80
  enumerable: true,
81
- get: function () { return chunkLXRBMFWD_js.uriFragment; }
81
+ get: function () { return chunk4LOFWANL_js.uriFragment; }
82
82
  });
83
83
  Object.defineProperty(exports, "uuidFragment", {
84
84
  enumerable: true,
85
- get: function () { return chunkLXRBMFWD_js.uuidFragment; }
85
+ get: function () { return chunk4LOFWANL_js.uuidFragment; }
86
86
  });
87
87
  exports.BlobSchema = BlobSchema;
88
88
  exports.BufferSchema = BufferSchema;
@@ -1,6 +1,6 @@
1
- import { binaryFragment } from '../chunk-WI4JKXT6.mjs';
2
- export { binary, binaryFragment, byteFragment, dateFragment, dateTimeFragment, doubleFragment, emailFragment, enrich, floatFragment, hostnameFragment, int32Fragment, int64Fragment, ipv4Fragment, ipv6Fragment, opaque, opaqueFragment, timeFragment, uriFragment, uuidFragment } from '../chunk-WI4JKXT6.mjs';
3
- import { overrideJSONSchema } from '../chunk-ZZW54ETO.mjs';
1
+ import { binaryFragment } from '../chunk-IMEFMJTS.mjs';
2
+ export { binary, binaryFragment, byteFragment, dateFragment, dateTimeFragment, doubleFragment, emailFragment, enrich, floatFragment, hostnameFragment, int32Fragment, int64Fragment, ipv4Fragment, ipv6Fragment, opaque, opaqueFragment, timeFragment, uriFragment, uuidFragment } from '../chunk-IMEFMJTS.mjs';
3
+ import { overrideJSONSchema } from '../chunk-MPNAA53V.mjs';
4
4
  import { z } from 'zod';
5
5
 
6
6
  var FileSchema = overrideJSONSchema(z.instanceof(File), binaryFragment);
package/dist/index.d.mts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  import { S as SchemaObject } from './openapi.types-CFBG3Zz9.mjs';
3
3
  import { $ZodTypes } from 'zod/v4/core';
4
- import { Z as ZodNestRegistry } from './registry-Cs1Y0a-L.mjs';
5
- export { R as RegisterFlags, a as RegisterSchemaOptions, c as createRegistry, d as defaultRegistry, r as registerSchema } from './registry-Cs1Y0a-L.mjs';
4
+ import { Z as ZodNestRegistry } from './registry-D99yMzJg.mjs';
5
+ export { R as RegisterFlags, a as RegisterSchemaOptions, c as createRegistry, d as defaultRegistry, r as registerSchema } from './registry-D99yMzJg.mjs';
6
6
  import { InternalServerErrorException, ExecutionContext, BadRequestException, ArgumentMetadata, LoggerService, PipeTransform, NestInterceptor, CallHandler, DynamicModule } from '@nestjs/common';
7
7
  import { Reflector } from '@nestjs/core';
8
8
  import { Observable } from 'rxjs';
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { z } from 'zod';
2
2
  import { S as SchemaObject } from './openapi.types-CFBG3Zz9.js';
3
3
  import { $ZodTypes } from 'zod/v4/core';
4
- import { Z as ZodNestRegistry } from './registry-Cs1Y0a-L.js';
5
- export { R as RegisterFlags, a as RegisterSchemaOptions, c as createRegistry, d as defaultRegistry, r as registerSchema } from './registry-Cs1Y0a-L.js';
4
+ import { Z as ZodNestRegistry } from './registry-D99yMzJg.js';
5
+ export { R as RegisterFlags, a as RegisterSchemaOptions, c as createRegistry, d as defaultRegistry, r as registerSchema } from './registry-D99yMzJg.js';
6
6
  import { InternalServerErrorException, ExecutionContext, BadRequestException, ArgumentMetadata, LoggerService, PipeTransform, NestInterceptor, CallHandler, DynamicModule } from '@nestjs/common';
7
7
  import { Reflector } from '@nestjs/core';
8
8
  import { Observable } from 'rxjs';