@desaubv/quik 0.1.3 → 0.1.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.
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/http/index.ts
21
21
  var http_exports = {};
22
22
  __export(http_exports, {
23
+ MimeTypes: () => MimeTypes,
23
24
  Status: () => Status,
24
25
  Types: () => Types,
25
26
  ValidationException: () => ValidationException,
@@ -181,8 +182,104 @@ var Validator = {
181
182
  value = result;
182
183
  }
183
184
  return value;
185
+ },
186
+ file: (file, options = {}) => {
187
+ const {
188
+ canBeEmpty = false,
189
+ maxNumberOfFiles,
190
+ minNumberOfFiles
191
+ } = options;
192
+ if (!file) {
193
+ if (canBeEmpty) {
194
+ return null;
195
+ }
196
+ throw new ValidationException(
197
+ "File is required but not provided."
198
+ );
199
+ }
200
+ if (Array.isArray(file)) {
201
+ if (file.length === 0) {
202
+ if (canBeEmpty) {
203
+ return null;
204
+ }
205
+ throw new ValidationException(
206
+ "At least one file is required."
207
+ );
208
+ }
209
+ if (maxNumberOfFiles !== void 0 && file.length > maxNumberOfFiles) {
210
+ throw new ValidationException(
211
+ `Maximum number of files allowed is ${maxNumberOfFiles}.`
212
+ );
213
+ }
214
+ if (minNumberOfFiles !== void 0 && file.length < minNumberOfFiles) {
215
+ throw new ValidationException(
216
+ `Minimum number of files required is ${minNumberOfFiles}.`
217
+ );
218
+ }
219
+ return file.map((f) => validateFile(f, options));
220
+ }
221
+ return validateFile(file, options);
184
222
  }
185
223
  };
