@abtnode/core 1.16.17-beta-ce49fe0e → 1.16.17-beta-2679e686
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.
|
@@ -91,6 +91,7 @@ const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
|
|
|
91
91
|
const pLimit = require('p-limit');
|
|
92
92
|
const pRetry = require('p-retry');
|
|
93
93
|
|
|
94
|
+
const isFunction = require('lodash/isFunction');
|
|
94
95
|
const { consumeServerlessNFT, consumeLauncherSession } = require('../../util/launcher');
|
|
95
96
|
const util = require('../../util');
|
|
96
97
|
const {
|
|
@@ -219,6 +220,18 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
219
220
|
this.restoreQueue = restoreQueue;
|
|
220
221
|
this.teamManager = teamManager;
|
|
221
222
|
|
|
223
|
+
if (isFunction(this.backupQueue.on)) {
|
|
224
|
+
const handleBackupComplete = async ({ id, job }) => {
|
|
225
|
+
await this.backupQueue.delete(id);
|
|
226
|
+
|
|
227
|
+
const autoBackup = await this.getAutoBackup({ did: id });
|
|
228
|
+
if (autoBackup?.enabled) {
|
|
229
|
+
this.backupQueue.push(job, id, true, BACKUPS.JOB.INTERVAL);
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
this.backupQueue.on('finished', handleBackupComplete).on('failed', handleBackupComplete);
|
|
233
|
+
}
|
|
234
|
+
|
|
222
235
|
// cached installed blocklets for performance
|
|
223
236
|
this.cachedBlocklets = new LRU({
|
|
224
237
|
max: 100,
|
|
@@ -1887,13 +1900,14 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
1887
1900
|
|
|
1888
1901
|
await this.backupQueue.delete(did);
|
|
1889
1902
|
|
|
1903
|
+
logger.info('updateAutoBackup.$value', value);
|
|
1904
|
+
|
|
1890
1905
|
if (value.enabled) {
|
|
1891
1906
|
const blocklet = await states.blocklet.getBlocklet(did);
|
|
1892
1907
|
this.backupQueue.push(
|
|
1893
1908
|
{
|
|
1894
1909
|
entity: 'blocklet',
|
|
1895
1910
|
action: 'backupToSpaces',
|
|
1896
|
-
id: did,
|
|
1897
1911
|
blocklet,
|
|
1898
1912
|
context,
|
|
1899
1913
|
},
|
|
@@ -2385,22 +2399,6 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2385
2399
|
blocklet,
|
|
2386
2400
|
});
|
|
2387
2401
|
throw error;
|
|
2388
|
-
} finally {
|
|
2389
|
-
const autoBackup = await this.getAutoBackup({ did: appPid });
|
|
2390
|
-
if (autoBackup.enabled) {
|
|
2391
|
-
this.backupQueue.push(
|
|
2392
|
-
{
|
|
2393
|
-
entity: 'blocklet',
|
|
2394
|
-
action: 'backupToSpaces',
|
|
2395
|
-
id: appPid,
|
|
2396
|
-
blocklet,
|
|
2397
|
-
context,
|
|
2398
|
-
},
|
|
2399
|
-
appPid,
|
|
2400
|
-
true,
|
|
2401
|
-
BACKUPS.JOB.INTERVAL
|
|
2402
|
-
);
|
|
2403
|
-
}
|
|
2404
2402
|
}
|
|
2405
2403
|
}
|
|
2406
2404
|
|
|
@@ -3576,7 +3574,6 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
3576
3574
|
{
|
|
3577
3575
|
entity: 'blocklet',
|
|
3578
3576
|
action: 'backupToSpaces',
|
|
3579
|
-
id: did,
|
|
3580
3577
|
blocklet,
|
|
3581
3578
|
context,
|
|
3582
3579
|
backupState: {
|
|
@@ -97,12 +97,14 @@ class BlockletBackup extends BaseBackup {
|
|
|
97
97
|
(e) => e.key === BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_LOGO_SQUARE
|
|
98
98
|
)?.value;
|
|
99
99
|
const appDir = this.blocklet.environments.find((e) => e.key === 'BLOCKLET_APP_DIR')?.value;
|
|
100
|
+
const dataDir = this.blocklet.environments.find((e) => e.key === 'BLOCKLET_DATA_DIR')?.value;
|
|
100
101
|
const logo = this.blocklet?.meta?.logo;
|
|
101
102
|
const defaultLogoPath = join(this.serverDir, 'data', this.blocklet.meta.name, 'logo.svg');
|
|
102
103
|
|
|
103
104
|
const logoUrl = await getLogoUrl({
|
|
104
105
|
customLogoSquareUrl,
|
|
105
106
|
appDir,
|
|
107
|
+
dataDir,
|
|
106
108
|
logo,
|
|
107
109
|
defaultLogoPath,
|
|
108
110
|
});
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
const debounce = require('lodash/debounce');
|
|
2
|
+
const logger = require('@abtnode/logger')('@abtnode/core:event/auto-backup-handler');
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @description
|
|
6
|
+
* @param {string} eventName
|
|
7
|
+
* @param {import('@abtnode/client').BlockletState & {context: {}} } payload
|
|
8
|
+
* @param {import('../blocklet/manager/disk')} blockletManager
|
|
9
|
+
*/
|
|
10
|
+
async function autoBackupHandler(eventName, payload, blockletManager) {
|
|
11
|
+
const { did } = payload.meta;
|
|
12
|
+
const autoBackup = await blockletManager.getAutoBackup({ did });
|
|
13
|
+
|
|
14
|
+
logger.info('autoBackupHandler.$autoBackup', autoBackup);
|
|
15
|
+
logger.info('autoBackupHandler.$Boolean(payload.context)', Boolean(payload.context));
|
|
16
|
+
|
|
17
|
+
if (autoBackup.enabled && payload.context) {
|
|
18
|
+
await blockletManager.backupQueue.delete(did);
|
|
19
|
+
|
|
20
|
+
blockletManager.backupQueue.push(
|
|
21
|
+
{
|
|
22
|
+
entity: 'blocklet',
|
|
23
|
+
action: 'backupToSpaces',
|
|
24
|
+
blocklet: payload,
|
|
25
|
+
context: payload.context,
|
|
26
|
+
},
|
|
27
|
+
did
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const debouncedFuncs = {};
|
|
33
|
+
/**
|
|
34
|
+
* @description
|
|
35
|
+
* @param {string} id
|
|
36
|
+
* @param {Function} fn
|
|
37
|
+
* @return {Function}
|
|
38
|
+
*/
|
|
39
|
+
function autoBackupHandlerFactory(id, fn) {
|
|
40
|
+
if (!debouncedFuncs[id]) {
|
|
41
|
+
debouncedFuncs[id] = debounce(fn, 3000);
|
|
42
|
+
}
|
|
43
|
+
return debouncedFuncs[id];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
module.exports = {
|
|
47
|
+
autoBackupHandler,
|
|
48
|
+
autoBackupHandlerFactory,
|
|
49
|
+
};
|
|
@@ -11,22 +11,23 @@ const {
|
|
|
11
11
|
BlockletInternalEvents,
|
|
12
12
|
} = require('@blocklet/constant');
|
|
13
13
|
const { EVENTS } = require('@abtnode/constant');
|
|
14
|
-
const { NodeMonitSender } = require('
|
|
15
|
-
const handleInstanceInStore = require('
|
|
16
|
-
const { isCLI } = require('
|
|
14
|
+
const { NodeMonitSender } = require('../monitor/node-monit-sender');
|
|
15
|
+
const handleInstanceInStore = require('../util/public-to-store');
|
|
16
|
+
const { isCLI } = require('../util');
|
|
17
17
|
|
|
18
18
|
const eventHub =
|
|
19
19
|
process.env.NODE_ENV === 'test' ? require('@arcblock/event-hub/single') : require('@arcblock/event-hub');
|
|
20
20
|
|
|
21
|
-
const states = require('
|
|
22
|
-
const { getBackupEndpoint, getBackupFilesUrlFromEndpoint, getDIDSpacesUrlFromEndpoint } = require('
|
|
21
|
+
const states = require('../states');
|
|
22
|
+
const { getBackupEndpoint, getBackupFilesUrlFromEndpoint, getDIDSpacesUrlFromEndpoint } = require('../util/spaces');
|
|
23
|
+
const { autoBackupHandlerFactory, autoBackupHandler } = require('./auto-backup-handler');
|
|
23
24
|
|
|
24
25
|
const routingSnapshotPrefix = (blocklet) => (blocklet.mode === BLOCKLET_MODES.DEVELOPMENT ? '[DEV] ' : '');
|
|
25
26
|
|
|
26
27
|
/**
|
|
27
28
|
*
|
|
28
29
|
* @param {{
|
|
29
|
-
* blockletManager: import('
|
|
30
|
+
* blockletManager: import('../blocklet/manager/disk')
|
|
30
31
|
* }} param0
|
|
31
32
|
* @returns
|
|
32
33
|
*/
|
|
@@ -400,38 +401,26 @@ module.exports = ({
|
|
|
400
401
|
listen(blockletManager, eventName, handleBlockletEvent);
|
|
401
402
|
});
|
|
402
403
|
|
|
403
|
-
/**
|
|
404
|
-
* @description
|
|
405
|
-
* @param {string} eventName
|
|
406
|
-
* @param {import('@abtnode/client').BlockletState & {context: {}} } payload
|
|
407
|
-
*/
|
|
408
|
-
async function autoBackupHandler(eventName, payload) {
|
|
409
|
-
const { did } = payload.meta;
|
|
410
|
-
const autoBackup = await blockletManager.getAutoBackup({ did });
|
|
411
|
-
|
|
412
|
-
if (autoBackup.enabled && payload.context) {
|
|
413
|
-
await blockletManager.backupQueue.delete(did);
|
|
414
|
-
|
|
415
|
-
blockletManager.backupQueue.push(
|
|
416
|
-
{
|
|
417
|
-
entity: 'blocklet',
|
|
418
|
-
action: 'backupToSpaces',
|
|
419
|
-
id: did,
|
|
420
|
-
blocklet: payload,
|
|
421
|
-
context: payload.context,
|
|
422
|
-
},
|
|
423
|
-
did
|
|
424
|
-
);
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
|
|
428
404
|
[
|
|
429
405
|
BlockletEvents.componentInstalled,
|
|
430
406
|
BlockletEvents.componentUpgraded,
|
|
431
407
|
BlockletEvents.componentRemoved,
|
|
432
408
|
BlockletEvents.updated,
|
|
433
409
|
].forEach((eventName) => {
|
|
434
|
-
listen(
|
|
410
|
+
listen(
|
|
411
|
+
blockletManager,
|
|
412
|
+
eventName,
|
|
413
|
+
/**
|
|
414
|
+
*
|
|
415
|
+
* @param {string} eventName
|
|
416
|
+
* @param {import('@abtnode/client').BlockletState & {context: {}} } payload
|
|
417
|
+
* @returns
|
|
418
|
+
*/
|
|
419
|
+
(_eventName, payload, ...args) => {
|
|
420
|
+
const id = payload.meta.did;
|
|
421
|
+
return autoBackupHandlerFactory(id, autoBackupHandler)(eventName, payload, blockletManager, ...args);
|
|
422
|
+
}
|
|
423
|
+
);
|
|
435
424
|
});
|
|
436
425
|
|
|
437
426
|
Object.keys(BlockletInternalEvents).forEach((key) => {
|
package/lib/states/index.js
CHANGED
|
@@ -67,6 +67,8 @@ const init = (dataDirs, config = {}) => {
|
|
|
67
67
|
* backup: import('./backup'),
|
|
68
68
|
* blocklet: import('./blocklet'),
|
|
69
69
|
* blockletExtras: import('./blocklet-extras'),
|
|
70
|
+
* notification: import('./notification'),
|
|
71
|
+
* job: import('./job'),
|
|
70
72
|
* [key: string]: any
|
|
71
73
|
* }}
|
|
72
74
|
*/
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.17-beta-
|
|
6
|
+
"version": "1.16.17-beta-2679e686",
|
|
7
7
|
"description": "",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -19,19 +19,19 @@
|
|
|
19
19
|
"author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
|
|
20
20
|
"license": "Apache-2.0",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@abtnode/analytics": "1.16.17-beta-
|
|
23
|
-
"@abtnode/auth": "1.16.17-beta-
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.17-beta-
|
|
25
|
-
"@abtnode/constant": "1.16.17-beta-
|
|
26
|
-
"@abtnode/cron": "1.16.17-beta-
|
|
27
|
-
"@abtnode/logger": "1.16.17-beta-
|
|
28
|
-
"@abtnode/models": "1.16.17-beta-
|
|
29
|
-
"@abtnode/queue": "1.16.17-beta-
|
|
30
|
-
"@abtnode/rbac": "1.16.17-beta-
|
|
31
|
-
"@abtnode/router-provider": "1.16.17-beta-
|
|
32
|
-
"@abtnode/static-server": "1.16.17-beta-
|
|
33
|
-
"@abtnode/timemachine": "1.16.17-beta-
|
|
34
|
-
"@abtnode/util": "1.16.17-beta-
|
|
22
|
+
"@abtnode/analytics": "1.16.17-beta-2679e686",
|
|
23
|
+
"@abtnode/auth": "1.16.17-beta-2679e686",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.17-beta-2679e686",
|
|
25
|
+
"@abtnode/constant": "1.16.17-beta-2679e686",
|
|
26
|
+
"@abtnode/cron": "1.16.17-beta-2679e686",
|
|
27
|
+
"@abtnode/logger": "1.16.17-beta-2679e686",
|
|
28
|
+
"@abtnode/models": "1.16.17-beta-2679e686",
|
|
29
|
+
"@abtnode/queue": "1.16.17-beta-2679e686",
|
|
30
|
+
"@abtnode/rbac": "1.16.17-beta-2679e686",
|
|
31
|
+
"@abtnode/router-provider": "1.16.17-beta-2679e686",
|
|
32
|
+
"@abtnode/static-server": "1.16.17-beta-2679e686",
|
|
33
|
+
"@abtnode/timemachine": "1.16.17-beta-2679e686",
|
|
34
|
+
"@abtnode/util": "1.16.17-beta-2679e686",
|
|
35
35
|
"@arcblock/did": "1.18.92",
|
|
36
36
|
"@arcblock/did-auth": "1.18.92",
|
|
37
37
|
"@arcblock/did-ext": "^1.18.92",
|
|
@@ -42,11 +42,11 @@
|
|
|
42
42
|
"@arcblock/pm2-events": "^0.0.5",
|
|
43
43
|
"@arcblock/validator": "^1.18.92",
|
|
44
44
|
"@arcblock/vc": "1.18.92",
|
|
45
|
-
"@blocklet/constant": "1.16.17-beta-
|
|
46
|
-
"@blocklet/env": "1.16.17-beta-
|
|
47
|
-
"@blocklet/meta": "1.16.17-beta-
|
|
48
|
-
"@blocklet/resolver": "1.16.17-beta-
|
|
49
|
-
"@blocklet/sdk": "1.16.17-beta-
|
|
45
|
+
"@blocklet/constant": "1.16.17-beta-2679e686",
|
|
46
|
+
"@blocklet/env": "1.16.17-beta-2679e686",
|
|
47
|
+
"@blocklet/meta": "1.16.17-beta-2679e686",
|
|
48
|
+
"@blocklet/resolver": "1.16.17-beta-2679e686",
|
|
49
|
+
"@blocklet/sdk": "1.16.17-beta-2679e686",
|
|
50
50
|
"@did-space/client": "^0.3.11",
|
|
51
51
|
"@fidm/x509": "^1.2.1",
|
|
52
52
|
"@ocap/mcrypto": "1.18.92",
|
|
@@ -101,5 +101,5 @@
|
|
|
101
101
|
"jest": "^27.5.1",
|
|
102
102
|
"unzipper": "^0.10.11"
|
|
103
103
|
},
|
|
104
|
-
"gitHead": "
|
|
104
|
+
"gitHead": "abbe4a479b379552cd9ebd8c27732b360844cb73"
|
|
105
105
|
}
|