@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.
@@ -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"}
@@ -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
  }
@@ -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;AAEhC,qBACa,aAAc,SAAQ,YAAY;IACtC,SAAS,IAAI,IAAI;CA8CzB"}
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);
@@ -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;AAGzB,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,iBAAY;IACtC,SAAS;QAEd,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;gBACxB,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,CAAC,QAAQ,SAAS,CAAC,KAAK,CAAC,OAAO,4DAA4D,CAAC,CAAC;iBACzH;gBAED,OAAE,CAAC,OAAO,CACR,IAAI,EACJ,CAAC,SAAS,CAAC,KAAK,CAAC,CAClB,CAAC,IAAI,CAAC,CAAC,MAAU,EAAE,EAAE;oBACpB,OAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAA;aACH;QAIH,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;AA/CY,aAAa;IADzB,IAAA,eAAU,EAAC,iBAAY,CAAC;GACZ,aAAa,CA+CzB;AA/CY,sCAAa"}
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"}
@@ -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":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -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;AA4DpC,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"}
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"}
@@ -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
  }
@@ -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;AAEhC,qBACa,aAAc,SAAQ,YAAY;IACtC,SAAS,IAAI,IAAI;CA8CzB"}
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);
@@ -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;AAGzB,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,YAAY;IACtC,SAAS;QAEd,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;gBACxB,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,CAAC,QAAQ,SAAS,CAAC,KAAK,CAAC,OAAO,4DAA4D,CAAC,CAAC;iBACzH;gBAED,EAAE,CAAC,OAAO,CACR,IAAI,EACJ,CAAC,SAAS,CAAC,KAAK,CAAC,CAClB,CAAC,IAAI,CAAC,CAAC,MAAU,EAAE,EAAE;oBACpB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,2BAA2B,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAA;aACH;QAIH,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;AA/CY,aAAa;IADzB,UAAU,CAAC,YAAY,CAAC;GACZ,aAAa,CA+CzB;SA/CY,aAAa"}
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"}
@@ -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":"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"}
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,SAAS;IACxB;;OAEG;IAEH,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IAEd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;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;IAC1D;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IAExB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,IAAI,MAAM,CAAC;IACrB,QAAQ,IAAI,UAAU,CAAC;IACvB,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED,8BAAsB,EAAG,SAAQ,YAAa,YAAW,gBAAgB,EAAE,cAAc;IACvF,IAAW,WAAW,WAErB;IAGM,iBAAiB,CAAC,eAAe,EAAE,GAAG,GAAG,OAAO;IAKvD,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;;;;;;;OAUG;aACa,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAEvD;;;;;OAKG;aACa,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;aACjC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;aACvE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;aACxE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;aACpF,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;aACxF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;aACtC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;aACzC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aAC/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aACrD,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aACvD,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACzD,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;aAClC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;aAClC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;aACrC,OAAO,IAAI,MAAM;aACjB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IACrG;;;;;;OAMG;aACa,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAE/C,OAAO;CAGf;AAED;;;GAGG;AACH,8BAAsB,eAAe;aACnB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;CAChE;AAED;;GAEG;AACH,8BAAsB,UAAU;aACd,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAC1D"}
@@ -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;AA4DpC,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"}
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"}