224
+ function validateFile(file, options = {}) {
225
+ const {
226
+ maxSizeMb,
227
+ minSizeMb,
228
+ mimeTypes,
229
+ extensions,
230
+ fileNamePattern
231
+ } = options;
232
+ if (typeof file !== "object" || file === null) {
233
+ throw new ValidationException(
234
+ "Invalid file."
235
+ );
236
+ }
237
+ if (typeof file.size !== "number" || file.size < 0) {
238
+ throw new ValidationException(
239
+ "Invalid file size."
240
+ );
241
+ }
242
+ if (maxSizeMb !== void 0 && file.size > maxSizeMb * 1024 * 1024) {
243
+ throw new ValidationException(
244
+ `File size exceeds the maximum limit of ${maxSizeMb} MB.`
245
+ );
246
+ }
247
+ if (minSizeMb !== void 0 && file.size < minSizeMb * 1024 * 1024) {
248
+ throw new ValidationException(
249
+ `File size is below the minimum limit of ${minSizeMb} MB.`
250
+ );
251
+ }
252
+ if (mimeTypes !== void 0) {
253
+ const allowedMimeTypes = Array.isArray(mimeTypes) ? mimeTypes : [mimeTypes];
254
+ if (typeof file.mimetype !== "string" || !allowedMimeTypes.includes(file.mimetype)) {
255
+ throw new ValidationException(
256
+ `File type is not allowed. Allowed types are: ${allowedMimeTypes.join(", ")}`
257
+ );
258
+ }
259
+ }
260
+ if (extensions !== void 0) {
261
+ const allowedExtensions = (Array.isArray(extensions) ? extensions : [extensions]).map(
262
+ (extension2) => extension2.replace(/^\./, "").toLowerCase()
263
+ );
264
+ if (typeof file.originalname !== "string") {
265
+ throw new ValidationException(
266
+ "Invalid file name."
267
+ );
268
+ }
269
+ const extension = file.originalname.split(".").pop()?.toLowerCase();
270
+ if (!extension || !allowedExtensions.includes(extension)) {
271
+ throw new ValidationException(
272
+ `File extension is not allowed. Allowed extensions are: ${allowedExtensions.join(", ")}`
273
+ );
274
+ }
275
+ }
276
+ if (fileNamePattern !== void 0 && !fileNamePattern.test(file.originalname)) {
277
+ throw new ValidationException(
278
+ "File name does not match the required pattern."
279
+ );
280
+ }
281
+ return file;
282
+ }
186
283
  function validateObject(body, fields, parentPath = "") {
187
284
  if (typeof body !== "object" || body === null || Array.isArray(body)) {
188
285
  throw new InvalidBodyException();
@@ -358,8 +455,175 @@ var Status = {
358
455
  NOT_EXTENDED: 510,
359
456
  NETWORK_AUTHENTICATION_REQUIRED: 511
360
457
  };
458
+
459
+ // src/http/file.ts
460
+ var MimeTypes = {
461
+ // Documents
462
+ "pdf": "application/pdf",
463
+ "doc": "application/msword",
464
+ "docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
465
+ "odt": "application/vnd.oasis.opendocument.text",
466
+ "rtf": "application/rtf",
467
+ "tex": "application/x-tex",
468
+ "txt": "text/plain",
469
+ "md": "text/markdown",
470
+ // Spreadsheets
471
+ "xls": "application/vnd.ms-excel",
472
+ "xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
473
+ "ods": "application/vnd.oasis.opendocument.spreadsheet",
474
+ "csv": "text/csv",
475
+ "tsv": "text/tab-separated-values",
476
+ // Presentations
477
+ "ppt": "application/vnd.ms-powerpoint",
478
+ "pptx": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
479
+ "odp": "application/vnd.oasis.opendocument.presentation",
480
+ // Images
481
+ "jpg": "image/jpeg",
482
+ "jpeg": "image/jpeg",
483
+ "png": "image/png",
484
+ "gif": "image/gif",
485
+ "bmp": "image/bmp",
486
+ "webp": "image/webp",
487
+ "svg": "image/svg+xml",
488
+ "ico": "image/x-icon",
489
+ "tif": "image/tiff",
490
+ "tiff": "image/tiff",
491
+ "avif": "image/avif",
492
+ "heic": "image/heic",
493
+ "heif": "image/heif",
494
+ "apng": "image/apng",
495
+ "jxl": "image/jxl",
496
+ "psd": "image/vnd.adobe.photoshop",
497
+ "ai": "application/postscript",
498
+ "eps": "application/postscript",
499
+ // Video
500
+ "mp4": "video/mp4",
501
+ "avi": "video/x-msvideo",
502
+ "mov": "video/quicktime",
503
+ "wmv": "video/x-ms-wmv",
504
+ "flv": "video/x-flv",
505
+ "mkv": "video/x-matroska",
506
+ "webm": "video/webm",
507
+ "mpeg": "video/mpeg",
508
+ "mpg": "video/mpeg",
509
+ "m4v": "video/x-m4v",
510
+ "3gp": "video/3gpp",
511
+ "3g2": "video/3gpp2",
512
+ "ts": "video/mp2t",
513
+ // Audio
514
+ "mp3": "audio/mpeg",
515
+ "wav": "audio/wav",
516
+ "ogg": "audio/ogg",
517
+ "oga": "audio/ogg",
518
+ "opus": "audio/opus",
519
+ "aac": "audio/aac",
520
+ "m4a": "audio/mp4",
521
+ "flac": "audio/flac",
522
+ "weba": "audio/webm",
523
+ "mid": "audio/midi",
524
+ "midi": "audio/midi",
525
+ // Web
526
+ "html": "text/html",
527
+ "htm": "text/html",
528
+ "css": "text/css",
529
+ "js": "text/javascript",
530
+ "mjs": "text/javascript",
531
+ "cjs": "text/javascript",
532
+ "jsx": "text/jsx",
533
+ "tsx": "video/mp2t",
534
+ // Data / Configuration
535
+ "json": "application/json",
536
+ "xml": "application/xml",
537
+ "yaml": "application/yaml",
538
+ "yml": "application/yaml",
539
+ "toml": "application/toml",
540
+ "ini": "text/plain",
541
+ "env": "text/plain",
542
+ // Programming
543
+ "c": "text/x-c",
544
+ "h": "text/x-c",
545
+ "cpp": "text/x-c++",
546
+ "cc": "text/x-c++",
547
+ "cxx": "text/x-c++",
548
+ "hpp": "text/x-c++",
549
+ "java": "text/x-java-source",
550
+ "py": "text/x-python",
551
+ "pyw": "text/x-python",
552
+ "rb": "text/x-ruby",
553
+ "go": "text/x-go",
554
+ "rs": "text/rust",
555
+ "php": "application/x-httpd-php",
556
+ "sql": "application/sql",
557
+ "sh": "application/x-sh",
558
+ "bash": "application/x-sh",
559
+ "bat": "application/x-msdos-program",
560
+ "ps1": "application/x-powershell",
561
+ "lua": "text/x-lua",
562
+ "swift": "text/x-swift",
563
+ "kt": "text/x-kotlin",
564
+ "kts": "text/x-kotlin",
565
+ "dart": "application/vnd.dart",
566
+ // Archives / Compression
567
+ "zip": "application/zip",
568
+ "rar": "application/vnd.rar",
569
+ "7z": "application/x-7z-compressed",
570
+ "tar": "application/x-tar",
571
+ "gz": "application/gzip",
572
+ "gzip": "application/gzip",
573
+ "bz": "application/x-bzip",
574
+ "bz2": "application/x-bzip2",
575
+ "xz": "application/x-xz",
576
+ "zst": "application/zstd",
577
+ "tgz": "application/gzip",
578
+ "tar.gz": "application/gzip",
579
+ "tar.bz2": "application/x-bzip2",
580
+ "tar.xz": "application/x-xz",
581
+ // Executables / Applications
582
+ "exe": "application/vnd.microsoft.portable-executable",
583
+ "msi": "application/x-msi",
584
+ "dll": "application/vnd.microsoft.portable-executable",
585
+ "appimage": "application/x-iso9660-appimage",
586
+ "deb": "application/vnd.debian.binary-package",
587
+ "rpm": "application/x-rpm",
588
+ "apk": "application/vnd.android.package-archive",
589
+ "ipa": "application/octet-stream",
590
+ // Disk / Binary
591
+ "iso": "application/x-iso9660-image",
592
+ "img": "application/octet-stream",
593
+ "bin": "application/octet-stream",
594
+ "dmg": "application/x-apple-diskimage",
595
+ // Fonts
596
+ "ttf": "font/ttf",
597
+ "otf": "font/otf",
598
+ "woff": "font/woff",
599
+ "woff2": "font/woff2",
600
+ // E-books
601
+ "epub": "application/epub+zip",
602
+ "mobi": "application/x-mobipocket-ebook",
603
+ "azw": "application/vnd.amazon.ebook",
604
+ "azw3": "application/vnd.amazon.ebook",
605
+ // 3D / CAD
606
+ "stl": "model/stl",
607
+ "obj": "model/obj",
608
+ "gltf": "model/gltf+json",
609
+ "glb": "model/gltf-binary",
610
+ "3ds": "image/x-3ds",
611
+ "dae": "model/vnd.collada+xml",
612
+ "step": "model/step",
613
+ "stp": "model/step",
614
+ "iges": "model/iges",
615
+ "igs": "model/iges",
616
+ // Flash / Legacy
617
+ "swf": "application/x-shockwave-flash",
618
+ // Other common formats
619
+ "ics": "text/calendar",
620
+ "vcf": "text/vcard",
621
+ "vtt": "text/vtt",
622
+ "srt": "application/x-subrip"
623
+ };
361
624
  // Annotate the CommonJS export names for ESM import in node:
362
625
  0 && (module.exports = {
626
+ MimeTypes,
363
627
  Status,
364
628
  Types,
365
629
  ValidationException,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/http/index.ts","../../src/http/validatorTypes.ts","../../src/http/exceptions.ts","../../src/http/validador.ts","../../src/http/status.ts"],"sourcesContent":["export { Types } from \"./validatorTypes.js\";\r\n\r\nexport { ValidationException } from \"./exceptions.js\";\r\nexport { Validator } from \"./validador.js\";\r\nexport { Status } from \"./status.js\";\r\n","import type { ValidationException } from \"./exceptions.js\";\r\n\r\nexport class ArrayType {\r\n type: PrimitiveType[];\r\n description = \"array\";\r\n empty: boolean = false;\r\n\r\n constructor(...type: PrimitiveType[]) {\r\n this.type = [...type];\r\n this.empty = false;\r\n\r\n const types = type.map((t) => t.description);\r\n this.description = `array(${types.join(\" | \")})`;\r\n }\r\n\r\n canBeEmpty() {\r\n this.empty = true;\r\n return this;\r\n }\r\n}\r\n\r\nexport type FieldDefinition = {\r\n type: ValidatorType;\r\n required?: boolean;\r\n validator?: (value: unknown) => unknown | ValidationException;\r\n};\r\n\r\nexport type ObjectFields = {\r\n [name: string]: FieldDefinition;\r\n};\r\n\r\nexport class ObjectType {\r\n fields: ObjectFields;\r\n description = \"object\";\r\n\r\n constructor(fields: ObjectFields) {\r\n this.fields = fields;\r\n\r\n const names = Object.keys(fields);\r\n\r\n this.description = `object{${names.join(\", \")}}`;\r\n }\r\n}\r\n\r\nfunction Array(...type: PrimitiveType[]) {\r\n return new ArrayType(...type);\r\n}\r\n\r\nfunction Struct(fields: ObjectFields) {\r\n return new ObjectType(fields);\r\n}\r\n\r\nexport const Types = {\r\n String: Symbol(\"string\"),\r\n Number: Symbol(\"number\"),\r\n Int: Symbol(\"int\"),\r\n Float: Symbol(\"float\"),\r\n Boolean: Symbol(\"boolean\"),\r\n Object: Symbol(\"object\"),\r\n Null: Symbol(\"null\"),\r\n Any: Symbol(\"any\"),\r\n \r\n Array,\r\n Struct,\r\n};\r\n\r\nexport type PrimitiveType =\r\n | typeof Types.String\r\n | typeof Types.Number\r\n | typeof Types.Int\r\n | typeof Types.Float\r\n | typeof Types.Boolean\r\n | typeof Types.Object\r\n | typeof Types.Null;\r\n\r\nexport type MultiType = PrimitiveType[];\r\n\r\nexport type ValidatorType =\r\n | PrimitiveType\r\n | MultiType\r\n | ArrayType\r\n | ObjectType;","class ValidationException extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n\r\n this.name = \"ValidationException\";\r\n }\r\n}\r\n\r\nclass RequestBodyUndefinedException extends ValidationException {\r\n constructor() {\r\n super(\"Request body is undefined\");\r\n\r\n this.name = \"RequestBodyUndefinedException\";\r\n }\r\n}\r\n\r\nclass InvalidBodyException extends ValidationException {\r\n constructor() {\r\n super(\"Request body must be an object\");\r\n\r\n this.name = \"InvalidBodyException\";\r\n }\r\n}\r\n\r\nclass EmptyBodyException extends ValidationException {\r\n constructor() {\r\n super(\"Body must not be empty\");\r\n\r\n this.name = \"EmptyBodyException\";\r\n }\r\n}\r\n\r\nclass InvalidBodyLengthException extends ValidationException {\r\n constructor(length: number, type: \"min\" | \"max\") {\r\n const message =\r\n type === \"min\"\r\n ? `The body length must be at least ${length} characters`\r\n : `The body length must not exceed ${length} characters`;\r\n\r\n super(message);\r\n\r\n this.name = \"InvalidBodyLengthException\";\r\n }\r\n}\r\n\r\nclass InvalidBodyPatternException extends ValidationException {\r\n constructor(pattern: RegExp) {\r\n super(`The body does not match the required pattern: ${pattern}`);\r\n\r\n this.name = 'InvalidBodyPatternException';\r\n }\r\n}\r\n\r\nclass RequiredFieldException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n ) {\r\n super(`Field \"${field}\" is required`);\r\n\r\n this.name = \"RequiredFieldException\";\r\n }\r\n}\r\n\r\nclass InvalidTypeException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n public readonly expected: string | undefined,\r\n public readonly received: string,\r\n ) {\r\n super(\r\n `Field \"${field}\" must be of type ${expected}, received ${received}`,\r\n );\r\n\r\n this.name = \"InvalidTypeException\";\r\n }\r\n}\r\n\r\nclass CustomValidationException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n ) {\r\n super(`Field \"${field}\" failed custom validation`);\r\n\r\n this.name = \"CustomValidationException\";\r\n }\r\n}\r\n\r\nclass EmptyArrayException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n ) {\r\n super(`Field \"${field}\" must not be an empty array`);\r\n\r\n this.name = \"EmptyArrayException\";\r\n }\r\n}\r\n\r\nexport {\r\n ValidationException,\r\n RequestBodyUndefinedException,\r\n InvalidBodyException,\r\n EmptyBodyException,\r\n InvalidBodyLengthException,\r\n InvalidBodyPatternException,\r\n RequiredFieldException,\r\n InvalidTypeException,\r\n CustomValidationException,\r\n EmptyArrayException\r\n}","import {\r\n ValidationException,\r\n RequestBodyUndefinedException,\r\n InvalidBodyException,\r\n RequiredFieldException,\r\n InvalidTypeException,\r\n EmptyArrayException,\r\n InvalidBodyLengthException,\r\n InvalidBodyPatternException,\r\n EmptyBodyException\r\n} from \"./exceptions.js\";\r\n\r\nimport {\r\n ArrayType,\r\n ObjectType,\r\n Types\r\n} from \"./validatorTypes.js\";\r\n\r\nimport type {\r\n ValidatorType,\r\n ObjectFields\r\n} from \"./validatorTypes.js\";\r\n\r\ntype FieldDefinition = {\r\n type: ValidatorType;\r\n required?: boolean;\r\n validator?: (\r\n value: unknown\r\n ) => unknown | ValidationException;\r\n};\r\n\r\ninterface BodyFields {\r\n [name: string]: FieldDefinition;\r\n}\r\n\r\ninterface Body {\r\n [name: string]: unknown;\r\n}\r\n\r\ntype TextValidationOptions = {\r\n minLength?: number;\r\n maxLength?: number;\r\n pattern?: RegExp;\r\n allowEmpty?: boolean;\r\n trim?: boolean;\r\n validator?: (\r\n value: string\r\n ) => string | ValidationException;\r\n};\r\n\r\nconst Validator = {\r\n body(body: Body, fields: BodyFields) {\r\n if (body === undefined) {\r\n throw new RequestBodyUndefinedException();\r\n }\r\n\r\n if (\r\n typeof body !== \"object\" ||\r\n body === null ||\r\n Array.isArray(body)\r\n ) {\r\n throw new InvalidBodyException();\r\n }\r\n\r\n return validateObject(body, fields);\r\n },\r\n\r\n text(body: string, options: TextValidationOptions = {}) {\r\n const {\r\n minLength,\r\n maxLength,\r\n pattern,\r\n allowEmpty = true,\r\n trim = false,\r\n validator = undefined\r\n } = options;\r\n\r\n let value = trim ? body.trim() : body;\r\n\r\n if (!allowEmpty && value.length === 0) {\r\n throw new EmptyBodyException();\r\n }\r\n\r\n if (minLength !== undefined && value.length < minLength) {\r\n throw new InvalidBodyLengthException(minLength, \"min\");\r\n }\r\n\r\n if (maxLength !== undefined && value.length > maxLength) {\r\n throw new InvalidBodyLengthException(maxLength, \"max\");\r\n }\r\n\r\n if (pattern !== undefined && !pattern.test(value)) {\r\n throw new InvalidBodyPatternException(pattern);\r\n }\r\n\r\n if (validator) {\r\n const result = validator(value);\r\n if (result instanceof ValidationException) {\r\n throw result;\r\n }\r\n\r\n value = result;\r\n }\r\n\r\n return value;\r\n },\r\n\r\n};\r\n\r\nfunction validateObject(\r\n body: unknown,\r\n fields: ObjectFields,\r\n parentPath = \"\"\r\n): Record<string, unknown> {\r\n\r\n if (\r\n typeof body !== \"object\" ||\r\n body === null ||\r\n Array.isArray(body)\r\n ) {\r\n throw new InvalidBodyException();\r\n }\r\n\r\n const bodyData = body as Record<string, unknown>;\r\n const data: Record<string, unknown> = {};\r\n\r\n for (const name in fields) {\r\n const field = fields[name];\r\n\r\n if (!field) {\r\n continue;\r\n }\r\n\r\n const fieldPath = parentPath\r\n ? `${parentPath}.${name}`\r\n : name;\r\n\r\n let value = bodyData[name];\r\n\r\n // Required field\r\n if (field.required && value === undefined) {\r\n throw new RequiredFieldException(fieldPath);\r\n }\r\n\r\n // Optional field not provided\r\n if (value === undefined) {\r\n continue;\r\n }\r\n\r\n // Validate type\r\n if (!validateType(field.type, value, fieldPath)) {\r\n const type = getTypeDescription(field.type);\r\n\r\n throw new InvalidTypeException(\r\n fieldPath,\r\n type,\r\n whatTypeIs(value)\r\n );\r\n }\r\n\r\n // Custom validator\r\n if (field.validator) {\r\n const result = field.validator(value);\r\n\r\n if (result instanceof ValidationException) {\r\n throw result;\r\n }\r\n\r\n value = result;\r\n }\r\n\r\n data[name] = value;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nfunction validateType(\r\n type: ValidatorType | undefined,\r\n value: unknown,\r\n fieldName = \"\"\r\n): boolean {\r\n\r\n // Multiple types\r\n if (Array.isArray(type)) {\r\n return type.some((t) =>\r\n validateType(t, value, fieldName)\r\n );\r\n }\r\n\r\n // Array\r\n if (type instanceof ArrayType) {\r\n\r\n if (!Array.isArray(value)) {\r\n return false;\r\n }\r\n\r\n if (!type.empty && value.length === 0) {\r\n throw new EmptyArrayException(fieldName);\r\n }\r\n\r\n for (const item of value) {\r\n if (!validateType(type.type, item, fieldName)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // Object structure\r\n if (type instanceof ObjectType) {\r\n\r\n if (\r\n typeof value !== \"object\" ||\r\n value === null ||\r\n Array.isArray(value)\r\n ) {\r\n return false;\r\n }\r\n\r\n validateObject(\r\n value,\r\n type.fields,\r\n fieldName\r\n );\r\n\r\n return true;\r\n }\r\n\r\n // Primitive types\r\n switch (type?.description) {\r\n case \"any\":\r\n return true;\r\n\r\n case \"null\":\r\n return value === null;\r\n\r\n case \"string\":\r\n return typeof value === \"string\";\r\n\r\n case \"number\":\r\n case \"float\":\r\n return typeof value === \"number\";\r\n\r\n case \"int\":\r\n return (\r\n typeof value === \"number\" &&\r\n Number.isInteger(value)\r\n );\r\n\r\n case \"boolean\":\r\n return typeof value === \"boolean\";\r\n\r\n case \"object\":\r\n return (\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n !Array.isArray(value)\r\n );\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTypeDescription(\r\n type: ValidatorType\r\n): string {\r\n\r\n if (Array.isArray(type)) {\r\n return type\r\n .map((t) => getTypeDescription(t))\r\n .join(\" | \");\r\n }\r\n\r\n return type.description || \"\";\r\n}\r\n\r\nfunction whatTypeIs(value: unknown): string {\r\n\r\n if (\r\n typeof value === \"number\" &&\r\n Number.isInteger(value)\r\n ) {\r\n return \"int\";\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return \"array\";\r\n }\r\n\r\n if (value === null) {\r\n return \"null\";\r\n }\r\n\r\n return typeof value;\r\n}\r\n\r\nexport {\r\n Validator\r\n};","const Status = {\r\n // 1xx Informational\r\n CONTINUE: 100,\r\n SWITCHING_PROTOCOLS: 101,\r\n PROCESSING: 102,\r\n EARLY_HINTS: 103,\r\n\r\n // 2xx Success\r\n OK: 200,\r\n CREATED: 201,\r\n ACCEPTED: 202,\r\n NON_AUTHORITATIVE_INFORMATION: 203,\r\n NO_CONTENT: 204,\r\n RESET_CONTENT: 205,\r\n PARTIAL_CONTENT: 206,\r\n MULTI_STATUS: 207,\r\n ALREADY_REPORTED: 208,\r\n IM_USED: 226,\r\n\r\n // 3xx Redirection\r\n MULTIPLE_CHOICES: 300,\r\n MOVED_PERMANENTLY: 301,\r\n FOUND: 302,\r\n SEE_OTHER: 303,\r\n NOT_MODIFIED: 304,\r\n TEMPORARY_REDIRECT: 307,\r\n PERMANENT_REDIRECT: 308,\r\n\r\n // 4xx Client Errors\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n PAYMENT_REQUIRED: 402,\r\n FORBIDDEN: 403,\r\n NOT_FOUND: 404,\r\n METHOD_NOT_ALLOWED: 405,\r\n NOT_ACCEPTABLE: 406,\r\n PROXY_AUTHENTICATION_REQUIRED: 407,\r\n REQUEST_TIMEOUT: 408,\r\n CONFLICT: 409,\r\n GONE: 410,\r\n LENGTH_REQUIRED: 411,\r\n PRECONDITION_FAILED: 412,\r\n PAYLOAD_TOO_LARGE: 413,\r\n URI_TOO_LONG: 414,\r\n UNSUPPORTED_MEDIA_TYPE: 415,\r\n RANGE_NOT_SATISFIABLE: 416,\r\n EXPECTATION_FAILED: 417,\r\n IM_A_TEAPOT: 418,\r\n MISDIRECTED_REQUEST: 421,\r\n UNPROCESSABLE_CONTENT: 422,\r\n LOCKED: 423,\r\n FAILED_DEPENDENCY: 424,\r\n UPGRADE_REQUIRED: 426,\r\n PRECONDITION_REQUIRED: 428,\r\n TOO_MANY_REQUESTS: 429,\r\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\r\n UNAVAILABLE_FOR_LEGAL_REASONS: 451,\r\n\r\n // 5xx Server Errors\r\n INTERNAL_SERVER_ERROR: 500,\r\n NOT_IMPLEMENTED: 501,\r\n BAD_GATEWAY: 502,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n HTTP_VERSION_NOT_SUPPORTED: 505,\r\n VARIANT_ALSO_NEGOTIATES: 506,\r\n INSUFFICIENT_STORAGE: 507,\r\n LOOP_DETECTED: 508,\r\n NOT_EXTENDED: 510,\r\n NETWORK_AUTHENTICATION_REQUIRED: 511\r\n} as const;\r\n\r\nexport {\r\n Status\r\n};"],"mappings":"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","names":["Array"]}
1
+ {"version":3,"sources":["../../src/http/index.ts","../../src/http/validatorTypes.ts","../../src/http/exceptions.ts","../../src/http/validador.ts","../../src/http/status.ts","../../src/http/file.ts"],"sourcesContent":["export { Types, } from \"./validatorTypes.js\";\r\nexport type { FileFields } from \"./validatorTypes.js\";\r\n\r\nexport { ValidationException } from \"./exceptions.js\";\r\nexport { Validator } from \"./validador.js\";\r\nexport { Status } from \"./status.js\";\r\nexport { MimeTypes } from \"./file.js\";\r\n","import type { ValidationException } from \"./exceptions.js\";\r\n\r\nexport class ArrayType {\r\n type: PrimitiveType[];\r\n description = \"array\";\r\n empty: boolean = false;\r\n\r\n constructor(...type: PrimitiveType[]) {\r\n this.type = [...type];\r\n this.empty = false;\r\n\r\n const types = type.map((t) => t.description);\r\n this.description = `array(${types.join(\" | \")})`;\r\n }\r\n\r\n canBeEmpty() {\r\n this.empty = true;\r\n return this;\r\n }\r\n}\r\n\r\nexport type FieldDefinition = {\r\n type: ValidatorType;\r\n required?: boolean;\r\n validator?: (value: unknown) => unknown | ValidationException;\r\n};\r\n\r\nexport type ObjectFields = {\r\n [name: string]: FieldDefinition;\r\n};\r\n\r\nexport class ObjectType {\r\n fields: ObjectFields;\r\n description = \"object\";\r\n\r\n constructor(fields: ObjectFields) {\r\n this.fields = fields;\r\n\r\n const names = Object.keys(fields);\r\n\r\n this.description = `object{${names.join(\", \")}}`;\r\n }\r\n}\r\n\r\nfunction Array(...type: PrimitiveType[]) {\r\n return new ArrayType(...type);\r\n}\r\n\r\nfunction Struct(fields: ObjectFields) {\r\n return new ObjectType(fields);\r\n}\r\n\r\nexport const Types = {\r\n String: Symbol(\"string\"),\r\n Number: Symbol(\"number\"),\r\n Int: Symbol(\"int\"),\r\n Float: Symbol(\"float\"),\r\n Boolean: Symbol(\"boolean\"),\r\n Object: Symbol(\"object\"),\r\n Null: Symbol(\"null\"),\r\n Any: Symbol(\"any\"),\r\n \r\n Array,\r\n Struct,\r\n};\r\n\r\nexport type FileFields = {\r\n maxSizeMb?: number;\r\n minSizeMb?: number;\r\n\r\n mimeTypes?: string | string[];\r\n extensions?: string | string[];\r\n\r\n canBeEmpty?: boolean;\r\n\r\n maxNumberOfFiles?: number;\r\n minNumberOfFiles?: number;\r\n\r\n fileNamePattern?: RegExp;\r\n}\r\n\r\nexport type PrimitiveType =\r\n | typeof Types.String\r\n | typeof Types.Number\r\n | typeof Types.Int\r\n | typeof Types.Float\r\n | typeof Types.Boolean\r\n | typeof Types.Object\r\n | typeof Types.Null;\r\n\r\nexport type MultiType = PrimitiveType[];\r\n\r\nexport type ValidatorType =\r\n | PrimitiveType\r\n | MultiType\r\n | ArrayType\r\n | ObjectType;","class ValidationException extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n\r\n this.name = \"ValidationException\";\r\n }\r\n}\r\n\r\nclass RequestBodyUndefinedException extends ValidationException {\r\n constructor() {\r\n super(\"Request body is undefined\");\r\n\r\n this.name = \"RequestBodyUndefinedException\";\r\n }\r\n}\r\n\r\nclass InvalidBodyException extends ValidationException {\r\n constructor() {\r\n super(\"Request body must be an object\");\r\n\r\n this.name = \"InvalidBodyException\";\r\n }\r\n}\r\n\r\nclass EmptyBodyException extends ValidationException {\r\n constructor() {\r\n super(\"Body must not be empty\");\r\n\r\n this.name = \"EmptyBodyException\";\r\n }\r\n}\r\n\r\nclass InvalidBodyLengthException extends ValidationException {\r\n constructor(length: number, type: \"min\" | \"max\") {\r\n const message =\r\n type === \"min\"\r\n ? `The body length must be at least ${length} characters`\r\n : `The body length must not exceed ${length} characters`;\r\n\r\n super(message);\r\n\r\n this.name = \"InvalidBodyLengthException\";\r\n }\r\n}\r\n\r\nclass InvalidBodyPatternException extends ValidationException {\r\n constructor(pattern: RegExp) {\r\n super(`The body does not match the required pattern: ${pattern}`);\r\n\r\n this.name = 'InvalidBodyPatternException';\r\n }\r\n}\r\n\r\nclass RequiredFieldException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n ) {\r\n super(`Field \"${field}\" is required`);\r\n\r\n this.name = \"RequiredFieldException\";\r\n }\r\n}\r\n\r\nclass InvalidTypeException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n public readonly expected: string | undefined,\r\n public readonly received: string,\r\n ) {\r\n super(\r\n `Field \"${field}\" must be of type ${expected}, received ${received}`,\r\n );\r\n\r\n this.name = \"InvalidTypeException\";\r\n }\r\n}\r\n\r\nclass CustomValidationException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n ) {\r\n super(`Field \"${field}\" failed custom validation`);\r\n\r\n this.name = \"CustomValidationException\";\r\n }\r\n}\r\n\r\nclass EmptyArrayException extends ValidationException {\r\n constructor(\r\n public readonly field: string,\r\n ) {\r\n super(`Field \"${field}\" must not be an empty array`);\r\n\r\n this.name = \"EmptyArrayException\";\r\n }\r\n}\r\n\r\nexport {\r\n ValidationException,\r\n RequestBodyUndefinedException,\r\n InvalidBodyException,\r\n EmptyBodyException,\r\n InvalidBodyLengthException,\r\n InvalidBodyPatternException,\r\n RequiredFieldException,\r\n InvalidTypeException,\r\n CustomValidationException,\r\n EmptyArrayException\r\n}","import {\r\n ValidationException,\r\n RequestBodyUndefinedException,\r\n InvalidBodyException,\r\n RequiredFieldException,\r\n InvalidTypeException,\r\n EmptyArrayException,\r\n InvalidBodyLengthException,\r\n InvalidBodyPatternException,\r\n EmptyBodyException\r\n} from \"./exceptions.js\";\r\n\r\nimport {\r\n ArrayType,\r\n ObjectType,\r\n Types,\r\n} from \"./validatorTypes.js\";\r\n\r\nimport type {\r\n FileFields,\r\n ValidatorType,\r\n ObjectFields,\r\n} from \"./validatorTypes.js\";\r\n\r\ntype FieldDefinition = {\r\n type: ValidatorType;\r\n required?: boolean;\r\n validator?: (\r\n value: unknown\r\n ) => unknown | ValidationException;\r\n};\r\n\r\ninterface BodyFields {\r\n [name: string]: FieldDefinition;\r\n}\r\n\r\ninterface Body {\r\n [name: string]: unknown;\r\n}\r\n\r\ntype TextValidationOptions = {\r\n minLength?: number;\r\n maxLength?: number;\r\n pattern?: RegExp;\r\n allowEmpty?: boolean;\r\n trim?: boolean;\r\n validator?: (\r\n value: string\r\n ) => string | ValidationException;\r\n};\r\n\r\nconst Validator = {\r\n body(body: Body, fields: BodyFields) {\r\n if (body === undefined) {\r\n throw new RequestBodyUndefinedException();\r\n }\r\n\r\n if (\r\n typeof body !== \"object\" ||\r\n body === null ||\r\n Array.isArray(body)\r\n ) {\r\n throw new InvalidBodyException();\r\n }\r\n\r\n return validateObject(body, fields);\r\n },\r\n\r\n text(body: string, options: TextValidationOptions = {}) {\r\n const {\r\n minLength,\r\n maxLength,\r\n pattern,\r\n allowEmpty = true,\r\n trim = false,\r\n validator = undefined\r\n } = options;\r\n\r\n let value = trim ? body.trim() : body;\r\n\r\n if (!allowEmpty && value.length === 0) {\r\n throw new EmptyBodyException();\r\n }\r\n\r\n if (minLength !== undefined && value.length < minLength) {\r\n throw new InvalidBodyLengthException(minLength, \"min\");\r\n }\r\n\r\n if (maxLength !== undefined && value.length > maxLength) {\r\n throw new InvalidBodyLengthException(maxLength, \"max\");\r\n }\r\n\r\n if (pattern !== undefined && !pattern.test(value)) {\r\n throw new InvalidBodyPatternException(pattern);\r\n }\r\n\r\n if (validator) {\r\n const result = validator(value);\r\n if (result instanceof ValidationException) {\r\n throw result;\r\n }\r\n\r\n value = result;\r\n }\r\n\r\n return value;\r\n },\r\n\r\n file: (file: any, options: FileFields = {}) => {\r\n const {\r\n canBeEmpty = false,\r\n maxNumberOfFiles,\r\n minNumberOfFiles\r\n } = options;\r\n\r\n /*\r\n * No file\r\n */\r\n if (!file) {\r\n if (canBeEmpty) {\r\n return null;\r\n }\r\n\r\n throw new ValidationException(\r\n \"File is required but not provided.\"\r\n );\r\n }\r\n\r\n /*\r\n * Multiple files\r\n */\r\n if (Array.isArray(file)) {\r\n\r\n if (file.length === 0) {\r\n if (canBeEmpty) {\r\n return null;\r\n }\r\n\r\n throw new ValidationException(\r\n \"At least one file is required.\"\r\n );\r\n }\r\n\r\n if (\r\n maxNumberOfFiles !== undefined &&\r\n file.length > maxNumberOfFiles\r\n ) {\r\n throw new ValidationException(\r\n `Maximum number of files allowed is ${maxNumberOfFiles}.`\r\n );\r\n }\r\n\r\n if (\r\n minNumberOfFiles !== undefined &&\r\n file.length < minNumberOfFiles\r\n ) {\r\n throw new ValidationException(\r\n `Minimum number of files required is ${minNumberOfFiles}.`\r\n );\r\n }\r\n\r\n return file.map((f) => validateFile(f, options));\r\n }\r\n\r\n /*\r\n * Single file\r\n */\r\n return validateFile(file, options);\r\n }\r\n};\r\n\r\n\r\nfunction validateFile(\r\n file: any,\r\n options: FileFields = {}\r\n) {\r\n const {\r\n maxSizeMb,\r\n minSizeMb,\r\n mimeTypes,\r\n extensions,\r\n fileNamePattern\r\n } = options;\r\n\r\n\r\n /*\r\n * Validate object\r\n */\r\n if (\r\n typeof file !== \"object\" ||\r\n file === null\r\n ) {\r\n throw new ValidationException(\r\n \"Invalid file.\"\r\n );\r\n }\r\n\r\n\r\n /*\r\n * Validate size\r\n */\r\n if (\r\n typeof file.size !== \"number\" ||\r\n file.size < 0\r\n ) {\r\n throw new ValidationException(\r\n \"Invalid file size.\"\r\n );\r\n }\r\n\r\n\r\n /*\r\n * Maximum size\r\n */\r\n if (\r\n maxSizeMb !== undefined &&\r\n file.size > maxSizeMb * 1024 * 1024\r\n ) {\r\n throw new ValidationException(\r\n `File size exceeds the maximum limit of ${maxSizeMb} MB.`\r\n );\r\n }\r\n\r\n\r\n /*\r\n * Minimum size\r\n */\r\n if (\r\n minSizeMb !== undefined &&\r\n file.size < minSizeMb * 1024 * 1024\r\n ) {\r\n throw new ValidationException(\r\n `File size is below the minimum limit of ${minSizeMb} MB.`\r\n );\r\n }\r\n\r\n\r\n /*\r\n * MIME type\r\n */\r\n if (mimeTypes !== undefined) {\r\n\r\n const allowedMimeTypes = Array.isArray(mimeTypes)\r\n ? mimeTypes\r\n : [mimeTypes];\r\n\r\n if (\r\n typeof file.mimetype !== \"string\" ||\r\n !allowedMimeTypes.includes(file.mimetype)\r\n ) {\r\n throw new ValidationException(\r\n `File type is not allowed. Allowed types are: ${allowedMimeTypes.join(\", \")}`\r\n );\r\n }\r\n }\r\n\r\n\r\n /*\r\n * File extension\r\n */\r\n if (extensions !== undefined) {\r\n\r\n const allowedExtensions = (\r\n Array.isArray(extensions)\r\n ? extensions\r\n : [extensions]\r\n ).map(\r\n extension =>\r\n extension\r\n .replace(/^\\./, \"\")\r\n .toLowerCase()\r\n );\r\n\r\n if (typeof file.originalname !== \"string\") {\r\n throw new ValidationException(\r\n \"Invalid file name.\"\r\n );\r\n }\r\n\r\n const extension = file.originalname\r\n .split(\".\")\r\n .pop()\r\n ?.toLowerCase();\r\n\r\n if (\r\n !extension ||\r\n !allowedExtensions.includes(extension)\r\n ) {\r\n throw new ValidationException(\r\n `File extension is not allowed. Allowed extensions are: ${allowedExtensions.join(\", \")}`\r\n );\r\n }\r\n }\r\n\r\n /*\r\n * File name pattern\r\n */\r\n if (\r\n fileNamePattern !== undefined &&\r\n !fileNamePattern.test(file.originalname)\r\n ) {\r\n throw new ValidationException(\r\n \"File name does not match the required pattern.\"\r\n );\r\n }\r\n\r\n\r\n return file;\r\n}\r\n\r\nfunction validateObject(\r\n body: unknown,\r\n fields: ObjectFields,\r\n parentPath = \"\"\r\n): Record<string, unknown> {\r\n\r\n if (\r\n typeof body !== \"object\" ||\r\n body === null ||\r\n Array.isArray(body)\r\n ) {\r\n throw new InvalidBodyException();\r\n }\r\n\r\n const bodyData = body as Record<string, unknown>;\r\n const data: Record<string, unknown> = {};\r\n\r\n for (const name in fields) {\r\n const field = fields[name];\r\n\r\n if (!field) {\r\n continue;\r\n }\r\n\r\n const fieldPath = parentPath\r\n ? `${parentPath}.${name}`\r\n : name;\r\n\r\n let value = bodyData[name];\r\n\r\n // Required field\r\n if (field.required && value === undefined) {\r\n throw new RequiredFieldException(fieldPath);\r\n }\r\n\r\n // Optional field not provided\r\n if (value === undefined) {\r\n continue;\r\n }\r\n\r\n // Validate type\r\n if (!validateType(field.type, value, fieldPath)) {\r\n const type = getTypeDescription(field.type);\r\n\r\n throw new InvalidTypeException(\r\n fieldPath,\r\n type,\r\n whatTypeIs(value)\r\n );\r\n }\r\n\r\n // Custom validator\r\n if (field.validator) {\r\n const result = field.validator(value);\r\n\r\n if (result instanceof ValidationException) {\r\n throw result;\r\n }\r\n\r\n value = result;\r\n }\r\n\r\n data[name] = value;\r\n }\r\n\r\n return data;\r\n}\r\n\r\nfunction validateType(\r\n type: ValidatorType | undefined,\r\n value: unknown,\r\n fieldName = \"\"\r\n): boolean {\r\n\r\n // Multiple types\r\n if (Array.isArray(type)) {\r\n return type.some((t) =>\r\n validateType(t, value, fieldName)\r\n );\r\n }\r\n\r\n // Array\r\n if (type instanceof ArrayType) {\r\n\r\n if (!Array.isArray(value)) {\r\n return false;\r\n }\r\n\r\n if (!type.empty && value.length === 0) {\r\n throw new EmptyArrayException(fieldName);\r\n }\r\n\r\n for (const item of value) {\r\n if (!validateType(type.type, item, fieldName)) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // Object structure\r\n if (type instanceof ObjectType) {\r\n\r\n if (\r\n typeof value !== \"object\" ||\r\n value === null ||\r\n Array.isArray(value)\r\n ) {\r\n return false;\r\n }\r\n\r\n validateObject(\r\n value,\r\n type.fields,\r\n fieldName\r\n );\r\n\r\n return true;\r\n }\r\n\r\n // Primitive types\r\n switch (type?.description) {\r\n case \"any\":\r\n return true;\r\n\r\n case \"null\":\r\n return value === null;\r\n\r\n case \"string\":\r\n return typeof value === \"string\";\r\n\r\n case \"number\":\r\n case \"float\":\r\n return typeof value === \"number\";\r\n\r\n case \"int\":\r\n return (\r\n typeof value === \"number\" &&\r\n Number.isInteger(value)\r\n );\r\n\r\n case \"boolean\":\r\n return typeof value === \"boolean\";\r\n\r\n case \"object\":\r\n return (\r\n typeof value === \"object\" &&\r\n value !== null &&\r\n !Array.isArray(value)\r\n );\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getTypeDescription(\r\n type: ValidatorType\r\n): string {\r\n\r\n if (Array.isArray(type)) {\r\n return type\r\n .map((t) => getTypeDescription(t))\r\n .join(\" | \");\r\n }\r\n\r\n return type.description || \"\";\r\n}\r\n\r\nfunction whatTypeIs(value: unknown): string {\r\n\r\n if (\r\n typeof value === \"number\" &&\r\n Number.isInteger(value)\r\n ) {\r\n return \"int\";\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return \"array\";\r\n }\r\n\r\n if (value === null) {\r\n return \"null\";\r\n }\r\n\r\n return typeof value;\r\n}\r\n\r\nexport {\r\n Validator\r\n};","const Status = {\r\n // 1xx Informational\r\n CONTINUE: 100,\r\n SWITCHING_PROTOCOLS: 101,\r\n PROCESSING: 102,\r\n EARLY_HINTS: 103,\r\n\r\n // 2xx Success\r\n OK: 200,\r\n CREATED: 201,\r\n ACCEPTED: 202,\r\n NON_AUTHORITATIVE_INFORMATION: 203,\r\n NO_CONTENT: 204,\r\n RESET_CONTENT: 205,\r\n PARTIAL_CONTENT: 206,\r\n MULTI_STATUS: 207,\r\n ALREADY_REPORTED: 208,\r\n IM_USED: 226,\r\n\r\n // 3xx Redirection\r\n MULTIPLE_CHOICES: 300,\r\n MOVED_PERMANENTLY: 301,\r\n FOUND: 302,\r\n SEE_OTHER: 303,\r\n NOT_MODIFIED: 304,\r\n TEMPORARY_REDIRECT: 307,\r\n PERMANENT_REDIRECT: 308,\r\n\r\n // 4xx Client Errors\r\n BAD_REQUEST: 400,\r\n UNAUTHORIZED: 401,\r\n PAYMENT_REQUIRED: 402,\r\n FORBIDDEN: 403,\r\n NOT_FOUND: 404,\r\n METHOD_NOT_ALLOWED: 405,\r\n NOT_ACCEPTABLE: 406,\r\n PROXY_AUTHENTICATION_REQUIRED: 407,\r\n REQUEST_TIMEOUT: 408,\r\n CONFLICT: 409,\r\n GONE: 410,\r\n LENGTH_REQUIRED: 411,\r\n PRECONDITION_FAILED: 412,\r\n PAYLOAD_TOO_LARGE: 413,\r\n URI_TOO_LONG: 414,\r\n UNSUPPORTED_MEDIA_TYPE: 415,\r\n RANGE_NOT_SATISFIABLE: 416,\r\n EXPECTATION_FAILED: 417,\r\n IM_A_TEAPOT: 418,\r\n MISDIRECTED_REQUEST: 421,\r\n UNPROCESSABLE_CONTENT: 422,\r\n LOCKED: 423,\r\n FAILED_DEPENDENCY: 424,\r\n UPGRADE_REQUIRED: 426,\r\n PRECONDITION_REQUIRED: 428,\r\n TOO_MANY_REQUESTS: 429,\r\n REQUEST_HEADER_FIELDS_TOO_LARGE: 431,\r\n UNAVAILABLE_FOR_LEGAL_REASONS: 451,\r\n\r\n // 5xx Server Errors\r\n INTERNAL_SERVER_ERROR: 500,\r\n NOT_IMPLEMENTED: 501,\r\n BAD_GATEWAY: 502,\r\n SERVICE_UNAVAILABLE: 503,\r\n GATEWAY_TIMEOUT: 504,\r\n HTTP_VERSION_NOT_SUPPORTED: 505,\r\n VARIANT_ALSO_NEGOTIATES: 506,\r\n INSUFFICIENT_STORAGE: 507,\r\n LOOP_DETECTED: 508,\r\n NOT_EXTENDED: 510,\r\n NETWORK_AUTHENTICATION_REQUIRED: 511\r\n} as const;\r\n\r\nexport {\r\n Status\r\n};","const MimeTypes = {\r\n // Documents\r\n \"pdf\": \"application/pdf\",\r\n \"doc\": \"application/msword\",\r\n \"docx\": \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\r\n \"odt\": \"application/vnd.oasis.opendocument.text\",\r\n \"rtf\": \"application/rtf\",\r\n \"tex\": \"application/x-tex\",\r\n \"txt\": \"text/plain\",\r\n \"md\": \"text/markdown\",\r\n\r\n // Spreadsheets\r\n \"xls\": \"application/vnd.ms-excel\",\r\n \"xlsx\": \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\r\n \"ods\": \"application/vnd.oasis.opendocument.spreadsheet\",\r\n \"csv\": \"text/csv\",\r\n \"tsv\": \"text/tab-separated-values\",\r\n\r\n // Presentations\r\n \"ppt\": \"application/vnd.ms-powerpoint\",\r\n \"pptx\": \"application/vnd.openxmlformats-officedocument.presentationml.presentation\",\r\n \"odp\": \"application/vnd.oasis.opendocument.presentation\",\r\n\r\n // Images\r\n \"jpg\": \"image/jpeg\",\r\n \"jpeg\": \"image/jpeg\",\r\n \"png\": \"image/png\",\r\n \"gif\": \"image/gif\",\r\n \"bmp\": \"image/bmp\",\r\n \"webp\": \"image/webp\",\r\n \"svg\": \"image/svg+xml\",\r\n \"ico\": \"image/x-icon\",\r\n \"tif\": \"image/tiff\",\r\n \"tiff\": \"image/tiff\",\r\n \"avif\": \"image/avif\",\r\n \"heic\": \"image/heic\",\r\n \"heif\": \"image/heif\",\r\n \"apng\": \"image/apng\",\r\n \"jxl\": \"image/jxl\",\r\n \"psd\": \"image/vnd.adobe.photoshop\",\r\n \"ai\": \"application/postscript\",\r\n \"eps\": \"application/postscript\",\r\n\r\n // Video\r\n \"mp4\": \"video/mp4\",\r\n \"avi\": \"video/x-msvideo\",\r\n \"mov\": \"video/quicktime\",\r\n \"wmv\": \"video/x-ms-wmv\",\r\n \"flv\": \"video/x-flv\",\r\n \"mkv\": \"video/x-matroska\",\r\n \"webm\": \"video/webm\",\r\n \"mpeg\": \"video/mpeg\",\r\n \"mpg\": \"video/mpeg\",\r\n \"m4v\": \"video/x-m4v\",\r\n \"3gp\": \"video/3gpp\",\r\n \"3g2\": \"video/3gpp2\",\r\n \"ts\": \"video/mp2t\",\r\n\r\n // Audio\r\n \"mp3\": \"audio/mpeg\",\r\n \"wav\": \"audio/wav\",\r\n \"ogg\": \"audio/ogg\",\r\n \"oga\": \"audio/ogg\",\r\n \"opus\": \"audio/opus\",\r\n \"aac\": \"audio/aac\",\r\n \"m4a\": \"audio/mp4\",\r\n \"flac\": \"audio/flac\",\r\n \"weba\": \"audio/webm\",\r\n \"mid\": \"audio/midi\",\r\n \"midi\": \"audio/midi\",\r\n\r\n // Web\r\n \"html\": \"text/html\",\r\n \"htm\": \"text/html\",\r\n \"css\": \"text/css\",\r\n \"js\": \"text/javascript\",\r\n \"mjs\": \"text/javascript\",\r\n \"cjs\": \"text/javascript\",\r\n \"jsx\": \"text/jsx\",\r\n \"tsx\": \"video/mp2t\",\r\n\r\n // Data / Configuration\r\n \"json\": \"application/json\",\r\n \"xml\": \"application/xml\",\r\n \"yaml\": \"application/yaml\",\r\n \"yml\": \"application/yaml\",\r\n \"toml\": \"application/toml\",\r\n \"ini\": \"text/plain\",\r\n \"env\": \"text/plain\",\r\n\r\n // Programming\r\n \"c\": \"text/x-c\",\r\n \"h\": \"text/x-c\",\r\n \"cpp\": \"text/x-c++\",\r\n \"cc\": \"text/x-c++\",\r\n \"cxx\": \"text/x-c++\",\r\n \"hpp\": \"text/x-c++\",\r\n \"java\": \"text/x-java-source\",\r\n \"py\": \"text/x-python\",\r\n \"pyw\": \"text/x-python\",\r\n \"rb\": \"text/x-ruby\",\r\n \"go\": \"text/x-go\",\r\n \"rs\": \"text/rust\",\r\n \"php\": \"application/x-httpd-php\",\r\n \"sql\": \"application/sql\",\r\n \"sh\": \"application/x-sh\",\r\n \"bash\": \"application/x-sh\",\r\n \"bat\": \"application/x-msdos-program\",\r\n \"ps1\": \"application/x-powershell\",\r\n \"lua\": \"text/x-lua\",\r\n \"swift\": \"text/x-swift\",\r\n \"kt\": \"text/x-kotlin\",\r\n \"kts\": \"text/x-kotlin\",\r\n \"dart\": \"application/vnd.dart\",\r\n\r\n // Archives / Compression\r\n \"zip\": \"application/zip\",\r\n \"rar\": \"application/vnd.rar\",\r\n \"7z\": \"application/x-7z-compressed\",\r\n \"tar\": \"application/x-tar\",\r\n \"gz\": \"application/gzip\",\r\n \"gzip\": \"application/gzip\",\r\n \"bz\": \"application/x-bzip\",\r\n \"bz2\": \"application/x-bzip2\",\r\n \"xz\": \"application/x-xz\",\r\n \"zst\": \"application/zstd\",\r\n \"tgz\": \"application/gzip\",\r\n \"tar.gz\": \"application/gzip\",\r\n \"tar.bz2\": \"application/x-bzip2\",\r\n \"tar.xz\": \"application/x-xz\",\r\n\r\n // Executables / Applications\r\n \"exe\": \"application/vnd.microsoft.portable-executable\",\r\n \"msi\": \"application/x-msi\",\r\n \"dll\": \"application/vnd.microsoft.portable-executable\",\r\n \"appimage\": \"application/x-iso9660-appimage\",\r\n \"deb\": \"application/vnd.debian.binary-package\",\r\n \"rpm\": \"application/x-rpm\",\r\n \"apk\": \"application/vnd.android.package-archive\",\r\n \"ipa\": \"application/octet-stream\",\r\n\r\n // Disk / Binary\r\n \"iso\": \"application/x-iso9660-image\",\r\n \"img\": \"application/octet-stream\",\r\n \"bin\": \"application/octet-stream\",\r\n \"dmg\": \"application/x-apple-diskimage\",\r\n\r\n // Fonts\r\n \"ttf\": \"font/ttf\",\r\n \"otf\": \"font/otf\",\r\n \"woff\": \"font/woff\",\r\n \"woff2\": \"font/woff2\",\r\n\r\n // E-books\r\n \"epub\": \"application/epub+zip\",\r\n \"mobi\": \"application/x-mobipocket-ebook\",\r\n \"azw\": \"application/vnd.amazon.ebook\",\r\n \"azw3\": \"application/vnd.amazon.ebook\",\r\n\r\n // 3D / CAD\r\n \"stl\": \"model/stl\",\r\n \"obj\": \"model/obj\",\r\n \"gltf\": \"model/gltf+json\",\r\n \"glb\": \"model/gltf-binary\",\r\n \"3ds\": \"image/x-3ds\",\r\n \"dae\": \"model/vnd.collada+xml\",\r\n \"step\": \"model/step\",\r\n \"stp\": \"model/step\",\r\n \"iges\": \"model/iges\",\r\n \"igs\": \"model/iges\",\r\n\r\n // Flash / Legacy\r\n \"swf\": \"application/x-shockwave-flash\",\r\n\r\n // Other common formats\r\n \"ics\": \"text/calendar\",\r\n \"vcf\": \"text/vcard\",\r\n \"vtt\": \"text/vtt\",\r\n \"srt\": \"application/x-subrip\",\r\n};\r\n\r\nexport { MimeTypes };"],"mappings":"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","names":["Array","extension"]}
@@ -36,6 +36,16 @@ declare const Types: {
36
36
  Array: typeof Array;
37
37
  Struct: typeof Struct;
38
38
  };
39
+ type FileFields = {
40
+ maxSizeMb?: number;
41
+ minSizeMb?: number;
42
+ mimeTypes?: string | string[];
43
+ extensions?: string | string[];
44
+ canBeEmpty?: boolean;
45
+ maxNumberOfFiles?: number;
46
+ minNumberOfFiles?: number;
47
+ fileNamePattern?: RegExp;
48
+ };
39
49
  type PrimitiveType = typeof Types.String | typeof Types.Number | typeof Types.Int | typeof Types.Float | typeof Types.Boolean | typeof Types.Object | typeof Types.Null;
40
50
  type MultiType = PrimitiveType[];
41
51
  type ValidatorType = PrimitiveType | MultiType | ArrayType | ObjectType;
@@ -62,6 +72,7 @@ type TextValidationOptions = {
62
72
  declare const Validator: {
63
73
  body(body: Body, fields: BodyFields): Record<string, unknown>;
64
74
  text(body: string, options?: TextValidationOptions): string;
75
+ file: (file: any, options?: FileFields) => any;
65
76
  };
66
77
 
67
78
  declare const Status: {
@@ -127,4 +138,152 @@ declare const Status: {
127
138
  readonly NETWORK_AUTHENTICATION_REQUIRED: 511;
128
139
  };
129
140
 
130
- export { Status, Types, ValidationException, Validator };
141
+ declare const MimeTypes: {
142
+ pdf: string;
143
+ doc: string;
144
+ docx: string;
145
+ odt: string;
146
+ rtf: string;
147
+ tex: string;
148
+ txt: string;
149
+ md: string;
150
+ xls: string;
151
+ xlsx: string;
152
+ ods: string;
153
+ csv: string;
154
+ tsv: string;
155
+ ppt: string;
156
+ pptx: string;
157
+ odp: string;
158
+ jpg: string;
159
+ jpeg: string;
160
+ png: string;
161
+ gif: string;
162
+ bmp: string;
163
+ webp: string;
164
+ svg: string;
165
+ ico: string;
166
+ tif: string;
167
+ tiff: string;
168
+ avif: string;
169
+ heic: string;
170
+ heif: string;
171
+ apng: string;
172
+ jxl: string;
173
+ psd: string;
174
+ ai: string;
175
+ eps: string;
176
+ mp4: string;
177
+ avi: string;
178
+ mov: string;
179
+ wmv: string;
180
+ flv: string;
181
+ mkv: string;
182
+ webm: string;
183
+ mpeg: string;
184
+ mpg: string;
185
+ m4v: string;
186
+ "3gp": string;
187
+ "3g2": string;
188
+ ts: string;
189
+ mp3: string;
190
+ wav: string;
191
+ ogg: string;
192
+ oga: string;
193
+ opus: string;
194
+ aac: string;
195
+ m4a: string;
196
+ flac: string;
197
+ weba: string;
198
+ mid: string;
199
+ midi: string;
200
+ html: string;
201
+ htm: string;
202
+ css: string;
203
+ js: string;
204
+ mjs: string;
205
+ cjs: string;
206
+ jsx: string;
207
+ tsx: string;
208
+ json: string;
209
+ xml: string;
210
+ yaml: string;
211
+ yml: string;
212
+ toml: string;
213
+ ini: string;
214
+ env: string;
215
+ c: string;
216
+ h: string;
217
+ cpp: string;
218
+ cc: string;
219
+ cxx: string;
220
+ hpp: string;
221
+ java: string;
222
+ py: string;
223
+ pyw: string;
224
+ rb: string;
225
+ go: string;
226
+ rs: string;
227
+ php: string;
228
+ sql: string;
229
+ sh: string;
230
+ bash: string;
231
+ bat: string;
232
+ ps1: string;
233
+ lua: string;
234
+ swift: string;
235
+ kt: string;
236
+ kts: string;
237
+ dart: string;
238
+ zip: string;
239
+ rar: string;
240
+ "7z": string;
241
+ tar: string;
242
+ gz: string;
243
+ gzip: string;
244
+ bz: string;
245
+ bz2: string;
246
+ xz: string;
247
+ zst: string;
248
+ tgz: string;
249
+ "tar.gz": string;
250
+ "tar.bz2": string;
251
+ "tar.xz": string;
252
+ exe: string;
253
+ msi: string;
254
+ dll: string;
255
+ appimage: string;
256
+ deb: string;
257
+ rpm: string;
258
+ apk: string;
259
+ ipa: string;
260
+ iso: string;
261
+ img: string;
262
+ bin: string;
263
+ dmg: string;
264
+ ttf: string;
265
+ otf: string;
266
+ woff: string;
267
+ woff2: string;
268
+ epub: string;
269
+ mobi: string;
270
+ azw: string;
271
+ azw3: string;
272
+ stl: string;
273
+ obj: string;
274
+ gltf: string;
275
+ glb: string;
276
+ "3ds": string;
277
+ dae: string;
278
+ step: string;
279
+ stp: string;
280
+ iges: string;
281
+ igs: string;
282
+ swf: string;
283
+ ics: string;
284
+ vcf: string;
285
+ vtt: string;
286
+ srt: string;
287
+ };
288
+
289
+ export { type FileFields, MimeTypes, Status, Types, ValidationException, Validator };