@tc-libs/file 5.3.0 → 5.4.0
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/package.json +4 -4
- package/src/decorators/file.decorator.js +4 -2
- package/src/decorators/file.decorator.js.map +1 -1
- package/src/file.module.options.d.ts +4 -2
- package/src/file.module.options.js.map +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/pipes/file.max-files.pipe.js +2 -2
- package/src/pipes/file.max-files.pipe.js.map +1 -1
- package/src/pipes/file.size.pipe.js +2 -2
- package/src/pipes/file.size.pipe.js.map +1 -1
- package/src/pipes/file.type.pipe.d.ts +10 -1
- package/src/pipes/file.type.pipe.js +22 -8
- package/src/pipes/file.type.pipe.js.map +1 -1
- package/src/utils/file.image.util.d.ts +19 -0
- package/src/utils/file.image.util.js +143 -0
- package/src/utils/file.image.util.js.map +1 -0
- package/src/utils/file.name.util.d.ts +5 -0
- package/src/utils/file.name.util.js +31 -0
- package/src/utils/file.name.util.js.map +1 -0
- package/src/utils/index.d.ts +2 -0
- package/src/utils/index.js +6 -0
- package/src/utils/index.js.map +1 -0
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tc-libs/file",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.4.0",
|
|
4
4
|
"dependencies": {
|
|
5
|
-
"@tc-libs/constant": "5.
|
|
6
|
-
"@tc-libs/errors": "5.
|
|
7
|
-
"@tc-libs/request": "5.
|
|
5
|
+
"@tc-libs/constant": "5.4.0",
|
|
6
|
+
"@tc-libs/errors": "5.4.0",
|
|
7
|
+
"@tc-libs/request": "5.4.0",
|
|
8
8
|
"bytes": "3.1.2",
|
|
9
9
|
"express": "5.0.1",
|
|
10
10
|
"tslib": "^2.8.1"
|
|
@@ -10,11 +10,13 @@ const platform_express_1 = require("@nestjs/platform-express");
|
|
|
10
10
|
const constants_1 = require("../constants");
|
|
11
11
|
const file_custom_max_files_interceptor_1 = require("../interceptors/file.custom-max-files.interceptor");
|
|
12
12
|
const file_custom_max_size_interceptor_1 = require("../interceptors/file.custom-max-size.interceptor");
|
|
13
|
+
// I browser mandano il nome del file in UTF-8; busboy lo leggerebbe come latin1 ('Soudé' diventa 'Soudé').
|
|
14
|
+
const MULTER_OPTIONS = { defParamCharset: 'utf8' };
|
|
13
15
|
function UploadFileSingle(field) {
|
|
14
|
-
return (0, common_1.applyDecorators)((0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)(field)));
|
|
16
|
+
return (0, common_1.applyDecorators)((0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)(field, MULTER_OPTIONS)));
|
|
15
17
|
}
|
|
16
18
|
function UploadFileMultiple(field) {
|
|
17
|
-
return (0, common_1.applyDecorators)((0, common_1.UseInterceptors)((0, platform_express_1.FilesInterceptor)(field)));
|
|
19
|
+
return (0, common_1.applyDecorators)((0, common_1.UseInterceptors)((0, platform_express_1.FilesInterceptor)(field, undefined, MULTER_OPTIONS)));
|
|
18
20
|
}
|
|
19
21
|
function FileCustomMaxFile(customMaxFiles) {
|
|
20
22
|
return (0, common_1.applyDecorators)((0, common_1.UseInterceptors)(file_custom_max_files_interceptor_1.FileCustomMaxFilesInterceptor), (0, common_1.SetMetadata)(constants_1.FILE_CUSTOM_MAX_FILES_META_KEY, customMaxFiles));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.decorator.js","sourceRoot":"","sources":["../../../../../packages/file/src/decorators/file.decorator.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"file.decorator.js","sourceRoot":"","sources":["../../../../../packages/file/src/decorators/file.decorator.ts"],"names":[],"mappings":";;;AAmBA,4CAIC;AAED,gDAIC;AAED,8CAKC;AAED,8CAKC;AA3CD,2CAMwB;AACxB,+DAA6E;AAC7E,4CAGsB;AAEtB,yGAAkG;AAClG,uGAAgG;AAEhG,4GAA4G;AAC5G,MAAM,cAAc,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC;AAEnD,SAAgB,gBAAgB,CAAC,KAAa;IAC5C,OAAO,IAAA,wBAAe,EACpB,IAAA,wBAAe,EAAC,IAAA,kCAAe,EAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CACxD,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,OAAO,IAAA,wBAAe,EACpB,IAAA,wBAAe,EAAC,IAAA,mCAAgB,EAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,cAAsB;IACtD,OAAO,IAAA,wBAAe,EACpB,IAAA,wBAAe,EAAC,iEAA6B,CAAC,EAC9C,IAAA,oBAAW,EAAC,0CAA8B,EAAE,cAAc,CAAC,CAC5D,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,aAAqB;IACrD,OAAO,IAAA,wBAAe,EACpB,IAAA,wBAAe,EAAC,+DAA4B,CAAC,EAC7C,IAAA,oBAAW,EAAC,yCAA6B,EAAE,aAAa,CAAC,CAC1D,CAAC;AACJ,CAAC;AAEY,QAAA,cAAc,GAA6B,IAAA,6BAAoB,EAC1E,CAAC,IAAY,EAAE,GAAqB,EAAU,EAAE;IAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC,UAAU,EAAiB,CAAC;IAC/D,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC,CACF,CAAC"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { ModuleMetadata } from '@nestjs/common';
|
|
2
2
|
import { FactoryProvider } from '@nestjs/common/interfaces/modules/provider.interface';
|
|
3
|
+
import { ImageFormat } from './utils/file.image.util';
|
|
3
4
|
export declare const FILE_MODULE_CONFIG_OPTIONS = "FILE_MODULE_CONFIG_OPTIONS";
|
|
4
5
|
export interface FileModuleOptions {
|
|
5
6
|
image: {
|
|
6
7
|
maxFiles: number;
|
|
7
8
|
maxFileSize: number;
|
|
9
|
+
formats?: ImageFormat[];
|
|
8
10
|
};
|
|
9
|
-
excel
|
|
11
|
+
excel?: {
|
|
10
12
|
maxFiles: number;
|
|
11
13
|
maxFileSize: number;
|
|
12
14
|
};
|
|
13
|
-
audio
|
|
15
|
+
audio?: {
|
|
14
16
|
maxFiles: number;
|
|
15
17
|
maxFileSize: number;
|
|
16
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.module.options.js","sourceRoot":"","sources":["../../../../packages/file/src/file.module.options.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"file.module.options.js","sourceRoot":"","sources":["../../../../packages/file/src/file.module.options.ts"],"names":[],"mappings":";;;AAIa,QAAA,0BAA0B,GAAG,4BAA4B,CAAC"}
|
package/src/index.d.ts
CHANGED
package/src/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./constants"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./utils"), exports);
|
|
5
6
|
tslib_1.__exportStar(require("./dtos"), exports);
|
|
6
7
|
tslib_1.__exportStar(require("./pipes"), exports);
|
|
7
8
|
tslib_1.__exportStar(require("./interceptors"), exports);
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/file/src/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,iDAAuB;AACvB,kDAAwB;AACxB,yDAA+B;AAC/B,sEAA4C;AAC5C,sEAA4C;AAC5C,wDAA8B;AAC9B,gEAAsC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/file/src/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,yDAA+B;AAC/B,sEAA4C;AAC5C,sEAA4C;AAC5C,wDAA8B;AAC9B,gEAAsC"}
|
|
@@ -42,7 +42,7 @@ let FileMaxFilesExcelPipe = class FileMaxFilesExcelPipe {
|
|
|
42
42
|
constructor(request, _options) {
|
|
43
43
|
this.request = request;
|
|
44
44
|
this._options = _options;
|
|
45
|
-
this.maxFile = this._options.excel
|
|
45
|
+
this.maxFile = this._options.excel?.maxFiles ?? 0;
|
|
46
46
|
}
|
|
47
47
|
async transform(value) {
|
|
48
48
|
await this.validate(value);
|
|
@@ -98,7 +98,7 @@ let FileMaxFilesAudioPipe = class FileMaxFilesAudioPipe {
|
|
|
98
98
|
constructor(request, _options) {
|
|
99
99
|
this.request = request;
|
|
100
100
|
this._options = _options;
|
|
101
|
-
this.maxFile = this._options.audio
|
|
101
|
+
this.maxFile = this._options.audio?.maxFiles ?? 0;
|
|
102
102
|
}
|
|
103
103
|
async transform(value) {
|
|
104
104
|
await this.validate(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.max-files.pipe.js","sourceRoot":"","sources":["../../../../../packages/file/src/pipes/file.max-files.pipe.ts"],"names":[],"mappings":";;;;AAAA,2CAA0E;AAC1E,uCAAuC;AAEvC,4CAAsD;AACtD,gEAGgC;AAGhC,2BAA2B;AAGpB,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAGhC,YAEmB,QAA2B,EAE3B,OAA+C;QAF/C,aAAQ,GAAR,QAAQ,CAAmB;QAE3B,YAAO,GAAP,OAAO,CAAwC;QAEhE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAAc;QAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAE3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAc;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC;QAC/D,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,4BAAmB,CAAC;gBAC5B,GAAG,EAAE,KAAK,CAAC,MAAM;gBACjB,GAAG,EAAE,QAAQ;aACd,CAAC,CAAC;QACL,CAAC;QAED,OAAO;IACT,CAAC;CACF,CAAA;AAjCY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,EAAC,EAAE,KAAK,EAAE,cAAK,CAAC,OAAO,EAAE,CAAC;IAKhC,mBAAA,IAAA,eAAM,EAAC,gDAA0B,CAAC,CAAA;IAElC,mBAAA,IAAA,eAAM,EAAC,cAAO,CAAC,CAAA;;GANP,qBAAqB,CAiCjC;AAGM,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAGhC,YAEmB,OAA+C,EAE/C,QAA2B;QAF3B,YAAO,GAAP,OAAO,CAAwC;QAE/C,aAAQ,GAAR,QAAQ,CAAmB;QAE5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"file.max-files.pipe.js","sourceRoot":"","sources":["../../../../../packages/file/src/pipes/file.max-files.pipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -53,7 +53,7 @@ let FileSizeExcelPipe = class FileSizeExcelPipe {
|
|
|
53
53
|
this.request = request;
|
|
54
54
|
this._options = _options;
|
|
55
55
|
this._file = _file;
|
|
56
|
-
this.maxSize = this._options.excel
|
|
56
|
+
this.maxSize = this._options.excel?.maxFileSize ?? 0;
|
|
57
57
|
}
|
|
58
58
|
async transform(value) {
|
|
59
59
|
if (Array.isArray(value)) {
|
|
@@ -129,7 +129,7 @@ let FileSizeAudioPipe = class FileSizeAudioPipe {
|
|
|
129
129
|
this.request = request;
|
|
130
130
|
this._options = _options;
|
|
131
131
|
this._file = _file;
|
|
132
|
-
this.maxSize = this._options.audio
|
|
132
|
+
this.maxSize = this._options.audio?.maxFileSize ?? 0;
|
|
133
133
|
}
|
|
134
134
|
async transform(value) {
|
|
135
135
|
if (Array.isArray(value)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.size.pipe.js","sourceRoot":"","sources":["../../../../../packages/file/src/pipes/file.size.pipe.ts"],"names":[],"mappings":";;;;AAAA,2CAA0E;AAC1E,uCAAuC;AACvC,4CAA6D;AAE7D,gEAGgC;AAChC,2DAAuD;AAGhD,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAG5B,YAEmB,OAAkD,EAElD,QAA2B,EAC3B,KAAkB;QAHlB,YAAO,GAAP,OAAO,CAA2C;QAElD,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,UAAK,GAAL,KAAK,CAAa;QAEnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC;IACjD,CAAC;IAED,SAAS,CAAC,KAAsB;QAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,IAAI,GAAU,KAAc,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,mBAAmB;YACrD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC;YAC7D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QAEjB,IAAI,IAAI,GAAG,cAAc,EAAE,CAAC;YAC1B,MAAM,IAAI,mCAA0B,CAAC;gBACnC,GAAG,EAAE,IAAI;gBACT,GAAG,EAAE,cAAc;aACpB,CAAC,CAAC;QACL,CAAC;QAED,OAAO;IACT,CAAC;CACF,CAAA;AA9CY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,EAAC,EAAE,KAAK,EAAE,cAAK,CAAC,OAAO,EAAE,CAAC;IAKhC,mBAAA,IAAA,eAAM,EAAC,cAAO,CAAC,CAAA;IAEf,mBAAA,IAAA,eAAM,EAAC,gDAA0B,CAAC,CAAA;6DAEX,0BAAW;GAR1B,iBAAiB,CA8C7B;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAG5B,YAEmB,OAAkD,EAElD,QAA2B,EAC3B,KAAkB;QAHlB,YAAO,GAAP,OAAO,CAA2C;QAElD,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,UAAK,GAAL,KAAK,CAAa;QAEnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"file.size.pipe.js","sourceRoot":"","sources":["../../../../../packages/file/src/pipes/file.size.pipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
import { PipeTransform } from '@nestjs/common';
|
|
2
2
|
import { IFile } from '../interfaces/file.interface';
|
|
3
|
+
import { FileModuleOptions } from '../file.module.options';
|
|
4
|
+
/**
|
|
5
|
+
* Il tipo si legge dal contenuto (firma del formato), non dal MIME né dall'estensione dichiarati dal client: un HTML
|
|
6
|
+
* dichiarato image/png risponde 415. Formati ammessi da image.formats del modulo (default jpeg, png, webp); un SVG
|
|
7
|
+
* passa solo se isSafeSvg. Il file esce con il mimetype del formato riconosciuto, che decide anche l'estensione della
|
|
8
|
+
* chiave in @tc-libs/file-handler.
|
|
9
|
+
*/
|
|
3
10
|
export declare class FileTypeImagePipe implements PipeTransform {
|
|
11
|
+
private readonly _options?;
|
|
12
|
+
constructor(_options?: FileModuleOptions | undefined);
|
|
4
13
|
transform(value: IFile | IFile[]): IFile | IFile[] | undefined;
|
|
5
|
-
validate(
|
|
14
|
+
validate(file: IFile): void;
|
|
6
15
|
}
|
|
7
16
|
export declare class FileTypeImageAndPdfPipe implements PipeTransform {
|
|
8
17
|
transform(value: IFile | IFile[]): IFile | IFile[] | undefined;
|
|
@@ -5,31 +5,45 @@ const tslib_1 = require("tslib");
|
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
6
|
const constant_1 = require("@tc-libs/constant");
|
|
7
7
|
const errors_1 = require("@tc-libs/errors");
|
|
8
|
+
const file_module_options_1 = require("../file.module.options");
|
|
9
|
+
const file_image_util_1 = require("../utils/file.image.util");
|
|
10
|
+
/**
|
|
11
|
+
* Il tipo si legge dal contenuto (firma del formato), non dal MIME né dall'estensione dichiarati dal client: un HTML
|
|
12
|
+
* dichiarato image/png risponde 415. Formati ammessi da image.formats del modulo (default jpeg, png, webp); un SVG
|
|
13
|
+
* passa solo se isSafeSvg. Il file esce con il mimetype del formato riconosciuto, che decide anche l'estensione della
|
|
14
|
+
* chiave in @tc-libs/file-handler.
|
|
15
|
+
*/
|
|
8
16
|
let FileTypeImagePipe = class FileTypeImagePipe {
|
|
17
|
+
constructor(_options) {
|
|
18
|
+
this._options = _options;
|
|
19
|
+
}
|
|
9
20
|
transform(value) {
|
|
10
21
|
if (!value) {
|
|
11
22
|
return undefined;
|
|
12
23
|
}
|
|
13
24
|
if (Array.isArray(value)) {
|
|
14
25
|
for (const val of value) {
|
|
15
|
-
this.validate(val
|
|
26
|
+
this.validate(val);
|
|
16
27
|
}
|
|
17
28
|
return value;
|
|
18
29
|
}
|
|
19
|
-
|
|
20
|
-
this.validate(file.mimetype);
|
|
30
|
+
this.validate(value);
|
|
21
31
|
return value;
|
|
22
32
|
}
|
|
23
|
-
validate(
|
|
24
|
-
|
|
25
|
-
|
|
33
|
+
validate(file) {
|
|
34
|
+
const format = (0, file_image_util_1.resolveImageFormat)(file, this._options?.image?.formats);
|
|
35
|
+
if (!format) {
|
|
36
|
+
throw new errors_1.Api415UnsupportedMediaTypeError({ mediaType: file.mimetype });
|
|
26
37
|
}
|
|
27
|
-
|
|
38
|
+
file.mimetype = file_image_util_1.IMAGE_FORMAT_MIME[format];
|
|
28
39
|
}
|
|
29
40
|
};
|
|
30
41
|
exports.FileTypeImagePipe = FileTypeImagePipe;
|
|
31
42
|
exports.FileTypeImagePipe = FileTypeImagePipe = tslib_1.__decorate([
|
|
32
|
-
(0, common_1.Injectable)()
|
|
43
|
+
(0, common_1.Injectable)(),
|
|
44
|
+
tslib_1.__param(0, (0, common_1.Optional)()),
|
|
45
|
+
tslib_1.__param(0, (0, common_1.Inject)(file_module_options_1.FILE_MODULE_CONFIG_OPTIONS)),
|
|
46
|
+
tslib_1.__metadata("design:paramtypes", [Object])
|
|
33
47
|
], FileTypeImagePipe);
|
|
34
48
|
let FileTypeImageAndPdfPipe = class FileTypeImageAndPdfPipe {
|
|
35
49
|
transform(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.type.pipe.js","sourceRoot":"","sources":["../../../../../packages/file/src/pipes/file.type.pipe.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"file.type.pipe.js","sourceRoot":"","sources":["../../../../../packages/file/src/pipes/file.type.pipe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type ImageFormat = 'jpeg' | 'png' | 'webp' | 'gif' | 'svg';
|
|
2
|
+
export declare const IMAGE_FORMAT_MIME: Readonly<Record<ImageFormat, string>>;
|
|
3
|
+
export declare const IMAGE_FORMAT_EXTENSION: Readonly<Record<ImageFormat, string>>;
|
|
4
|
+
export declare const DEFAULT_IMAGE_FORMATS: readonly ImageFormat[];
|
|
5
|
+
/**
|
|
6
|
+
* Formato di un file caricato come immagine, oppure undefined se va rifiutato: MIME dichiarato non image/*, contenuto
|
|
7
|
+
* non riconosciuto, formato non tra quelli ammessi o SVG non sicuro. È la decisione di FileTypeImagePipe.
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveImageFormat(file: {
|
|
10
|
+
mimetype: string;
|
|
11
|
+
buffer: Buffer;
|
|
12
|
+
}, allowed?: readonly ImageFormat[]): ImageFormat | undefined;
|
|
13
|
+
export declare function detectImageFormat(content: Buffer): ImageFormat | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Un SVG caricato si serve così com'è: non deve contenere script, gestori di eventi, documenti incorporati, riferimenti
|
|
16
|
+
* esterni né DTD (entità e XXE). Si rifiuta anziché ripulire. I riferimenti numerici ai caratteri (j) si decodificano
|
|
17
|
+
* prima dei controlli, perché non nascondano un "javascript:".
|
|
18
|
+
*/
|
|
19
|
+
export declare function isSafeSvg(content: Buffer): boolean;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Formato reale delle immagini caricate, letto dal contenuto e non dal MIME o dall'estensione dichiarati dal client.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DEFAULT_IMAGE_FORMATS = exports.IMAGE_FORMAT_EXTENSION = exports.IMAGE_FORMAT_MIME = void 0;
|
|
5
|
+
exports.resolveImageFormat = resolveImageFormat;
|
|
6
|
+
exports.detectImageFormat = detectImageFormat;
|
|
7
|
+
exports.isSafeSvg = isSafeSvg;
|
|
8
|
+
exports.IMAGE_FORMAT_MIME = {
|
|
9
|
+
jpeg: 'image/jpeg',
|
|
10
|
+
png: 'image/png',
|
|
11
|
+
webp: 'image/webp',
|
|
12
|
+
gif: 'image/gif',
|
|
13
|
+
svg: 'image/svg+xml',
|
|
14
|
+
};
|
|
15
|
+
exports.IMAGE_FORMAT_EXTENSION = {
|
|
16
|
+
jpeg: '.jpg',
|
|
17
|
+
png: '.png',
|
|
18
|
+
webp: '.webp',
|
|
19
|
+
gif: '.gif',
|
|
20
|
+
svg: '.svg',
|
|
21
|
+
};
|
|
22
|
+
// Formati ammessi se l'app non configura image.formats: quelli di ENUM_FILE_IMAGE_MIME, come prima.
|
|
23
|
+
exports.DEFAULT_IMAGE_FORMATS = [
|
|
24
|
+
'jpeg',
|
|
25
|
+
'png',
|
|
26
|
+
'webp',
|
|
27
|
+
];
|
|
28
|
+
/**
|
|
29
|
+
* Formato di un file caricato come immagine, oppure undefined se va rifiutato: MIME dichiarato non image/*, contenuto
|
|
30
|
+
* non riconosciuto, formato non tra quelli ammessi o SVG non sicuro. È la decisione di FileTypeImagePipe.
|
|
31
|
+
*/
|
|
32
|
+
function resolveImageFormat(file, allowed = exports.DEFAULT_IMAGE_FORMATS) {
|
|
33
|
+
if (!file.mimetype?.toLowerCase().startsWith('image/'))
|
|
34
|
+
return undefined;
|
|
35
|
+
const format = detectImageFormat(file.buffer);
|
|
36
|
+
if (!format || !allowed.includes(format))
|
|
37
|
+
return undefined;
|
|
38
|
+
if (format === 'svg' && !isSafeSvg(file.buffer))
|
|
39
|
+
return undefined;
|
|
40
|
+
return format;
|
|
41
|
+
}
|
|
42
|
+
const PNG_SIGNATURE = Buffer.from([
|
|
43
|
+
0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,
|
|
44
|
+
]);
|
|
45
|
+
// Quanto testo si legge per riconoscere un SVG: dichiarazione XML e commenti iniziali stanno nelle prime righe.
|
|
46
|
+
const SVG_SNIFF_BYTES = 4096;
|
|
47
|
+
function detectImageFormat(content) {
|
|
48
|
+
if (!content || content.length < 4)
|
|
49
|
+
return undefined;
|
|
50
|
+
if (content[0] === 0xff && content[1] === 0xd8 && content[2] === 0xff)
|
|
51
|
+
return 'jpeg';
|
|
52
|
+
if (content.subarray(0, 8).equals(PNG_SIGNATURE))
|
|
53
|
+
return 'png';
|
|
54
|
+
const head = content.subarray(0, 6).toString('latin1');
|
|
55
|
+
if (head === 'GIF87a' || head === 'GIF89a')
|
|
56
|
+
return 'gif';
|
|
57
|
+
if (content.subarray(0, 4).toString('latin1') === 'RIFF' &&
|
|
58
|
+
content.subarray(8, 12).toString('latin1') === 'WEBP')
|
|
59
|
+
return 'webp';
|
|
60
|
+
if (startsWithSvgRoot(content.subarray(0, SVG_SNIFF_BYTES).toString('utf8')))
|
|
61
|
+
return 'svg';
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
// Il primo elemento, dopo BOM, dichiarazione XML, commenti e spazi, è <svg>.
|
|
65
|
+
function startsWithSvgRoot(text) {
|
|
66
|
+
let rest = text.charCodeAt(0) === 0xfeff ? text.slice(1) : text;
|
|
67
|
+
for (;;) {
|
|
68
|
+
rest = rest.trimStart();
|
|
69
|
+
if (rest.startsWith('<?')) {
|
|
70
|
+
const end = rest.indexOf('?>');
|
|
71
|
+
if (end < 0)
|
|
72
|
+
return false;
|
|
73
|
+
rest = rest.slice(end + 2);
|
|
74
|
+
}
|
|
75
|
+
else if (rest.startsWith('<!--')) {
|
|
76
|
+
const end = rest.indexOf('-->');
|
|
77
|
+
if (end < 0)
|
|
78
|
+
return false;
|
|
79
|
+
rest = rest.slice(end + 3);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return /^<svg[\s>]/.test(rest);
|
|
86
|
+
}
|
|
87
|
+
// Elementi che eseguono codice, incorporano altri documenti o modificano attributi a runtime.
|
|
88
|
+
const SVG_FORBIDDEN_ELEMENTS = [
|
|
89
|
+
'script',
|
|
90
|
+
'foreignobject',
|
|
91
|
+
'iframe',
|
|
92
|
+
'embed',
|
|
93
|
+
'object',
|
|
94
|
+
'audio',
|
|
95
|
+
'video',
|
|
96
|
+
'handler',
|
|
97
|
+
'listener',
|
|
98
|
+
'set',
|
|
99
|
+
'animate',
|
|
100
|
+
];
|
|
101
|
+
/**
|
|
102
|
+
* Un SVG caricato si serve così com'è: non deve contenere script, gestori di eventi, documenti incorporati, riferimenti
|
|
103
|
+
* esterni né DTD (entità e XXE). Si rifiuta anziché ripulire. I riferimenti numerici ai caratteri (j) si decodificano
|
|
104
|
+
* prima dei controlli, perché non nascondano un "javascript:".
|
|
105
|
+
*/
|
|
106
|
+
function isSafeSvg(content) {
|
|
107
|
+
const text = decodeCharacterReferences(content.toString('utf8')).toLowerCase();
|
|
108
|
+
if (/<!doctype|<!entity/.test(text))
|
|
109
|
+
return false;
|
|
110
|
+
for (const element of SVG_FORBIDDEN_ELEMENTS) {
|
|
111
|
+
if (new RegExp(`<\\s*(?:[a-z0-9_-]+:)?${element}[\\s/>]`).test(text))
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
// Gestori di eventi (onload, onclick, ...) su qualsiasi elemento.
|
|
115
|
+
if (/[\s/"']on[a-z]+\s*=/.test(text))
|
|
116
|
+
return false;
|
|
117
|
+
// Senza spazi né caratteri di controllo, che i browser ignorano dentro uno schema (java\tscript:).
|
|
118
|
+
const compact = Array.from(text)
|
|
119
|
+
.filter((char) => char.charCodeAt(0) > 0x20)
|
|
120
|
+
.join('');
|
|
121
|
+
if (/(?:javascript|vbscript):|data:text\/html/.test(compact))
|
|
122
|
+
return false;
|
|
123
|
+
// href e xlink:href solo verso frammenti interni o immagini raster incorporate.
|
|
124
|
+
for (const match of text.matchAll(/(?:^|[\s"'])(?:xlink:)?href\s*=\s*(["'])(.*?)\1/g)) {
|
|
125
|
+
const value = match[2].trim();
|
|
126
|
+
if (!value.startsWith('#') &&
|
|
127
|
+
!/^data:image\/(?:png|jpeg|gif|webp);base64,/.test(value))
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
// Fogli di stile che caricano risorse esterne.
|
|
131
|
+
if (/@import|url\(\s*(?!["']?#)/.test(text))
|
|
132
|
+
return false;
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
function decodeCharacterReferences(text) {
|
|
136
|
+
return text
|
|
137
|
+
.replace(/&#x([0-9a-f]{1,6});?/gi, (_, hex) => safeFromCodePoint(parseInt(hex, 16)))
|
|
138
|
+
.replace(/&#([0-9]{1,7});?/g, (_, dec) => safeFromCodePoint(parseInt(dec, 10)));
|
|
139
|
+
}
|
|
140
|
+
function safeFromCodePoint(code) {
|
|
141
|
+
return code > 0x10ffff ? '' : String.fromCodePoint(code);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=file.image.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.image.util.js","sourceRoot":"","sources":["../../../../../packages/file/src/utils/file.image.util.ts"],"names":[],"mappings":";AAAA,qHAAqH;;;AA+BrH,gDASC;AAQD,8CAeC;AA0CD,8BA8BC;AAnIY,QAAA,iBAAiB,GAA0C;IACtE,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,IAAI,EAAE,YAAY;IAClB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,eAAe;CACrB,CAAC;AAEW,QAAA,sBAAsB,GAA0C;IAC3E,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,OAAO;IACb,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF,oGAAoG;AACvF,QAAA,qBAAqB,GAA2B;IAC3D,MAAM;IACN,KAAK;IACL,MAAM;CACP,CAAC;AAEF;;;GAGG;AACH,SAAgB,kBAAkB,CAChC,IAA0C,EAC1C,UAAkC,6BAAqB;IAEvD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACzE,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3D,IAAI,MAAM,KAAK,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC;IAChC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;CAC/C,CAAC,CAAC;AACH,gHAAgH;AAChH,MAAM,eAAe,GAAG,IAAI,CAAC;AAE7B,SAAgB,iBAAiB,CAAC,OAAe;IAC/C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;QACnE,OAAO,MAAM,CAAC;IAChB,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACzD,IACE,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,MAAM;QACpD,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,MAAM;QAErD,OAAO,MAAM,CAAC;IAChB,IAAI,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC1E,OAAO,KAAK,CAAC;IACf,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6EAA6E;AAC7E,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,SAAS,CAAC;QACR,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,GAAG,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC1B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,8FAA8F;AAC9F,MAAM,sBAAsB,GAAG;IAC7B,QAAQ;IACR,eAAe;IACf,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,OAAO;IACP,OAAO;IACP,SAAS;IACT,UAAU;IACV,KAAK;IACL,SAAS;CACV,CAAC;AAEF;;;;GAIG;AACH,SAAgB,SAAS,CAAC,OAAe;IACvC,MAAM,IAAI,GAAG,yBAAyB,CACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CACzB,CAAC,WAAW,EAAE,CAAC;IAChB,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,KAAK,MAAM,OAAO,IAAI,sBAAsB,EAAE,CAAC;QAC7C,IAAI,IAAI,MAAM,CAAC,yBAAyB,OAAO,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAClE,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,kEAAkE;IAClE,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnD,mGAAmG;IACnG,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,IAAI,0CAA0C,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3E,gFAAgF;IAChF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAC/B,kDAAkD,CACnD,EAAE,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,IACE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;YACtB,CAAC,4CAA4C,CAAC,IAAI,CAAC,KAAK,CAAC;YAEzD,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,+CAA+C;IAC/C,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,IAAI;SACR,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE,CACpD,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACrC;SACA,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE,CAC/C,iBAAiB,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACrC,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toStorageBaseName = toStorageBaseName;
|
|
4
|
+
exports.toStorageExtension = toStorageExtension;
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
const file_image_util_1 = require("./file.image.util");
|
|
7
|
+
// Nome della chiave di storage: il nome del file in minuscolo, senza accenti né simboli, al più 50 caratteri, così la
|
|
8
|
+
// chiave dice cosa contiene l'immagine (SEO). L'uuid che la rende unica lo aggiunge @tc-libs/file-handler. Senza
|
|
9
|
+
// lettere o cifre resta 'file'.
|
|
10
|
+
function toStorageBaseName(originalname) {
|
|
11
|
+
const base = (0, path_1.parse)(originalname ?? '')
|
|
12
|
+
.name.normalize('NFKD')
|
|
13
|
+
.replace(/[̀-ͯ]/g, '')
|
|
14
|
+
.toLowerCase()
|
|
15
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
16
|
+
.replace(/^-+|-+$/g, '')
|
|
17
|
+
.slice(0, 50)
|
|
18
|
+
.replace(/-+$/, '');
|
|
19
|
+
return base || 'file';
|
|
20
|
+
}
|
|
21
|
+
// Estensione della chiave: quella del formato reale per le immagini (mimetype fissato da FileTypeImagePipe), altrimenti
|
|
22
|
+
// quella del nome del client, se è fatta solo di lettere e cifre.
|
|
23
|
+
function toStorageExtension(file) {
|
|
24
|
+
const mime = file.mimetype?.toLowerCase();
|
|
25
|
+
const format = Object.keys(file_image_util_1.IMAGE_FORMAT_MIME).find((key) => file_image_util_1.IMAGE_FORMAT_MIME[key] === mime);
|
|
26
|
+
if (format)
|
|
27
|
+
return file_image_util_1.IMAGE_FORMAT_EXTENSION[format];
|
|
28
|
+
const ext = (0, path_1.parse)(file.originalname ?? '').ext.toLowerCase();
|
|
29
|
+
return /^\.[a-z0-9]{1,10}$/.test(ext) ? ext : '';
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=file.name.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.name.util.js","sourceRoot":"","sources":["../../../../../packages/file/src/utils/file.name.util.ts"],"names":[],"mappings":";;AAUA,8CAUC;AAID,gDAWC;AAnCD,+BAA6B;AAC7B,uDAI2B;AAE3B,sHAAsH;AACtH,iHAAiH;AACjH,gCAAgC;AAChC,SAAgB,iBAAiB,CAAC,YAAoB;IACpD,MAAM,IAAI,GAAG,IAAA,YAAK,EAAC,YAAY,IAAI,EAAE,CAAC;SACnC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SACtB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtB,OAAO,IAAI,IAAI,MAAM,CAAC;AACxB,CAAC;AAED,wHAAwH;AACxH,kEAAkE;AAClE,SAAgB,kBAAkB,CAAC,IAGlC;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAI,MAAM,CAAC,IAAI,CAAC,mCAAiB,CAAmB,CAAC,IAAI,CACnE,CAAC,GAAG,EAAE,EAAE,CAAC,mCAAiB,CAAC,GAAG,CAAC,KAAK,IAAI,CACzC,CAAC;IACF,IAAI,MAAM;QAAE,OAAO,wCAAsB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAA,YAAK,EAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;IAC7D,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./file.image.util"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./file.name.util"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/file/src/utils/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,2DAAiC"}
|