@spinajs/fs 2.0.170 → 2.0.171
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/lib/cjs/file-info.d.ts +8 -0
- package/lib/cjs/file-info.d.ts.map +1 -0
- package/lib/cjs/file-info.js +89 -0
- package/lib/cjs/file-info.js.map +1 -0
- package/lib/cjs/fs-hasher.d.ts +9 -0
- package/lib/cjs/fs-hasher.d.ts.map +1 -0
- package/lib/cjs/fs-hasher.js +43 -0
- package/lib/cjs/fs-hasher.js.map +1 -0
- package/lib/cjs/index.d.ts +2 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +3 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +27 -0
- package/lib/cjs/interfaces.d.ts.map +1 -1
- package/lib/cjs/interfaces.js +14 -1
- package/lib/cjs/interfaces.js.map +1 -1
- package/lib/mjs/file-info.d.ts +8 -0
- package/lib/mjs/file-info.d.ts.map +1 -0
- package/lib/mjs/file-info.js +83 -0
- package/lib/mjs/file-info.js.map +1 -0
- package/lib/mjs/fs-hasher.d.ts +9 -0
- package/lib/mjs/fs-hasher.d.ts.map +1 -0
- package/lib/mjs/fs-hasher.js +37 -0
- package/lib/mjs/fs-hasher.js.map +1 -0
- package/lib/mjs/index.d.ts +2 -0
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +3 -1
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/interfaces.d.ts +27 -0
- package/lib/mjs/interfaces.d.ts.map +1 -1
- package/lib/mjs/interfaces.js +11 -0
- package/lib/mjs/interfaces.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +9 -10
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Log } from '@spinajs/log';
|
|
2
|
+
import { FileInfoService, IFileInfo } from './interfaces.js';
|
|
3
|
+
export declare class DefaultFileInfo extends FileInfoService {
|
|
4
|
+
protected Log: Log;
|
|
5
|
+
getInfo(pathToFile: string): Promise<IFileInfo>;
|
|
6
|
+
protected getMetadata(file: string): Promise<unknown>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=file-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-info.d.ts","sourceRoot":"","sources":["../../src/file-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAiB7D,qBACa,eAAgB,SAAQ,eAAe;IAElD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEN,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA4B5D,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM;CAoBnC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.DefaultFileInfo = void 0;
|
|
16
|
+
const di_1 = require("@spinajs/di");
|
|
17
|
+
const log_1 = require("@spinajs/log");
|
|
18
|
+
const exceptions_1 = require("@spinajs/exceptions");
|
|
19
|
+
const fs_1 = require("fs");
|
|
20
|
+
const exiftool_1 = __importDefault(require("exiftool"));
|
|
21
|
+
const interfaces_js_1 = require("./interfaces.js");
|
|
22
|
+
const EXIFTOOL_MAPPINGS = {
|
|
23
|
+
imageHeight: 'Height',
|
|
24
|
+
imageWidth: 'Width',
|
|
25
|
+
duration: 'Duration',
|
|
26
|
+
playDuration: 'Duration',
|
|
27
|
+
frameCount: 'FrameCount',
|
|
28
|
+
frameRate: 'FrameRate',
|
|
29
|
+
videoFrameRate: 'FrameRate',
|
|
30
|
+
maxBitrate: 'Bitrate',
|
|
31
|
+
maxDataRate: 'Bitrate',
|
|
32
|
+
videoCodecName: 'Codec',
|
|
33
|
+
videoCodec: 'Codec',
|
|
34
|
+
compressorID: 'Compressor',
|
|
35
|
+
};
|
|
36
|
+
let DefaultFileInfo = class DefaultFileInfo extends interfaces_js_1.FileInfoService {
|
|
37
|
+
async getInfo(pathToFile) {
|
|
38
|
+
if (!(0, fs_1.existsSync)(pathToFile)) {
|
|
39
|
+
throw new exceptions_1.IOFail(`Path ${pathToFile} not exists`);
|
|
40
|
+
}
|
|
41
|
+
const fInfo = {
|
|
42
|
+
Size: 0,
|
|
43
|
+
Height: 0,
|
|
44
|
+
Width: 0,
|
|
45
|
+
Duration: 0,
|
|
46
|
+
FrameCount: 0,
|
|
47
|
+
FrameRate: 0,
|
|
48
|
+
Bitrate: 0,
|
|
49
|
+
Codec: null,
|
|
50
|
+
Compressor: null,
|
|
51
|
+
};
|
|
52
|
+
const metadata = await this.getMetadata(pathToFile);
|
|
53
|
+
for (const key in EXIFTOOL_MAPPINGS) {
|
|
54
|
+
if (metadata[key]) {
|
|
55
|
+
fInfo[EXIFTOOL_MAPPINGS[key]] = metadata[key];
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return fInfo;
|
|
59
|
+
}
|
|
60
|
+
getMetadata(file) {
|
|
61
|
+
const _exifPromise = new Promise((resolve, reject) => {
|
|
62
|
+
try {
|
|
63
|
+
this.Log.trace(`Obtaining exif info of file at path ${file}...`);
|
|
64
|
+
exiftool_1.default.metadata(file, (err, metadata) => {
|
|
65
|
+
if (err || metadata.error) {
|
|
66
|
+
this.Log.warn(`Exif info failed, reason: ${err.message ?? metadata.error}`);
|
|
67
|
+
reject(err ?? metadata.error);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
resolve(metadata);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
reject(err);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return _exifPromise;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
__decorate([
|
|
82
|
+
(0, log_1.Logger)('fs'),
|
|
83
|
+
__metadata("design:type", log_1.Log)
|
|
84
|
+
], DefaultFileInfo.prototype, "Log", void 0);
|
|
85
|
+
DefaultFileInfo = __decorate([
|
|
86
|
+
(0, di_1.Injectable)(interfaces_js_1.FileInfoService)
|
|
87
|
+
], DefaultFileInfo);
|
|
88
|
+
exports.DefaultFileInfo = DefaultFileInfo;
|
|
89
|
+
//# sourceMappingURL=file-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-info.js","sourceRoot":"","sources":["../../src/file-info.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oCAAyC;AACzC,sCAA2C;AAC3C,oDAA6C;AAC7C,2BAAgC;AAChC,wDAA4B;AAC5B,mDAA6D;AAE7D,MAAM,iBAAiB,GAAG;IACxB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,WAAW;IAC3B,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,OAAO;IACvB,UAAU,EAAE,OAAO;IACnB,YAAY,EAAE,YAAY;CAC3B,CAAC;AAGK,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,+BAAe;IAI3C,KAAK,CAAC,OAAO,CAAC,UAAkB;QACrC,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE;YAC3B,MAAM,IAAI,mBAAM,CAAC,QAAQ,UAAU,aAAa,CAAC,CAAC;SACnD;QAED,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YAER,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI;SACjB,CAAC;QAEF,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAEzD,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE;YACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAChB,KAAa,CAAE,iBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;aACjE;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,WAAW,CAAC,IAAY;QAChC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI;gBACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,IAAI,KAAK,CAAC,CAAC;gBAEjE,kBAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAU,EAAE,QAAa,EAAE,EAAE;oBAChD,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE;wBACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;wBAC5E,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;qBAC/B;yBAAM;wBACL,OAAO,CAAC,QAAQ,CAAC,CAAC;qBACnB;gBACH,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;CACF,CAAA;AAnDC;IAAC,IAAA,YAAM,EAAC,IAAI,CAAC;8BACE,SAAG;4CAAC;AAFR,eAAe;IAD3B,IAAA,eAAU,EAAC,+BAAe,CAAC;GACf,eAAe,CAoD3B;AApDY,0CAAe"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import crypto from 'crypto';
|
|
3
|
+
import { FileHasher } from './interfaces.js';
|
|
4
|
+
export declare class DefaultFileHasher extends FileHasher {
|
|
5
|
+
protected HashAlgo: crypto.Hash;
|
|
6
|
+
constructor();
|
|
7
|
+
hash(pathToFile: string): Promise<string>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=fs-hasher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-hasher.d.ts","sourceRoot":"","sources":["../../src/fs-hasher.ts"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;;IAQzB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAYjD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.DefaultFileHasher = void 0;
|
|
16
|
+
const di_1 = require("@spinajs/di");
|
|
17
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
18
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
19
|
+
const exceptions_1 = require("@spinajs/exceptions");
|
|
20
|
+
const interfaces_js_1 = require("./interfaces.js");
|
|
21
|
+
let DefaultFileHasher = class DefaultFileHasher extends interfaces_js_1.FileHasher {
|
|
22
|
+
constructor() {
|
|
23
|
+
super();
|
|
24
|
+
this.HashAlgo = crypto_1.default.createHash('sha256');
|
|
25
|
+
}
|
|
26
|
+
hash(pathToFile) {
|
|
27
|
+
if (!node_fs_1.default.existsSync(pathToFile)) {
|
|
28
|
+
throw new exceptions_1.IOFail(`File ${pathToFile} not exists locally`);
|
|
29
|
+
}
|
|
30
|
+
return new Promise((resolve, reject) => {
|
|
31
|
+
node_fs_1.default.createReadStream(pathToFile)
|
|
32
|
+
.on('data', (data) => this.HashAlgo.update(data))
|
|
33
|
+
.on('end', () => resolve(this.HashAlgo.digest('hex')))
|
|
34
|
+
.on('error', (err) => reject(err));
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
DefaultFileHasher = __decorate([
|
|
39
|
+
(0, di_1.Injectable)(interfaces_js_1.FileHasher),
|
|
40
|
+
__metadata("design:paramtypes", [])
|
|
41
|
+
], DefaultFileHasher);
|
|
42
|
+
exports.DefaultFileHasher = DefaultFileHasher;
|
|
43
|
+
//# sourceMappingURL=fs-hasher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-hasher.js","sourceRoot":"","sources":["../../src/fs-hasher.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oCAAyC;AACzC,oDAA4B;AAC5B,sDAAyB;AACzB,oDAA6C;AAC7C,mDAA6C;AAGtC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,0BAAU;IAG/C;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,gBAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEM,IAAI,CAAC,UAAkB;QAC5B,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9B,MAAM,IAAI,mBAAM,CAAC,QAAQ,UAAU,qBAAqB,CAAC,CAAC;SAC3D;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,iBAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC;iBAC5B,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBAChD,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBACrD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AArBY,iBAAiB;IAD7B,IAAA,eAAU,EAAC,0BAAU,CAAC;;GACV,iBAAiB,CAqB7B;AArBY,8CAAiB"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { Bootstrapper } from '@spinajs/di';
|
|
|
2
2
|
export * from './interfaces.js';
|
|
3
3
|
export * from './local-provider.js';
|
|
4
4
|
export * from './decorators.js';
|
|
5
|
+
export * from './fs-hasher.js';
|
|
6
|
+
export * from './file-info.js';
|
|
5
7
|
export declare class FsBootsrapper extends Bootstrapper {
|
|
6
8
|
bootstrap(): void;
|
|
7
9
|
}
|
package/lib/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAGvE,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAGvE,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAE/B,qBACa,aAAc,SAAQ,YAAY;IACtC,SAAS,IAAI,IAAI;CAyCzB"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -28,6 +28,8 @@ const interfaces_js_1 = require("./interfaces.js");
|
|
|
28
28
|
__exportStar(require("./interfaces.js"), exports);
|
|
29
29
|
__exportStar(require("./local-provider.js"), exports);
|
|
30
30
|
__exportStar(require("./decorators.js"), exports);
|
|
31
|
+
__exportStar(require("./fs-hasher.js"), exports);
|
|
32
|
+
__exportStar(require("./file-info.js"), exports);
|
|
31
33
|
let FsBootsrapper = class FsBootsrapper extends di_2.Bootstrapper {
|
|
32
34
|
bootstrap() {
|
|
33
35
|
di_2.DI.once('di.resolved.Configuration', (container) => {
|
|
@@ -41,7 +43,7 @@ let FsBootsrapper = class FsBootsrapper extends di_2.Bootstrapper {
|
|
|
41
43
|
// when name is the same, addes last is created
|
|
42
44
|
// eg fs-temp can have default config from package
|
|
43
45
|
// but is overriden in application
|
|
44
|
-
cfg.providers.forEach(x => {
|
|
46
|
+
cfg.providers.forEach((x) => {
|
|
45
47
|
providers.set(x.name, x);
|
|
46
48
|
});
|
|
47
49
|
const rProviders = di_2.DI.RootContainer.Registry.getTypes(interfaces_js_1.fs);
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA6E;AAC7E,oCAA+C;AAC/C,oCAAuE;AACvE,mDAA+E;AAE/E,kDAAgC;AAChC,sDAAoC;AACpC,kDAAgC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA6E;AAC7E,oCAA+C;AAC/C,oCAAuE;AACvE,mDAA+E;AAE/E,kDAAgC;AAChC,sDAAoC;AACpC,kDAAgC;AAChC,iDAA+B;AAC/B,iDAA+B;AAGxB,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,iBAAY;IACtC,SAAS;QACd,OAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,SAAqB,EAAE,EAAE;YAC7D,MAAM,GAAG,GAAqB,SAAS,CAAC,GAAG,CAAC,6BAAa,CAAC,CAAC,GAAG,CAAmB,IAAI,CAAC,CAAC;YAEvF,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;YAE5C,IAAI,CAAC,eAAe,EAAE;gBACpB,MAAM,IAAI,oCAAoB,CAAC,mEAAmE,CAAC,CAAC;aACrG;YAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;YAC5D,2BAA2B;YAC3B,+CAA+C;YAC/C,kDAAkD;YAClD,kCAAkC;YAClC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,OAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,kBAAE,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACzE,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE;gBAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE7E,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,IAAI,qBAAgB,CACxB,QAAQ,SAAS,CAAC,KAAK,CAAC,OAAO,4DAA4D,CAC5F,CAAC;iBACH;gBAED,OAAE,CAAC,OAAO,CAAK,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAU,EAAE,EAAE;oBAC1D,OAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,OAAE,CAAC,QAAQ,CAAC,CAAC,UAAsB,EAAE,IAAa,EAAE,EAAE;YACpD,MAAM,QAAQ,GAAG,OAAE,CAAC,GAAG,CAAK,2BAA2B,GAAG,IAAI,CAAC,CAAC;YAChE,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC7B,CAAC;CACF,CAAA;AA1CY,aAAa;IADzB,IAAA,eAAU,EAAC,iBAAY,CAAC;GACZ,aAAa,CA0CzB;AA1CY,sCAAa"}
|
package/lib/cjs/interfaces.d.ts
CHANGED
|
@@ -22,6 +22,20 @@ export interface IStat {
|
|
|
22
22
|
CreationTime?: DateTime;
|
|
23
23
|
AdditionalData?: unknown;
|
|
24
24
|
}
|
|
25
|
+
export interface IFileInfo {
|
|
26
|
+
/**
|
|
27
|
+
* Size in bytes
|
|
28
|
+
*/
|
|
29
|
+
Size: number;
|
|
30
|
+
Height: number;
|
|
31
|
+
Width: number;
|
|
32
|
+
Duration: number;
|
|
33
|
+
FrameCount: number;
|
|
34
|
+
FrameRate: number;
|
|
35
|
+
Bitrate: number;
|
|
36
|
+
Codec: string;
|
|
37
|
+
Compressor: string;
|
|
38
|
+
}
|
|
25
39
|
export interface IFsLocalOptions {
|
|
26
40
|
/**
|
|
27
41
|
* Full path to local directory where files are hold.
|
|
@@ -103,4 +117,17 @@ export declare abstract class fs extends AsyncService implements IMappableServic
|
|
|
103
117
|
abstract zip(path: string): Promise<IZipResult>;
|
|
104
118
|
tmpname(): string;
|
|
105
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* File information service, obtain file props, metadata etc.
|
|
122
|
+
* Eg. movie resolution, image, codec etc. if possible
|
|
123
|
+
*/
|
|
124
|
+
export declare abstract class FileInfoService {
|
|
125
|
+
abstract getInfo(pathToFile: string): Promise<IFileInfo>;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* File hasher, to create unique hash for file
|
|
129
|
+
*/
|
|
130
|
+
export declare abstract class FileHasher {
|
|
131
|
+
abstract hash(pathToFile: string): Promise<string>;
|
|
132
|
+
}
|
|
106
133
|
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGrC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,sBAAsB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,KAAK;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/interfaces.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fs = void 0;
|
|
3
|
+
exports.FileHasher = exports.FileInfoService = exports.fs = void 0;
|
|
4
4
|
/* eslint-disable security/detect-non-literal-fs-filename */
|
|
5
5
|
const di_1 = require("@spinajs/di");
|
|
6
6
|
const uuid_1 = require("uuid");
|
|
@@ -18,4 +18,17 @@ class fs extends di_1.AsyncService {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
exports.fs = fs;
|
|
21
|
+
/**
|
|
22
|
+
* File information service, obtain file props, metadata etc.
|
|
23
|
+
* Eg. movie resolution, image, codec etc. if possible
|
|
24
|
+
*/
|
|
25
|
+
class FileInfoService {
|
|
26
|
+
}
|
|
27
|
+
exports.FileInfoService = FileInfoService;
|
|
28
|
+
/**
|
|
29
|
+
* File hasher, to create unique hash for file
|
|
30
|
+
*/
|
|
31
|
+
class FileHasher {
|
|
32
|
+
}
|
|
33
|
+
exports.FileHasher = FileHasher;
|
|
21
34
|
//# sourceMappingURL=interfaces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;AAAA,4DAA4D;AAC5D,oCAA6E;AAI7E,+BAAoC;
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;AAAA,4DAA4D;AAC5D,oCAA6E;AAI7E,+BAAoC;AA6EpC,MAAsB,EAAG,SAAQ,iBAAY;IAC3C,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,8DAA8D;IACvD,iBAAiB,CAAC,eAAoB;QAC3C,sEAAsE;QACtE,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAiDM,OAAO;QACZ,OAAO,IAAA,SAAM,GAAE,CAAC;IAClB,CAAC;CACF;AA7DD,gBA6DC;AAED;;;GAGG;AACH,MAAsB,eAAe;CAEpC;AAFD,0CAEC;AAED;;GAEG;AACH,MAAsB,UAAU;CAE/B;AAFD,gCAEC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Log } from '@spinajs/log';
|
|
2
|
+
import { FileInfoService, IFileInfo } from './interfaces.js';
|
|
3
|
+
export declare class DefaultFileInfo extends FileInfoService {
|
|
4
|
+
protected Log: Log;
|
|
5
|
+
getInfo(pathToFile: string): Promise<IFileInfo>;
|
|
6
|
+
protected getMetadata(file: string): Promise<unknown>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=file-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-info.d.ts","sourceRoot":"","sources":["../../src/file-info.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAiB7D,qBACa,eAAgB,SAAQ,eAAe;IAElD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEN,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IA4B5D,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM;CAoBnC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Injectable } from '@spinajs/di';
|
|
11
|
+
import { Log, Logger } from '@spinajs/log';
|
|
12
|
+
import { IOFail } from '@spinajs/exceptions';
|
|
13
|
+
import { existsSync } from 'fs';
|
|
14
|
+
import exif from 'exiftool';
|
|
15
|
+
import { FileInfoService } from './interfaces.js';
|
|
16
|
+
const EXIFTOOL_MAPPINGS = {
|
|
17
|
+
imageHeight: 'Height',
|
|
18
|
+
imageWidth: 'Width',
|
|
19
|
+
duration: 'Duration',
|
|
20
|
+
playDuration: 'Duration',
|
|
21
|
+
frameCount: 'FrameCount',
|
|
22
|
+
frameRate: 'FrameRate',
|
|
23
|
+
videoFrameRate: 'FrameRate',
|
|
24
|
+
maxBitrate: 'Bitrate',
|
|
25
|
+
maxDataRate: 'Bitrate',
|
|
26
|
+
videoCodecName: 'Codec',
|
|
27
|
+
videoCodec: 'Codec',
|
|
28
|
+
compressorID: 'Compressor',
|
|
29
|
+
};
|
|
30
|
+
let DefaultFileInfo = class DefaultFileInfo extends FileInfoService {
|
|
31
|
+
async getInfo(pathToFile) {
|
|
32
|
+
if (!existsSync(pathToFile)) {
|
|
33
|
+
throw new IOFail(`Path ${pathToFile} not exists`);
|
|
34
|
+
}
|
|
35
|
+
const fInfo = {
|
|
36
|
+
Size: 0,
|
|
37
|
+
Height: 0,
|
|
38
|
+
Width: 0,
|
|
39
|
+
Duration: 0,
|
|
40
|
+
FrameCount: 0,
|
|
41
|
+
FrameRate: 0,
|
|
42
|
+
Bitrate: 0,
|
|
43
|
+
Codec: null,
|
|
44
|
+
Compressor: null,
|
|
45
|
+
};
|
|
46
|
+
const metadata = await this.getMetadata(pathToFile);
|
|
47
|
+
for (const key in EXIFTOOL_MAPPINGS) {
|
|
48
|
+
if (metadata[key]) {
|
|
49
|
+
fInfo[EXIFTOOL_MAPPINGS[key]] = metadata[key];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return fInfo;
|
|
53
|
+
}
|
|
54
|
+
getMetadata(file) {
|
|
55
|
+
const _exifPromise = new Promise((resolve, reject) => {
|
|
56
|
+
try {
|
|
57
|
+
this.Log.trace(`Obtaining exif info of file at path ${file}...`);
|
|
58
|
+
exif.metadata(file, (err, metadata) => {
|
|
59
|
+
if (err || metadata.error) {
|
|
60
|
+
this.Log.warn(`Exif info failed, reason: ${err.message ?? metadata.error}`);
|
|
61
|
+
reject(err ?? metadata.error);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
resolve(metadata);
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
reject(err);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
return _exifPromise;
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
__decorate([
|
|
76
|
+
Logger('fs'),
|
|
77
|
+
__metadata("design:type", Log)
|
|
78
|
+
], DefaultFileInfo.prototype, "Log", void 0);
|
|
79
|
+
DefaultFileInfo = __decorate([
|
|
80
|
+
Injectable(FileInfoService)
|
|
81
|
+
], DefaultFileInfo);
|
|
82
|
+
export { DefaultFileInfo };
|
|
83
|
+
//# sourceMappingURL=file-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-info.js","sourceRoot":"","sources":["../../src/file-info.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,IAAI,MAAM,UAAU,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAa,MAAM,iBAAiB,CAAC;AAE7D,MAAM,iBAAiB,GAAG;IACxB,WAAW,EAAE,QAAQ;IACrB,UAAU,EAAE,OAAO;IACnB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,UAAU;IACxB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,WAAW;IAC3B,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,OAAO;IACvB,UAAU,EAAE,OAAO;IACnB,YAAY,EAAE,YAAY;CAC3B,CAAC;AAGK,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,eAAe;IAI3C,KAAK,CAAC,OAAO,CAAC,UAAkB;QACrC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC3B,MAAM,IAAI,MAAM,CAAC,QAAQ,UAAU,aAAa,CAAC,CAAC;SACnD;QAED,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YAER,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC;YACV,KAAK,EAAE,IAAI;YACX,UAAU,EAAE,IAAI;SACjB,CAAC;QAEF,MAAM,QAAQ,GAAQ,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAEzD,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE;YACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAChB,KAAa,CAAE,iBAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;aACjE;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAES,WAAW,CAAC,IAAY;QAChC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI;gBACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,IAAI,KAAK,CAAC,CAAC;gBAEjE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAU,EAAE,QAAa,EAAE,EAAE;oBAChD,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE;wBACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;wBAC5E,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;qBAC/B;yBAAM;wBACL,OAAO,CAAC,QAAQ,CAAC,CAAC;qBACnB;gBACH,CAAC,CAAC,CAAC;aACJ;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC,CAAC;aACb;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;CACF,CAAA;AAnDC;IAAC,MAAM,CAAC,IAAI,CAAC;8BACE,GAAG;4CAAC;AAFR,eAAe;IAD3B,UAAU,CAAC,eAAe,CAAC;GACf,eAAe,CAoD3B;SApDY,eAAe"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
+
import crypto from 'crypto';
|
|
3
|
+
import { FileHasher } from './interfaces.js';
|
|
4
|
+
export declare class DefaultFileHasher extends FileHasher {
|
|
5
|
+
protected HashAlgo: crypto.Hash;
|
|
6
|
+
constructor();
|
|
7
|
+
hash(pathToFile: string): Promise<string>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=fs-hasher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-hasher.d.ts","sourceRoot":"","sources":["../../src/fs-hasher.ts"],"names":[],"mappings":";AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,qBACa,iBAAkB,SAAQ,UAAU;IAC/C,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;;IAQzB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAYjD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { Injectable } from '@spinajs/di';
|
|
11
|
+
import crypto from 'crypto';
|
|
12
|
+
import fs from 'node:fs';
|
|
13
|
+
import { IOFail } from '@spinajs/exceptions';
|
|
14
|
+
import { FileHasher } from './interfaces.js';
|
|
15
|
+
let DefaultFileHasher = class DefaultFileHasher extends FileHasher {
|
|
16
|
+
constructor() {
|
|
17
|
+
super();
|
|
18
|
+
this.HashAlgo = crypto.createHash('sha256');
|
|
19
|
+
}
|
|
20
|
+
hash(pathToFile) {
|
|
21
|
+
if (!fs.existsSync(pathToFile)) {
|
|
22
|
+
throw new IOFail(`File ${pathToFile} not exists locally`);
|
|
23
|
+
}
|
|
24
|
+
return new Promise((resolve, reject) => {
|
|
25
|
+
fs.createReadStream(pathToFile)
|
|
26
|
+
.on('data', (data) => this.HashAlgo.update(data))
|
|
27
|
+
.on('end', () => resolve(this.HashAlgo.digest('hex')))
|
|
28
|
+
.on('error', (err) => reject(err));
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
DefaultFileHasher = __decorate([
|
|
33
|
+
Injectable(FileHasher),
|
|
34
|
+
__metadata("design:paramtypes", [])
|
|
35
|
+
], DefaultFileHasher);
|
|
36
|
+
export { DefaultFileHasher };
|
|
37
|
+
//# sourceMappingURL=fs-hasher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs-hasher.js","sourceRoot":"","sources":["../../src/fs-hasher.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGtC,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,UAAU;IAG/C;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAEM,IAAI,CAAC,UAAkB;QAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9B,MAAM,IAAI,MAAM,CAAC,QAAQ,UAAU,qBAAqB,CAAC,CAAC;SAC3D;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC;iBAC5B,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;iBAChD,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBACrD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AArBY,iBAAiB;IAD7B,UAAU,CAAC,UAAU,CAAC;;GACV,iBAAiB,CAqB7B;SArBY,iBAAiB"}
|
package/lib/mjs/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ import { Bootstrapper } from '@spinajs/di';
|
|
|
2
2
|
export * from './interfaces.js';
|
|
3
3
|
export * from './local-provider.js';
|
|
4
4
|
export * from './decorators.js';
|
|
5
|
+
export * from './fs-hasher.js';
|
|
6
|
+
export * from './file-info.js';
|
|
5
7
|
export declare class FsBootsrapper extends Bootstrapper {
|
|
6
8
|
bootstrap(): void;
|
|
7
9
|
}
|
package/lib/mjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAGvE,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAc,YAAY,EAAkB,MAAM,aAAa,CAAC;AAGvE,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAE/B,qBACa,aAAc,SAAQ,YAAY;IACtC,SAAS,IAAI,IAAI;CAyCzB"}
|
package/lib/mjs/index.js
CHANGED
|
@@ -11,6 +11,8 @@ import { fs } from './interfaces.js';
|
|
|
11
11
|
export * from './interfaces.js';
|
|
12
12
|
export * from './local-provider.js';
|
|
13
13
|
export * from './decorators.js';
|
|
14
|
+
export * from './fs-hasher.js';
|
|
15
|
+
export * from './file-info.js';
|
|
14
16
|
let FsBootsrapper = class FsBootsrapper extends Bootstrapper {
|
|
15
17
|
bootstrap() {
|
|
16
18
|
DI.once('di.resolved.Configuration', (container) => {
|
|
@@ -24,7 +26,7 @@ let FsBootsrapper = class FsBootsrapper extends Bootstrapper {
|
|
|
24
26
|
// when name is the same, addes last is created
|
|
25
27
|
// eg fs-temp can have default config from package
|
|
26
28
|
// but is overriden in application
|
|
27
|
-
cfg.providers.forEach(x => {
|
|
29
|
+
cfg.providers.forEach((x) => {
|
|
28
30
|
providers.set(x.name, x);
|
|
29
31
|
});
|
|
30
32
|
const rProviders = DI.RootContainer.Registry.getTypes(fs);
|
package/lib/mjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAc,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,EAAE,EAA4C,MAAM,iBAAiB,CAAC;AAE/E,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAc,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,EAAE,EAA4C,MAAM,iBAAiB,CAAC;AAE/E,cAAc,iBAAiB,CAAC;AAChC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAGxB,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,YAAY;IACtC,SAAS;QACd,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,SAAqB,EAAE,EAAE;YAC7D,MAAM,GAAG,GAAqB,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAmB,IAAI,CAAC,CAAC;YAEvF,MAAM,eAAe,GAAG,GAAG,CAAC,eAAe,CAAC;YAE5C,IAAI,CAAC,eAAe,EAAE;gBACpB,MAAM,IAAI,oBAAoB,CAAC,mEAAmE,CAAC,CAAC;aACrG;YAED,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;YAC5D,2BAA2B;YAC3B,+CAA+C;YAC/C,kDAAkD;YAClD,kCAAkC;YAClC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC1B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACzE,KAAK,MAAM,SAAS,IAAI,IAAI,EAAE;gBAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE7E,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,IAAI,gBAAgB,CACxB,QAAQ,SAAS,CAAC,KAAK,CAAC,OAAO,4DAA4D,CAC5F,CAAC;iBACH;gBAED,EAAE,CAAC,OAAO,CAAK,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAU,EAAE,EAAE;oBAC1D,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,CAAC,CAAC,UAAsB,EAAE,IAAa,EAAE,EAAE;YACpD,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAK,2BAA2B,GAAG,IAAI,CAAC,CAAC;YAChE,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;IAC7B,CAAC;CACF,CAAA;AA1CY,aAAa;IADzB,UAAU,CAAC,YAAY,CAAC;GACZ,aAAa,CA0CzB;SA1CY,aAAa"}
|
package/lib/mjs/interfaces.d.ts
CHANGED
|
@@ -22,6 +22,20 @@ export interface IStat {
|
|
|
22
22
|
CreationTime?: DateTime;
|
|
23
23
|
AdditionalData?: unknown;
|
|
24
24
|
}
|
|
25
|
+
export interface IFileInfo {
|
|
26
|
+
/**
|
|
27
|
+
* Size in bytes
|
|
28
|
+
*/
|
|
29
|
+
Size: number;
|
|
30
|
+
Height: number;
|
|
31
|
+
Width: number;
|
|
32
|
+
Duration: number;
|
|
33
|
+
FrameCount: number;
|
|
34
|
+
FrameRate: number;
|
|
35
|
+
Bitrate: number;
|
|
36
|
+
Codec: string;
|
|
37
|
+
Compressor: string;
|
|
38
|
+
}
|
|
25
39
|
export interface IFsLocalOptions {
|
|
26
40
|
/**
|
|
27
41
|
* Full path to local directory where files are hold.
|
|
@@ -103,4 +117,17 @@ export declare abstract class fs extends AsyncService implements IMappableServic
|
|
|
103
117
|
abstract zip(path: string): Promise<IZipResult>;
|
|
104
118
|
tmpname(): string;
|
|
105
119
|
}
|
|
120
|
+
/**
|
|
121
|
+
* File information service, obtain file props, metadata etc.
|
|
122
|
+
* Eg. movie resolution, image, codec etc. if possible
|
|
123
|
+
*/
|
|
124
|
+
export declare abstract class FileInfoService {
|
|
125
|
+
abstract getInfo(pathToFile: string): Promise<IFileInfo>;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* File hasher, to create unique hash for file
|
|
129
|
+
*/
|
|
130
|
+
export declare abstract class FileHasher {
|
|
131
|
+
abstract hash(pathToFile: string): Promise<string>;
|
|
132
|
+
}
|
|
106
133
|
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;AACA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAGrC,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AACD,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,sBAAsB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,KAAK;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,QAAQ,CAAC;IACtB,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,YAAY,CAAC,EAAE,QAAQ,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
|
package/lib/mjs/interfaces.js
CHANGED
|
@@ -14,4 +14,15 @@ export class fs extends AsyncService {
|
|
|
14
14
|
return uuidv4();
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* File information service, obtain file props, metadata etc.
|
|
19
|
+
* Eg. movie resolution, image, codec etc. if possible
|
|
20
|
+
*/
|
|
21
|
+
export class FileInfoService {
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* File hasher, to create unique hash for file
|
|
25
|
+
*/
|
|
26
|
+
export class FileHasher {
|
|
27
|
+
}
|
|
17
28
|
//# sourceMappingURL=interfaces.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,YAAY,EAAoC,MAAM,aAAa,CAAC;AAI7E,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,YAAY,EAAoC,MAAM,aAAa,CAAC;AAI7E,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AA6EpC,MAAM,OAAgB,EAAG,SAAQ,YAAY;IAC3C,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,8DAA8D;IACvD,iBAAiB,CAAC,eAAoB;QAC3C,sEAAsE;QACtE,OAAO,IAAI,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IAiDM,OAAO;QACZ,OAAO,MAAM,EAAE,CAAC;IAClB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAgB,eAAe;CAEpC;AAED;;GAEG;AACH,MAAM,OAAgB,UAAU;CAE/B"}
|