@shoppingapp.org/common 1.0.31 → 1.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './middlewares/current-user';
2
2
  export * from './middlewares/error-handler';
3
+ export * from './middlewares/uploader';
3
4
  export * from './errors/bad-request-error';
4
5
  export * from './errors/custom-error';
5
6
  export * from './errors/database-connection-error';
package/build/index.js CHANGED
@@ -16,7 +16,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./middlewares/current-user"), exports);
18
18
  // export * from './middlewares/require-auth';
19
- __exportStar(require("./middlewares/error-handler"), exports); // 🔹 Fixed
19
+ __exportStar(require("./middlewares/error-handler"), exports);
20
+ __exportStar(require("./middlewares/uploader"), exports);
20
21
  __exportStar(require("./errors/bad-request-error"), exports); // 🔹 Fixed
21
22
  __exportStar(require("./errors/custom-error"), exports); // 🔹 Fixed
22
23
  __exportStar(require("./errors/database-connection-error"), exports); // 🔹 Fixed
@@ -3,6 +3,7 @@ declare global {
3
3
  interface Req extends Request {
4
4
  session?: any;
5
5
  currentUser?: any;
6
+ uploaderError?: Error;
6
7
  }
7
8
  }
8
9
  export declare const currentUser: (jwt_key: string) => (req: Req, res: Response, next: NextFunction) => void;
@@ -0,0 +1,14 @@
1
+ import multer, { FileFilterCallback } from "multer";
2
+ export interface UploaderMIddlewareOptions {
3
+ types?: string[];
4
+ fieldName?: string;
5
+ }
6
+ export declare class Uploader {
7
+ uploadDir?: string | undefined;
8
+ fileFilter: (types?: Array<string>) => (req: Req, file: Express.Multer.File, cb: FileFilterCallback) => void;
9
+ storage: multer.StorageEngine;
10
+ defaultUploadeDir: string;
11
+ constructor(uploadDir?: string | undefined);
12
+ uploadeMultipleFiles(options: UploaderMIddlewareOptions): import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
13
+ uploadeSingleFile(options: UploaderMIddlewareOptions): import("express").RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
14
+ }
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Uploader = void 0;
7
+ const multer_1 = __importDefault(require("multer"));
8
+ ;
9
+ class Uploader {
10
+ constructor(uploadDir) {
11
+ this.uploadDir = uploadDir;
12
+ this.fileFilter = (types) => {
13
+ return (req, file, cb) => {
14
+ const type = file.mimetype;
15
+ if (!types)
16
+ return cb(null, true);
17
+ if (types.length === 0)
18
+ return cb(null, true);
19
+ if (types.some((accepted) => type === accepted)) {
20
+ return cb(null, true);
21
+ }
22
+ else {
23
+ req.uploaderError = new Error(`We only accept these types: ${types}`);
24
+ return cb(null, false);
25
+ }
26
+ ;
27
+ };
28
+ };
29
+ this.storage = multer_1.default.diskStorage({
30
+ destination: (req, file, cb) => {
31
+ cb(null, this.uploadDir || this.defaultUploadeDir);
32
+ },
33
+ filename: (req, file, cb) => {
34
+ cb(null, file.fieldname + Date.now());
35
+ }
36
+ });
37
+ this.defaultUploadeDir = "/upload";
38
+ }
39
+ ;
40
+ uploadeMultipleFiles(options) {
41
+ return (0, multer_1.default)({ storage: this.storage, fileFilter: this.fileFilter(options.types) })
42
+ .array(options.fieldName || 'file');
43
+ }
44
+ ;
45
+ uploadeSingleFile(options) {
46
+ return (0, multer_1.default)({ storage: this.storage, fileFilter: this.fileFilter(options.types) })
47
+ .single(options.fieldName || 'file');
48
+ }
49
+ }
50
+ exports.Uploader = Uploader;
51
+ ;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shoppingapp.org/common",
3
- "version": "1.0.31",
3
+ "version": "1.0.32",
4
4
  "description": "",
5
5
  "main": "build/index.js",
6
6
  "types": "./build/index.d.ts",