@abtnode/core 1.16.14-beta-963cb583 → 1.16.14-beta-a2de000a
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.
|
@@ -2118,7 +2118,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2118
2118
|
} = blocklet;
|
|
2119
2119
|
|
|
2120
2120
|
try {
|
|
2121
|
-
const spacesBackup = new SpacesBackup({ appDid, appPid, event: this, userDid, referrer, locale: 'en' });
|
|
2121
|
+
const spacesBackup = new SpacesBackup({ appDid, appPid, event: this, userDid, referrer, locale: 'en', backup });
|
|
2122
2122
|
this.emit(BlockletEvents.backupProgress, {
|
|
2123
2123
|
appDid,
|
|
2124
2124
|
meta: { did: appPid },
|
|
@@ -2126,6 +2126,10 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2126
2126
|
progress: 10,
|
|
2127
2127
|
completed: false,
|
|
2128
2128
|
});
|
|
2129
|
+
await states.backup.progress(backup.id, {
|
|
2130
|
+
message: 'Start backup...',
|
|
2131
|
+
progress: 10,
|
|
2132
|
+
});
|
|
2129
2133
|
await spacesBackup.backup();
|
|
2130
2134
|
|
|
2131
2135
|
await states.backup.success(backup.id, {
|
|
@@ -3315,6 +3319,10 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
3315
3319
|
sourceUrl: path.join(this.dataDirs.tmp, 'backup', appDid),
|
|
3316
3320
|
targetName: await getSpaceNameByEndpoint(endpoint, 'DID Space'),
|
|
3317
3321
|
});
|
|
3322
|
+
await states.backup.progress(backup.id, {
|
|
3323
|
+
message: 'Start backup...',
|
|
3324
|
+
progress: 10,
|
|
3325
|
+
});
|
|
3318
3326
|
|
|
3319
3327
|
this.backupQueue.push(
|
|
3320
3328
|
{
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* userDid: string,
|
|
7
7
|
* referrer: string,
|
|
8
8
|
* locale: 'zh' | 'en',
|
|
9
|
+
* backup: import('@abtnode/models').BackupState
|
|
9
10
|
* }} SpaceBackupInput
|
|
10
11
|
*
|
|
11
12
|
* @typedef {{
|
|
@@ -122,10 +123,16 @@ class SpacesBackup extends BaseBackup {
|
|
|
122
123
|
* @memberof SpacesBackup
|
|
123
124
|
*/
|
|
124
125
|
async backup() {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
126
|
+
try {
|
|
127
|
+
await this.initialize();
|
|
128
|
+
await this.export();
|
|
129
|
+
await this.syncToSpaces();
|
|
130
|
+
} catch (error) {
|
|
131
|
+
console.error(error);
|
|
132
|
+
throw error;
|
|
133
|
+
} finally {
|
|
134
|
+
await this.destroy();
|
|
135
|
+
}
|
|
129
136
|
}
|
|
130
137
|
|
|
131
138
|
async initialize() {
|
|
@@ -156,6 +163,10 @@ class SpacesBackup extends BaseBackup {
|
|
|
156
163
|
progress: 15,
|
|
157
164
|
completed: false,
|
|
158
165
|
});
|
|
166
|
+
await states.backup.progress(this.input.backup.id, {
|
|
167
|
+
message: 'Preparing data for backup...',
|
|
168
|
+
progress: 15,
|
|
169
|
+
});
|
|
159
170
|
|
|
160
171
|
await this._exportData(this.dataBackup, this.storages);
|
|
161
172
|
|
|
@@ -166,6 +177,10 @@ class SpacesBackup extends BaseBackup {
|
|
|
166
177
|
progress: 20,
|
|
167
178
|
completed: false,
|
|
168
179
|
});
|
|
180
|
+
await states.backup.progress(this.input.backup.id, {
|
|
181
|
+
message: 'Data ready, start backup...',
|
|
182
|
+
progress: 20,
|
|
183
|
+
});
|
|
169
184
|
}
|
|
170
185
|
|
|
171
186
|
async syncToSpaces() {
|
|
@@ -199,15 +214,24 @@ class SpacesBackup extends BaseBackup {
|
|
|
199
214
|
// FIXME: @yejianchao 这里需要更完整的黑名单
|
|
200
215
|
return object.name !== '.DS_Store';
|
|
201
216
|
},
|
|
202
|
-
onAfterUpload: (data) => {
|
|
217
|
+
onAfterUpload: async (data) => {
|
|
203
218
|
logger.info('backup progress', { appDid: this.input.appDid, data });
|
|
204
219
|
const percent = (data.completed * 100) / data.total;
|
|
220
|
+
// 0.8 是因为上传文件到 spaces 占进度的 80%,+ 20 是因为需要累加之前的进度
|
|
221
|
+
const progress = +Math.floor(percent * 0.8).toFixed(2) + 20;
|
|
222
|
+
const progressMessage = `Uploading file ${basename(data.key)} (${data.completed}/${data.total})`;
|
|
223
|
+
|
|
224
|
+
await states.backup.progress(this.input.backup.id, {
|
|
225
|
+
progress,
|
|
226
|
+
message: progressMessage,
|
|
227
|
+
});
|
|
228
|
+
|
|
205
229
|
this.input.event.emit(BlockletEvents.backupProgress, {
|
|
206
230
|
appDid: this.input.appDid,
|
|
207
231
|
meta: { did: this.input.appDid },
|
|
208
|
-
message:
|
|
232
|
+
message: progressMessage,
|
|
209
233
|
// 0.8 是因为上传文件到 spaces 占进度的 80%,+ 20 是因为需要累加之前的进度
|
|
210
|
-
progress
|
|
234
|
+
progress,
|
|
211
235
|
completed: false,
|
|
212
236
|
});
|
|
213
237
|
},
|
package/lib/router/helper.js
CHANGED
package/lib/states/backup.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
const { Joi } = require('@arcblock/validator');
|
|
2
2
|
const BaseState = require('./base');
|
|
3
|
-
const {
|
|
3
|
+
const {
|
|
4
|
+
validateBackupSuccess,
|
|
5
|
+
validateBackupFail,
|
|
6
|
+
validateBackupStart,
|
|
7
|
+
validateBackupProgress,
|
|
8
|
+
} = require('../validators/backup.js');
|
|
4
9
|
|
|
5
10
|
const validateBackup = Joi.object({
|
|
6
11
|
appPid: Joi.DID(),
|
|
@@ -23,10 +28,12 @@ const validateBackup = Joi.object({
|
|
|
23
28
|
.default(() => new Date().toISOString()),
|
|
24
29
|
updatedAt: Joi.string().optional().default('').allow(''),
|
|
25
30
|
|
|
26
|
-
// 0 表示成功了,建议使用常量表示,默认是 1
|
|
31
|
+
// 0 表示成功了,建议使用常量表示,默认是 1 表示错误的, null 表示备份中
|
|
27
32
|
status: Joi.number().optional().allow(null),
|
|
28
33
|
// 发生错误的时候可以用来存储错误下信息
|
|
29
34
|
message: Joi.string().optional().default('').allow(''),
|
|
35
|
+
|
|
36
|
+
progress: Joi.number().optional(),
|
|
30
37
|
});
|
|
31
38
|
|
|
32
39
|
/**
|
|
@@ -49,6 +56,32 @@ class BackupState extends BaseState {
|
|
|
49
56
|
return this.insert(value);
|
|
50
57
|
}
|
|
51
58
|
|
|
59
|
+
/**
|
|
60
|
+
*
|
|
61
|
+
* @param {string} id - The ID of the backup.
|
|
62
|
+
* @param {Pick<import('@abtnode/models').BackupState, 'progress' | 'message'>} backupProgress
|
|
63
|
+
* @return {object} - The result of the validation.
|
|
64
|
+
*/
|
|
65
|
+
progress(id, backupProgress) {
|
|
66
|
+
const { error, value } = validateBackupProgress.validate(backupProgress, {
|
|
67
|
+
stripUnknown: true,
|
|
68
|
+
allowUnknown: true,
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
if (error) {
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return this.update(
|
|
76
|
+
{ id },
|
|
77
|
+
{
|
|
78
|
+
$set: {
|
|
79
|
+
...value,
|
|
80
|
+
},
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
52
85
|
/**
|
|
53
86
|
* @param {string} id
|
|
54
87
|
* @param {Pick<import('@abtnode/models').BackupState, 'targetUrl'>} successBackupInfo
|
package/lib/validators/backup.js
CHANGED
|
@@ -12,8 +12,14 @@ const validateBackupStart = Joi.object({
|
|
|
12
12
|
updatedAt: Joi.string().optional().allow(null).default(null),
|
|
13
13
|
});
|
|
14
14
|
|
|
15
|
+
const validateBackupProgress = Joi.object({
|
|
16
|
+
progress: Joi.number().required(),
|
|
17
|
+
message: Joi.string().required(),
|
|
18
|
+
});
|
|
19
|
+
|
|
15
20
|
const validateBackupSuccess = Joi.object({
|
|
16
21
|
targetUrl: Joi.string().required(),
|
|
22
|
+
message: Joi.string().optional().allow('').default(''),
|
|
17
23
|
});
|
|
18
24
|
|
|
19
25
|
const validateBackupFail = Joi.object({
|
|
@@ -22,6 +28,7 @@ const validateBackupFail = Joi.object({
|
|
|
22
28
|
|
|
23
29
|
module.exports = {
|
|
24
30
|
validateBackupStart,
|
|
31
|
+
validateBackupProgress,
|
|
25
32
|
validateBackupSuccess,
|
|
26
33
|
validateBackupFail,
|
|
27
34
|
};
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.14-beta-
|
|
6
|
+
"version": "1.16.14-beta-a2de000a",
|
|
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.14-beta-
|
|
23
|
-
"@abtnode/auth": "1.16.14-beta-
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.14-beta-
|
|
25
|
-
"@abtnode/constant": "1.16.14-beta-
|
|
26
|
-
"@abtnode/cron": "1.16.14-beta-
|
|
27
|
-
"@abtnode/logger": "1.16.14-beta-
|
|
28
|
-
"@abtnode/models": "1.16.14-beta-
|
|
29
|
-
"@abtnode/queue": "1.16.14-beta-
|
|
30
|
-
"@abtnode/rbac": "1.16.14-beta-
|
|
31
|
-
"@abtnode/router-provider": "1.16.14-beta-
|
|
32
|
-
"@abtnode/static-server": "1.16.14-beta-
|
|
33
|
-
"@abtnode/timemachine": "1.16.14-beta-
|
|
34
|
-
"@abtnode/util": "1.16.14-beta-
|
|
22
|
+
"@abtnode/analytics": "1.16.14-beta-a2de000a",
|
|
23
|
+
"@abtnode/auth": "1.16.14-beta-a2de000a",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.14-beta-a2de000a",
|
|
25
|
+
"@abtnode/constant": "1.16.14-beta-a2de000a",
|
|
26
|
+
"@abtnode/cron": "1.16.14-beta-a2de000a",
|
|
27
|
+
"@abtnode/logger": "1.16.14-beta-a2de000a",
|
|
28
|
+
"@abtnode/models": "1.16.14-beta-a2de000a",
|
|
29
|
+
"@abtnode/queue": "1.16.14-beta-a2de000a",
|
|
30
|
+
"@abtnode/rbac": "1.16.14-beta-a2de000a",
|
|
31
|
+
"@abtnode/router-provider": "1.16.14-beta-a2de000a",
|
|
32
|
+
"@abtnode/static-server": "1.16.14-beta-a2de000a",
|
|
33
|
+
"@abtnode/timemachine": "1.16.14-beta-a2de000a",
|
|
34
|
+
"@abtnode/util": "1.16.14-beta-a2de000a",
|
|
35
35
|
"@arcblock/did": "1.18.89",
|
|
36
36
|
"@arcblock/did-auth": "1.18.89",
|
|
37
37
|
"@arcblock/did-ext": "^1.18.89",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"@arcblock/pm2-events": "^0.0.5",
|
|
43
43
|
"@arcblock/validator": "^1.18.89",
|
|
44
44
|
"@arcblock/vc": "1.18.89",
|
|
45
|
-
"@blocklet/constant": "1.16.14-beta-
|
|
46
|
-
"@blocklet/meta": "1.16.14-beta-
|
|
47
|
-
"@blocklet/resolver": "1.16.14-beta-
|
|
48
|
-
"@blocklet/sdk": "1.16.14-beta-
|
|
45
|
+
"@blocklet/constant": "1.16.14-beta-a2de000a",
|
|
46
|
+
"@blocklet/meta": "1.16.14-beta-a2de000a",
|
|
47
|
+
"@blocklet/resolver": "1.16.14-beta-a2de000a",
|
|
48
|
+
"@blocklet/sdk": "1.16.14-beta-a2de000a",
|
|
49
49
|
"@did-space/client": "^0.2.141",
|
|
50
50
|
"@fidm/x509": "^1.2.1",
|
|
51
51
|
"@ocap/mcrypto": "1.18.89",
|
|
@@ -98,5 +98,5 @@
|
|
|
98
98
|
"jest": "^27.5.1",
|
|
99
99
|
"unzipper": "^0.10.11"
|
|
100
100
|
},
|
|
101
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "ed1336f2b7d3e6a4d5eeafd3816e6573c53ad543"
|
|
102
102
|
}
|