@abtnode/core 1.16.6-beta-1fde60e3 → 1.16.6-beta-61cf68d3
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/lib/api/team.js +51 -39
- package/lib/blocklet/manager/disk.js +45 -31
- package/lib/blocklet/manager/helper/install-application-from-backup.js +9 -1
- package/lib/blocklet/manager/helper/install-application-from-dev.js +1 -5
- package/lib/processes/updater.js +2 -1
- package/lib/states/audit-log.js +7 -1
- package/lib/states/blocklet-extras.js +3 -4
- package/lib/util/blocklet.js +12 -15
- package/lib/validators/user.js +0 -1
- package/package.json +28 -28
package/lib/api/team.js
CHANGED
|
@@ -27,6 +27,7 @@ const { getPassportStatusEndpoint } = require('@abtnode/auth/lib/auth');
|
|
|
27
27
|
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
28
28
|
const { parseUserAvatar } = require('@abtnode/util/lib/user-avatar');
|
|
29
29
|
const { getChainClient } = require('@abtnode/util/lib/get-chain-client');
|
|
30
|
+
const { getWalletDid } = require('@blocklet/meta/lib/did-utils');
|
|
30
31
|
|
|
31
32
|
const { validateTrustedPassportIssuers } = require('../validators/trusted-passport');
|
|
32
33
|
const { validateTrustedFactories } = require('../validators/trusted-factory');
|
|
@@ -290,6 +291,7 @@ class TeamAPI extends EventEmitter {
|
|
|
290
291
|
|
|
291
292
|
const state = await this.getUserState(teamDid);
|
|
292
293
|
|
|
294
|
+
// NOTICE: 目前 owner 只能为 did-wallet,无需查询 connectedAccount
|
|
293
295
|
const full = await state.getUser(owner.did);
|
|
294
296
|
return full || owner;
|
|
295
297
|
}
|
|
@@ -371,6 +373,7 @@ class TeamAPI extends EventEmitter {
|
|
|
371
373
|
const { locale = 'en' } = context;
|
|
372
374
|
|
|
373
375
|
const userState = await this.getUserState(teamDid);
|
|
376
|
+
// NOTICE: issuePassportToUser 必须传入 wallet did,无需查询 connectedAccount
|
|
374
377
|
const user = await userState.getUser(userDid);
|
|
375
378
|
|
|
376
379
|
if (!user) {
|
|
@@ -772,52 +775,61 @@ class TeamAPI extends EventEmitter {
|
|
|
772
775
|
|
|
773
776
|
const state = await this.getSessionState(teamDid);
|
|
774
777
|
|
|
778
|
+
// 为指定用户颁发通行证,拿到的 did 是永久 did,无需查询 connectedAccount
|
|
775
779
|
const currentUser = await this.getUser({ teamDid, user: { did: ownerDid } });
|
|
776
|
-
const
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
issuerName
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
780
|
+
const walletDid = getWalletDid(currentUser);
|
|
781
|
+
const userDid = walletDid || ownerDid;
|
|
782
|
+
// 这里可能是为一个不存在的用户创建一个 passport,所以需要额外判断一下
|
|
783
|
+
if (currentUser) {
|
|
784
|
+
// auth0 账户不需要手动领取
|
|
785
|
+
if (walletDid !== ownerDid) {
|
|
786
|
+
const blocklet = await getBlocklet({ did: teamDid, states: this.states, dataDirs: this.dataDirs });
|
|
787
|
+
const nodeInfo = await this.node.read();
|
|
788
|
+
const blockletInfo = getBlockletInfo(blocklet, nodeInfo.sk);
|
|
789
|
+
const { wallet, passportColor, appUrl, name: issuerName } = blockletInfo;
|
|
790
|
+
const vc = createPassportVC({
|
|
791
|
+
issuerName,
|
|
792
|
+
issuerWallet: wallet,
|
|
793
|
+
ownerDid: userDid,
|
|
794
|
+
passport: await createPassport({
|
|
795
|
+
role,
|
|
796
|
+
}),
|
|
797
|
+
endpoint: getPassportStatusEndpoint({
|
|
798
|
+
baseUrl: joinUrl(appUrl, WELLKNOWN_SERVICE_PATH_PREFIX),
|
|
799
|
+
userDid,
|
|
800
|
+
teamDid,
|
|
801
|
+
}),
|
|
802
|
+
ownerProfile: {
|
|
803
|
+
...currentUser,
|
|
804
|
+
avatar: await parseUserAvatar(currentUser.avatar, { dataDir: blocklet.env.dataDir }),
|
|
805
|
+
},
|
|
806
|
+
preferredColor: passportColor,
|
|
807
|
+
});
|
|
801
808
|
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
809
|
+
if (walletDid) {
|
|
810
|
+
sendPassportVcNotification({ userDid, appWallet: wallet, locale: 'en', vc });
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
// write passport to db
|
|
814
|
+
const passport = createUserPassport(vc, { role: role.name });
|
|
815
|
+
const passports = upsertToPassports(currentUser.passports || [], passport);
|
|
816
|
+
await this.updateUser({
|
|
817
|
+
teamDid,
|
|
818
|
+
user: {
|
|
819
|
+
did: currentUser.did,
|
|
820
|
+
pk: currentUser.pk,
|
|
821
|
+
passports,
|
|
822
|
+
},
|
|
823
|
+
});
|
|
824
|
+
return undefined;
|
|
825
|
+
}
|
|
814
826
|
}
|
|
815
827
|
const { id } = await state.start({
|
|
816
828
|
type: 'passport-issuance',
|
|
817
829
|
expireDate, // session expireDate
|
|
818
830
|
name: role.name,
|
|
819
831
|
title: role.title,
|
|
820
|
-
ownerDid,
|
|
832
|
+
ownerDid: userDid,
|
|
821
833
|
teamDid,
|
|
822
834
|
});
|
|
823
835
|
|
|
@@ -828,7 +840,7 @@ class TeamAPI extends EventEmitter {
|
|
|
828
840
|
name: role.name,
|
|
829
841
|
title: role.title,
|
|
830
842
|
expireDate: new Date(expireDate).toString(),
|
|
831
|
-
ownerDid,
|
|
843
|
+
ownerDid: userDid,
|
|
832
844
|
teamDid,
|
|
833
845
|
};
|
|
834
846
|
}
|
|
@@ -5,9 +5,9 @@ const path = require('path');
|
|
|
5
5
|
const flat = require('flat');
|
|
6
6
|
const get = require('lodash/get');
|
|
7
7
|
const omit = require('lodash/omit');
|
|
8
|
-
const uniq = require('lodash/uniq');
|
|
9
8
|
const merge = require('lodash/merge');
|
|
10
9
|
const pick = require('lodash/pick');
|
|
10
|
+
const isEmpty = require('lodash/isEmpty');
|
|
11
11
|
const cloneDeep = require('lodash/cloneDeep');
|
|
12
12
|
const { isNFTExpired, getNftExpirationDate } = require('@abtnode/util/lib/nft');
|
|
13
13
|
const didDocument = require('@abtnode/util/lib/did-document');
|
|
@@ -1010,7 +1010,7 @@ class BlockletManager extends BaseBlockletManager {
|
|
|
1010
1010
|
throw new Error('configs list is not an array');
|
|
1011
1011
|
}
|
|
1012
1012
|
|
|
1013
|
-
const tmpDids = Array.isArray(did) ?
|
|
1013
|
+
const tmpDids = Array.isArray(did) ? did : [did];
|
|
1014
1014
|
const [rootDid, ...childDids] = tmpDids;
|
|
1015
1015
|
const rootMetaDid = await states.blocklet.getBlockletMetaDid(rootDid);
|
|
1016
1016
|
const dids = [rootMetaDid, ...childDids];
|
|
@@ -1993,7 +1993,7 @@ class BlockletManager extends BaseBlockletManager {
|
|
|
1993
1993
|
});
|
|
1994
1994
|
}
|
|
1995
1995
|
|
|
1996
|
-
if (blocklet
|
|
1996
|
+
if (blocklet?.controller?.nftId && process.env.NODE_ENV !== 'test') {
|
|
1997
1997
|
const nodeInfo = await states.node.read();
|
|
1998
1998
|
await consumeServerlessNFT({ nftId: blocklet.controller.nftId, nodeInfo, blocklet });
|
|
1999
1999
|
this.emit(BlockletEvents.nftConsumed, { blocklet, context });
|
|
@@ -2273,19 +2273,6 @@ class BlockletManager extends BaseBlockletManager {
|
|
|
2273
2273
|
fs.removeSync(cacheDir);
|
|
2274
2274
|
await this._cleanBlockletData({ blocklet, keepData, keepLogsDir, keepConfigs });
|
|
2275
2275
|
|
|
2276
|
-
if (blocklet.mode !== BLOCKLET_MODES.DEVELOPMENT) {
|
|
2277
|
-
const nodeInfo = await states.node.read();
|
|
2278
|
-
const { wallet } = getBlockletInfo(blocklet, nodeInfo.sk);
|
|
2279
|
-
didDocument
|
|
2280
|
-
.disableBlockletDNS({ appPid: blocklet.appPid, wallet, didRegistryUrl: nodeInfo.didRegistry })
|
|
2281
|
-
.then(() => {
|
|
2282
|
-
logger.info(`disabled blocklet ${blocklet.appPid} dns`);
|
|
2283
|
-
})
|
|
2284
|
-
.catch((err) => {
|
|
2285
|
-
logger.error(`disable blocklet ${blocklet.appPid} dns failed`, { error: err });
|
|
2286
|
-
});
|
|
2287
|
-
}
|
|
2288
|
-
|
|
2289
2276
|
const result = await states.blocklet.deleteBlocklet(did);
|
|
2290
2277
|
logger.info('blocklet removed successfully', { did });
|
|
2291
2278
|
|
|
@@ -2467,38 +2454,47 @@ class BlockletManager extends BaseBlockletManager {
|
|
|
2467
2454
|
{ did: 1, meta: 1, controller: 1 }
|
|
2468
2455
|
);
|
|
2469
2456
|
|
|
2457
|
+
logger.info('external blocklet count', { count: blockletExtras.length });
|
|
2458
|
+
|
|
2470
2459
|
for (const data of blockletExtras) {
|
|
2471
2460
|
try {
|
|
2461
|
+
if (isEmpty(data.controller)) {
|
|
2462
|
+
logger.info('skip the blocklet without controller', { blockletDid: data.did, controller: data.controller });
|
|
2463
|
+
// eslint-disable-next-line no-continue
|
|
2464
|
+
continue;
|
|
2465
|
+
}
|
|
2466
|
+
|
|
2467
|
+
const { did } = data;
|
|
2472
2468
|
const assetState = await util.getNFTState(data.controller.chainHost, data.controller.nftId);
|
|
2473
2469
|
const isExpired = isNFTExpired(assetState);
|
|
2474
2470
|
|
|
2475
2471
|
if (isExpired) {
|
|
2476
2472
|
logger.info('the blocklet already expired', {
|
|
2477
|
-
blockletDid:
|
|
2473
|
+
blockletDid: did,
|
|
2478
2474
|
nftId: data.controller.nftId,
|
|
2479
2475
|
});
|
|
2480
2476
|
|
|
2481
|
-
const blocklet = await states.blocklet.getBlocklet(
|
|
2477
|
+
const blocklet = await states.blocklet.getBlocklet(did);
|
|
2482
2478
|
if (blocklet) {
|
|
2483
2479
|
// 预防 Blocklet 已经删除,但是 blocklet extra data 没有清理的场景
|
|
2484
2480
|
await this._backupToDisk({ blocklet });
|
|
2485
2481
|
logger.info('backed up the expired blocklet', {
|
|
2486
|
-
blockletDid:
|
|
2482
|
+
blockletDid: did,
|
|
2487
2483
|
nftId: data.controller.nftId,
|
|
2488
2484
|
});
|
|
2489
2485
|
|
|
2490
|
-
await this.delete({ did
|
|
2486
|
+
await this.delete({ did, keepData: true, keepConfigs: true, keepLogsDir: true });
|
|
2491
2487
|
logger.info('the expired blocklet already deleted', {
|
|
2492
|
-
blockletDid:
|
|
2488
|
+
blockletDid: did,
|
|
2493
2489
|
nftId: data.controller.nftId,
|
|
2494
2490
|
});
|
|
2495
2491
|
}
|
|
2496
2492
|
|
|
2497
2493
|
const expiredAt = getNftExpirationDate(assetState);
|
|
2498
|
-
await states.blockletExtras.updateExpireInfo({ did
|
|
2494
|
+
await states.blockletExtras.updateExpireInfo({ did, expiredAt });
|
|
2499
2495
|
logger.info('updated expired blocklet extra info', {
|
|
2500
2496
|
nftId: data.controller.nftId,
|
|
2501
|
-
blockletDid:
|
|
2497
|
+
blockletDid: did,
|
|
2502
2498
|
});
|
|
2503
2499
|
|
|
2504
2500
|
// 删除 blocklet 后会 reload nginx, 所以这里每次删除一个
|
|
@@ -2508,8 +2504,8 @@ class BlockletManager extends BaseBlockletManager {
|
|
|
2508
2504
|
}
|
|
2509
2505
|
} catch (error) {
|
|
2510
2506
|
logger.error('delete expired blocklet failed', {
|
|
2511
|
-
blockletDid: data.
|
|
2512
|
-
nftId: data.controller
|
|
2507
|
+
blockletDid: data.did,
|
|
2508
|
+
nftId: data.controller?.nftId,
|
|
2513
2509
|
error,
|
|
2514
2510
|
});
|
|
2515
2511
|
}
|
|
@@ -2530,19 +2526,37 @@ class BlockletManager extends BaseBlockletManager {
|
|
|
2530
2526
|
return;
|
|
2531
2527
|
}
|
|
2532
2528
|
|
|
2533
|
-
const tasks = blockletExtras.map(async ({ appDid, meta }) => {
|
|
2534
|
-
await this.
|
|
2535
|
-
|
|
2529
|
+
const tasks = blockletExtras.map(async ({ appDid, did, meta }) => {
|
|
2530
|
+
const blocklet = await this.getBlocklet(did);
|
|
2531
|
+
if (blocklet) {
|
|
2532
|
+
logger.error('skip cleaning the blocklet which is not deleted', { blockletDid: did });
|
|
2533
|
+
return;
|
|
2534
|
+
}
|
|
2535
|
+
|
|
2536
|
+
let blockletMeta = meta;
|
|
2537
|
+
if (isEmpty(blockletMeta)) {
|
|
2538
|
+
// 旧版本的 blocklet 没有 meta 信息,这里补充一下
|
|
2539
|
+
blockletMeta = { did, name: did };
|
|
2540
|
+
logger.error('the blocklet original meta is empty', { did, blockletMeta });
|
|
2541
|
+
}
|
|
2542
|
+
|
|
2543
|
+
await this._cleanBlockletData({
|
|
2544
|
+
blocklet: { meta: blockletMeta },
|
|
2545
|
+
keepData: false,
|
|
2546
|
+
keepLogsDir: false,
|
|
2547
|
+
keepConfigs: false,
|
|
2548
|
+
});
|
|
2549
|
+
logger.info(`clean blocklet ${blockletMeta.did} extra data`);
|
|
2536
2550
|
|
|
2537
2551
|
await removeBackup(this.dataDirs.data, appDid);
|
|
2538
|
-
logger.info(`removed blocklet ${
|
|
2552
|
+
logger.info(`removed blocklet ${blockletMeta.did} backup`);
|
|
2539
2553
|
|
|
2540
2554
|
this.emit(BlockletEvents.dataCleaned, {
|
|
2541
|
-
blocklet: { meta },
|
|
2555
|
+
blocklet: { meta: blockletMeta },
|
|
2542
2556
|
keepRouting: false,
|
|
2543
2557
|
});
|
|
2544
2558
|
|
|
2545
|
-
logger.info(`cleaned expired blocklet blocklet ${
|
|
2559
|
+
logger.info(`cleaned expired blocklet blocklet ${blockletMeta.did} data`);
|
|
2546
2560
|
});
|
|
2547
2561
|
|
|
2548
2562
|
await Promise.all(tasks);
|
|
@@ -67,7 +67,15 @@ const installApplicationFromBackup = async ({
|
|
|
67
67
|
const { meta } = blockletState;
|
|
68
68
|
const { did, name: appName } = meta;
|
|
69
69
|
|
|
70
|
-
const extra = omit(fs.readJSONSync(path.join(dir, 'blocklet-extras.json')), [
|
|
70
|
+
const extra = omit(fs.readJSONSync(path.join(dir, 'blocklet-extras.json')), [
|
|
71
|
+
'_id',
|
|
72
|
+
'createdAt',
|
|
73
|
+
'updatedAt',
|
|
74
|
+
'controller.nftId',
|
|
75
|
+
'controller.nftOwner',
|
|
76
|
+
'controller.chainHost',
|
|
77
|
+
'controller.appMaxCount',
|
|
78
|
+
]);
|
|
71
79
|
|
|
72
80
|
if (blockletState.meta.did !== extra.did) {
|
|
73
81
|
throw new Error(
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const { BlockletStatus, BLOCKLET_MODES, fromBlockletStatus, BlockletSource } = require('@blocklet/constant');
|
|
2
|
-
const toDid = require('@blocklet/meta/lib/did');
|
|
3
2
|
|
|
4
3
|
const logger = require('@abtnode/logger')('@abtnode/core:install-app-dev');
|
|
5
4
|
const { ensureMeta, updateBlockletFallbackLogo, ensureAppLogo } = require('../../../util/blocklet');
|
|
@@ -13,10 +12,7 @@ const { ensureMeta, updateBlockletFallbackLogo, ensureAppLogo } = require('../..
|
|
|
13
12
|
* @returns
|
|
14
13
|
*/
|
|
15
14
|
const installApplicationFromDev = async ({ folder, meta, states, manager } = {}) => {
|
|
16
|
-
const { version } = meta;
|
|
17
|
-
|
|
18
|
-
const name = `${meta.name}-dev`;
|
|
19
|
-
const did = toDid(name);
|
|
15
|
+
const { version, name, did } = meta;
|
|
20
16
|
|
|
21
17
|
const exist = await states.blocklet.getBlocklet(did);
|
|
22
18
|
if (exist) {
|
package/lib/processes/updater.js
CHANGED
|
@@ -89,7 +89,8 @@ const verifyBlockletServer = async (version) => {
|
|
|
89
89
|
|
|
90
90
|
if (result.code === 0) {
|
|
91
91
|
const actual = semver.coerce(result.stdout);
|
|
92
|
-
|
|
92
|
+
const expected = semver.coerce(version);
|
|
93
|
+
if (actual && expected && actual.version === expected.version) {
|
|
93
94
|
return result;
|
|
94
95
|
}
|
|
95
96
|
|
package/lib/states/audit-log.js
CHANGED
|
@@ -57,7 +57,13 @@ const expandUser = async (teamDid, userDid, passportId, info, node) => {
|
|
|
57
57
|
return ['', ''];
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
const user = await node.getUser({
|
|
60
|
+
const user = await node.getUser({
|
|
61
|
+
teamDid,
|
|
62
|
+
user: { did: userDid },
|
|
63
|
+
options: {
|
|
64
|
+
enableConnectedAccount: true,
|
|
65
|
+
},
|
|
66
|
+
});
|
|
61
67
|
if (!user) {
|
|
62
68
|
return ['', ''];
|
|
63
69
|
}
|
|
@@ -5,7 +5,6 @@ const logger = require('@abtnode/logger')('state-blocklet-extras');
|
|
|
5
5
|
const { EXPIRED_BLOCKLET_DATA_RETENTION_DAYS } = require('@abtnode/constant');
|
|
6
6
|
const camelCase = require('lodash/camelCase');
|
|
7
7
|
const get = require('lodash/get');
|
|
8
|
-
const uniq = require('lodash/uniq');
|
|
9
8
|
const dayjs = require('dayjs');
|
|
10
9
|
|
|
11
10
|
const BaseState = require('./base');
|
|
@@ -129,7 +128,7 @@ class BlockletExtrasState extends BaseState {
|
|
|
129
128
|
generateGetFn(extra) {
|
|
130
129
|
return async (dids, path, defaultValue) => {
|
|
131
130
|
// eslint-disable-next-line no-param-reassign
|
|
132
|
-
dids =
|
|
131
|
+
dids = [].concat(dids);
|
|
133
132
|
const [rootDid, ...childDids] = dids;
|
|
134
133
|
const { dek } = this.config;
|
|
135
134
|
const { name, afterGet = noop('data') } = extra;
|
|
@@ -152,7 +151,7 @@ class BlockletExtrasState extends BaseState {
|
|
|
152
151
|
generateSetFn(extra) {
|
|
153
152
|
return async (dids, data) => {
|
|
154
153
|
// eslint-disable-next-line no-param-reassign
|
|
155
|
-
dids =
|
|
154
|
+
dids = [].concat(dids);
|
|
156
155
|
const [rootDid, ...childDids] = dids;
|
|
157
156
|
const { dek } = this.config;
|
|
158
157
|
const { name, beforeSet = noop('cur') } = extra;
|
|
@@ -192,7 +191,7 @@ class BlockletExtrasState extends BaseState {
|
|
|
192
191
|
generateDelFn(extra) {
|
|
193
192
|
return async (dids) => {
|
|
194
193
|
// eslint-disable-next-line no-param-reassign
|
|
195
|
-
dids =
|
|
194
|
+
dids = [].concat(dids);
|
|
196
195
|
const [rootDid, ...childDids] = dids;
|
|
197
196
|
const { name } = extra;
|
|
198
197
|
const item = await this.findOne({ did: rootDid });
|
package/lib/util/blocklet.js
CHANGED
|
@@ -28,6 +28,8 @@ const { isValid: isValidDid, isEthereumDid } = require('@arcblock/did');
|
|
|
28
28
|
const logger = require('@abtnode/logger')('@abtnode/core:util:blocklet');
|
|
29
29
|
const pm2 = require('@abtnode/util/lib/async-pm2');
|
|
30
30
|
const sleep = require('@abtnode/util/lib/sleep');
|
|
31
|
+
const getPm2ProcessInfo = require('@abtnode/util/lib/get-pm2-process-info');
|
|
32
|
+
const killProcessOccupiedPorts = require('@abtnode/util/lib/kill-process-occupied-ports');
|
|
31
33
|
const getNodeWallet = require('@abtnode/util/lib/get-app-wallet');
|
|
32
34
|
const { formatEnv } = require('@abtnode/util/lib/security');
|
|
33
35
|
const ensureEndpointHealthy = require('@abtnode/util/lib/ensure-endpoint-healthy');
|
|
@@ -526,6 +528,14 @@ const startBlockletProcess = async (
|
|
|
526
528
|
// run hook
|
|
527
529
|
await preStart(b, { env });
|
|
528
530
|
|
|
531
|
+
// kill process if port is occupied
|
|
532
|
+
try {
|
|
533
|
+
const { ports } = b;
|
|
534
|
+
await killProcessOccupiedPorts({ ports, pm2ProcessId: processId, printError: logger.error.bind(logger) });
|
|
535
|
+
} catch (error) {
|
|
536
|
+
logger.error('Failed to killProcessOccupiedPorts', { error });
|
|
537
|
+
}
|
|
538
|
+
|
|
529
539
|
// start process
|
|
530
540
|
const maxMemoryRestart = get(nodeInfo, 'runtimeConfig.blockletMaxMemoryLimit', BLOCKLET_MAX_MEM_LIMIT_IN_MB);
|
|
531
541
|
|
|
@@ -720,21 +730,8 @@ const getProcessState = async (processId) => {
|
|
|
720
730
|
return statusMap[info.pm2_env.status];
|
|
721
731
|
};
|
|
722
732
|
|
|
723
|
-
const getProcessInfo = (processId) =>
|
|
724
|
-
|
|
725
|
-
pm2.describe(processId, async (err, [info]) => {
|
|
726
|
-
if (err) {
|
|
727
|
-
logger.error('Failed to get blocklet status from pm2', { error: err });
|
|
728
|
-
return reject(err);
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
if (!info) {
|
|
732
|
-
return reject(new CustomError('BLOCKLET_PROCESS_404', 'Blocklet process info is not available'));
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
return resolve(info);
|
|
736
|
-
});
|
|
737
|
-
});
|
|
733
|
+
const getProcessInfo = (processId, { throwOnNotExist = true } = {}) =>
|
|
734
|
+
getPm2ProcessInfo(processId, { printError: logger.error.bind(logger), throwOnNotExist });
|
|
738
735
|
|
|
739
736
|
const deleteProcess = (processId) =>
|
|
740
737
|
new Promise((resolve, reject) => {
|
package/lib/validators/user.js
CHANGED
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.6-beta-
|
|
6
|
+
"version": "1.16.6-beta-61cf68d3",
|
|
7
7
|
"description": "",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -19,35 +19,35 @@
|
|
|
19
19
|
"author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@abtnode/auth": "1.16.6-beta-
|
|
23
|
-
"@abtnode/certificate-manager": "1.16.6-beta-
|
|
24
|
-
"@abtnode/constant": "1.16.6-beta-
|
|
25
|
-
"@abtnode/cron": "1.16.6-beta-
|
|
26
|
-
"@abtnode/db": "1.16.6-beta-
|
|
27
|
-
"@abtnode/logger": "1.16.6-beta-
|
|
28
|
-
"@abtnode/queue": "1.16.6-beta-
|
|
29
|
-
"@abtnode/rbac": "1.16.6-beta-
|
|
30
|
-
"@abtnode/router-provider": "1.16.6-beta-
|
|
31
|
-
"@abtnode/static-server": "1.16.6-beta-
|
|
32
|
-
"@abtnode/timemachine": "1.16.6-beta-
|
|
33
|
-
"@abtnode/util": "1.16.6-beta-
|
|
34
|
-
"@arcblock/did": "1.18.
|
|
35
|
-
"@arcblock/did-auth": "1.18.
|
|
36
|
-
"@arcblock/did-ext": "^1.18.
|
|
22
|
+
"@abtnode/auth": "1.16.6-beta-61cf68d3",
|
|
23
|
+
"@abtnode/certificate-manager": "1.16.6-beta-61cf68d3",
|
|
24
|
+
"@abtnode/constant": "1.16.6-beta-61cf68d3",
|
|
25
|
+
"@abtnode/cron": "1.16.6-beta-61cf68d3",
|
|
26
|
+
"@abtnode/db": "1.16.6-beta-61cf68d3",
|
|
27
|
+
"@abtnode/logger": "1.16.6-beta-61cf68d3",
|
|
28
|
+
"@abtnode/queue": "1.16.6-beta-61cf68d3",
|
|
29
|
+
"@abtnode/rbac": "1.16.6-beta-61cf68d3",
|
|
30
|
+
"@abtnode/router-provider": "1.16.6-beta-61cf68d3",
|
|
31
|
+
"@abtnode/static-server": "1.16.6-beta-61cf68d3",
|
|
32
|
+
"@abtnode/timemachine": "1.16.6-beta-61cf68d3",
|
|
33
|
+
"@abtnode/util": "1.16.6-beta-61cf68d3",
|
|
34
|
+
"@arcblock/did": "1.18.76",
|
|
35
|
+
"@arcblock/did-auth": "1.18.76",
|
|
36
|
+
"@arcblock/did-ext": "^1.18.76",
|
|
37
37
|
"@arcblock/did-motif": "^1.1.10",
|
|
38
|
-
"@arcblock/did-util": "1.18.
|
|
39
|
-
"@arcblock/event-hub": "1.18.
|
|
40
|
-
"@arcblock/jwt": "^1.18.
|
|
38
|
+
"@arcblock/did-util": "1.18.76",
|
|
39
|
+
"@arcblock/event-hub": "1.18.76",
|
|
40
|
+
"@arcblock/jwt": "^1.18.76",
|
|
41
41
|
"@arcblock/pm2-events": "^0.0.5",
|
|
42
|
-
"@arcblock/vc": "1.18.
|
|
43
|
-
"@blocklet/constant": "1.16.6-beta-
|
|
44
|
-
"@blocklet/meta": "1.16.6-beta-
|
|
45
|
-
"@blocklet/sdk": "1.16.6-beta-
|
|
46
|
-
"@did-space/client": "^0.2.
|
|
42
|
+
"@arcblock/vc": "1.18.76",
|
|
43
|
+
"@blocklet/constant": "1.16.6-beta-61cf68d3",
|
|
44
|
+
"@blocklet/meta": "1.16.6-beta-61cf68d3",
|
|
45
|
+
"@blocklet/sdk": "1.16.6-beta-61cf68d3",
|
|
46
|
+
"@did-space/client": "^0.2.87",
|
|
47
47
|
"@fidm/x509": "^1.2.1",
|
|
48
|
-
"@ocap/mcrypto": "1.18.
|
|
49
|
-
"@ocap/util": "1.18.
|
|
50
|
-
"@ocap/wallet": "1.18.
|
|
48
|
+
"@ocap/mcrypto": "1.18.76",
|
|
49
|
+
"@ocap/util": "1.18.76",
|
|
50
|
+
"@ocap/wallet": "1.18.76",
|
|
51
51
|
"@slack/webhook": "^5.0.4",
|
|
52
52
|
"archiver": "^5.3.1",
|
|
53
53
|
"axios": "^0.27.2",
|
|
@@ -94,5 +94,5 @@
|
|
|
94
94
|
"express": "^4.18.2",
|
|
95
95
|
"jest": "^27.5.1"
|
|
96
96
|
},
|
|
97
|
-
"gitHead": "
|
|
97
|
+
"gitHead": "574a27436b429a97f443fc9ea1b44988807206bd"
|
|
98
98
|
}
|