storemw-core-api 1.0.95 → 1.0.97

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.
@@ -4,7 +4,6 @@ export declare const getFile: (req: Request, res: Response, next: NextFunction)
4
4
  /** files : upload files */
5
5
  export declare const uploadFiles: (req: Request, res: Response, next: NextFunction) => Promise<any>;
6
6
  /** file/:fileId : update file */
7
- export declare const updateFile: (req: Request, res: Response, next: NextFunction) => Promise<void>;
8
7
  /** files : list files */
9
8
  export declare const listFiles: (req: Request, res: Response, next: NextFunction) => Promise<any>;
10
9
  /** files/delete : delete files */
@@ -1,14 +1,10 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.deleteFiles = exports.listFiles = exports.updateFile = exports.uploadFiles = exports.getFile = void 0;
7
- const path_1 = __importDefault(require("path"));
3
+ exports.deleteFiles = exports.listFiles = exports.uploadFiles = exports.getFile = void 0;
4
+ // import path from "path";
8
5
  const utils_1 = require("../../utils");
9
6
  const services_1 = require("../../services");
10
7
  const payload_1 = require("../../schema/payload");
11
- const features_1 = require("../../features");
12
8
  const getRootName = (toSingular) => {
13
9
  let rootName = toSingular ? "file" : "files";
14
10
  return rootName;
@@ -39,43 +35,43 @@ const getRootName = (toSingular) => {
39
35
  // storageProviderOptions
40
36
  // }
41
37
  // }
42
- const getStorageSetup = async () => {
43
- const hookSetup = await features_1.FileStorageHook.onSetup();
44
- let storageProviderOptions = {};
45
- if (hookSetup.storageType === "local") {
46
- storageProviderOptions = {
47
- // basePath: `${config.FILE_STORAGE_LOCAL_BASE_PATH}`,
48
- basePath: `${hookSetup.localStorageOptions.basePath}`,
49
- // publicBaseUrl: `${config.FILE_STORAGE_LOCAL_BASE_URL}`,
50
- publicBaseUrl: `${hookSetup.localStorageOptions.baseUrl}`,
51
- // skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_MODULE_REF),
52
- skipFoldernameByModuleRef: Boolean(hookSetup.localStorageOptions.skipFolderNameModuleRef),
53
- // skipFoldernameByDate: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_YEAR_MONTH)
54
- skipFoldernameByDate: Boolean(hookSetup.localStorageOptions.skipFolderNameYearMonth)
55
- };
56
- }
57
- if (hookSetup.storageType === "gcloud") {
58
- storageProviderOptions = {
59
- // basePath: `${config.FILE_STORAGE_GCLOUD_BASE_PATH}`,
60
- basePath: `${hookSetup.gcloudStorageOptions.basePath}`,
61
- // publicBaseUrl: `${config.FILE_STORAGE_GCLOUD_BASE_URL}`,
62
- publicBaseUrl: `${hookSetup.gcloudStorageOptions.baseUrl}`,
63
- // bucketName: `${config.FILE_STORAGE_GCLOUD_BUCKET_NAME}`,
64
- bucketName: `${hookSetup.gcloudStorageOptions.bucketName}`,
65
- // credentials: `${path.resolve(process.cwd(), `${config.FILE_STORAGE_GCLOUD_CREDENTIAL_PATH}`)}`,
66
- credentials: `${path_1.default.resolve(process.cwd(), `${hookSetup.gcloudStorageOptions.credentialPath}`)}`,
67
- // skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_MODULE_REF),
68
- skipFoldernameByModuleRef: Boolean(hookSetup.gcloudStorageOptions.skipFolderNameModuleRef),
69
- // skipFoldernameByDate: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_YEAR_MONTH)
70
- skipFoldernameByDate: Boolean(hookSetup.gcloudStorageOptions.skipFolderNameYearMonth)
71
- };
72
- }
73
- return {
74
- storageProviderName: hookSetup.storageType,
75
- storageProviderOptions,
76
- storageConfiguration: hookSetup.storageConfiguration
77
- };
78
- };
38
+ // const getStorageSetup = async () => {
39
+ // const hookSetup = await FileStorageHook.onSetup()
40
+ // let storageProviderOptions = {}
41
+ // if (hookSetup.storageType === "local") {
42
+ // storageProviderOptions = {
43
+ // // basePath: `${config.FILE_STORAGE_LOCAL_BASE_PATH}`,
44
+ // basePath: `${hookSetup.localStorageOptions.basePath}`,
45
+ // // publicBaseUrl: `${config.FILE_STORAGE_LOCAL_BASE_URL}`,
46
+ // publicBaseUrl: `${hookSetup.localStorageOptions.baseUrl}`,
47
+ // // skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_MODULE_REF),
48
+ // skipFoldernameByModuleRef: Boolean(hookSetup.localStorageOptions.skipFolderNameModuleRef),
49
+ // // skipFoldernameByDate: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_YEAR_MONTH)
50
+ // skipFoldernameByDate: Boolean(hookSetup.localStorageOptions.skipFolderNameYearMonth)
51
+ // }
52
+ // }
53
+ // if (hookSetup.storageType === "gcloud") {
54
+ // storageProviderOptions = {
55
+ // // basePath: `${config.FILE_STORAGE_GCLOUD_BASE_PATH}`,
56
+ // basePath: `${hookSetup.gcloudStorageOptions.basePath}`,
57
+ // // publicBaseUrl: `${config.FILE_STORAGE_GCLOUD_BASE_URL}`,
58
+ // publicBaseUrl: `${hookSetup.gcloudStorageOptions.baseUrl}`,
59
+ // // bucketName: `${config.FILE_STORAGE_GCLOUD_BUCKET_NAME}`,
60
+ // bucketName: `${hookSetup.gcloudStorageOptions.bucketName}`,
61
+ // // credentials: `${path.resolve(process.cwd(), `${config.FILE_STORAGE_GCLOUD_CREDENTIAL_PATH}`)}`,
62
+ // credentials: `${path.resolve(process.cwd(), `${hookSetup.gcloudStorageOptions.credentialPath}`)}`,
63
+ // // skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_MODULE_REF),
64
+ // skipFoldernameByModuleRef: Boolean(hookSetup.gcloudStorageOptions.skipFolderNameModuleRef),
65
+ // // skipFoldernameByDate: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_YEAR_MONTH)
66
+ // skipFoldernameByDate: Boolean(hookSetup.gcloudStorageOptions.skipFolderNameYearMonth)
67
+ // }
68
+ // }
69
+ // return {
70
+ // storageProviderName: hookSetup.storageType,
71
+ // storageProviderOptions,
72
+ // storageConfiguration: hookSetup.storageConfiguration
73
+ // }
74
+ // }
79
75
  /** file/:fileId : get file */
80
76
  const getFile = async (req, res, next) => {
81
77
  try {
@@ -139,24 +135,30 @@ const uploadFiles = async (req, res, next) => {
139
135
  // resolution: Number(config.FILE_UPLOAD_VIDEO_COMPRESSION_RESOLUTION),
140
136
  // }
141
137
  // : undefined;
142
- const { storageProviderName, storageProviderOptions, storageConfiguration } = await getStorageSetup();
143
- // Image Compression
144
- const imageCompressionOptions = storageConfiguration?.imageMaxWidth && storageConfiguration?.imageMaxWidth
145
- ? {
146
- maxWidth: Number(storageConfiguration.imageMaxWidth),
147
- quality: Number(storageConfiguration.imageQuality),
148
- }
149
- : undefined;
150
- // Video Compression
151
- const videoCompressionOptions = storageConfiguration?.videoCRF &&
152
- storageConfiguration?.videoPreset &&
153
- storageConfiguration?.videoResolution
154
- ? {
155
- crf: Number(storageConfiguration.videoCRF),
156
- preset: storageConfiguration.videoPreset,
157
- resolution: Number(storageConfiguration.videoResolution),
158
- }
159
- : undefined;
138
+ // const {
139
+ // storageProviderName,
140
+ // storageProviderOptions,
141
+ // storageConfiguration
142
+ // } = await getStorageSetup()
143
+ // // Image Compression
144
+ // const imageCompressionOptions: FileImageCompressionOptions | undefined
145
+ // = storageConfiguration?.imageMaxWidth && storageConfiguration?.imageMaxWidth
146
+ // ? {
147
+ // maxWidth: Number(storageConfiguration.imageMaxWidth),
148
+ // quality: Number(storageConfiguration.imageQuality),
149
+ // }
150
+ // : undefined;
151
+ // // Video Compression
152
+ // const videoCompressionOptions: FileVideoCompressionOptions | undefined =
153
+ // storageConfiguration?.videoCRF &&
154
+ // storageConfiguration?.videoPreset &&
155
+ // storageConfiguration?.videoResolution
156
+ // ? {
157
+ // crf: Number(storageConfiguration.videoCRF),
158
+ // preset: storageConfiguration.videoPreset as FileVideoCompressionOptions["preset"],
159
+ // resolution: Number(storageConfiguration.videoResolution),
160
+ // }
161
+ // : undefined;
160
162
  const fileService = (0, services_1.FileService)({
161
163
  ...(0, utils_1.getDefaultServiceProps)(req),
162
164
  });
@@ -172,10 +174,10 @@ const uploadFiles = async (req, res, next) => {
172
174
  refLabel2: request?.refLabel2 ?? "",
173
175
  remark: request?.remark ?? "",
174
176
  // foldernameDate: "2025-01-01", // empty to use current datetime
175
- storageProviderName,
176
- storageProviderOptions,
177
- ...(imageCompressionOptions ? { imageCompressionOptions } : {}),
178
- ...(videoCompressionOptions ? { videoCompressionOptions } : {}),
177
+ // storageProviderName,
178
+ // storageProviderOptions,
179
+ // ...(imageCompressionOptions ? { imageCompressionOptions } : {}),
180
+ // ...(videoCompressionOptions ? { videoCompressionOptions } : {}),
179
181
  files: request.files.map(file => ({
180
182
  buffer: file.buffer,
181
183
  originalName: file.originalname,
@@ -192,53 +194,51 @@ const uploadFiles = async (req, res, next) => {
192
194
  };
193
195
  exports.uploadFiles = uploadFiles;
194
196
  /** file/:fileId : update file */
195
- const updateFile = async (req, res, next) => {
196
- try {
197
- const { fileId } = req.params;
198
- // const requestDocumentType = req.body.scope.target as FileServiceProps["documentType"]
199
- const fileService = (0, services_1.FileService)({
200
- ...(0, utils_1.getDefaultServiceProps)(req),
201
- });
202
- let response = {};
203
- let reqScope = req.body.scope;
204
- let reqPayload = req.body.payload;
205
- // const { schemaUpdate, key } = documentSalesMap[requestDocumentType as keyof typeof documentSalesMap];
206
- // const request = schemaUpdate.parse({
207
- // scope: { target: reqScope.target, action: reqScope.action },
208
- // payload: {
209
- // ...buildDocumentPayloadFromRequest(reqPayload),
210
- // profile: buildDocumentProfileFromRequest(reqPayload.profile),
211
- // shipping: buildDocumentProfileOtherFromRequest(reqPayload.shipping),
212
- // billing: buildDocumentProfileOtherFromRequest(reqPayload.billing),
213
- // ...(reqPayload?.items ? { items: buildDocumentItemsFromRequest(reqPayload.items) } : {}),
214
- // ...(reqPayload?.totals ? { totals: buildDocumentTotalsFromRequest(reqPayload.totals) } : {}),
215
- // },
216
- // });
217
- // const payload: DocumentUpdateProps = {
218
- // documentId: Number(documentId),
219
- // documentType: requestDocumentType,
220
- // data: {
221
- // ...buildDocumentPayloadToService(request.payload),
222
- // [key]: {
223
- // profile: buildDocumentProfileToService(request.payload.profile),
224
- // shipping: buildDocumentProfileOtherToService(request.payload.shipping),
225
- // billing: buildDocumentProfileOtherToService(request.payload.billing),
226
- // ...(request.payload?.items ? { items: buildDocumentItemsToService(request.payload.items) } : {}),
227
- // ...(request.payload?.totals ? { totals: buildDocumentTotalsToService(request.payload.totals) } : {}),
228
- // },
229
- // } as any,
230
- // };
231
- // const result = await fileService.updateFile(payload);
232
- // response = {
233
- // [getRootName(true)]: result,
234
- // };
235
- (0, utils_1.sendSuccess)(res, response, `File updated successfully`);
236
- }
237
- catch (error) {
238
- next(error);
239
- }
240
- };
241
- exports.updateFile = updateFile;
197
+ // export const updateFile = async (req: Request, res: Response, next: NextFunction): Promise<void> => {
198
+ // try {
199
+ // const { fileId } = req.params;
200
+ // // const requestDocumentType = req.body.scope.target as FileServiceProps["documentType"]
201
+ // const fileService = FileService({
202
+ // ...getDefaultServiceProps(req),
203
+ // })
204
+ // let response: any = {}
205
+ // let reqScope = req.body.scope
206
+ // let reqPayload = req.body.payload
207
+ // // const { schemaUpdate, key } = documentSalesMap[requestDocumentType as keyof typeof documentSalesMap];
208
+ // // const request = schemaUpdate.parse({
209
+ // // scope: { target: reqScope.target, action: reqScope.action },
210
+ // // payload: {
211
+ // // ...buildDocumentPayloadFromRequest(reqPayload),
212
+ // // profile: buildDocumentProfileFromRequest(reqPayload.profile),
213
+ // // shipping: buildDocumentProfileOtherFromRequest(reqPayload.shipping),
214
+ // // billing: buildDocumentProfileOtherFromRequest(reqPayload.billing),
215
+ // // ...(reqPayload?.items ? { items: buildDocumentItemsFromRequest(reqPayload.items) } : {}),
216
+ // // ...(reqPayload?.totals ? { totals: buildDocumentTotalsFromRequest(reqPayload.totals) } : {}),
217
+ // // },
218
+ // // });
219
+ // // const payload: DocumentUpdateProps = {
220
+ // // documentId: Number(documentId),
221
+ // // documentType: requestDocumentType,
222
+ // // data: {
223
+ // // ...buildDocumentPayloadToService(request.payload),
224
+ // // [key]: {
225
+ // // profile: buildDocumentProfileToService(request.payload.profile),
226
+ // // shipping: buildDocumentProfileOtherToService(request.payload.shipping),
227
+ // // billing: buildDocumentProfileOtherToService(request.payload.billing),
228
+ // // ...(request.payload?.items ? { items: buildDocumentItemsToService(request.payload.items) } : {}),
229
+ // // ...(request.payload?.totals ? { totals: buildDocumentTotalsToService(request.payload.totals) } : {}),
230
+ // // },
231
+ // // } as any,
232
+ // // };
233
+ // // const result = await fileService.updateFile(payload);
234
+ // // response = {
235
+ // // [getRootName(true)]: result,
236
+ // // };
237
+ // sendSuccess(res, response, `File updated successfully`)
238
+ // } catch (error: any) {
239
+ // next(error)
240
+ // }
241
+ // };
242
242
  /** files : list files */
243
243
  const listFiles = async (req, res, next) => {
244
244
  try {
@@ -275,11 +275,14 @@ const deleteFiles = async (req, res, next) => {
275
275
  // storageProviderName,
276
276
  // storageProviderOptions
277
277
  // } = getStorageProvider()
278
- const { storageProviderName, storageProviderOptions } = await getStorageSetup();
278
+ // const {
279
+ // storageProviderName,
280
+ // storageProviderOptions
281
+ // } = await getStorageSetup()
279
282
  const payload = {
280
283
  fileIds: request.payload.ids.map(i => BigInt(i)),
281
- storageProviderName,
282
- storageProviderOptions
284
+ // storageProviderName,
285
+ // storageProviderOptions
283
286
  };
284
287
  const data = await fileService.removeFiles(payload);
285
288
  return (0, utils_1.sendSuccess)(res, data, "Deleted", getRootName(false));
@@ -1 +1 @@
1
- {"version":3,"file":"fileController.js","sourceRoot":"","sources":["../../../src/controllers/file/fileController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\n\nimport path from \"path\";\n\nimport { getDefaultServiceProps, sendSuccess, sendError, HTTP_STATUS } from \"@/utils\"\n\nimport { FileService, FileUploadProps, FileImageCompressionOptions, FileVideoCompressionOptions } from \"@/services\"\nimport {\n schemaFileDeletePayload,\n schemaFileUploadPayload,\n} from \"@/schema/payload\";\n\nimport { QueryList } from \"@/schema/middleware/route\";\n\nimport { FileStorageHook } from \"@/features\"\n\nconst getRootName = (toSingular: boolean) => {\n\n let rootName = toSingular ? \"file\" : \"files\";\n\n return rootName\n}\n\n// const getStorageProvider = () => {\n\n// const storageProviderName = config.FILE_STORAGE_PROVIDER_NAME as FileUploadProps[\"storageProviderName\"]\n\n// let storageProviderOptions = {}\n\n// if (storageProviderName === \"local\") {\n// storageProviderOptions = {\n// basePath: `${config.FILE_STORAGE_LOCAL_BASE_PATH}`,\n// publicBaseUrl: `${config.FILE_STORAGE_LOCAL_BASE_URL}`,\n// skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_MODULE_REF),\n// skipFoldernameByDate: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_YEAR_MONTH)\n// }\n// }\n\n// if (storageProviderName === \"gcloud\") {\n// storageProviderOptions = {\n// bucketName: `${config.FILE_STORAGE_GCLOUD_BUCKET_NAME}`,\n// basePath: `${config.FILE_STORAGE_GCLOUD_BASE_PATH}`,\n// credentials: `${path.resolve(process.cwd(), `${config.FILE_STORAGE_GCLOUD_CREDENTIAL_PATH}`)}`,\n// publicBaseUrl: `${config.FILE_STORAGE_GCLOUD_BASE_URL}`,\n// skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_MODULE_REF),\n// skipFoldernameByDate: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_YEAR_MONTH)\n// }\n// }\n\n// return {\n// storageProviderName,\n// storageProviderOptions\n// }\n// }\n\nconst getStorageSetup = async () => {\n\n const hookSetup = await FileStorageHook.onSetup()\n\n let storageProviderOptions = {}\n\n if (hookSetup.storageType === \"local\") {\n storageProviderOptions = {\n // basePath: `${config.FILE_STORAGE_LOCAL_BASE_PATH}`,\n basePath: `${hookSetup.localStorageOptions.basePath}`,\n // publicBaseUrl: `${config.FILE_STORAGE_LOCAL_BASE_URL}`,\n publicBaseUrl: `${hookSetup.localStorageOptions.baseUrl}`,\n // skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_MODULE_REF),\n skipFoldernameByModuleRef: Boolean(hookSetup.localStorageOptions.skipFolderNameModuleRef),\n // skipFoldernameByDate: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_YEAR_MONTH)\n skipFoldernameByDate: Boolean(hookSetup.localStorageOptions.skipFolderNameYearMonth)\n }\n }\n\n if (hookSetup.storageType === \"gcloud\") {\n storageProviderOptions = {\n // basePath: `${config.FILE_STORAGE_GCLOUD_BASE_PATH}`,\n basePath: `${hookSetup.gcloudStorageOptions.basePath}`,\n // publicBaseUrl: `${config.FILE_STORAGE_GCLOUD_BASE_URL}`,\n publicBaseUrl: `${hookSetup.gcloudStorageOptions.baseUrl}`,\n // bucketName: `${config.FILE_STORAGE_GCLOUD_BUCKET_NAME}`,\n bucketName: `${hookSetup.gcloudStorageOptions.bucketName}`,\n // credentials: `${path.resolve(process.cwd(), `${config.FILE_STORAGE_GCLOUD_CREDENTIAL_PATH}`)}`,\n credentials: `${path.resolve(process.cwd(), `${hookSetup.gcloudStorageOptions.credentialPath}`)}`,\n // skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_MODULE_REF),\n skipFoldernameByModuleRef: Boolean(hookSetup.gcloudStorageOptions.skipFolderNameModuleRef),\n // skipFoldernameByDate: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_YEAR_MONTH)\n skipFoldernameByDate: Boolean(hookSetup.gcloudStorageOptions.skipFolderNameYearMonth)\n }\n }\n\n return {\n storageProviderName: hookSetup.storageType,\n storageProviderOptions,\n storageConfiguration: hookSetup.storageConfiguration\n }\n}\n\n/** file/:fileId : get file */\nexport const getFile = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n try {\n\n const { fileId } = req.params;\n // const requestQuery = req.query as unknown as QueryList;\n // const requestDocumentType = documentType as FileServiceProps[\"documentType\"];\n\n const fileService = FileService({\n ...getDefaultServiceProps(req),\n })\n\n const data = await fileService.getFile({ id: Number(fileId) })\n\n return sendSuccess(res, data, \"Retrieved successfully\", getRootName(true));\n\n } catch (error: any) {\n next(error)\n }\n}\n\n/** files : upload files */\nexport const uploadFiles = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n let reqBody = req.body\n let reqFiles = req.files\n\n const request = schemaFileUploadPayload.parse({\n field_ref: reqBody.field_ref,\n field_module: reqBody.field_module,\n description: reqBody.description,\n tagName: reqBody.tag_name,\n label: reqBody.label,\n refId: Number(reqBody.ref_id),\n refId2: Number(reqBody.ref_id_2),\n ...(reqBody?.ref_label ? { refLabel: reqBody.ref_label } : {}),\n ...(reqBody?.ref_label_2 ? { refLabel2: reqBody.ref_label_2 } : {}),\n ...(reqBody?.remark ? { remark: reqBody.remark } : {}),\n files: Array.isArray(reqFiles) ? reqFiles.map((file: any) => ({\n originalname: file.originalname,\n mimetype: file.mimetype,\n size: file.size,\n buffer: file.buffer,\n })) : [],\n });\n\n // const {\n // storageProviderName,\n // storageProviderOptions\n // } = getStorageProvider()\n\n\n // Image Compression\n // const imageCompressionOptions: FileImageCompressionOptions | undefined\n // = config.FILE_UPLOAD_IMAGE_MAX_WIDTH && config.FILE_UPLOAD_IMAGE_QUALITY\n // ? {\n // maxWidth: Number(config.FILE_UPLOAD_IMAGE_MAX_WIDTH),\n // quality: Number(config.FILE_UPLOAD_IMAGE_QUALITY),\n // }\n // : undefined;\n\n\n // Video Compression\n // const videoCompressionOptions: FileVideoCompressionOptions | undefined =\n // config.FILE_UPLOAD_VIDEO_COMPRESSION_CRF &&\n // config.FILE_UPLOAD_VIDEO_COMPRESSION_PRESET &&\n // config.FILE_UPLOAD_VIDEO_COMPRESSION_RESOLUTION\n // ? {\n // crf: Number(config.FILE_UPLOAD_VIDEO_COMPRESSION_CRF),\n // preset: config.FILE_UPLOAD_VIDEO_COMPRESSION_PRESET as FileVideoCompressionOptions[\"preset\"],\n // resolution: Number(config.FILE_UPLOAD_VIDEO_COMPRESSION_RESOLUTION),\n // }\n // : undefined;\n\n const {\n storageProviderName,\n storageProviderOptions,\n storageConfiguration\n } = await getStorageSetup()\n\n // Image Compression\n const imageCompressionOptions: FileImageCompressionOptions | undefined\n = storageConfiguration?.imageMaxWidth && storageConfiguration?.imageMaxWidth\n ? {\n maxWidth: Number(storageConfiguration.imageMaxWidth),\n quality: Number(storageConfiguration.imageQuality),\n }\n : undefined;\n\n // Video Compression\n const videoCompressionOptions: FileVideoCompressionOptions | undefined =\n storageConfiguration?.videoCRF &&\n storageConfiguration?.videoPreset &&\n storageConfiguration?.videoResolution\n ? {\n crf: Number(storageConfiguration.videoCRF),\n preset: storageConfiguration.videoPreset as FileVideoCompressionOptions[\"preset\"],\n resolution: Number(storageConfiguration.videoResolution),\n }\n : undefined;\n\n const fileService = FileService({\n ...getDefaultServiceProps(req),\n });\n\n const payload: FileUploadProps = {\n field_ref: reqBody.field_ref,\n field_module: reqBody.field_module,\n description: request.description,\n label: request.label,\n tagName: request.tagName ?? \"\",\n refId: request.refId ?? 0,\n refId2: request?.refId2 ?? 0,\n refLabel: request?.refLabel ?? \"\",\n refLabel2: request?.refLabel2 ?? \"\",\n remark: request?.remark ?? \"\",\n // foldernameDate: \"2025-01-01\", // empty to use current datetime\n storageProviderName,\n storageProviderOptions,\n ...(imageCompressionOptions ? { imageCompressionOptions } : {}),\n ...(videoCompressionOptions ? { videoCompressionOptions } : {}),\n files: request.files.map(file => ({\n buffer: file.buffer,\n originalName: file.originalname,\n mimeType: file.mimetype,\n sizeBytes: file.size,\n })),\n };\n\n const response = await fileService.uploadFiles(payload);\n\n return sendSuccess(res, response, \"Files uploaded successfully\");\n\n } catch (error) {\n next(error);\n }\n};\n\n/** file/:fileId : update file */\nexport const updateFile = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n try {\n\n const { fileId } = req.params;\n // const requestDocumentType = req.body.scope.target as FileServiceProps[\"documentType\"]\n\n const fileService = FileService({\n ...getDefaultServiceProps(req),\n })\n\n let response: any = {}\n\n let reqScope = req.body.scope\n let reqPayload = req.body.payload\n\n\n // const { schemaUpdate, key } = documentSalesMap[requestDocumentType as keyof typeof documentSalesMap];\n\n // const request = schemaUpdate.parse({\n // scope: { target: reqScope.target, action: reqScope.action },\n // payload: {\n // ...buildDocumentPayloadFromRequest(reqPayload),\n // profile: buildDocumentProfileFromRequest(reqPayload.profile),\n // shipping: buildDocumentProfileOtherFromRequest(reqPayload.shipping),\n // billing: buildDocumentProfileOtherFromRequest(reqPayload.billing),\n // ...(reqPayload?.items ? { items: buildDocumentItemsFromRequest(reqPayload.items) } : {}),\n // ...(reqPayload?.totals ? { totals: buildDocumentTotalsFromRequest(reqPayload.totals) } : {}),\n // },\n // });\n\n // const payload: DocumentUpdateProps = {\n // documentId: Number(documentId),\n // documentType: requestDocumentType,\n // data: {\n // ...buildDocumentPayloadToService(request.payload),\n // [key]: {\n // profile: buildDocumentProfileToService(request.payload.profile),\n // shipping: buildDocumentProfileOtherToService(request.payload.shipping),\n // billing: buildDocumentProfileOtherToService(request.payload.billing),\n // ...(request.payload?.items ? { items: buildDocumentItemsToService(request.payload.items) } : {}),\n // ...(request.payload?.totals ? { totals: buildDocumentTotalsToService(request.payload.totals) } : {}),\n // },\n // } as any,\n // };\n\n // const result = await fileService.updateFile(payload);\n\n // response = {\n // [getRootName(true)]: result,\n // };\n\n sendSuccess(res, response, `File updated successfully`)\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** files : list files */\nexport const listFiles = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const requestQuery = req.query as unknown as QueryList;\n // const requestDocumentType = req.params.documentType as FileServiceProps[\"documentType\"];\n\n const fileService = FileService({\n ...getDefaultServiceProps(req),\n })\n\n const { data, total } = await fileService.listFiles({\n ...requestQuery,\n });\n\n let response = {\n [`${getRootName(false)}`]: data,\n total,\n }\n\n return sendSuccess(res, response, \"Retrieved successfully\");\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** files/delete : delete files */\nexport const deleteFiles = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n // const requestDocumentType = req.body.scope.target as FileServiceProps[\"documentType\"]\n // const requestQuery = req.query as unknown as QueryList;\n // const requestFileId = Number(req.params.fileId)\n\n const request = schemaFileDeletePayload.parse(req.body)\n\n const fileService = FileService({\n ...getDefaultServiceProps(req),\n })\n\n // const {\n // storageProviderName,\n // storageProviderOptions\n // } = getStorageProvider()\n\n const {\n storageProviderName,\n storageProviderOptions\n } = await getStorageSetup()\n\n const payload = {\n fileIds: request.payload.ids.map(i => BigInt(i)),\n storageProviderName,\n storageProviderOptions\n }\n\n const data = await fileService.removeFiles(payload);\n\n return sendSuccess(res, data, \"Deleted\", getRootName(false));\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** file/data_types : get file data types */\n// export const getFileDataTypes = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n// try {\n\n// const requestQuery = req.query as unknown as QueryList;\n// // const requestDocumentType = req.params.documentType as FileServiceProps[\"documentType\"];\n\n// const fileService = FileService({\n// ...getDefaultServiceProps(req),\n// })\n\n// const data = fileService.getFileDataTypes();\n\n// let response = {\n// data_types: data\n// }\n\n// return sendSuccess(res, response, \"Retrieved successfully\");\n\n// } catch (error: any) {\n// next(error)\n// }\n// };\n"]}
1
+ {"version":3,"file":"fileController.js","sourceRoot":"","sources":["../../../src/controllers/file/fileController.ts"],"names":[],"mappings":"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","sourcesContent":["import { Request, Response, NextFunction } from \"express\";\n\n// import path from \"path\";\n\nimport { getDefaultServiceProps, sendSuccess, sendError, HTTP_STATUS } from \"@/utils\"\n\nimport { FileService, FileUploadProps, FileImageCompressionOptions, FileVideoCompressionOptions } from \"@/services\"\nimport {\n schemaFileDeletePayload,\n schemaFileUploadPayload,\n} from \"@/schema/payload\";\n\nimport { QueryList } from \"@/schema/middleware/route\";\n\nimport { FileStorageHook } from \"@/features\"\n\nconst getRootName = (toSingular: boolean) => {\n\n let rootName = toSingular ? \"file\" : \"files\";\n\n return rootName\n}\n\n// const getStorageProvider = () => {\n\n// const storageProviderName = config.FILE_STORAGE_PROVIDER_NAME as FileUploadProps[\"storageProviderName\"]\n\n// let storageProviderOptions = {}\n\n// if (storageProviderName === \"local\") {\n// storageProviderOptions = {\n// basePath: `${config.FILE_STORAGE_LOCAL_BASE_PATH}`,\n// publicBaseUrl: `${config.FILE_STORAGE_LOCAL_BASE_URL}`,\n// skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_MODULE_REF),\n// skipFoldernameByDate: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_YEAR_MONTH)\n// }\n// }\n\n// if (storageProviderName === \"gcloud\") {\n// storageProviderOptions = {\n// bucketName: `${config.FILE_STORAGE_GCLOUD_BUCKET_NAME}`,\n// basePath: `${config.FILE_STORAGE_GCLOUD_BASE_PATH}`,\n// credentials: `${path.resolve(process.cwd(), `${config.FILE_STORAGE_GCLOUD_CREDENTIAL_PATH}`)}`,\n// publicBaseUrl: `${config.FILE_STORAGE_GCLOUD_BASE_URL}`,\n// skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_MODULE_REF),\n// skipFoldernameByDate: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_YEAR_MONTH)\n// }\n// }\n\n// return {\n// storageProviderName,\n// storageProviderOptions\n// }\n// }\n\n// const getStorageSetup = async () => {\n\n// const hookSetup = await FileStorageHook.onSetup()\n\n// let storageProviderOptions = {}\n\n// if (hookSetup.storageType === \"local\") {\n// storageProviderOptions = {\n// // basePath: `${config.FILE_STORAGE_LOCAL_BASE_PATH}`,\n// basePath: `${hookSetup.localStorageOptions.basePath}`,\n// // publicBaseUrl: `${config.FILE_STORAGE_LOCAL_BASE_URL}`,\n// publicBaseUrl: `${hookSetup.localStorageOptions.baseUrl}`,\n// // skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_MODULE_REF),\n// skipFoldernameByModuleRef: Boolean(hookSetup.localStorageOptions.skipFolderNameModuleRef),\n// // skipFoldernameByDate: Boolean(config.FILE_STORAGE_LOCAL_SKIP_FOLDERNAME_YEAR_MONTH)\n// skipFoldernameByDate: Boolean(hookSetup.localStorageOptions.skipFolderNameYearMonth)\n// }\n// }\n\n// if (hookSetup.storageType === \"gcloud\") {\n// storageProviderOptions = {\n// // basePath: `${config.FILE_STORAGE_GCLOUD_BASE_PATH}`,\n// basePath: `${hookSetup.gcloudStorageOptions.basePath}`,\n// // publicBaseUrl: `${config.FILE_STORAGE_GCLOUD_BASE_URL}`,\n// publicBaseUrl: `${hookSetup.gcloudStorageOptions.baseUrl}`,\n// // bucketName: `${config.FILE_STORAGE_GCLOUD_BUCKET_NAME}`,\n// bucketName: `${hookSetup.gcloudStorageOptions.bucketName}`,\n// // credentials: `${path.resolve(process.cwd(), `${config.FILE_STORAGE_GCLOUD_CREDENTIAL_PATH}`)}`,\n// credentials: `${path.resolve(process.cwd(), `${hookSetup.gcloudStorageOptions.credentialPath}`)}`,\n// // skipFoldernameByModuleRef: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_MODULE_REF),\n// skipFoldernameByModuleRef: Boolean(hookSetup.gcloudStorageOptions.skipFolderNameModuleRef),\n// // skipFoldernameByDate: Boolean(config.FILE_STORAGE_GCLOUD_SKIP_FOLDERNAME_YEAR_MONTH)\n// skipFoldernameByDate: Boolean(hookSetup.gcloudStorageOptions.skipFolderNameYearMonth)\n// }\n// }\n\n// return {\n// storageProviderName: hookSetup.storageType,\n// storageProviderOptions,\n// storageConfiguration: hookSetup.storageConfiguration\n// }\n// }\n\n/** file/:fileId : get file */\nexport const getFile = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n try {\n\n const { fileId } = req.params;\n // const requestQuery = req.query as unknown as QueryList;\n // const requestDocumentType = documentType as FileServiceProps[\"documentType\"];\n\n const fileService = FileService({\n ...getDefaultServiceProps(req),\n })\n\n const data = await fileService.getFile({ id: Number(fileId) })\n\n return sendSuccess(res, data, \"Retrieved successfully\", getRootName(true));\n\n } catch (error: any) {\n next(error)\n }\n}\n\n/** files : upload files */\nexport const uploadFiles = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n let reqBody = req.body\n let reqFiles = req.files\n\n const request = schemaFileUploadPayload.parse({\n field_ref: reqBody.field_ref,\n field_module: reqBody.field_module,\n description: reqBody.description,\n tagName: reqBody.tag_name,\n label: reqBody.label,\n refId: Number(reqBody.ref_id),\n refId2: Number(reqBody.ref_id_2),\n ...(reqBody?.ref_label ? { refLabel: reqBody.ref_label } : {}),\n ...(reqBody?.ref_label_2 ? { refLabel2: reqBody.ref_label_2 } : {}),\n ...(reqBody?.remark ? { remark: reqBody.remark } : {}),\n files: Array.isArray(reqFiles) ? reqFiles.map((file: any) => ({\n originalname: file.originalname,\n mimetype: file.mimetype,\n size: file.size,\n buffer: file.buffer,\n })) : [],\n });\n\n // const {\n // storageProviderName,\n // storageProviderOptions\n // } = getStorageProvider()\n\n\n // Image Compression\n // const imageCompressionOptions: FileImageCompressionOptions | undefined\n // = config.FILE_UPLOAD_IMAGE_MAX_WIDTH && config.FILE_UPLOAD_IMAGE_QUALITY\n // ? {\n // maxWidth: Number(config.FILE_UPLOAD_IMAGE_MAX_WIDTH),\n // quality: Number(config.FILE_UPLOAD_IMAGE_QUALITY),\n // }\n // : undefined;\n\n\n // Video Compression\n // const videoCompressionOptions: FileVideoCompressionOptions | undefined =\n // config.FILE_UPLOAD_VIDEO_COMPRESSION_CRF &&\n // config.FILE_UPLOAD_VIDEO_COMPRESSION_PRESET &&\n // config.FILE_UPLOAD_VIDEO_COMPRESSION_RESOLUTION\n // ? {\n // crf: Number(config.FILE_UPLOAD_VIDEO_COMPRESSION_CRF),\n // preset: config.FILE_UPLOAD_VIDEO_COMPRESSION_PRESET as FileVideoCompressionOptions[\"preset\"],\n // resolution: Number(config.FILE_UPLOAD_VIDEO_COMPRESSION_RESOLUTION),\n // }\n // : undefined;\n\n // const {\n // storageProviderName,\n // storageProviderOptions,\n // storageConfiguration\n // } = await getStorageSetup()\n\n // // Image Compression\n // const imageCompressionOptions: FileImageCompressionOptions | undefined\n // = storageConfiguration?.imageMaxWidth && storageConfiguration?.imageMaxWidth\n // ? {\n // maxWidth: Number(storageConfiguration.imageMaxWidth),\n // quality: Number(storageConfiguration.imageQuality),\n // }\n // : undefined;\n\n // // Video Compression\n // const videoCompressionOptions: FileVideoCompressionOptions | undefined =\n // storageConfiguration?.videoCRF &&\n // storageConfiguration?.videoPreset &&\n // storageConfiguration?.videoResolution\n // ? {\n // crf: Number(storageConfiguration.videoCRF),\n // preset: storageConfiguration.videoPreset as FileVideoCompressionOptions[\"preset\"],\n // resolution: Number(storageConfiguration.videoResolution),\n // }\n // : undefined;\n\n const fileService = FileService({\n ...getDefaultServiceProps(req),\n });\n\n const payload: FileUploadProps = {\n field_ref: reqBody.field_ref,\n field_module: reqBody.field_module,\n description: request.description,\n label: request.label,\n tagName: request.tagName ?? \"\",\n refId: request.refId ?? 0,\n refId2: request?.refId2 ?? 0,\n refLabel: request?.refLabel ?? \"\",\n refLabel2: request?.refLabel2 ?? \"\",\n remark: request?.remark ?? \"\",\n // foldernameDate: \"2025-01-01\", // empty to use current datetime\n // storageProviderName,\n // storageProviderOptions,\n // ...(imageCompressionOptions ? { imageCompressionOptions } : {}),\n // ...(videoCompressionOptions ? { videoCompressionOptions } : {}),\n files: request.files.map(file => ({\n buffer: file.buffer,\n originalName: file.originalname,\n mimeType: file.mimetype,\n sizeBytes: file.size,\n })),\n };\n\n const response = await fileService.uploadFiles(payload);\n\n return sendSuccess(res, response, \"Files uploaded successfully\");\n\n } catch (error) {\n next(error);\n }\n};\n\n/** file/:fileId : update file */\n// export const updateFile = async (req: Request, res: Response, next: NextFunction): Promise<void> => {\n// try {\n\n// const { fileId } = req.params;\n// // const requestDocumentType = req.body.scope.target as FileServiceProps[\"documentType\"]\n\n// const fileService = FileService({\n// ...getDefaultServiceProps(req),\n// })\n\n// let response: any = {}\n\n// let reqScope = req.body.scope\n// let reqPayload = req.body.payload\n\n\n// // const { schemaUpdate, key } = documentSalesMap[requestDocumentType as keyof typeof documentSalesMap];\n\n// // const request = schemaUpdate.parse({\n// // scope: { target: reqScope.target, action: reqScope.action },\n// // payload: {\n// // ...buildDocumentPayloadFromRequest(reqPayload),\n// // profile: buildDocumentProfileFromRequest(reqPayload.profile),\n// // shipping: buildDocumentProfileOtherFromRequest(reqPayload.shipping),\n// // billing: buildDocumentProfileOtherFromRequest(reqPayload.billing),\n// // ...(reqPayload?.items ? { items: buildDocumentItemsFromRequest(reqPayload.items) } : {}),\n// // ...(reqPayload?.totals ? { totals: buildDocumentTotalsFromRequest(reqPayload.totals) } : {}),\n// // },\n// // });\n\n// // const payload: DocumentUpdateProps = {\n// // documentId: Number(documentId),\n// // documentType: requestDocumentType,\n// // data: {\n// // ...buildDocumentPayloadToService(request.payload),\n// // [key]: {\n// // profile: buildDocumentProfileToService(request.payload.profile),\n// // shipping: buildDocumentProfileOtherToService(request.payload.shipping),\n// // billing: buildDocumentProfileOtherToService(request.payload.billing),\n// // ...(request.payload?.items ? { items: buildDocumentItemsToService(request.payload.items) } : {}),\n// // ...(request.payload?.totals ? { totals: buildDocumentTotalsToService(request.payload.totals) } : {}),\n// // },\n// // } as any,\n// // };\n\n// // const result = await fileService.updateFile(payload);\n\n// // response = {\n// // [getRootName(true)]: result,\n// // };\n\n// sendSuccess(res, response, `File updated successfully`)\n\n// } catch (error: any) {\n// next(error)\n// }\n// };\n\n/** files : list files */\nexport const listFiles = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n const requestQuery = req.query as unknown as QueryList;\n // const requestDocumentType = req.params.documentType as FileServiceProps[\"documentType\"];\n\n const fileService = FileService({\n ...getDefaultServiceProps(req),\n })\n\n const { data, total } = await fileService.listFiles({\n ...requestQuery,\n });\n\n let response = {\n [`${getRootName(false)}`]: data,\n total,\n }\n\n return sendSuccess(res, response, \"Retrieved successfully\");\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** files/delete : delete files */\nexport const deleteFiles = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n try {\n\n // const requestDocumentType = req.body.scope.target as FileServiceProps[\"documentType\"]\n // const requestQuery = req.query as unknown as QueryList;\n // const requestFileId = Number(req.params.fileId)\n\n const request = schemaFileDeletePayload.parse(req.body)\n\n const fileService = FileService({\n ...getDefaultServiceProps(req),\n })\n\n // const {\n // storageProviderName,\n // storageProviderOptions\n // } = getStorageProvider()\n\n // const {\n // storageProviderName,\n // storageProviderOptions\n // } = await getStorageSetup()\n\n const payload = {\n fileIds: request.payload.ids.map(i => BigInt(i)),\n // storageProviderName,\n // storageProviderOptions\n }\n\n const data = await fileService.removeFiles(payload);\n\n return sendSuccess(res, data, \"Deleted\", getRootName(false));\n\n } catch (error: any) {\n next(error)\n }\n};\n\n/** file/data_types : get file data types */\n// export const getFileDataTypes = async (req: Request, res: Response, next: NextFunction): Promise<any> => {\n\n// try {\n\n// const requestQuery = req.query as unknown as QueryList;\n// // const requestDocumentType = req.params.documentType as FileServiceProps[\"documentType\"];\n\n// const fileService = FileService({\n// ...getDefaultServiceProps(req),\n// })\n\n// const data = fileService.getFileDataTypes();\n\n// let response = {\n// data_types: data\n// }\n\n// return sendSuccess(res, response, \"Retrieved successfully\");\n\n// } catch (error: any) {\n// next(error)\n// }\n// };\n"]}
@@ -9,7 +9,7 @@ export { createUserBranch, updateUserBranch, getUserBranch, listUserBranches, de
9
9
  export { createDocument, updateDocument, getDocument, listDocuments, deleteDocuments, getDocumentDataTypes } from '../controllers/document/documentController';
10
10
  export { createRegion, updateRegion, getRegion, listRegions, deleteRegions, getRegionDataTypes } from '../controllers/region/regionController';
11
11
  export { createLocation, updateLocation, getLocation, listLocations, deleteLocations, getLocationDataTypes } from '../controllers/location/locationController';
12
- export { uploadFiles, updateFile, getFile, listFiles, deleteFiles } from '../controllers/file/fileController';
12
+ export { uploadFiles, getFile, listFiles, deleteFiles } from '../controllers/file/fileController';
13
13
  export { createItem, updateItem, getItem, listItems, deleteItems, getItemDataTypes } from '../controllers/item/itemController';
14
14
  export { listInjectionFields, getInjectionField, replaceInjectionFields, createInjectionField, deleteInjectionFields } from '../controllers/injection_field/injectionFieldController';
15
15
  export { changePasswordUtil } from '../controllers/utils/changePasswordUtilController';
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getLocationDataTypes = exports.deleteLocations = exports.listLocations = exports.getLocation = exports.updateLocation = exports.createLocation = exports.getRegionDataTypes = exports.deleteRegions = exports.listRegions = exports.getRegion = exports.updateRegion = exports.createRegion = exports.getDocumentDataTypes = exports.deleteDocuments = exports.listDocuments = exports.getDocument = exports.updateDocument = exports.createDocument = exports.getUserBranchDataTypes = exports.deleteUserBranches = exports.listUserBranches = exports.getUserBranch = exports.updateUserBranch = exports.createUserBranch = exports.getUserDataTypes = exports.deleteUsers = exports.listUsers = exports.getUser = exports.updateUser = exports.createUser = exports.updateBusiness = exports.deleteBusinesses = exports.createBusiness = exports.listBusinesses = exports.getBusiness = exports.updateAccount = exports.deleteAccounts = exports.createAccount = exports.listAccounts = exports.getAccount = exports.performResetPassword = exports.validateResetPasswordCode = exports.requestResetPassword = exports.getOneTimeCode = exports.listOneTimeCodes = exports.revokeAccessKeys = exports.getAccessKey = exports.listAccessKeys = exports.createAccessKey = exports.getAuthToken = void 0;
4
- exports.getAccountOwnerAccessKeyUtil = exports.validateAccessKeyUtil = exports.changePasswordUtil = exports.deleteInjectionFields = exports.createInjectionField = exports.replaceInjectionFields = exports.getInjectionField = exports.listInjectionFields = exports.getItemDataTypes = exports.deleteItems = exports.listItems = exports.getItem = exports.updateItem = exports.createItem = exports.deleteFiles = exports.listFiles = exports.getFile = exports.updateFile = exports.uploadFiles = void 0;
4
+ exports.getAccountOwnerAccessKeyUtil = exports.validateAccessKeyUtil = exports.changePasswordUtil = exports.deleteInjectionFields = exports.createInjectionField = exports.replaceInjectionFields = exports.getInjectionField = exports.listInjectionFields = exports.getItemDataTypes = exports.deleteItems = exports.listItems = exports.getItem = exports.updateItem = exports.createItem = exports.deleteFiles = exports.listFiles = exports.getFile = exports.uploadFiles = void 0;
5
5
  var authController_1 = require("../controllers/auth/authController");
6
6
  Object.defineProperty(exports, "getAuthToken", { enumerable: true, get: function () { return authController_1.getAuthToken; } });
7
7
  var accessKeyController_1 = require("../controllers/access_key/accessKeyController");
@@ -65,7 +65,6 @@ Object.defineProperty(exports, "deleteLocations", { enumerable: true, get: funct
65
65
  Object.defineProperty(exports, "getLocationDataTypes", { enumerable: true, get: function () { return locationController_1.getLocationDataTypes; } });
66
66
  var fileController_1 = require("../controllers/file/fileController");
67
67
  Object.defineProperty(exports, "uploadFiles", { enumerable: true, get: function () { return fileController_1.uploadFiles; } });
68
- Object.defineProperty(exports, "updateFile", { enumerable: true, get: function () { return fileController_1.updateFile; } });
69
68
  Object.defineProperty(exports, "getFile", { enumerable: true, get: function () { return fileController_1.getFile; } });
70
69
  Object.defineProperty(exports, "listFiles", { enumerable: true, get: function () { return fileController_1.listFiles; } });
71
70
  Object.defineProperty(exports, "deleteFiles", { enumerable: true, get: function () { return fileController_1.deleteFiles; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controllers/index.ts"],"names":[],"mappings":";;;;AAAA,oEAAiE;AAAxD,8GAAA,YAAY,OAAA;AACrB,oFAA+H;AAAtH,sHAAA,eAAe,OAAA;AAAE,qHAAA,cAAc,OAAA;AAAE,mHAAA,YAAY,OAAA;AAAE,uHAAA,gBAAgB,OAAA;AACxE,2FAAqG;AAA5F,yHAAA,gBAAgB,OAAA;AAAE,uHAAA,cAAc,OAAA;AACzC,gGAA6I;AAApI,+HAAA,oBAAoB,OAAA;AAAE,oIAAA,yBAAyB,OAAA;AAAE,+HAAA,oBAAoB,OAAA;AAC9E,6EAAiI;AAAxH,+GAAA,UAAU,OAAA;AAAE,iHAAA,YAAY,OAAA;AAAE,kHAAA,aAAa,OAAA;AAAE,mHAAA,cAAc,OAAA;AAAE,kHAAA,aAAa,OAAA;AAC/E,gFAA0I;AAAjI,iHAAA,WAAW,OAAA;AAAE,oHAAA,cAAc,OAAA;AAAE,oHAAA,cAAc,OAAA;AAAE,sHAAA,gBAAgB,OAAA;AAAE,oHAAA,cAAc,OAAA;AACtF,oEAA8H;AAArH,4GAAA,UAAU,OAAA;AAAE,4GAAA,UAAU,OAAA;AAAE,yGAAA,OAAO,OAAA;AAAE,2GAAA,SAAS,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAClF,kFAA4K;AAAnK,wHAAA,gBAAgB,OAAA;AAAE,wHAAA,gBAAgB,OAAA;AAAE,qHAAA,aAAa,OAAA;AAAE,wHAAA,gBAAgB,OAAA;AAAE,0HAAA,kBAAkB,OAAA;AAAE,8HAAA,sBAAsB,OAAA;AACxH,gFAA8J;AAArJ,oHAAA,cAAc,OAAA;AAAE,oHAAA,cAAc,OAAA;AAAE,iHAAA,WAAW,OAAA;AAAE,mHAAA,aAAa,OAAA;AAAE,qHAAA,eAAe,OAAA;AAAE,0HAAA,oBAAoB,OAAA;AAC1G,0EAA8I;AAArI,gHAAA,YAAY,OAAA;AAAE,gHAAA,YAAY,OAAA;AAAE,6GAAA,SAAS,OAAA;AAAE,+GAAA,WAAW,OAAA;AAAE,iHAAA,aAAa,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAC9F,gFAA8J;AAArJ,oHAAA,cAAc,OAAA;AAAE,oHAAA,cAAc,OAAA;AAAE,iHAAA,WAAW,OAAA;AAAE,mHAAA,aAAa,OAAA;AAAE,qHAAA,eAAe,OAAA;AAAE,0HAAA,oBAAoB,OAAA;AAC1G,oEAA6G;AAApG,6GAAA,WAAW,OAAA;AAAE,4GAAA,UAAU,OAAA;AAAE,yGAAA,OAAO,OAAA;AAAE,2GAAA,SAAS,OAAA;AAAE,6GAAA,WAAW,OAAA;AACjE,oEAA8H;AAArH,4GAAA,UAAU,OAAA;AAAE,4GAAA,UAAU,OAAA;AAAE,yGAAA,OAAO,OAAA;AAAE,2GAAA,SAAS,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAClF,mGAAqL;AAA5K,+HAAA,mBAAmB,OAAA;AAAE,6HAAA,iBAAiB,OAAA;AAAE,kIAAA,sBAAsB,OAAA;AAAE,gIAAA,oBAAoB,OAAA;AAAE,iIAAA,qBAAqB,OAAA;AAEpH,iGAAsF;AAA7E,kIAAA,kBAAkB,OAAA;AAC3B,uFAAkH;AAAzG,gIAAA,qBAAqB,OAAA;AAAE,uIAAA,4BAA4B,OAAA","sourcesContent":["export { getAuthToken } from '@/controllers/auth/authController';\nexport { createAccessKey, listAccessKeys, getAccessKey, revokeAccessKeys } from '@/controllers/access_key/accessKeyController';\nexport { listOneTimeCodes, getOneTimeCode } from '@/controllers/one_time_code/oneTimeCodeController';\nexport { requestResetPassword, validateResetPasswordCode, performResetPassword } from '@/controllers/reset_password/resetPasswordController';\nexport { getAccount, listAccounts, createAccount, deleteAccounts, updateAccount } from '@/controllers/account/accountController';\nexport { getBusiness, listBusinesses, createBusiness, deleteBusinesses, updateBusiness } from '@/controllers/business/businessController';\nexport { createUser, updateUser, getUser, listUsers, deleteUsers, getUserDataTypes } from '@/controllers/user/userController';\nexport { createUserBranch, updateUserBranch, getUserBranch, listUserBranches, deleteUserBranches, getUserBranchDataTypes } from '@/controllers/branch/userBranchController';\nexport { createDocument, updateDocument, getDocument, listDocuments, deleteDocuments, getDocumentDataTypes } from '@/controllers/document/documentController';\nexport { createRegion, updateRegion, getRegion, listRegions, deleteRegions, getRegionDataTypes } from '@/controllers/region/regionController';\nexport { createLocation, updateLocation, getLocation, listLocations, deleteLocations, getLocationDataTypes } from '@/controllers/location/locationController';\nexport { uploadFiles, updateFile, getFile, listFiles, deleteFiles } from '@/controllers/file/fileController';\nexport { createItem, updateItem, getItem, listItems, deleteItems, getItemDataTypes } from '@/controllers/item/itemController';\nexport { listInjectionFields, getInjectionField, replaceInjectionFields, createInjectionField, deleteInjectionFields } from '@/controllers/injection_field/injectionFieldController';\n\nexport { changePasswordUtil } from '@/controllers/utils/changePasswordUtilController';\nexport { validateAccessKeyUtil, getAccountOwnerAccessKeyUtil } from '@/controllers/utils/accessKeyUtilController';"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/controllers/index.ts"],"names":[],"mappings":";;;;AAAA,oEAAiE;AAAxD,8GAAA,YAAY,OAAA;AACrB,oFAA+H;AAAtH,sHAAA,eAAe,OAAA;AAAE,qHAAA,cAAc,OAAA;AAAE,mHAAA,YAAY,OAAA;AAAE,uHAAA,gBAAgB,OAAA;AACxE,2FAAqG;AAA5F,yHAAA,gBAAgB,OAAA;AAAE,uHAAA,cAAc,OAAA;AACzC,gGAA6I;AAApI,+HAAA,oBAAoB,OAAA;AAAE,oIAAA,yBAAyB,OAAA;AAAE,+HAAA,oBAAoB,OAAA;AAC9E,6EAAiI;AAAxH,+GAAA,UAAU,OAAA;AAAE,iHAAA,YAAY,OAAA;AAAE,kHAAA,aAAa,OAAA;AAAE,mHAAA,cAAc,OAAA;AAAE,kHAAA,aAAa,OAAA;AAC/E,gFAA0I;AAAjI,iHAAA,WAAW,OAAA;AAAE,oHAAA,cAAc,OAAA;AAAE,oHAAA,cAAc,OAAA;AAAE,sHAAA,gBAAgB,OAAA;AAAE,oHAAA,cAAc,OAAA;AACtF,oEAA8H;AAArH,4GAAA,UAAU,OAAA;AAAE,4GAAA,UAAU,OAAA;AAAE,yGAAA,OAAO,OAAA;AAAE,2GAAA,SAAS,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAClF,kFAA4K;AAAnK,wHAAA,gBAAgB,OAAA;AAAE,wHAAA,gBAAgB,OAAA;AAAE,qHAAA,aAAa,OAAA;AAAE,wHAAA,gBAAgB,OAAA;AAAE,0HAAA,kBAAkB,OAAA;AAAE,8HAAA,sBAAsB,OAAA;AACxH,gFAA8J;AAArJ,oHAAA,cAAc,OAAA;AAAE,oHAAA,cAAc,OAAA;AAAE,iHAAA,WAAW,OAAA;AAAE,mHAAA,aAAa,OAAA;AAAE,qHAAA,eAAe,OAAA;AAAE,0HAAA,oBAAoB,OAAA;AAC1G,0EAA8I;AAArI,gHAAA,YAAY,OAAA;AAAE,gHAAA,YAAY,OAAA;AAAE,6GAAA,SAAS,OAAA;AAAE,+GAAA,WAAW,OAAA;AAAE,iHAAA,aAAa,OAAA;AAAE,sHAAA,kBAAkB,OAAA;AAC9F,gFAA8J;AAArJ,oHAAA,cAAc,OAAA;AAAE,oHAAA,cAAc,OAAA;AAAE,iHAAA,WAAW,OAAA;AAAE,mHAAA,aAAa,OAAA;AAAE,qHAAA,eAAe,OAAA;AAAE,0HAAA,oBAAoB,OAAA;AAC1G,oEAAiG;AAAxF,6GAAA,WAAW,OAAA;AAAE,yGAAA,OAAO,OAAA;AAAE,2GAAA,SAAS,OAAA;AAAE,6GAAA,WAAW,OAAA;AACrD,oEAA8H;AAArH,4GAAA,UAAU,OAAA;AAAE,4GAAA,UAAU,OAAA;AAAE,yGAAA,OAAO,OAAA;AAAE,2GAAA,SAAS,OAAA;AAAE,6GAAA,WAAW,OAAA;AAAE,kHAAA,gBAAgB,OAAA;AAClF,mGAAqL;AAA5K,+HAAA,mBAAmB,OAAA;AAAE,6HAAA,iBAAiB,OAAA;AAAE,kIAAA,sBAAsB,OAAA;AAAE,gIAAA,oBAAoB,OAAA;AAAE,iIAAA,qBAAqB,OAAA;AAEpH,iGAAsF;AAA7E,kIAAA,kBAAkB,OAAA;AAC3B,uFAAkH;AAAzG,gIAAA,qBAAqB,OAAA;AAAE,uIAAA,4BAA4B,OAAA","sourcesContent":["export { getAuthToken } from '@/controllers/auth/authController';\nexport { createAccessKey, listAccessKeys, getAccessKey, revokeAccessKeys } from '@/controllers/access_key/accessKeyController';\nexport { listOneTimeCodes, getOneTimeCode } from '@/controllers/one_time_code/oneTimeCodeController';\nexport { requestResetPassword, validateResetPasswordCode, performResetPassword } from '@/controllers/reset_password/resetPasswordController';\nexport { getAccount, listAccounts, createAccount, deleteAccounts, updateAccount } from '@/controllers/account/accountController';\nexport { getBusiness, listBusinesses, createBusiness, deleteBusinesses, updateBusiness } from '@/controllers/business/businessController';\nexport { createUser, updateUser, getUser, listUsers, deleteUsers, getUserDataTypes } from '@/controllers/user/userController';\nexport { createUserBranch, updateUserBranch, getUserBranch, listUserBranches, deleteUserBranches, getUserBranchDataTypes } from '@/controllers/branch/userBranchController';\nexport { createDocument, updateDocument, getDocument, listDocuments, deleteDocuments, getDocumentDataTypes } from '@/controllers/document/documentController';\nexport { createRegion, updateRegion, getRegion, listRegions, deleteRegions, getRegionDataTypes } from '@/controllers/region/regionController';\nexport { createLocation, updateLocation, getLocation, listLocations, deleteLocations, getLocationDataTypes } from '@/controllers/location/locationController';\nexport { uploadFiles, getFile, listFiles, deleteFiles } from '@/controllers/file/fileController';\nexport { createItem, updateItem, getItem, listItems, deleteItems, getItemDataTypes } from '@/controllers/item/itemController';\nexport { listInjectionFields, getInjectionField, replaceInjectionFields, createInjectionField, deleteInjectionFields } from '@/controllers/injection_field/injectionFieldController';\n\nexport { changePasswordUtil } from '@/controllers/utils/changePasswordUtilController';\nexport { validateAccessKeyUtil, getAccountOwnerAccessKeyUtil } from '@/controllers/utils/accessKeyUtilController';"]}
@@ -1,4 +1,4 @@
1
- import { FileStorageProviderType, FileUploadProps, FileCategoryName, FileUploadItem } from "../../services";
1
+ import { FileStorageProviderType, FileLocalProviderOptions, FileGoogleCloudProviderOptions, FileImageCompressionOptions, FileVideoCompressionOptions, FileUploadProps, FileCategoryName, FileUploadItem } from "../../services";
2
2
  export type FeatureFileStorageType = FileStorageProviderType;
3
3
  export type FeatureFileStorageConfiguration = {
4
4
  uploadMaxSize: number;
@@ -45,8 +45,8 @@ type DefaultUpload = {
45
45
  description: FileUploadProps["description"];
46
46
  foldernameDate: FileUploadProps["foldernameDate"];
47
47
  file: FileUploadItem;
48
- storageProviderName: FileUploadProps["storageProviderName"];
49
- storageProviderOptions: FileUploadProps["storageProviderOptions"];
48
+ storageProviderName: FileStorageProviderType;
49
+ storageProviderOptions: FileLocalProviderOptions | FileGoogleCloudProviderOptions;
50
50
  fileCategoryName: FileCategoryName;
51
51
  batchCode: string;
52
52
  mimeType: string;
@@ -54,8 +54,8 @@ type DefaultUpload = {
54
54
  bufferFileThumbnail: Buffer;
55
55
  outputSizeBytes: number;
56
56
  fileCompressFormat: any;
57
- imageCompressionOptions: FileUploadProps["imageCompressionOptions"];
58
- videoCompressionOptions: FileUploadProps["videoCompressionOptions"];
57
+ imageCompressionOptions?: FileImageCompressionOptions;
58
+ videoCompressionOptions?: FileVideoCompressionOptions;
59
59
  };
60
60
  export type FeatureFileStorageStartUploadProps = DefaultUpload & {};
61
61
  export type FeatureFileStorageSuccessUploadProps = DefaultUpload & {
@@ -1 +1 @@
1
- {"version":3,"file":"fileStorageType.js","sourceRoot":"","sources":["../../../src/features/file_storage/fileStorageType.ts"],"names":[],"mappings":"","sourcesContent":["import { FileStorageProviderType, FileUploadProps, FileCategoryName, FileUploadItem } from \"@/services\";\n\nexport type FeatureFileStorageType = FileStorageProviderType\n\nexport type FeatureFileStorageConfiguration = {\n uploadMaxSize: number // e.g., 52428800 (50 MB)\n allowedFileTypes: string[] // e.g., [\"image/jpeg\", \"image/png\", \"application/pdf\", \"video/mp4\"]\n imageMaxWidth?: number // max width for images (e.g., 800)\n imageQuality?: number // compression quality (1-100)\n videoCRF?: number // Compression rate factor, lower = higher quality (e.g., 28)\n videoPreset?: \"ultrafast\" | \"superfast\" | \"veryfast\" | \"faster\" | \"fast\" | \"medium\" | \"slow\" | \"slower\" | \"veryslow\";\n videoResolution?: number; // Max width for videos, preserves aspect ratio (e.g., 1280)\n}\n\nexport type FeatureFileStorageLocalOptions = {\n basePath: string\n baseUrl: string\n skipFolderNameModuleRef: boolean\n skipFolderNameYearMonth: boolean\n}\n\nexport type FeatureFileStorageGoogleCloudOptions = {\n bucketName: string\n credentialPath: string\n baseUrl: string\n basePath: string\n skipFolderNameModuleRef: boolean\n skipFolderNameYearMonth: boolean\n}\n\n/* 🔑 Discriminated union */\nexport type FeatureFileStorageOptions =\n | {\n storageType: \"local\"\n storageConfiguration: FeatureFileStorageConfiguration\n localStorageOptions: FeatureFileStorageLocalOptions\n }\n | {\n storageType: \"gcloud\"\n storageConfiguration: FeatureFileStorageConfiguration\n gcloudStorageOptions: FeatureFileStorageGoogleCloudOptions\n }\n\ntype DefaultUpload = {\n fieldRef: FileUploadProps[\"field_ref\"],\n fieldModule: FileUploadProps[\"field_module\"],\n tagName: FileUploadProps[\"tagName\"],\n label: FileUploadProps[\"label\"],\n refId: FileUploadProps[\"refId\"],\n refId2: FileUploadProps[\"refId2\"],\n refLabel: FileUploadProps[\"refLabel\"],\n refLabel2: FileUploadProps[\"refLabel2\"],\n remark: FileUploadProps[\"remark\"],\n description: FileUploadProps[\"description\"],\n foldernameDate: FileUploadProps[\"foldernameDate\"],\n file: FileUploadItem,\n storageProviderName: FileUploadProps[\"storageProviderName\"],\n storageProviderOptions: FileUploadProps[\"storageProviderOptions\"],\n fileCategoryName: FileCategoryName,\n batchCode: string,\n mimeType: string,\n bufferFilebuffer: Buffer,\n bufferFileThumbnail: Buffer,\n outputSizeBytes: number,\n fileCompressFormat: any,\n imageCompressionOptions: FileUploadProps[\"imageCompressionOptions\"],\n videoCompressionOptions: FileUploadProps[\"videoCompressionOptions\"]\n}\n\nexport type FeatureFileStorageStartUploadProps = DefaultUpload & {\n\n}\n\nexport type FeatureFileStorageSuccessUploadProps = DefaultUpload & {\n fileId: number,\n fileThumbnailUrl: string,\n fileAssetUrl: string,\n fileDurationSeconds: number,\n}\n\nexport type FeatureFileStorageProps = {\n onSetup: () => Promise<FeatureFileStorageOptions>,\n onStartUpload: (payload: FeatureFileStorageStartUploadProps) => Promise<any>\n onSuccessUpload: (payload: FeatureFileStorageSuccessUploadProps) => Promise<any>\n}"]}
1
+ {"version":3,"file":"fileStorageType.js","sourceRoot":"","sources":["../../../src/features/file_storage/fileStorageType.ts"],"names":[],"mappings":"","sourcesContent":["import {\n FileStorageProviderType,\n FileLocalProviderOptions,\n FileGoogleCloudProviderOptions,\n FileImageCompressionOptions,\n FileVideoCompressionOptions,\n FileUploadProps,\n FileCategoryName,\n FileUploadItem\n} from \"@/services\";\n\nexport type FeatureFileStorageType = FileStorageProviderType\n\nexport type FeatureFileStorageConfiguration = {\n uploadMaxSize: number // e.g., 52428800 (50 MB)\n allowedFileTypes: string[] // e.g., [\"image/jpeg\", \"image/png\", \"application/pdf\", \"video/mp4\"]\n imageMaxWidth?: number // max width for images (e.g., 800)\n imageQuality?: number // compression quality (1-100)\n videoCRF?: number // Compression rate factor, lower = higher quality (e.g., 28)\n videoPreset?: \"ultrafast\" | \"superfast\" | \"veryfast\" | \"faster\" | \"fast\" | \"medium\" | \"slow\" | \"slower\" | \"veryslow\";\n videoResolution?: number; // Max width for videos, preserves aspect ratio (e.g., 1280)\n}\n\nexport type FeatureFileStorageLocalOptions = {\n basePath: string\n baseUrl: string\n skipFolderNameModuleRef: boolean\n skipFolderNameYearMonth: boolean\n}\n\nexport type FeatureFileStorageGoogleCloudOptions = {\n bucketName: string\n credentialPath: string\n baseUrl: string\n basePath: string\n skipFolderNameModuleRef: boolean\n skipFolderNameYearMonth: boolean\n}\n\n/* 🔑 Discriminated union */\nexport type FeatureFileStorageOptions =\n | {\n storageType: \"local\"\n storageConfiguration: FeatureFileStorageConfiguration\n localStorageOptions: FeatureFileStorageLocalOptions\n }\n | {\n storageType: \"gcloud\"\n storageConfiguration: FeatureFileStorageConfiguration\n gcloudStorageOptions: FeatureFileStorageGoogleCloudOptions\n }\n\ntype DefaultUpload = {\n fieldRef: FileUploadProps[\"field_ref\"],\n fieldModule: FileUploadProps[\"field_module\"],\n tagName: FileUploadProps[\"tagName\"],\n label: FileUploadProps[\"label\"],\n refId: FileUploadProps[\"refId\"],\n refId2: FileUploadProps[\"refId2\"],\n refLabel: FileUploadProps[\"refLabel\"],\n refLabel2: FileUploadProps[\"refLabel2\"],\n remark: FileUploadProps[\"remark\"],\n description: FileUploadProps[\"description\"],\n foldernameDate: FileUploadProps[\"foldernameDate\"],\n file: FileUploadItem,\n storageProviderName: FileStorageProviderType,\n storageProviderOptions: FileLocalProviderOptions | FileGoogleCloudProviderOptions,\n fileCategoryName: FileCategoryName,\n batchCode: string,\n mimeType: string,\n bufferFilebuffer: Buffer,\n bufferFileThumbnail: Buffer,\n outputSizeBytes: number,\n fileCompressFormat: any,\n imageCompressionOptions?: FileImageCompressionOptions,\n videoCompressionOptions?: FileVideoCompressionOptions\n}\n\nexport type FeatureFileStorageStartUploadProps = DefaultUpload & {\n\n}\n\nexport type FeatureFileStorageSuccessUploadProps = DefaultUpload & {\n fileId: number,\n fileThumbnailUrl: string,\n fileAssetUrl: string,\n fileDurationSeconds: number,\n}\n\nexport type FeatureFileStorageProps = {\n onSetup: () => Promise<FeatureFileStorageOptions>,\n onStartUpload: (payload: FeatureFileStorageStartUploadProps) => Promise<any>\n onSuccessUpload: (payload: FeatureFileStorageSuccessUploadProps) => Promise<any>\n}"]}
@@ -17,7 +17,7 @@ export type AuthorizeRequest = Request & {
17
17
  /**
18
18
  * Combined middleware: JWT or Access Key
19
19
  */
20
- export declare const validateAuthorization: (options?: ValidateAuthOptions) => (req: Request, res: Response, next: NextFunction) => Promise<void | Response<any, Record<string, any>>>;
20
+ export declare const validateAuthorization: (options?: ValidateAuthOptions) => (req: Request, res: Response, next: NextFunction) => Promise<void>;
21
21
  /**
22
22
  * Validate Access Key
23
23
  */
@@ -45,22 +45,29 @@ const validateAuthorization = (options = {
45
45
  // console.log('reqTyped', reqTyped)
46
46
  if (valid)
47
47
  return next();
48
+ (0, utils_1.throwError)(`Invalid access key`);
49
+ // return sendError(res, "UNAUTHORIZED", "Invalid access key", "", "", HTTP_STATUS.UNAUTHORIZED);
48
50
  }
49
51
  // Fallback: JWT
50
52
  if (!authHeader) {
51
- return (0, utils_1.sendError)(res, "UNAUTHORIZED", "Missing authorization token or access key", "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
53
+ (0, utils_1.throwError)(`Missing authorization token or access key`);
54
+ // return sendError(res, "UNAUTHORIZED", "", "", "Missing authorization token or access key", HTTP_STATUS.UNAUTHORIZED);
52
55
  }
53
56
  const token = authHeader.split(" ")[1];
54
57
  if (!token) {
55
- return (0, utils_1.sendError)(res, "UNAUTHORIZED", "Invalid authorization token format", "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
58
+ (0, utils_1.throwError)(`Invalid authorization token format`);
59
+ // return sendError(res, "UNAUTHORIZED", "Invalid authorization token format", "", "", HTTP_STATUS.UNAUTHORIZED);
56
60
  }
57
61
  const valid = validateJWT(token, reqTyped, res, next);
58
62
  if (valid)
59
63
  return next();
60
64
  }
61
65
  catch (err) {
62
- console.error("Authorization error:", err);
63
- return (0, utils_1.sendError)(res, "UNAUTHORIZED", "Unauthorized", "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
66
+ // console.error("Authorization error:", err);
67
+ // throwError(`Unauthorized: ${err}`)
68
+ // sendError(res, "UNAUTHORIZED", "Unauthorized", "", "", HTTP_STATUS.UNAUTHORIZED);
69
+ (0, utils_1.sendError)(res, "UNAUTHORIZED", `${err?.message ?? err}`, "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
70
+ return;
64
71
  }
65
72
  };
66
73
  };
@@ -86,7 +93,7 @@ const validateAccessKeyMiddleware = async (accessKey, req, res) => {
86
93
  accountId: Number(accessKeyData.accountid),
87
94
  actionUserId: Number(accessKeyData.user_id),
88
95
  authToken: "",
89
- isOperator: false,
96
+ isOperator: Boolean(accessKeyData.user_type === "operator"),
90
97
  accessKeyId: `${accessKeyData?.key_id}`,
91
98
  accessKey: `${accessKey}`
92
99
  // isAccessKey: true,
@@ -95,7 +102,7 @@ const validateAccessKeyMiddleware = async (accessKey, req, res) => {
95
102
  return true;
96
103
  }
97
104
  catch (err) {
98
- (0, utils_1.sendError)(res, "UNAUTHORIZED", err.message || "Invalid access key", "", "", utils_1.HTTP_STATUS.UNAUTHORIZED);
105
+ // sendError(res, "UNAUTHORIZED", err.message || "Invalid access key", "", "", HTTP_STATUS.UNAUTHORIZED);
99
106
  return false;
100
107
  }
101
108
  };