sprint-es 0.0.157 → 0.0.159

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,7 +20,7 @@ function createFileSchema(options = {}) {
20
20
  size: zod.z.number(),
21
21
  buffer: zod.z.instanceof(Buffer).optional()
22
22
  });
23
- return fileSchema.refine((file) => {
23
+ const schemaWithValidations = fileSchema.refine((file) => {
24
24
  if (extensions.length === 0) return true;
25
25
  const fileExt = file.originalname.toLowerCase().substring(file.originalname.lastIndexOf("."));
26
26
  return extensions.includes(fileExt);
@@ -46,15 +46,21 @@ function createFileSchema(options = {}) {
46
46
  message: `File size must be at least ${options.minSize} bytes`,
47
47
  path: ["size"]
48
48
  });
49
+ const chainedSchema = Object.create(schemaWithValidations);
50
+ chainedSchema.format = (ext) => createFileSchema({ ...options, ext: normalizeExtensions(ext) });
51
+ chainedSchema.mimeType = (mime) => createFileSchema({ ...options, mimeType: normalizeMimeTypes(mime) });
52
+ chainedSchema.maxSize = (size) => createFileSchema({ ...options, maxSize: size });
53
+ chainedSchema.minSize = (size) => createFileSchema({ ...options, minSize: size });
54
+ return chainedSchema;
49
55
  }
50
56
  function createFilesArraySchema(fieldName, options = {}) {
51
- const fileSchema = createFileSchema({ ...options });
57
+ const fileSchema = createFileSchema({ ...options, required: false });
52
58
  return zod.z.array(fileSchema).min(options.required === false ? 0 : 1, {
53
59
  message: options.required === false ? void 0 : `At least one file is required for field "${fieldName}"`
54
60
  });
55
61
  }
56
62
  const fileValidators = {
57
- ext: (ext) => {
63
+ format: (ext) => {
58
64
  const extensions = normalizeExtensions(ext);
59
65
  return createFileSchema({ ext: extensions });
60
66
  },
@@ -18,7 +18,7 @@ function createFileSchema(options = {}) {
18
18
  size: z.number(),
19
19
  buffer: z.instanceof(Buffer).optional()
20
20
  });
21
- return fileSchema.refine((file) => {
21
+ const schemaWithValidations = fileSchema.refine((file) => {
22
22
  if (extensions.length === 0) return true;
23
23
  const fileExt = file.originalname.toLowerCase().substring(file.originalname.lastIndexOf("."));
24
24
  return extensions.includes(fileExt);
@@ -44,15 +44,21 @@ function createFileSchema(options = {}) {
44
44
  message: `File size must be at least ${options.minSize} bytes`,
45
45
  path: ["size"]
46
46
  });
47
+ const chainedSchema = Object.create(schemaWithValidations);
48
+ chainedSchema.format = (ext) => createFileSchema({ ...options, ext: normalizeExtensions(ext) });
49
+ chainedSchema.mimeType = (mime) => createFileSchema({ ...options, mimeType: normalizeMimeTypes(mime) });
50
+ chainedSchema.maxSize = (size) => createFileSchema({ ...options, maxSize: size });
51
+ chainedSchema.minSize = (size) => createFileSchema({ ...options, minSize: size });
52
+ return chainedSchema;
47
53
  }
48
54
  function createFilesArraySchema(fieldName, options = {}) {
49
- const fileSchema = createFileSchema({ ...options });
55
+ const fileSchema = createFileSchema({ ...options, required: false });
50
56
  return z.array(fileSchema).min(options.required === false ? 0 : 1, {
51
57
  message: options.required === false ? void 0 : `At least one file is required for field "${fieldName}"`
52
58
  });
53
59
  }
54
60
  const fileValidators = {
55
- ext: (ext) => {
61
+ format: (ext) => {
56
62
  const extensions = normalizeExtensions(ext);
57
63
  return createFileSchema({ ext: extensions });
58
64
  },
@@ -1,5 +1,5 @@
1
1
  import { RequestHandler } from 'express';
2
- import { z, ZodSchema as ZodSchemaType, ZodTypeDef } from 'zod';
2
+ import { z, ZodSchema as ZodSchemaType, ZodTypeDef, ZodType } from 'zod';
3
3
  import { FileObject } from './types';
4
4
  export type AuthorizationSource = `query:${string}` | `headers:${string}`;
5
5
  export interface SprintAuthorizationOptions {
@@ -12,19 +12,25 @@ export interface FileValidationOptions {
12
12
  minSize?: number;
13
13
  required?: boolean;
14
14
  }
15
- declare function createFileSchema(options?: FileValidationOptions): ZodSchemaType<FileObject, ZodTypeDef, FileObject>;
15
+ interface FileSchemaType extends ZodType<FileObject, ZodTypeDef, FileObject> {
16
+ format(ext: string | string[]): FileSchemaType;
17
+ mimeType(mimeType: string | string[]): FileSchemaType;
18
+ maxSize(maxSize: number): FileSchemaType;
19
+ minSize(minSize: number): FileSchemaType;
20
+ }
21
+ declare function createFileSchema(options?: FileValidationOptions): FileSchemaType;
16
22
  declare function createFilesArraySchema(fieldName: string, options?: FileValidationOptions): ZodSchemaType<FileObject[], ZodTypeDef, FileObject[]>;
17
23
  declare const fileValidators: {
18
- ext: (ext: string | string[]) => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
19
- mimeType: (mimeType: string | string[]) => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
20
- maxSize: (maxSize: number) => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
21
- minSize: (minSize: number) => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
22
- image: () => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
23
- document: () => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
24
- video: () => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
25
- audio: () => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
26
- archive: () => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
27
- any: () => z.ZodType<FileObject, z.ZodTypeDef, FileObject>;
24
+ format: (ext: string | string[]) => FileSchemaType;
25
+ mimeType: (mimeType: string | string[]) => FileSchemaType;
26
+ maxSize: (maxSize: number) => FileSchemaType;
27
+ minSize: (minSize: number) => FileSchemaType;
28
+ image: () => FileSchemaType;
29
+ document: () => FileSchemaType;
30
+ video: () => FileSchemaType;
31
+ audio: () => FileSchemaType;
32
+ archive: () => FileSchemaType;
33
+ any: () => FileSchemaType;
28
34
  field: (fieldName: string, options?: FileValidationOptions) => z.ZodType<FileObject[], z.ZodTypeDef, FileObject[]>;
29
35
  };
30
36
  export declare function normalizeHeadersSchema(schema: any): any;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/schemas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/schemas/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sprint-es",
3
- "version": "0.0.157",
3
+ "version": "0.0.159",
4
4
  "description": "Sprint - Quickly API",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -128,6 +128,7 @@
128
128
  "devDependencies": {
129
129
  "@types/busboy": "^1.5.4",
130
130
  "@types/cors": "^2.8.19",
131
+ "@types/dotenv": "^6.1.1",
131
132
  "@types/jest": "^30.0.0",
132
133
  "@types/morgan": "^1.9.10",
133
134
  "@types/node": "^22.18.7",