pixl-server-storage 3.1.6 → 3.1.8
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/README.md +1277 -0
- package/engines/S3.js +41 -24
- package/package.json +3 -1
- package/storage.js +1 -1
package/engines/S3.js
CHANGED
|
@@ -7,6 +7,7 @@ var Component = require("pixl-server/component");
|
|
|
7
7
|
var Tools = require("pixl-tools");
|
|
8
8
|
var Cache = require("pixl-cache");
|
|
9
9
|
var S3 = require("@aws-sdk/client-s3");
|
|
10
|
+
var { Upload } = require("@aws-sdk/lib-storage");
|
|
10
11
|
var { NodeHttpHandler } = require("@aws-sdk/node-http-handler");
|
|
11
12
|
var streamToBuffer = require("fast-stream-to-buffer");
|
|
12
13
|
|
|
@@ -158,11 +159,11 @@ module.exports = Class.create({
|
|
|
158
159
|
self.cache.set( orig_key, params.Body, { date: Tools.timeNow(true) } );
|
|
159
160
|
}
|
|
160
161
|
|
|
161
|
-
if (callback) callback(null, data);
|
|
162
|
+
if (callback) process.nextTick( function() { callback(null, data); });
|
|
162
163
|
} )
|
|
163
164
|
.catch( function(err) {
|
|
164
165
|
self.logError('s3', "Failed to store object: " + key + ": " + (err.message || err), err);
|
|
165
|
-
if (callback) callback(err);
|
|
166
|
+
if (callback) process.nextTick( function() { callback(err); });
|
|
166
167
|
} );
|
|
167
168
|
},
|
|
168
169
|
|
|
@@ -178,14 +179,19 @@ module.exports = Class.create({
|
|
|
178
179
|
|
|
179
180
|
this.logDebug(9, "Storing S3 Binary Stream: " + key);
|
|
180
181
|
|
|
181
|
-
|
|
182
|
+
var upload = new Upload({
|
|
183
|
+
client: this.s3,
|
|
184
|
+
params: params
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
upload.done()
|
|
182
188
|
.then( function(data) {
|
|
183
189
|
self.logDebug(9, "Stream store complete: " + key);
|
|
184
|
-
if (callback) callback(null, data);
|
|
190
|
+
if (callback) process.nextTick( function() { callback(null, data); });
|
|
185
191
|
} )
|
|
186
192
|
.catch( function(err) {
|
|
187
193
|
self.logError('s3', "Failed to store stream: " + key + ": " + (err.message || err), err);
|
|
188
|
-
if (callback) callback(err);
|
|
194
|
+
if (callback) process.nextTick( function() { callback(err, null); });
|
|
189
195
|
} );
|
|
190
196
|
},
|
|
191
197
|
|
|
@@ -202,14 +208,19 @@ module.exports = Class.create({
|
|
|
202
208
|
|
|
203
209
|
this.logDebug(9, "Storing S3 Binary Stream: " + key);
|
|
204
210
|
|
|
205
|
-
|
|
211
|
+
var upload = new Upload({
|
|
212
|
+
client: this.s3,
|
|
213
|
+
params: params
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
upload.done()
|
|
206
217
|
.then( function(data) {
|
|
207
218
|
self.logDebug(9, "Stream store complete: " + key);
|
|
208
|
-
if (callback) callback(null, data);
|
|
219
|
+
if (callback) process.nextTick( function() { callback(null, data); });
|
|
209
220
|
} )
|
|
210
221
|
.catch( function(err) {
|
|
211
222
|
self.logError('s3', "Failed to store stream: " + key + ": " + (err.message || err), err);
|
|
212
|
-
if (callback) callback(err);
|
|
223
|
+
if (callback) process.nextTick( function() { callback(err, null); });
|
|
213
224
|
} );
|
|
214
225
|
},
|
|
215
226
|
|
|
@@ -241,9 +252,11 @@ module.exports = Class.create({
|
|
|
241
252
|
.then( function(data) {
|
|
242
253
|
self.logDebug(9, "Head complete: " + key);
|
|
243
254
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
255
|
+
process.nextTick( function() {
|
|
256
|
+
callback( null, {
|
|
257
|
+
mod: Math.floor( (new Date(data.LastModified)).getTime() / 1000 ),
|
|
258
|
+
len: data.ContentLength
|
|
259
|
+
} );
|
|
247
260
|
} );
|
|
248
261
|
} )
|
|
249
262
|
.catch( function(err) {
|
|
@@ -257,7 +270,7 @@ module.exports = Class.create({
|
|
|
257
270
|
// some other error
|
|
258
271
|
self.logError('s3', "Failed to head key: " + key + ": " + (err.message || err), err);
|
|
259
272
|
}
|
|
260
|
-
callback( err );
|
|
273
|
+
process.nextTick( function() { callback( err ); } );
|
|
261
274
|
} );
|
|
262
275
|
},
|
|
263
276
|
|
|
@@ -337,7 +350,7 @@ module.exports = Class.create({
|
|
|
337
350
|
// some other error
|
|
338
351
|
self.logError('s3', "Failed to fetch key: " + key + ": " + (err.message || err), err);
|
|
339
352
|
}
|
|
340
|
-
callback( err );
|
|
353
|
+
process.nextTick( function() { callback( err ); } );
|
|
341
354
|
} );
|
|
342
355
|
},
|
|
343
356
|
|
|
@@ -366,9 +379,11 @@ module.exports = Class.create({
|
|
|
366
379
|
self.logDebug(9, "S3 stream download closed: " + key);
|
|
367
380
|
} );
|
|
368
381
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
382
|
+
process.nextTick( function() {
|
|
383
|
+
callback( null, download, {
|
|
384
|
+
mod: Math.floor( (new Date(data.LastModified)).getTime() / 1000 ),
|
|
385
|
+
len: data.ContentLength
|
|
386
|
+
} );
|
|
372
387
|
} );
|
|
373
388
|
})
|
|
374
389
|
.catch( function(err) {
|
|
@@ -382,7 +397,7 @@ module.exports = Class.create({
|
|
|
382
397
|
// some other error
|
|
383
398
|
self.logError('s3', "Failed to fetch key: " + key + ": " + (err.message || err), err);
|
|
384
399
|
}
|
|
385
|
-
callback( err );
|
|
400
|
+
process.nextTick( function() { callback( err ); } );
|
|
386
401
|
});
|
|
387
402
|
},
|
|
388
403
|
|
|
@@ -425,10 +440,12 @@ module.exports = Class.create({
|
|
|
425
440
|
len = parseInt( RegExp.$1 );
|
|
426
441
|
}
|
|
427
442
|
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
443
|
+
process.nextTick( function() {
|
|
444
|
+
callback( null, download, {
|
|
445
|
+
mod: Math.floor( (new Date(data.LastModified)).getTime() / 1000 ),
|
|
446
|
+
len: len,
|
|
447
|
+
cr: data.ContentRange
|
|
448
|
+
} );
|
|
432
449
|
} );
|
|
433
450
|
})
|
|
434
451
|
.catch( function(err) {
|
|
@@ -442,7 +459,7 @@ module.exports = Class.create({
|
|
|
442
459
|
// some other error
|
|
443
460
|
self.logError('s3', "Failed to fetch key: " + key + ": " + (err.message || err), err);
|
|
444
461
|
}
|
|
445
|
-
callback( err );
|
|
462
|
+
process.nextTick( function() { callback( err ); } );
|
|
446
463
|
});
|
|
447
464
|
},
|
|
448
465
|
|
|
@@ -466,11 +483,11 @@ module.exports = Class.create({
|
|
|
466
483
|
self.cache.delete(orig_key);
|
|
467
484
|
}
|
|
468
485
|
|
|
469
|
-
if (callback) callback(null, data);
|
|
486
|
+
if (callback) process.nextTick( function() { callback(null, data); } );
|
|
470
487
|
} )
|
|
471
488
|
.catch( function(err) {
|
|
472
489
|
self.logError('s3', "Failed to delete object: " + key + ": " + (err.message || err), err);
|
|
473
|
-
if (callback) callback(err);
|
|
490
|
+
if (callback) process.nextTick( function() { callback(err); } );
|
|
474
491
|
} );
|
|
475
492
|
},
|
|
476
493
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pixl-server-storage",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.8",
|
|
4
4
|
"description": "A key/value/list storage component for the pixl-server framework.",
|
|
5
5
|
"author": "Joseph Huckaby <jhuckaby@gmail.com>",
|
|
6
6
|
"homepage": "https://github.com/jhuckaby/pixl-server-storage",
|
|
@@ -23,6 +23,8 @@
|
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"@aws-sdk/client-s3": "3.186.0",
|
|
26
|
+
"@aws-sdk/lib-storage": "3.186.0",
|
|
27
|
+
"@aws-sdk/node-http-handler": "3.186.0",
|
|
26
28
|
"async": "2.6.4",
|
|
27
29
|
"fast-stream-to-buffer": "1.0.0",
|
|
28
30
|
"he": "1.1.1",
|
package/storage.js
CHANGED
|
@@ -567,7 +567,7 @@ module.exports = Class.create({
|
|
|
567
567
|
);
|
|
568
568
|
|
|
569
569
|
// optional timeout for queue item execution
|
|
570
|
-
var timer = this.queueTimeout ?
|
|
570
|
+
var timer = this.queueTimeout ? setTimeout( function() {
|
|
571
571
|
self.logError('queue', "Async task timed out: " + task._id + ": " + (task.label || task.action), { ms: self.queueTimeout });
|
|
572
572
|
if (callback) callback();
|
|
573
573
|
callback = null;
|