@xyo-network/image-thumbnail-plugin 2.71.8 → 2.71.10
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/dist/cjs/Witness/Witness.js +51 -27
- package/dist/cjs/Witness/Witness.js.map +1 -1
- package/dist/docs.json +2178 -1852
- package/dist/esm/Witness/Witness.js +23 -5
- package/dist/esm/Witness/Witness.js.map +1 -1
- package/dist/types/Plugin.d.ts +2 -0
- package/dist/types/Plugin.d.ts.map +1 -1
- package/dist/types/Witness/Config.d.ts +2 -0
- package/dist/types/Witness/Config.d.ts.map +1 -1
- package/dist/types/Witness/Witness.d.ts +4 -1
- package/dist/types/Witness/Witness.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/Witness/Config.ts +2 -0
- package/src/Witness/Witness.ts +51 -29
|
@@ -8,6 +8,7 @@ const axios_1 = require("@xyo-network/axios");
|
|
|
8
8
|
const core_1 = require("@xyo-network/core");
|
|
9
9
|
const image_thumbnail_payload_plugin_1 = require("@xyo-network/image-thumbnail-payload-plugin");
|
|
10
10
|
const witness_1 = require("@xyo-network/witness");
|
|
11
|
+
const async_mutex_1 = require("async-mutex");
|
|
11
12
|
const gm_1 = require("gm");
|
|
12
13
|
const hasbin_1 = require("hasbin");
|
|
13
14
|
const hash_wasm_1 = require("hash-wasm");
|
|
@@ -19,9 +20,19 @@ const Config_1 = require("./Config");
|
|
|
19
20
|
//TODO: Break this into two Witnesses?
|
|
20
21
|
const gm = (0, gm_1.subClass)({ imageMagick: '7+' });
|
|
21
22
|
class ImageThumbnailWitness extends witness_1.AbstractWitness {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this._semaphore = new async_mutex_1.Semaphore(this.maxAsyncProcesses);
|
|
26
|
+
}
|
|
22
27
|
get cache() {
|
|
23
28
|
var _a;
|
|
24
|
-
this._cache =
|
|
29
|
+
this._cache =
|
|
30
|
+
(_a = this._cache) !== null && _a !== void 0 ? _a : new lru_cache_1.LRUCache({
|
|
31
|
+
max: this.maxCacheEntries,
|
|
32
|
+
maxSize: this.maxCacheBytes,
|
|
33
|
+
//just returning the size of the data
|
|
34
|
+
sizeCalculation: (value) => { var _a, _b; return (_b = (_a = value.url) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 1; },
|
|
35
|
+
});
|
|
25
36
|
return this._cache;
|
|
26
37
|
}
|
|
27
38
|
get encoding() {
|
|
@@ -32,6 +43,14 @@ class ImageThumbnailWitness extends witness_1.AbstractWitness {
|
|
|
32
43
|
var _a;
|
|
33
44
|
return (_a = this.config.height) !== null && _a !== void 0 ? _a : 128;
|
|
34
45
|
}
|
|
46
|
+
get maxAsyncProcesses() {
|
|
47
|
+
var _a;
|
|
48
|
+
return (_a = this.config.maxAsyncProcesses) !== null && _a !== void 0 ? _a : 4;
|
|
49
|
+
}
|
|
50
|
+
get maxCacheBytes() {
|
|
51
|
+
var _a;
|
|
52
|
+
return (_a = this.config.maxCacheBytes) !== null && _a !== void 0 ? _a : 1024 * 1024 * 64; //64MB max size
|
|
53
|
+
}
|
|
35
54
|
get maxCacheEntries() {
|
|
36
55
|
var _a;
|
|
37
56
|
return (_a = this.config.maxCacheEntries) !== null && _a !== void 0 ? _a : 5000;
|
|
@@ -105,33 +124,35 @@ class ImageThumbnailWitness extends witness_1.AbstractWitness {
|
|
|
105
124
|
if (!(0, hasbin_1.sync)('magick')) {
|
|
106
125
|
throw Error('ImageMagick is required for this witness');
|
|
107
126
|
}
|
|
108
|
-
return
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
127
|
+
return yield this._semaphore.runExclusive(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
return (0, compact_1.default)(yield Promise.all(payloads.map(({ url }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
const cachedResult = this.cache.get(url);
|
|
130
|
+
if (cachedResult) {
|
|
131
|
+
return cachedResult;
|
|
132
|
+
}
|
|
133
|
+
let result;
|
|
134
|
+
//if it is a data URL, return a Buffer
|
|
135
|
+
const dataBuffer = ImageThumbnailWitness.bufferFromDataUrl(url);
|
|
136
|
+
if (dataBuffer) {
|
|
137
|
+
result = {
|
|
138
|
+
schema: image_thumbnail_payload_plugin_1.ImageThumbnailSchema,
|
|
139
|
+
sourceHash: yield ImageThumbnailWitness.binaryToSha256(dataBuffer),
|
|
140
|
+
sourceUrl: url,
|
|
141
|
+
url,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
//if it is ipfs, go through cloud flair
|
|
146
|
+
const mutatedUrl = ImageThumbnailWitness.checkIpfsUrl(url);
|
|
147
|
+
result = yield this.fromHttp(mutatedUrl);
|
|
148
|
+
}
|
|
149
|
+
this.cache.set(url, result);
|
|
150
|
+
return result;
|
|
151
|
+
}))));
|
|
152
|
+
}));
|
|
132
153
|
});
|
|
133
154
|
}
|
|
134
|
-
|
|
155
|
+
createThumbnailDataUrl(sourceBuffer) {
|
|
135
156
|
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
136
157
|
const thumb = yield new Promise((resolve, reject) => {
|
|
137
158
|
gm(sourceBuffer)
|
|
@@ -204,13 +225,16 @@ class ImageThumbnailWitness extends witness_1.AbstractWitness {
|
|
|
204
225
|
if (response.status >= 200 && response.status < 300) {
|
|
205
226
|
const contentType = (_b = response.headers['content-type']) === null || _b === void 0 ? void 0 : _b.toString();
|
|
206
227
|
if (contentType.split('/')[0] !== 'image') {
|
|
228
|
+
// TODO: Use FFMPEG to create a thumbnail for videos
|
|
229
|
+
// ffmpeg -i input.mp4 -ss 00:00:05 -vframes 1 output.png
|
|
230
|
+
// Then resize thumbnail using
|
|
207
231
|
result.mime = (_c = result.mime) !== null && _c !== void 0 ? _c : {};
|
|
208
232
|
result.mime.invalid = true;
|
|
209
233
|
}
|
|
210
234
|
else {
|
|
211
235
|
const sourceBuffer = Buffer.from(response.data, 'binary');
|
|
212
236
|
result.sourceHash = yield ImageThumbnailWitness.binaryToSha256(sourceBuffer);
|
|
213
|
-
result.url = yield this.
|
|
237
|
+
result.url = yield this.createThumbnailDataUrl(sourceBuffer);
|
|
214
238
|
}
|
|
215
239
|
}
|
|
216
240
|
return result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":";;;;AAAA,uCAAkD;AAElD,qCAAiC;AACjC,8CAAqE;AACrE,4CAAiD;AACjD,gGAAkG;AAElG,kDAAsD;AACtD,2BAA6B;AAC7B,mCAAuC;AACvC,yCAAkC;AAClC,qEAAoC;AACpC,yCAAoC;AACpC,4DAA0B;AAC1B,kEAA2B;AAE3B,qCAA4D;AAG5D,sCAAsC;AAEtC,MAAM,EAAE,GAAG,IAAA,aAAQ,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;AAW1C,MAAa,qBAAiG,SAAQ,yBAAwB;
|
|
1
|
+
{"version":3,"file":"Witness.js","sourceRoot":"","sources":["../../../src/Witness/Witness.ts"],"names":[],"mappings":"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"}
|