@purpleschool/gptbot 0.7.9 → 0.7.11
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/api/controllers/http/files.ts +1 -0
- package/api/routes.ts +2 -0
- package/build/api/controllers/http/files.js +1 -0
- package/build/api/routes.js +1 -0
- package/build/commands/file/calculate-file-cost.command.js +17 -0
- package/build/commands/file/index.js +1 -0
- package/build/commands/file/upload.command.js +3 -0
- package/build/constants/ai-model/enums/ai-model-feature.enum.js +1 -0
- package/build/constants/errors/errors.js +17 -2
- package/build/constants/file/enums/file-type.enum.js +1 -0
- package/build/constants/file/file.constants.js +31 -1
- package/build/models/file.schema.js +1 -0
- package/commands/file/calculate-file-cost.command.ts +22 -0
- package/commands/file/index.ts +1 -0
- package/commands/file/upload.command.ts +6 -0
- package/constants/ai-model/enums/ai-model-feature.enum.ts +1 -0
- package/constants/errors/errors.ts +17 -2
- package/constants/file/enums/file-type.enum.ts +1 -0
- package/constants/file/file.constants.ts +30 -0
- package/models/file.schema.ts +1 -0
- package/package.json +1 -1
package/api/routes.ts
CHANGED
|
@@ -146,6 +146,8 @@ export const REST_API = {
|
|
|
146
146
|
FILES: {
|
|
147
147
|
UPLOAD_FILE: `${ROOT}/${CONTROLLERS.FILE_CONTROLLER}/${CONTROLLERS.FILE_ROUTES.UPLOAD_FILE}`,
|
|
148
148
|
UPLOAD_IMAGE: `${ROOT}/${CONTROLLERS.FILE_CONTROLLER}/${CONTROLLERS.FILE_ROUTES.UPLOAD_IMAGE}`,
|
|
149
|
+
CALCULATE_TEXT_FILE_COST: (uuid: string) =>
|
|
150
|
+
`${ROOT}/${CONTROLLERS.FILE_CONTROLLER}/${CONTROLLERS.FILE_ROUTES.CALCULATE_TEXT_FILE_COST(uuid)}`,
|
|
149
151
|
},
|
|
150
152
|
BLOG_ARTICLES: {
|
|
151
153
|
CREATE: `${ROOT}/${CONTROLLERS.BLOG_CONTROLLER(POST_TYPE.ARTICLE)}`,
|
package/build/api/routes.js
CHANGED
|
@@ -154,6 +154,7 @@ exports.REST_API = {
|
|
|
154
154
|
FILES: {
|
|
155
155
|
UPLOAD_FILE: `${exports.ROOT}/${CONTROLLERS.FILE_CONTROLLER}/${CONTROLLERS.FILE_ROUTES.UPLOAD_FILE}`,
|
|
156
156
|
UPLOAD_IMAGE: `${exports.ROOT}/${CONTROLLERS.FILE_CONTROLLER}/${CONTROLLERS.FILE_ROUTES.UPLOAD_IMAGE}`,
|
|
157
|
+
CALCULATE_TEXT_FILE_COST: (uuid) => `${exports.ROOT}/${CONTROLLERS.FILE_CONTROLLER}/${CONTROLLERS.FILE_ROUTES.CALCULATE_TEXT_FILE_COST(uuid)}`,
|
|
157
158
|
},
|
|
158
159
|
BLOG_ARTICLES: {
|
|
159
160
|
CREATE: `${exports.ROOT}/${CONTROLLERS.BLOG_CONTROLLER(constants_1.POST_TYPE.ARTICLE)}`,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CalculateFileCostCommand = void 0;
|
|
4
|
+
const models_1 = require("../../models");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
var CalculateFileCostCommand;
|
|
7
|
+
(function (CalculateFileCostCommand) {
|
|
8
|
+
CalculateFileCostCommand.RequestParamSchema = models_1.FileSchema.pick({
|
|
9
|
+
uuid: true,
|
|
10
|
+
});
|
|
11
|
+
CalculateFileCostCommand.RequestSchema = zod_1.z.object({
|
|
12
|
+
model: zod_1.z.string(),
|
|
13
|
+
});
|
|
14
|
+
CalculateFileCostCommand.ResponseSchema = zod_1.z.object({
|
|
15
|
+
data: models_1.FileSchema,
|
|
16
|
+
});
|
|
17
|
+
})(CalculateFileCostCommand || (exports.CalculateFileCostCommand = CalculateFileCostCommand = {}));
|
|
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./delete-user-file.command"), exports);
|
|
18
18
|
__exportStar(require("./upload.command"), exports);
|
|
19
|
+
__exportStar(require("./calculate-file-cost.command"), exports);
|
|
@@ -5,6 +5,9 @@ const models_1 = require("../../models");
|
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
6
|
var UploadFileCommand;
|
|
7
7
|
(function (UploadFileCommand) {
|
|
8
|
+
UploadFileCommand.RequestSchema = zod_1.z.object({
|
|
9
|
+
model: zod_1.z.string().optional(),
|
|
10
|
+
});
|
|
8
11
|
UploadFileCommand.ResponseSchema = zod_1.z.object({
|
|
9
12
|
data: models_1.FileSchema,
|
|
10
13
|
});
|
|
@@ -5,6 +5,7 @@ var AI_MODEL_FEATURE;
|
|
|
5
5
|
(function (AI_MODEL_FEATURE) {
|
|
6
6
|
AI_MODEL_FEATURE["IMAGE_ATTACHMENT"] = "image_attachment";
|
|
7
7
|
AI_MODEL_FEATURE["AUDIO_ATTACHMENT"] = "audio_attachment";
|
|
8
|
+
AI_MODEL_FEATURE["TEXT_ATTACHMENT"] = "text_attachment";
|
|
8
9
|
AI_MODEL_FEATURE["WEB_SEARCH"] = "web_search";
|
|
9
10
|
AI_MODEL_FEATURE["IMAGE_EDITING"] = "image_editing";
|
|
10
11
|
})(AI_MODEL_FEATURE || (exports.AI_MODEL_FEATURE = AI_MODEL_FEATURE = {}));
|
|
@@ -1248,9 +1248,9 @@ exports.ERRORS = {
|
|
|
1248
1248
|
message: 'Произошла ошибка при удалении сообщения',
|
|
1249
1249
|
httpCode: 500,
|
|
1250
1250
|
},
|
|
1251
|
-
|
|
1251
|
+
CHAT_FILE_ATTACHMENT_FEATURE_MISSING: {
|
|
1252
1252
|
code: 'A275',
|
|
1253
|
-
message: '
|
|
1253
|
+
message: 'Функции вложения файлов не указаны в запросе',
|
|
1254
1254
|
httpCode: 400,
|
|
1255
1255
|
},
|
|
1256
1256
|
CHAT_IMAGE_ATTACHMENT_AND_WEB_SEARCH_CONFLICT: {
|
|
@@ -1562,4 +1562,19 @@ exports.ERRORS = {
|
|
|
1562
1562
|
message: 'Выбрана Неверная продолжительность видео',
|
|
1563
1563
|
httpCode: 400,
|
|
1564
1564
|
},
|
|
1565
|
+
FILE_UPLOAD_NO_MODEL: {
|
|
1566
|
+
code: 'A334',
|
|
1567
|
+
message: 'В запросе нет модели для обработки текстового файла',
|
|
1568
|
+
httpCode: 400,
|
|
1569
|
+
},
|
|
1570
|
+
FILE_VECTOR_CHUNKS_CREATE_ERROR: {
|
|
1571
|
+
code: 'A335',
|
|
1572
|
+
message: 'Ошибка при сохранении векторных чанков файлов',
|
|
1573
|
+
httpCode: 500,
|
|
1574
|
+
},
|
|
1575
|
+
FILE_VECTOR_SEARCH_ERROR: {
|
|
1576
|
+
code: 'A336',
|
|
1577
|
+
message: 'Ошибка при поиске по векторному хранилищу',
|
|
1578
|
+
httpCode: 500,
|
|
1579
|
+
},
|
|
1565
1580
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DELETE_UNUSED_FILES_AFTER_HOURS = exports.SUPPORTED_FILES = exports.MAX_AUDIO_UPLOAD_SIZE = exports.MAX_IMAGE_UPLOAD_SIZE = void 0;
|
|
3
|
+
exports.DELETE_UNUSED_FILES_AFTER_HOURS = exports.SUPPORTED_FILES = exports.MAX_TEXT_UPLOAD_SIZE = exports.MAX_AUDIO_UPLOAD_SIZE = exports.MAX_IMAGE_UPLOAD_SIZE = void 0;
|
|
4
4
|
const enums_1 = require("./enums");
|
|
5
5
|
exports.MAX_IMAGE_UPLOAD_SIZE = 5 * 1024 * 1024; // 5 MB
|
|
6
6
|
exports.MAX_AUDIO_UPLOAD_SIZE = 500 * 1024 * 1024; // 500 MB
|
|
7
|
+
exports.MAX_TEXT_UPLOAD_SIZE = 10 * 1024 * 1024; // 10 MB
|
|
7
8
|
exports.SUPPORTED_FILES = new Map([
|
|
8
9
|
['image/jpeg', { type: enums_1.FILE_TYPE.IMAGE, size: exports.MAX_IMAGE_UPLOAD_SIZE }],
|
|
9
10
|
['image/png', { type: enums_1.FILE_TYPE.IMAGE, size: exports.MAX_IMAGE_UPLOAD_SIZE }],
|
|
@@ -13,5 +14,34 @@ exports.SUPPORTED_FILES = new Map([
|
|
|
13
14
|
['audio/wave', { type: enums_1.FILE_TYPE.AUDIO, size: exports.MAX_AUDIO_UPLOAD_SIZE }],
|
|
14
15
|
['audio/wav', { type: enums_1.FILE_TYPE.AUDIO, size: exports.MAX_AUDIO_UPLOAD_SIZE }],
|
|
15
16
|
['audio/x-wav', { type: enums_1.FILE_TYPE.AUDIO, size: exports.MAX_AUDIO_UPLOAD_SIZE }],
|
|
17
|
+
['text/plain', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
18
|
+
['text/markdown', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
19
|
+
['text/csv', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
20
|
+
['text/tab-separated-values', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
21
|
+
['application/json', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
22
|
+
['application/xml', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
23
|
+
['text/xml', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
24
|
+
['application/x-yaml', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
25
|
+
['text/yaml', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
26
|
+
['application/javascript', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
27
|
+
['application/typescript', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
28
|
+
['text/javascript', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
29
|
+
['text/typescript', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
30
|
+
['text/html', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
31
|
+
['text/css', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
32
|
+
['application/x-sh', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
33
|
+
['text/x-python', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
34
|
+
['text/x-c', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
35
|
+
['text/x-c++', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
36
|
+
['text/x-java-source', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
37
|
+
['text/x-shellscript', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
38
|
+
['text/x-php', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
39
|
+
['text/x-ruby', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
40
|
+
['text/x-go', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
41
|
+
['text/x-scss', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
42
|
+
['text/x-yaml', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
43
|
+
['text/x-ini', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
44
|
+
['text/x-properties', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
45
|
+
['text/x-config', { type: enums_1.FILE_TYPE.TEXT, size: exports.MAX_TEXT_UPLOAD_SIZE }],
|
|
16
46
|
]);
|
|
17
47
|
exports.DELETE_UNUSED_FILES_AFTER_HOURS = 12;
|
|
@@ -13,6 +13,7 @@ exports.FileSchema = zod_1.z.object({
|
|
|
13
13
|
type: zod_1.z.nativeEnum(constants_1.FILE_TYPE),
|
|
14
14
|
duration: zod_1.z.number().nullable(),
|
|
15
15
|
attachmentCost: zod_1.z.number(),
|
|
16
|
+
contentLength: zod_1.z.number().nullable(),
|
|
16
17
|
createdAt: zod_1.z.date(),
|
|
17
18
|
updatedAt: zod_1.z.date(),
|
|
18
19
|
});
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { FileSchema } from '../../models';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
|
|
4
|
+
export namespace CalculateFileCostCommand {
|
|
5
|
+
export const RequestParamSchema = FileSchema.pick({
|
|
6
|
+
uuid: true,
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
export type RequestParam = z.infer<typeof RequestParamSchema>;
|
|
10
|
+
|
|
11
|
+
export const RequestSchema = z.object({
|
|
12
|
+
model: z.string(),
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
16
|
+
|
|
17
|
+
export const ResponseSchema = z.object({
|
|
18
|
+
data: FileSchema,
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
22
|
+
}
|
package/commands/file/index.ts
CHANGED
|
@@ -2,6 +2,12 @@ import { FileSchema } from '../../models';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
|
|
4
4
|
export namespace UploadFileCommand {
|
|
5
|
+
export const RequestSchema = z.object({
|
|
6
|
+
model: z.string().optional(),
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
10
|
+
|
|
5
11
|
export const ResponseSchema = z.object({
|
|
6
12
|
data: FileSchema,
|
|
7
13
|
});
|
|
@@ -1254,9 +1254,9 @@ export const ERRORS = {
|
|
|
1254
1254
|
message: 'Произошла ошибка при удалении сообщения',
|
|
1255
1255
|
httpCode: 500,
|
|
1256
1256
|
},
|
|
1257
|
-
|
|
1257
|
+
CHAT_FILE_ATTACHMENT_FEATURE_MISSING: {
|
|
1258
1258
|
code: 'A275',
|
|
1259
|
-
message: '
|
|
1259
|
+
message: 'Функции вложения файлов не указаны в запросе',
|
|
1260
1260
|
httpCode: 400,
|
|
1261
1261
|
},
|
|
1262
1262
|
CHAT_IMAGE_ATTACHMENT_AND_WEB_SEARCH_CONFLICT: {
|
|
@@ -1569,4 +1569,19 @@ export const ERRORS = {
|
|
|
1569
1569
|
message: 'Выбрана Неверная продолжительность видео',
|
|
1570
1570
|
httpCode: 400,
|
|
1571
1571
|
},
|
|
1572
|
+
FILE_UPLOAD_NO_MODEL: {
|
|
1573
|
+
code: 'A334',
|
|
1574
|
+
message: 'В запросе нет модели для обработки текстового файла',
|
|
1575
|
+
httpCode: 400,
|
|
1576
|
+
},
|
|
1577
|
+
FILE_VECTOR_CHUNKS_CREATE_ERROR: {
|
|
1578
|
+
code: 'A335',
|
|
1579
|
+
message: 'Ошибка при сохранении векторных чанков файлов',
|
|
1580
|
+
httpCode: 500,
|
|
1581
|
+
},
|
|
1582
|
+
FILE_VECTOR_SEARCH_ERROR: {
|
|
1583
|
+
code: 'A336',
|
|
1584
|
+
message: 'Ошибка при поиске по векторному хранилищу',
|
|
1585
|
+
httpCode: 500,
|
|
1586
|
+
},
|
|
1572
1587
|
};
|
|
@@ -2,6 +2,7 @@ import { FILE_TYPE } from './enums';
|
|
|
2
2
|
|
|
3
3
|
export const MAX_IMAGE_UPLOAD_SIZE = 5 * 1024 * 1024; // 5 MB
|
|
4
4
|
export const MAX_AUDIO_UPLOAD_SIZE = 500 * 1024 * 1024; // 500 MB
|
|
5
|
+
export const MAX_TEXT_UPLOAD_SIZE = 10 * 1024 * 1024; // 10 MB
|
|
5
6
|
|
|
6
7
|
export const SUPPORTED_FILES = new Map<
|
|
7
8
|
string,
|
|
@@ -18,6 +19,35 @@ export const SUPPORTED_FILES = new Map<
|
|
|
18
19
|
['audio/wave', { type: FILE_TYPE.AUDIO, size: MAX_AUDIO_UPLOAD_SIZE }],
|
|
19
20
|
['audio/wav', { type: FILE_TYPE.AUDIO, size: MAX_AUDIO_UPLOAD_SIZE }],
|
|
20
21
|
['audio/x-wav', { type: FILE_TYPE.AUDIO, size: MAX_AUDIO_UPLOAD_SIZE }],
|
|
22
|
+
['text/plain', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
23
|
+
['text/markdown', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
24
|
+
['text/csv', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
25
|
+
['text/tab-separated-values', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
26
|
+
['application/json', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
27
|
+
['application/xml', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
28
|
+
['text/xml', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
29
|
+
['application/x-yaml', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
30
|
+
['text/yaml', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
31
|
+
['application/javascript', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
32
|
+
['application/typescript', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
33
|
+
['text/javascript', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
34
|
+
['text/typescript', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
35
|
+
['text/html', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
36
|
+
['text/css', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
37
|
+
['application/x-sh', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
38
|
+
['text/x-python', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
39
|
+
['text/x-c', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
40
|
+
['text/x-c++', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
41
|
+
['text/x-java-source', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
42
|
+
['text/x-shellscript', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
43
|
+
['text/x-php', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
44
|
+
['text/x-ruby', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
45
|
+
['text/x-go', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
46
|
+
['text/x-scss', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
47
|
+
['text/x-yaml', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
48
|
+
['text/x-ini', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
49
|
+
['text/x-properties', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
50
|
+
['text/x-config', { type: FILE_TYPE.TEXT, size: MAX_TEXT_UPLOAD_SIZE }],
|
|
21
51
|
]);
|
|
22
52
|
|
|
23
53
|
export const DELETE_UNUSED_FILES_AFTER_HOURS = 12;
|
package/models/file.schema.ts
CHANGED