diff --git a/package-lock.json b/package-lock.json index ff20c3e3d..c38e62aaf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "trilium", - "version": "0.45.3", + "version": "0.45.4", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -4838,6 +4838,11 @@ "type-check": "~0.3.2" } }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==" + }, "line-column": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/line-column/-/line-column-1.0.2.tgz", @@ -6913,6 +6918,22 @@ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", + "requires": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + } + } + }, "streamsearch": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", diff --git a/package.json b/package.json index 82906f0f5..5fab96947 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "semver": "7.3.2", "serve-favicon": "2.5.0", "session-file-store": "1.5.0", + "stream-throttle": "^0.1.3", "striptags": "3.1.1", "tmp": "^0.2.1", "turndown": "7.0.0", diff --git a/src/services/import/enex.js b/src/services/import/enex.js index 25171978d..ac71157e2 100644 --- a/src/services/import/enex.js +++ b/src/services/import/enex.js @@ -1,5 +1,6 @@ const sax = require("sax"); const stream = require('stream'); +const {Throttle} = require('stream-throttle'); const log = require("../log"); const utils = require("../utils"); const sql = require("../sql"); @@ -341,7 +342,10 @@ function importEnex(taskContext, file, parentNote) { const bufferStream = new stream.PassThrough(); bufferStream.end(file.buffer); - bufferStream.pipe(saxStream); + bufferStream + // rate limiting to improve responsiveness during / after import + .pipe(new Throttle({rate: 300000})) + .pipe(saxStream); }); }