@spinajs/fs 2.0.170 → 2.0.172
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-hasher.d.ts +9 -0
- package/lib/cjs/file-hasher.d.ts.map +1 -0
- package/lib/cjs/file-hasher.js +43 -0
- package/lib/cjs/file-hasher.js.map +1 -0
- package/lib/cjs/file-info.d.ts +11 -0
- package/lib/cjs/file-info.d.ts.map +1 -0
- package/lib/cjs/file-info.js +123 -0
- package/lib/cjs/file-info.js.map +1 -0
- package/lib/cjs/index.d.ts +3 -0
- package/lib/cjs/index.d.ts.map +1 -1
- package/lib/cjs/index.js +4 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/interfaces.d.ts +41 -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/cjs/local-provider.d.ts +4 -2
- package/lib/cjs/local-provider.d.ts.map +1 -1
- package/lib/cjs/local-provider.js +12 -3
- package/lib/cjs/local-provider.js.map +1 -1
- package/lib/cjs/local-temp-provider.d.ts.map +1 -1
- package/lib/cjs/local-temp-provider.js +17 -3
- package/lib/cjs/local-temp-provider.js.map +1 -1
- package/lib/mjs/file-hasher.d.ts +9 -0
- package/lib/mjs/file-hasher.d.ts.map +1 -0
- package/lib/mjs/file-hasher.js +37 -0
- package/lib/mjs/file-hasher.js.map +1 -0
- package/lib/mjs/file-info.d.ts +11 -0
- package/lib/mjs/file-info.d.ts.map +1 -0
- package/lib/mjs/file-info.js +120 -0
- package/lib/mjs/file-info.js.map +1 -0
- package/lib/mjs/index.d.ts +3 -0
- package/lib/mjs/index.d.ts.map +1 -1
- package/lib/mjs/index.js +4 -1
- package/lib/mjs/index.js.map +1 -1
- package/lib/mjs/interfaces.d.ts +41 -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/mjs/local-provider.d.ts +4 -2
- package/lib/mjs/local-provider.d.ts.map +1 -1
- package/lib/mjs/local-provider.js +13 -4
- package/lib/mjs/local-provider.js.map +1 -1
- package/lib/mjs/local-temp-provider.d.ts.map +1 -1
- package/lib/mjs/local-temp-provider.js +18 -3
- package/lib/mjs/local-temp-provider.js.map +1 -1
- package/lib/tsconfig.cjs.tsbuildinfo +1 -1
- package/lib/tsconfig.mjs.tsbuildinfo +1 -1
- package/package.json +12 -11
|
@@ -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=file-hasher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-hasher.d.ts","sourceRoot":"","sources":["../../src/file-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;;IAQnB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAYvD"}
|
|
@@ -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
|
+
async hash(pathToFile) {
|
|
27
|
+
if (!node_fs_1.default.existsSync(pathToFile)) {
|
|
28
|
+
throw new exceptions_1.IOFail(`File ${pathToFile} not exists`);
|
|
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=file-hasher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-hasher.js","sourceRoot":"","sources":["../../src/file-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,KAAK,CAAC,IAAI,CAAC,UAAkB;QAClC,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9B,MAAM,IAAI,mBAAM,CAAC,QAAQ,UAAU,aAAa,CAAC,CAAC;SACnD;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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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 spawnExifProcess(file: string): Promise<string>;
|
|
7
|
+
protected getMetadata(file: string): Promise<{
|
|
8
|
+
[key: string]: string | number;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
|
+
//# 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":"AAGA,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA2C7D,qBACa,eAAgB,SAAQ,eAAe;IAElD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEN,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;cAqB5C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAa/C,WAAW,CAAC,IAAI,EAAE,MAAM;;;CAsCzC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.DefaultFileInfo = void 0;
|
|
13
|
+
const node_child_process_1 = require("node:child_process");
|
|
14
|
+
const di_1 = require("@spinajs/di");
|
|
15
|
+
const log_1 = require("@spinajs/log");
|
|
16
|
+
const exceptions_1 = require("@spinajs/exceptions");
|
|
17
|
+
const fs_1 = require("fs");
|
|
18
|
+
const interfaces_js_1 = require("./interfaces.js");
|
|
19
|
+
const luxon_1 = require("luxon");
|
|
20
|
+
const EXIFTOOL_MAPPINGS = {
|
|
21
|
+
audioChannels: "AudioChannels",
|
|
22
|
+
imageHeight: 'Height',
|
|
23
|
+
imageWidth: 'Width',
|
|
24
|
+
duration: 'Duration',
|
|
25
|
+
playDuration: 'Duration',
|
|
26
|
+
frameCount: 'FrameCount',
|
|
27
|
+
frameRate: 'FrameRate',
|
|
28
|
+
videoFrameRate: 'FrameRate',
|
|
29
|
+
maxBitrate: 'Bitrate',
|
|
30
|
+
maxDataRate: 'Bitrate',
|
|
31
|
+
avgBitrate: 'Bitrate',
|
|
32
|
+
compressorID: 'Codec',
|
|
33
|
+
fileSize: ["FileSize", (val) => (parseInt(val))],
|
|
34
|
+
'fileAccessDate/Time': ["AccessDate", (val) => { return luxon_1.DateTime.fromFormat(val, "yyyy:MM:dd HH:mm:ssZZ"); }],
|
|
35
|
+
'fileCreationDate/Time': ["CreationDate", (val) => { return luxon_1.DateTime.fromFormat(val, "yyyy:MM:dd HH:mm:ssZZ"); }],
|
|
36
|
+
'fileModificationDate/Time': ["ModificationDate", (val) => { return luxon_1.DateTime.fromFormat(val, "yyyy:MM:dd HH:mm:ssZZ"); }],
|
|
37
|
+
mimeType: "MimeType",
|
|
38
|
+
mimeEncoding: "Encoding",
|
|
39
|
+
wordCount: "WordCount",
|
|
40
|
+
lineCount: "LineCount"
|
|
41
|
+
};
|
|
42
|
+
function _fInfoInit() {
|
|
43
|
+
return {
|
|
44
|
+
FileSize: 0,
|
|
45
|
+
Height: 0,
|
|
46
|
+
Width: 0,
|
|
47
|
+
Duration: 0,
|
|
48
|
+
FrameCount: 0,
|
|
49
|
+
FrameRate: 0,
|
|
50
|
+
Bitrate: 0,
|
|
51
|
+
Codec: null,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
let DefaultFileInfo = class DefaultFileInfo extends interfaces_js_1.FileInfoService {
|
|
55
|
+
async getInfo(pathToFile) {
|
|
56
|
+
if (!(0, fs_1.existsSync)(pathToFile)) {
|
|
57
|
+
throw new exceptions_1.IOFail(`Path ${pathToFile} not exists`);
|
|
58
|
+
}
|
|
59
|
+
const fInfo = _fInfoInit();
|
|
60
|
+
const metadata = await this.getMetadata(pathToFile);
|
|
61
|
+
for (const key in EXIFTOOL_MAPPINGS) {
|
|
62
|
+
if (metadata[key]) {
|
|
63
|
+
const mKey = EXIFTOOL_MAPPINGS[key];
|
|
64
|
+
if (Array.isArray(mKey)) {
|
|
65
|
+
fInfo[mKey[0]] = mKey[1](metadata[key]);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
fInfo[EXIFTOOL_MAPPINGS[key]] = metadata[key];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return fInfo;
|
|
73
|
+
}
|
|
74
|
+
async spawnExifProcess(file) {
|
|
75
|
+
return new Promise((resolve, reject) => {
|
|
76
|
+
const process = (0, node_child_process_1.spawn)("exiftool", [file, "-n"]);
|
|
77
|
+
let stdOutBuffer = "";
|
|
78
|
+
let stdErrBuffer = "";
|
|
79
|
+
process.on("error", (err) => (reject(err)));
|
|
80
|
+
process.on("close", () => (stdErrBuffer ? reject(stdErrBuffer) : resolve(stdOutBuffer)));
|
|
81
|
+
process.stdout.on("data", (data) => (stdOutBuffer += data.toString("utf-8")));
|
|
82
|
+
process.stderr.on("data", (data) => (stdErrBuffer += data.toString("utf-8")));
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
async getMetadata(file) {
|
|
86
|
+
const raw = await this.spawnExifProcess(file);
|
|
87
|
+
// Split the response into lines.
|
|
88
|
+
const response = raw.split("\n");
|
|
89
|
+
//For each line of the response extract the meta data into a nice associative array
|
|
90
|
+
const metaData = {};
|
|
91
|
+
response.forEach(function (responseLine) {
|
|
92
|
+
var pieces = responseLine.split(": ");
|
|
93
|
+
//Is this a line with a meta data pair on it?
|
|
94
|
+
if (pieces.length == 2) {
|
|
95
|
+
//Turn the plain text data key into a camel case key.
|
|
96
|
+
var key = pieces[0].trim().split(' ').map(function (tokenInKey, tokenNumber) {
|
|
97
|
+
if (tokenNumber === 0)
|
|
98
|
+
return tokenInKey.toLowerCase();
|
|
99
|
+
else
|
|
100
|
+
return tokenInKey[0].toUpperCase() + tokenInKey.slice(1);
|
|
101
|
+
}).join('');
|
|
102
|
+
//Trim the value associated with the key to make it nice.
|
|
103
|
+
var value = pieces[1].trim();
|
|
104
|
+
if (+value === +value) {
|
|
105
|
+
metaData[key] = parseFloat(value);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
metaData[key] = value;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
return metaData;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
__decorate([
|
|
116
|
+
(0, log_1.Logger)('fs'),
|
|
117
|
+
__metadata("design:type", log_1.Log)
|
|
118
|
+
], DefaultFileInfo.prototype, "Log", void 0);
|
|
119
|
+
DefaultFileInfo = __decorate([
|
|
120
|
+
(0, di_1.Injectable)(interfaces_js_1.FileInfoService)
|
|
121
|
+
], DefaultFileInfo);
|
|
122
|
+
exports.DefaultFileInfo = DefaultFileInfo;
|
|
123
|
+
//# sourceMappingURL=file-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-info.js","sourceRoot":"","sources":["../../src/file-info.ts"],"names":[],"mappings":"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"}
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { Bootstrapper } from '@spinajs/di';
|
|
2
2
|
export * from './interfaces.js';
|
|
3
3
|
export * from './local-provider.js';
|
|
4
|
+
export * from './local-temp-provider.js';
|
|
4
5
|
export * from './decorators.js';
|
|
6
|
+
export * from './file-hasher.js';
|
|
7
|
+
export * from './file-info.js';
|
|
5
8
|
export declare class FsBootsrapper extends Bootstrapper {
|
|
6
9
|
bootstrap(): void;
|
|
7
10
|
}
|
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,0BAA0B,CAAC;AACzC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAE/B,qBACa,aAAc,SAAQ,YAAY;IACtC,SAAS,IAAI,IAAI;CAyCzB"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -27,7 +27,10 @@ const di_2 = require("@spinajs/di");
|
|
|
27
27
|
const interfaces_js_1 = require("./interfaces.js");
|
|
28
28
|
__exportStar(require("./interfaces.js"), exports);
|
|
29
29
|
__exportStar(require("./local-provider.js"), exports);
|
|
30
|
+
__exportStar(require("./local-temp-provider.js"), exports);
|
|
30
31
|
__exportStar(require("./decorators.js"), exports);
|
|
32
|
+
__exportStar(require("./file-hasher.js"), exports);
|
|
33
|
+
__exportStar(require("./file-info.js"), exports);
|
|
31
34
|
let FsBootsrapper = class FsBootsrapper extends di_2.Bootstrapper {
|
|
32
35
|
bootstrap() {
|
|
33
36
|
di_2.DI.once('di.resolved.Configuration', (container) => {
|
|
@@ -41,7 +44,7 @@ let FsBootsrapper = class FsBootsrapper extends di_2.Bootstrapper {
|
|
|
41
44
|
// when name is the same, addes last is created
|
|
42
45
|
// eg fs-temp can have default config from package
|
|
43
46
|
// but is overriden in application
|
|
44
|
-
cfg.providers.forEach(x => {
|
|
47
|
+
cfg.providers.forEach((x) => {
|
|
45
48
|
providers.set(x.name, x);
|
|
46
49
|
});
|
|
47
50
|
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,2DAAyC;AACzC,kDAAgC;AAChC,mDAAiC;AACjC,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,26 @@ export interface IStat {
|
|
|
22
22
|
CreationTime?: DateTime;
|
|
23
23
|
AdditionalData?: unknown;
|
|
24
24
|
}
|
|
25
|
+
export interface IFileInfo {
|
|
26
|
+
/**
|
|
27
|
+
* Size in bytes
|
|
28
|
+
*/
|
|
29
|
+
FileSize: number;
|
|
30
|
+
Height?: number;
|
|
31
|
+
Width?: number;
|
|
32
|
+
Duration?: number;
|
|
33
|
+
FrameCount?: number;
|
|
34
|
+
FrameRate?: number;
|
|
35
|
+
Bitrate?: number;
|
|
36
|
+
Codec?: string;
|
|
37
|
+
LineCount?: number;
|
|
38
|
+
Encoding?: string;
|
|
39
|
+
MimeType?: string;
|
|
40
|
+
WordCount?: number;
|
|
41
|
+
AccessDate?: DateTime;
|
|
42
|
+
ModificationDate?: DateTime;
|
|
43
|
+
CreationDate?: DateTime;
|
|
44
|
+
}
|
|
25
45
|
export interface IFsLocalOptions {
|
|
26
46
|
/**
|
|
27
47
|
* Full path to local directory where files are hold.
|
|
@@ -81,6 +101,7 @@ export declare abstract class fs extends AsyncService implements IMappableServic
|
|
|
81
101
|
abstract readStream(path: string, encoding?: BufferEncoding): Promise<ReadStream>;
|
|
82
102
|
abstract write(path: string, data: string | Buffer, encoding?: BufferEncoding): Promise<void>;
|
|
83
103
|
abstract writeStream(path: string, encoding?: BufferEncoding): Promise<WriteStream | PassThrough>;
|
|
104
|
+
abstract writeStream(path: string, readStream: ReadStream, encoding?: BufferEncoding): Promise<WriteStream | PassThrough | void>;
|
|
84
105
|
abstract exists(path: string): Promise<boolean>;
|
|
85
106
|
abstract dirExists(path: string): Promise<boolean>;
|
|
86
107
|
abstract copy(path: string, dest: string): Promise<void>;
|
|
@@ -101,6 +122,26 @@ export declare abstract class fs extends AsyncService implements IMappableServic
|
|
|
101
122
|
* @param path - path to zip
|
|
102
123
|
*/
|
|
103
124
|
abstract zip(path: string): Promise<IZipResult>;
|
|
125
|
+
/**
|
|
126
|
+
* Decompress given file to destination path
|
|
127
|
+
*
|
|
128
|
+
* @param path path to zip file
|
|
129
|
+
* @param destPath path to destination dir
|
|
130
|
+
*/
|
|
131
|
+
abstract unzip(srcPath: string, destPath: string): Promise<void>;
|
|
104
132
|
tmpname(): string;
|
|
105
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* File information service, obtain file props, metadata etc.
|
|
136
|
+
* Eg. movie resolution, image, codec etc. if possible
|
|
137
|
+
*/
|
|
138
|
+
export declare abstract class FileInfoService {
|
|
139
|
+
abstract getInfo(pathToFile: string): Promise<IFileInfo>;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* File hasher, to create unique hash for file
|
|
143
|
+
*/
|
|
144
|
+
export declare abstract class FileHasher {
|
|
145
|
+
abstract hash(pathToFile: string): Promise<string>;
|
|
146
|
+
}
|
|
106
147
|
//# 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;AAsFpC,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;IA0DM,OAAO;QACZ,OAAO,IAAA,SAAM,GAAE,CAAC;IAClB,CAAC;CACF;AAtED,gBAsEC;AAED;;;GAGG;AACH,MAAsB,eAAe;CAEpC;AAFD,0CAEC;AAED;;GAEG;AACH,MAAsB,UAAU;CAE/B;AAFD,gCAEC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
/// <reference types="node" />
|
|
3
|
+
import { ReadStream } from 'fs';
|
|
3
4
|
import { fs, IFsLocalOptions, IStat, IZipResult } from './interfaces.js';
|
|
4
5
|
import { Log } from '@spinajs/log-common';
|
|
5
6
|
/**
|
|
@@ -33,13 +34,13 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
|
|
|
33
34
|
* read all content of file
|
|
34
35
|
*/
|
|
35
36
|
read(path: string, encoding?: BufferEncoding): Promise<string | Buffer>;
|
|
36
|
-
readStream(path: string, encoding?: BufferEncoding): Promise<
|
|
37
|
+
readStream(path: string, encoding?: BufferEncoding): Promise<ReadStream>;
|
|
37
38
|
/**
|
|
38
39
|
* Write to file string or buffer
|
|
39
40
|
*/
|
|
40
41
|
write(path: string, data: string | Buffer, encoding: BufferEncoding): Promise<void>;
|
|
41
42
|
append(path: string, data: string | Buffer, encoding?: BufferEncoding): Promise<void>;
|
|
42
|
-
writeStream(path: string, encoding?: BufferEncoding): Promise<import("fs").WriteStream>;
|
|
43
|
+
writeStream(path: string, rStream?: BufferEncoding | ReadStream, encoding?: BufferEncoding): Promise<import("fs").WriteStream>;
|
|
43
44
|
/**
|
|
44
45
|
* Checks if file existst
|
|
45
46
|
* @param path - path to check
|
|
@@ -92,6 +93,7 @@ export declare class fsNative<T extends IFsLocalOptions> extends fs {
|
|
|
92
93
|
* @param path - path to directory
|
|
93
94
|
*/
|
|
94
95
|
list(path: string): Promise<string[]>;
|
|
96
|
+
unzip(path: string, destPath: string): Promise<void>;
|
|
95
97
|
zip(path: string, zName?: string): Promise<IZipResult>;
|
|
96
98
|
resolvePath(path: string): string;
|
|
97
99
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"local-provider.d.ts","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":";;AAEA,OAAO,EAA0E,UAAU,EAAE,MAAM,IAAI,CAAC;AAIxG,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAU,MAAM,qBAAqB,CAAC;AAKlD;;;;;;;;GAQG;AACH,qBAEa,QAAQ,CAAC,CAAC,SAAS,eAAe,CAAE,SAAQ,EAAE;IAYtC,OAAO,EAAE,CAAC;IAV7B,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC;IAEtB;;;OAGG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;gBAEkB,OAAO,EAAE,CAAC;IAIhB,OAAO;IAepB;;;;;;OAMG;IACU,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWpD;;OAEG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc;IAYlD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc;IAIzD;;OAEG;IACU,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,cAAc;IAKnE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3F,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,UAAU,EAAE,QAAQ,CAAC,EAAE,cAAc;IAIjG;;;OAGG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM;IASnB,SAAS,CAAC,IAAI,EAAE,MAAM;IAInC;;;;OAIG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAI5C;;OAEG;IACU,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAgBlD;;OAEG;IACU,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAIpD;;;;;OAKG;IACU,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO;IASpD;;;;;OAKG;IACU,EAAE,CAAC,IAAI,EAAE,MAAM;IAI5B;;;;;OAKG;IACU,KAAK,CAAC,IAAI,EAAE,MAAM;IAI/B;;OAEG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAaxC,OAAO,IAAI,MAAM;IAIxB;;;;OAIG;IACU,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAUpC,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAsC5D,WAAW,CAAC,IAAI,EAAE,MAAM;CAOhC"}
|
|
@@ -23,6 +23,7 @@ const interfaces_js_1 = require("./interfaces.js");
|
|
|
23
23
|
const path_1 = require("path");
|
|
24
24
|
const log_common_1 = require("@spinajs/log-common");
|
|
25
25
|
const archiver_1 = __importDefault(require("archiver"));
|
|
26
|
+
const unzipper_1 = __importDefault(require("unzipper"));
|
|
26
27
|
/**
|
|
27
28
|
* Abstract layer for file operations.
|
|
28
29
|
* Basic implementation is just wrapper for native node fs functions
|
|
@@ -98,8 +99,8 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
98
99
|
async append(path, data, encoding) {
|
|
99
100
|
await (0, promises_1.appendFile)(path, data, encoding);
|
|
100
101
|
}
|
|
101
|
-
writeStream(path, encoding) {
|
|
102
|
-
return Promise.resolve((0, fs_1.createWriteStream)(this.resolvePath(path), { encoding: encoding ?? 'binary' }));
|
|
102
|
+
writeStream(path, rStream, encoding) {
|
|
103
|
+
return Promise.resolve((0, fs_1.createWriteStream)(this.resolvePath(path), { encoding: (typeof rStream === 'string' ? rStream : encoding) ?? 'binary' }));
|
|
103
104
|
}
|
|
104
105
|
/**
|
|
105
106
|
* Checks if file existst
|
|
@@ -207,8 +208,16 @@ let fsNative = class fsNative extends interfaces_js_1.fs {
|
|
|
207
208
|
async list(path) {
|
|
208
209
|
return await (0, promises_1.readdir)(this.resolvePath(path));
|
|
209
210
|
}
|
|
211
|
+
async unzip(path, destPath) {
|
|
212
|
+
return new Promise((resolve, reject) => {
|
|
213
|
+
(0, fs_1.createReadStream)(this.resolvePath(path)).pipe(unzipper_1.default.Extract({
|
|
214
|
+
path: this.resolvePath(destPath)
|
|
215
|
+
}).on('close', resolve).on('error', reject));
|
|
216
|
+
});
|
|
217
|
+
}
|
|
210
218
|
async zip(path, zName) {
|
|
211
|
-
const
|
|
219
|
+
const fs = await di_1.DI.resolve('__file_provider__', ['fs-temp']);
|
|
220
|
+
const outFile = fs.resolvePath(fs.tmpname() + '.zip');
|
|
212
221
|
const output = (0, fs_1.createWriteStream)(outFile);
|
|
213
222
|
const pStat = await this.stat(path);
|
|
214
223
|
const fPath = this.resolvePath(path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,4DAA4D;AAC5D,oDAA6C;AAC7C,
|
|
1
|
+
{"version":3,"file":"local-provider.js","sourceRoot":"","sources":["../../src/local-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-temp-provider.d.ts","sourceRoot":"","sources":["../../src/local-temp-provider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"local-temp-provider.d.ts","sourceRoot":"","sources":["../../src/local-temp-provider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAI/C;;;;;GAKG;AACH,qBACa,YAAa,SAAQ,QAAQ,CAAC,mBAAmB,CAAC;IAC7D;;OAEG;IACH,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC;gBAEzB,OAAO,EAAE,mBAAmB;IAI3B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,OAAO;CA6BrB"}
|
|
@@ -1,15 +1,25 @@
|
|
|
1
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
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
exports.fsNativeTemp = void 0;
|
|
4
13
|
const local_provider_js_1 = require("./local-provider.js");
|
|
5
14
|
const luxon_1 = require("luxon");
|
|
15
|
+
const di_1 = require("@spinajs/di");
|
|
6
16
|
/**
|
|
7
17
|
* Native temp filesystem. Use it for creating and storing temporary files and dirs.
|
|
8
18
|
*
|
|
9
19
|
* It will automatically delete old files. It does not check fieles recursive in subdirectories.
|
|
10
20
|
* It only check for file/dir age at first level.
|
|
11
21
|
*/
|
|
12
|
-
class fsNativeTemp extends local_provider_js_1.fsNative {
|
|
22
|
+
let fsNativeTemp = class fsNativeTemp extends local_provider_js_1.fsNative {
|
|
13
23
|
constructor(options) {
|
|
14
24
|
super(options);
|
|
15
25
|
}
|
|
@@ -30,12 +40,16 @@ class fsNativeTemp extends local_provider_js_1.fsNative {
|
|
|
30
40
|
const stat = await this.stat(f);
|
|
31
41
|
const timeDiff = stat.CreationTime.diff(today, 'seconds');
|
|
32
42
|
if (Math.abs(timeDiff.seconds) > this.Options.cleanupInterval) {
|
|
33
|
-
this.Logger.trace(`Temp file at path ${f} is older than ${this.Options.cleanupInterval} ( CreatedAt: ${stat.CreationTime.toFormat('dd/MM/yyyy HH:mm:ss')} ), deleting...`);
|
|
43
|
+
this.Logger.trace(`Temp file at path ${f} is older than ${this.Options.cleanupInterval} seconds, ( CreatedAt: ${stat.CreationTime.toFormat('dd/MM/yyyy HH:mm:ss')} ), deleting...`);
|
|
34
44
|
await this.rm(f);
|
|
35
45
|
}
|
|
36
46
|
}
|
|
37
47
|
}, this.Options.cleanupInterval || 10 * 60 * 1000);
|
|
38
48
|
}
|
|
39
|
-
}
|
|
49
|
+
};
|
|
50
|
+
fsNativeTemp = __decorate([
|
|
51
|
+
(0, di_1.Injectable)('fs'),
|
|
52
|
+
__metadata("design:paramtypes", [Object])
|
|
53
|
+
], fsNativeTemp);
|
|
40
54
|
exports.fsNativeTemp = fsNativeTemp;
|
|
41
55
|
//# sourceMappingURL=local-temp-provider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-temp-provider.js","sourceRoot":"","sources":["../../src/local-temp-provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"local-temp-provider.js","sourceRoot":"","sources":["../../src/local-temp-provider.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2DAA+C;AAC/C,iCAAiC;AACjC,oCAAyC;AAEzC;;;;;GAKG;AAEI,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,4BAA6B;IAM7D,YAAY,OAA4B;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAClC;IACH,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,sCAAsC,IAAI,CAAC,OAAO,CAAC,IAAI,+FAA+F,CACvJ,CAAC;SACH;QAED,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;YACzC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC;YAE7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;gBACrB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAE1D,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;oBAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qBAAqB,CAAC,kBACpB,IAAI,CAAC,OAAO,CAAC,eACf,0BAA0B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC,iBAAiB,CAC7F,CAAC;oBAEF,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;iBAClB;aACF;QACH,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IACrD,CAAC;CACF,CAAA;AA7CY,YAAY;IADxB,IAAA,eAAU,EAAC,IAAI,CAAC;;GACJ,YAAY,CA6CxB;AA7CY,oCAAY"}
|
|
@@ -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=file-hasher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-hasher.d.ts","sourceRoot":"","sources":["../../src/file-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;;IAQnB,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAYvD"}
|
|
@@ -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
|
+
async hash(pathToFile) {
|
|
21
|
+
if (!fs.existsSync(pathToFile)) {
|
|
22
|
+
throw new IOFail(`File ${pathToFile} not exists`);
|
|
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=file-hasher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-hasher.js","sourceRoot":"","sources":["../../src/file-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,KAAK,CAAC,IAAI,CAAC,UAAkB;QAClC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;YAC9B,MAAM,IAAI,MAAM,CAAC,QAAQ,UAAU,aAAa,CAAC,CAAC;SACnD;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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
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 spawnExifProcess(file: string): Promise<string>;
|
|
7
|
+
protected getMetadata(file: string): Promise<{
|
|
8
|
+
[key: string]: string | number;
|
|
9
|
+
}>;
|
|
10
|
+
}
|
|
11
|
+
//# 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":"AAGA,OAAO,EAAE,GAAG,EAAU,MAAM,cAAc,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AA2C7D,qBACa,eAAgB,SAAQ,eAAe;IAElD,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC;IAEN,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;cAqB5C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;cAa/C,WAAW,CAAC,IAAI,EAAE,MAAM;;;CAsCzC"}
|