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.
- package/dist/controllers/file/fileController.d.ts +0 -1
- package/dist/controllers/file/fileController.js +118 -115
- package/dist/controllers/file/fileController.js.map +1 -1
- package/dist/controllers/index.d.ts +1 -1
- package/dist/controllers/index.js +1 -2
- package/dist/controllers/index.js.map +1 -1
- package/dist/features/file_storage/fileStorageType.d.ts +5 -5
- package/dist/features/file_storage/fileStorageType.js.map +1 -1
- package/dist/middlewares/request/validateAuthorization.d.ts +1 -1
- package/dist/middlewares/request/validateAuthorization.js +13 -6
- package/dist/middlewares/request/validateAuthorization.js.map +1 -1
- package/dist/models/index.d.ts +0 -2
- package/dist/models/index.js +3 -5
- package/dist/models/index.js.map +1 -1
- package/dist/routes/file/fileRoutes.js.map +1 -1
- package/dist/services/file/FileService.d.ts +4 -12
- package/dist/services/file/FileService.js +73 -2
- package/dist/services/file/FileService.js.map +1 -1
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/item/ItemItemService.js.map +1 -1
- package/dist/services/user/AdministratorService.js.map +1 -1
- package/dist/services/user/OperatorService.js.map +1 -1
- package/dist/services/utils/AccessKeyUtilService.js +2 -2
- package/dist/services/utils/AccessKeyUtilService.js.map +1 -1
- package/package.json +1 -1
|
@@ -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.
|
|
7
|
-
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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 {
|
|
143
|
-
//
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
//
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
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 {
|
|
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,
|
|
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.
|
|
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,
|
|
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:
|
|
49
|
-
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
|
|
58
|
-
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 {
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
105
|
+
// sendError(res, "UNAUTHORIZED", err.message || "Invalid access key", "", "", HTTP_STATUS.UNAUTHORIZED);
|
|
99
106
|
return false;
|
|
100
107
|
}
|
|
101
108
|
};
|