@abtnode/core 1.16.27 → 1.16.28-beta-bfbab430
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 +9 -1
- package/lib/blocklet/manager/disk.js +45 -9
- package/lib/blocklet/manager/engine.js +4 -1
- package/lib/blocklet/project/create-pack-release.js +34 -3
- package/lib/blocklet/project/index.js +33 -3
- package/lib/blocklet/project/util.js +12 -1
- package/lib/index.js +1 -0
- package/lib/router/manager.js +4 -10
- package/lib/states/user.js +11 -1
- package/lib/util/blocklet.js +20 -33
- package/package.json +21 -21
package/lib/api/team.js
CHANGED
|
@@ -1526,7 +1526,15 @@ class TeamAPI extends EventEmitter {
|
|
|
1526
1526
|
} else {
|
|
1527
1527
|
const exist = await state.findOne({ userDid, visitorId, appPid });
|
|
1528
1528
|
if (exist) {
|
|
1529
|
-
|
|
1529
|
+
const mergeExtra = defaults({}, extra || {}, exist.extra || {});
|
|
1530
|
+
|
|
1531
|
+
[, [data]] = await state.update(exist.id, {
|
|
1532
|
+
ua,
|
|
1533
|
+
lastLoginIp,
|
|
1534
|
+
passportId,
|
|
1535
|
+
status,
|
|
1536
|
+
extra: mergeExtra,
|
|
1537
|
+
});
|
|
1530
1538
|
logger.info('update userSession successfully', { id: exist.id, ua, lastLoginIp, passportId, status, extra });
|
|
1531
1539
|
} else {
|
|
1532
1540
|
data = await state.insert({
|
|
@@ -34,7 +34,7 @@ const {
|
|
|
34
34
|
SESSION_CACHE_TTL,
|
|
35
35
|
} = require('@abtnode/constant');
|
|
36
36
|
|
|
37
|
-
const getBlockletEngine = require('@blocklet/meta/lib/engine');
|
|
37
|
+
const { getBlockletEngine } = require('@blocklet/meta/lib/engine');
|
|
38
38
|
const {
|
|
39
39
|
isDeletableBlocklet,
|
|
40
40
|
getComponentMissingConfigs,
|
|
@@ -103,6 +103,7 @@ const formatContext = require('@abtnode/util/lib/format-context');
|
|
|
103
103
|
const md5 = require('@abtnode/util/lib/md5');
|
|
104
104
|
const { callFederated } = require('@abtnode/auth/lib/util/federated');
|
|
105
105
|
const pAll = require('p-all');
|
|
106
|
+
const toBlockletDid = require('@blocklet/meta/lib/did');
|
|
106
107
|
const launcher = require('../../util/launcher');
|
|
107
108
|
const util = require('../../util');
|
|
108
109
|
const {
|
|
@@ -218,13 +219,6 @@ const pm2StatusMap = {
|
|
|
218
219
|
stop: BlockletStatus.stopped,
|
|
219
220
|
};
|
|
220
221
|
|
|
221
|
-
/**
|
|
222
|
-
* get blocklet engine info, default is node
|
|
223
|
-
* @param {object} blockletMeta blocklet meta
|
|
224
|
-
* @return {string} engine name
|
|
225
|
-
*/
|
|
226
|
-
const getBlockletEngineNameByPlatform = (blockletMeta) => getBlockletEngine(blockletMeta).interpreter;
|
|
227
|
-
|
|
228
222
|
const getWalletAppNotification = async (blocklet, tempBlockletInfo) => {
|
|
229
223
|
let blockletInfo = tempBlockletInfo;
|
|
230
224
|
if (!blockletInfo) {
|
|
@@ -1733,6 +1727,26 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
1733
1727
|
throw new Error(result?.reason || 'failed to send email');
|
|
1734
1728
|
}
|
|
1735
1729
|
|
|
1730
|
+
async sendPush({ did, receiver, notification }) {
|
|
1731
|
+
const blocklet = await this.getBlocklet(did);
|
|
1732
|
+
const nodeInfo = await states.node.read();
|
|
1733
|
+
const { wallet } = getBlockletInfo(blocklet, nodeInfo.sk);
|
|
1734
|
+
// HACK: 因为发送方法是按照数组来处理的
|
|
1735
|
+
|
|
1736
|
+
const result = await sendToUser(
|
|
1737
|
+
receiver,
|
|
1738
|
+
JSON.parse(notification),
|
|
1739
|
+
{
|
|
1740
|
+
appDid: wallet.address,
|
|
1741
|
+
appSk: wallet.secretKey,
|
|
1742
|
+
},
|
|
1743
|
+
undefined,
|
|
1744
|
+
undefined,
|
|
1745
|
+
'send-to-push-kit'
|
|
1746
|
+
);
|
|
1747
|
+
return result;
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1736
1750
|
async configNotification({ did, notification = {} }, context) {
|
|
1737
1751
|
let newConfig = {};
|
|
1738
1752
|
try {
|
|
@@ -3211,7 +3225,27 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
3211
3225
|
|
|
3212
3226
|
// app disk info, component runtime info, component engine
|
|
3213
3227
|
await forEachBlocklet(blocklet, async (component, { level }) => {
|
|
3214
|
-
|
|
3228
|
+
const engine = getBlockletEngine(component.meta);
|
|
3229
|
+
if (engine.interpreter === 'blocklet') {
|
|
3230
|
+
const engineId = toBlockletDid(engine.source.name);
|
|
3231
|
+
const engineComponent = findComponentByIdV2(blocklet, [engineId]);
|
|
3232
|
+
if (engineComponent) {
|
|
3233
|
+
component.engine = {
|
|
3234
|
+
name: engineComponent.meta.did,
|
|
3235
|
+
displayName: engineComponent.meta.title,
|
|
3236
|
+
description: engineComponent.meta.description,
|
|
3237
|
+
version: engineComponent.meta.version,
|
|
3238
|
+
available: true,
|
|
3239
|
+
visible: true,
|
|
3240
|
+
// FIXME: @wangshijun this should be dynamic
|
|
3241
|
+
logo: '',
|
|
3242
|
+
};
|
|
3243
|
+
} else {
|
|
3244
|
+
throw new Error(`engine component ${engineId} not found`);
|
|
3245
|
+
}
|
|
3246
|
+
} else {
|
|
3247
|
+
component.engine = getEngine(engine.interpreter)?.describe();
|
|
3248
|
+
}
|
|
3215
3249
|
|
|
3216
3250
|
if (level === 0) {
|
|
3217
3251
|
component.diskInfo = await getDiskInfo(component, {
|
|
@@ -3471,6 +3505,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
3471
3505
|
deployedFrom || fromBlockletSource(source)
|
|
3472
3506
|
})`,
|
|
3473
3507
|
action: `/blocklets/${did}/overview`,
|
|
3508
|
+
blockletDashboardAction: '/.well-known/service/admin/blocklets',
|
|
3474
3509
|
entityType: 'blocklet',
|
|
3475
3510
|
entityId: did,
|
|
3476
3511
|
severity: 'success',
|
|
@@ -3639,6 +3674,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
3639
3674
|
componentDids
|
|
3640
3675
|
)} is ${actionName} successfully for ${title}`,
|
|
3641
3676
|
action: `/blocklets/${did}/overview`,
|
|
3677
|
+
blockletDashboardAction: '/.well-known/service/admin/blocklets',
|
|
3642
3678
|
entityType: 'blocklet',
|
|
3643
3679
|
entityId: did,
|
|
3644
3680
|
severity: 'success',
|
|
@@ -82,6 +82,9 @@ const validate = (engine) => {
|
|
|
82
82
|
if (!engine) {
|
|
83
83
|
return true;
|
|
84
84
|
}
|
|
85
|
+
if (engine === 'blocklet') {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
85
88
|
|
|
86
89
|
if (!engineMap.has(engine)) {
|
|
87
90
|
throw new Error(
|
|
@@ -89,7 +92,7 @@ const validate = (engine) => {
|
|
|
89
92
|
);
|
|
90
93
|
}
|
|
91
94
|
|
|
92
|
-
if (!engineMap.get(engine)
|
|
95
|
+
if (!engineMap.get(engine)?.isAvailable()) {
|
|
93
96
|
throw new Error(`${engine} bin path does not exist`);
|
|
94
97
|
}
|
|
95
98
|
|
|
@@ -5,9 +5,10 @@
|
|
|
5
5
|
const path = require('path');
|
|
6
6
|
const fs = require('fs-extra');
|
|
7
7
|
const createArchive = require('archiver');
|
|
8
|
+
const pick = require('lodash/pick');
|
|
8
9
|
const { slugify } = require('transliteration');
|
|
9
|
-
const { BLOCKLET_META_FILE, PROJECT } = require('@blocklet/constant');
|
|
10
|
-
const { update: updateMetaFile } = require('@blocklet/meta/lib/file');
|
|
10
|
+
const { BLOCKLET_META_FILE, PROJECT, BLOCKLET_INTERFACE_TYPE_WEB } = require('@blocklet/constant');
|
|
11
|
+
const { update: updateMetaFile, read: readMetaFile } = require('@blocklet/meta/lib/file');
|
|
11
12
|
const { createRelease: createBlockletRelease } = require('@abtnode/util/lib/create-blocklet-release');
|
|
12
13
|
const urlPathFriendly = require('@blocklet/meta/lib/url-path-friendly').default;
|
|
13
14
|
const { hasStartEngine } = require('@blocklet/meta/lib/util');
|
|
@@ -16,7 +17,13 @@ const logger = require('@abtnode/logger')('create-resource-blocklet-pack');
|
|
|
16
17
|
|
|
17
18
|
const { createReleaseSchema } = require('../../validators/project');
|
|
18
19
|
|
|
19
|
-
const {
|
|
20
|
+
const {
|
|
21
|
+
getLogoFile,
|
|
22
|
+
exportBlockletResources,
|
|
23
|
+
getResourceList,
|
|
24
|
+
checkResourceExists,
|
|
25
|
+
getExtendedMetaFile,
|
|
26
|
+
} = require('./util');
|
|
20
27
|
|
|
21
28
|
const createPackRelease = async ({
|
|
22
29
|
did,
|
|
@@ -215,6 +222,30 @@ const createPackRelease = async ({
|
|
|
215
222
|
files: project.blockletScreenshots?.length ? ['screenshots'] : [],
|
|
216
223
|
screenshots: project.blockletScreenshots || [],
|
|
217
224
|
};
|
|
225
|
+
|
|
226
|
+
// merge extended blocklet.yml
|
|
227
|
+
const extendedMetaFile = getExtendedMetaFile({ app: blocklet, projectId, releaseId });
|
|
228
|
+
if (fs.existsSync(extendedMetaFile)) {
|
|
229
|
+
const extendedMeta = readMetaFile(extendedMetaFile);
|
|
230
|
+
logger.info('merge extended blocklet.yml', extendedMeta);
|
|
231
|
+
Object.assign(meta, pick(extendedMeta, ['environments', 'engine']));
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Reset group for blocklets with engine specified
|
|
235
|
+
if (meta.engine?.interpreter === 'blocklet') {
|
|
236
|
+
delete meta.group;
|
|
237
|
+
meta.interfaces = [
|
|
238
|
+
{
|
|
239
|
+
name: 'publicUrl',
|
|
240
|
+
path: '/',
|
|
241
|
+
port: 'BLOCKLET_PORT',
|
|
242
|
+
prefix: '*',
|
|
243
|
+
protocol: 'tcp',
|
|
244
|
+
type: BLOCKLET_INTERFACE_TYPE_WEB,
|
|
245
|
+
},
|
|
246
|
+
];
|
|
247
|
+
}
|
|
248
|
+
|
|
218
249
|
await updateMetaFile(path.join(releaseBundleDir, BLOCKLET_META_FILE), meta);
|
|
219
250
|
|
|
220
251
|
// create release
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
const fs = require('fs-extra');
|
|
3
3
|
const createArchive = require('archiver');
|
|
4
|
+
const pick = require('lodash/pick');
|
|
4
5
|
const { slugify } = require('transliteration');
|
|
5
|
-
const { BLOCKLET_META_FILE, PROJECT } = require('@blocklet/constant');
|
|
6
|
-
const { update: updateMetaFile } = require('@blocklet/meta/lib/file');
|
|
6
|
+
const { BLOCKLET_META_FILE, PROJECT, BLOCKLET_INTERFACE_TYPE_WEB } = require('@blocklet/constant');
|
|
7
|
+
const { update: updateMetaFile, read: readMetaFile } = require('@blocklet/meta/lib/file');
|
|
7
8
|
const { createRelease: createBlockletRelease } = require('@abtnode/util/lib/create-blocklet-release');
|
|
8
9
|
const { titleSchema } = require('@blocklet/meta/lib/schema');
|
|
9
10
|
const { validateNewDid } = require('@blocklet/meta/lib/name');
|
|
@@ -14,7 +15,13 @@ const logger = require('@abtnode/logger')('create-resource-blocklet');
|
|
|
14
15
|
const { createReleaseSchema } = require('../../validators/project');
|
|
15
16
|
const getIsMultipleTenant = require('./get-is-multiple-tenant');
|
|
16
17
|
|
|
17
|
-
const {
|
|
18
|
+
const {
|
|
19
|
+
getLogoFile,
|
|
20
|
+
exportBlockletResources,
|
|
21
|
+
getResourceList,
|
|
22
|
+
checkResourceExists,
|
|
23
|
+
getExtendedMetaFile,
|
|
24
|
+
} = require('./util');
|
|
18
25
|
const createPackRelease = require('./create-pack-release');
|
|
19
26
|
const connectToStore = require('./connect-to-store');
|
|
20
27
|
const publishToStore = require('./publish-to-store');
|
|
@@ -356,6 +363,29 @@ const createRelease = async ({
|
|
|
356
363
|
files: project.blockletScreenshots?.length ? ['screenshots'] : [],
|
|
357
364
|
screenshots: project.blockletScreenshots || [],
|
|
358
365
|
};
|
|
366
|
+
|
|
367
|
+
// merge extended blocklet.yml
|
|
368
|
+
const extendedMetaFile = getExtendedMetaFile({ app: blocklet, projectId, releaseId });
|
|
369
|
+
if (fs.existsSync(extendedMetaFile)) {
|
|
370
|
+
const extendedMeta = readMetaFile(extendedMetaFile);
|
|
371
|
+
logger.info('merge extended blocklet.yml', extendedMeta);
|
|
372
|
+
Object.assign(meta, pick(extendedMeta, ['environments', 'engine']));
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
// Enable mountPoint for blocklets with engine specified
|
|
376
|
+
if (meta.engine?.interpreter === 'blocklet') {
|
|
377
|
+
meta.interfaces = [
|
|
378
|
+
{
|
|
379
|
+
name: 'publicUrl',
|
|
380
|
+
path: '/',
|
|
381
|
+
port: 'BLOCKLET_PORT',
|
|
382
|
+
prefix: '*',
|
|
383
|
+
protocol: 'tcp',
|
|
384
|
+
type: BLOCKLET_INTERFACE_TYPE_WEB,
|
|
385
|
+
},
|
|
386
|
+
];
|
|
387
|
+
}
|
|
388
|
+
|
|
359
389
|
await updateMetaFile(path.join(releaseBundleDir, BLOCKLET_META_FILE), meta);
|
|
360
390
|
|
|
361
391
|
// create release
|
|
@@ -2,7 +2,7 @@ const path = require('path');
|
|
|
2
2
|
const fs = require('fs-extra');
|
|
3
3
|
const fg = require('fast-glob');
|
|
4
4
|
const { isValid: isValidDid } = require('@arcblock/did');
|
|
5
|
-
const { PROJECT, BLOCKLET_RESOURCE_DIR } = require('@blocklet/constant');
|
|
5
|
+
const { PROJECT, BLOCKLET_RESOURCE_DIR, BLOCKLET_META_FILE } = require('@blocklet/constant');
|
|
6
6
|
|
|
7
7
|
const COMPONENT_CONFIG_MAP_DIR = '.component_config';
|
|
8
8
|
|
|
@@ -135,9 +135,20 @@ const checkResourceExists = async (projectDir, action, releaseId) => {
|
|
|
135
135
|
}
|
|
136
136
|
};
|
|
137
137
|
|
|
138
|
+
const getExtendedMetaFile = ({ app, projectId, releaseId }) => {
|
|
139
|
+
const { dataDir } = app.env;
|
|
140
|
+
const dirArr = [dataDir, PROJECT.DIR, projectId || '/'];
|
|
141
|
+
if (releaseId) {
|
|
142
|
+
dirArr.push(PROJECT.RELEASE_DIR, releaseId || '/');
|
|
143
|
+
}
|
|
144
|
+
dirArr.push(BLOCKLET_META_FILE);
|
|
145
|
+
return path.join(...dirArr);
|
|
146
|
+
};
|
|
147
|
+
|
|
138
148
|
module.exports = {
|
|
139
149
|
getLogoFile,
|
|
140
150
|
exportBlockletResources,
|
|
141
151
|
getResourceList,
|
|
142
152
|
checkResourceExists,
|
|
153
|
+
getExtendedMetaFile,
|
|
143
154
|
};
|
package/lib/index.js
CHANGED
|
@@ -328,6 +328,7 @@ function ABTNode(options) {
|
|
|
328
328
|
loginFederated: blockletManager.loginFederated.bind(blockletManager),
|
|
329
329
|
configNotification: blockletManager.configNotification.bind(blockletManager),
|
|
330
330
|
sendEmail: blockletManager.sendEmail.bind(blockletManager),
|
|
331
|
+
sendPush: blockletManager.sendPush.bind(blockletManager),
|
|
331
332
|
updateWhoCanAccess: blockletManager.updateWhoCanAccess.bind(blockletManager),
|
|
332
333
|
updateAppSessionConfig: blockletManager.updateAppSessionConfig.bind(blockletManager),
|
|
333
334
|
updateComponentTitle: blockletManager.updateComponentTitle.bind(blockletManager),
|
package/lib/router/manager.js
CHANGED
|
@@ -30,15 +30,10 @@ const {
|
|
|
30
30
|
BLOCKLET_BUNDLE_FOLDER,
|
|
31
31
|
BLOCKLET_DYNAMIC_PATH_PREFIX,
|
|
32
32
|
BLOCKLET_INTERFACE_TYPE_WEB,
|
|
33
|
-
BlockletGroup,
|
|
34
33
|
} = require('@blocklet/constant');
|
|
35
|
-
const {
|
|
36
|
-
forEachComponentV2Sync,
|
|
37
|
-
hasStartEngine,
|
|
38
|
-
isGatewayBlocklet,
|
|
39
|
-
getComponentId,
|
|
40
|
-
} = require('@blocklet/meta/lib/util');
|
|
34
|
+
const { forEachComponentV2Sync, isGatewayBlocklet, getComponentId } = require('@blocklet/meta/lib/util');
|
|
41
35
|
const { fromPublicKey } = require('@ocap/wallet');
|
|
36
|
+
const { hasMountPoint } = require('@blocklet/meta/lib/engine');
|
|
42
37
|
|
|
43
38
|
const {
|
|
44
39
|
validateAddSite,
|
|
@@ -712,15 +707,14 @@ class RouterManager extends EventEmitter {
|
|
|
712
707
|
const rootComponentPrefix = joinUrl(blockletPrefix, blocklet.mountPoint || '/');
|
|
713
708
|
rawRule.from.pathPrefix = normalizePathPrefix(rootComponentPrefix);
|
|
714
709
|
|
|
715
|
-
const isOccupiable = blocklet.meta
|
|
716
|
-
|
|
710
|
+
const isOccupiable = isGatewayBlocklet(blocklet.meta);
|
|
717
711
|
if (!isOccupiable) {
|
|
718
712
|
rules.push(rawRule);
|
|
719
713
|
}
|
|
720
714
|
|
|
721
715
|
forEachComponentV2Sync(blocklet, (component) => {
|
|
722
716
|
const { meta } = component;
|
|
723
|
-
if (
|
|
717
|
+
if (hasMountPoint(meta) === false) {
|
|
724
718
|
return;
|
|
725
719
|
}
|
|
726
720
|
|
package/lib/states/user.js
CHANGED
|
@@ -252,7 +252,7 @@ class User extends ExtendBase {
|
|
|
252
252
|
|
|
253
253
|
// eslint-disable-next-line require-await
|
|
254
254
|
async getUsersByDids({ dids, query }) {
|
|
255
|
-
const { approved, includeTags, includePassports } = query || {};
|
|
255
|
+
const { approved, includeTags, includePassports, includeUserSessions } = query || {};
|
|
256
256
|
const condition = { did: dids };
|
|
257
257
|
if (isNullOrUndefined(approved) === false) {
|
|
258
258
|
condition.approved = !!approved;
|
|
@@ -267,6 +267,16 @@ class User extends ExtendBase {
|
|
|
267
267
|
as: 'passports',
|
|
268
268
|
});
|
|
269
269
|
}
|
|
270
|
+
if (includeUserSessions) {
|
|
271
|
+
include.push({
|
|
272
|
+
model: this.models.UserSession,
|
|
273
|
+
as: 'userSessions',
|
|
274
|
+
where: {
|
|
275
|
+
status: 'online',
|
|
276
|
+
},
|
|
277
|
+
required: false,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
270
280
|
|
|
271
281
|
return this.find({ where: condition, include });
|
|
272
282
|
}
|
package/lib/util/blocklet.js
CHANGED
|
@@ -33,13 +33,7 @@ const getFolderSize = require('@abtnode/util/lib/get-folder-size');
|
|
|
33
33
|
const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
|
|
34
34
|
const hashFiles = require('@abtnode/util/lib/hash-files');
|
|
35
35
|
const didDocument = require('@abtnode/util/lib/did-document');
|
|
36
|
-
const {
|
|
37
|
-
BLOCKLET_MAX_MEM_LIMIT_IN_MB,
|
|
38
|
-
BLOCKLET_INSTALL_TYPE,
|
|
39
|
-
APP_STRUCT_VERSION,
|
|
40
|
-
BLOCKLET_STORE,
|
|
41
|
-
BLOCKLET_STORE_DEV,
|
|
42
|
-
} = require('@abtnode/constant');
|
|
36
|
+
const { BLOCKLET_MAX_MEM_LIMIT_IN_MB, BLOCKLET_INSTALL_TYPE, APP_STRUCT_VERSION } = require('@abtnode/constant');
|
|
43
37
|
const {
|
|
44
38
|
parseComponents,
|
|
45
39
|
ensureMeta,
|
|
@@ -75,7 +69,7 @@ const {
|
|
|
75
69
|
BLOCKLET_TENANT_MODES,
|
|
76
70
|
} = require('@blocklet/constant');
|
|
77
71
|
const validateBlockletEntry = require('@blocklet/meta/lib/entry');
|
|
78
|
-
const getBlockletEngine = require('@blocklet/meta/lib/engine');
|
|
72
|
+
const { getBlockletEngine } = require('@blocklet/meta/lib/engine');
|
|
79
73
|
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
80
74
|
const getBlockletWallet = require('@blocklet/meta/lib/wallet');
|
|
81
75
|
const {
|
|
@@ -111,10 +105,10 @@ const { installExternalDependencies } = require('./install-external-dependencies
|
|
|
111
105
|
|
|
112
106
|
/**
|
|
113
107
|
* get blocklet engine info, default is node
|
|
114
|
-
* @param {object}
|
|
108
|
+
* @param {object} meta blocklet meta
|
|
115
109
|
* @return {string} engine name
|
|
116
110
|
*/
|
|
117
|
-
const getBlockletEngineNameByPlatform = (
|
|
111
|
+
const getBlockletEngineNameByPlatform = (meta) => getBlockletEngine(meta).interpreter;
|
|
118
112
|
|
|
119
113
|
const noop = () => {};
|
|
120
114
|
const noopAsync = async () => {};
|
|
@@ -209,6 +203,9 @@ const getComponentStartEngine = (component, { e2eMode = false } = {}) => {
|
|
|
209
203
|
}
|
|
210
204
|
|
|
211
205
|
const blockletEngineInfo = getBlockletEngine(component.meta);
|
|
206
|
+
if (blockletEngineInfo.interpreter === 'blocklet') {
|
|
207
|
+
return {};
|
|
208
|
+
}
|
|
212
209
|
|
|
213
210
|
let script = null;
|
|
214
211
|
let interpreter = '';
|
|
@@ -218,10 +215,11 @@ const getComponentStartEngine = (component, { e2eMode = false } = {}) => {
|
|
|
218
215
|
|
|
219
216
|
if (startFromDevEntry) {
|
|
220
217
|
script = startFromDevEntry;
|
|
221
|
-
} else if (group === 'dapp') {
|
|
222
|
-
script = blockletEngineInfo.
|
|
218
|
+
} else if (group === 'dapp' || group === 'engine') {
|
|
219
|
+
script = blockletEngineInfo.source || BLOCKLET_ENTRY_FILE;
|
|
223
220
|
args = blockletEngineInfo.args || [];
|
|
224
221
|
} else if (group === 'static') {
|
|
222
|
+
// FIXME: @wangshijun deprecate this
|
|
225
223
|
script = require.resolve('@abtnode/static-server');
|
|
226
224
|
environmentObj.BLOCKLET_MAIN_DIR = path.join(appDir, main);
|
|
227
225
|
}
|
|
@@ -562,6 +560,10 @@ const startBlockletProcess = async (
|
|
|
562
560
|
const { cwd, script, args, environmentObj, interpreter, interpreterArgs } = getComponentStartEngine(b, {
|
|
563
561
|
e2eMode,
|
|
564
562
|
});
|
|
563
|
+
if (!script) {
|
|
564
|
+
logger.info('skip start process without script', { processId });
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
565
567
|
|
|
566
568
|
// get env
|
|
567
569
|
const env = getRuntimeEnvironments(b, nodeEnvironments, ancestors);
|
|
@@ -809,6 +811,12 @@ const checkBlockletProcessHealthy = async (blocklet, { minConsecutiveTime, timeo
|
|
|
809
811
|
return;
|
|
810
812
|
}
|
|
811
813
|
|
|
814
|
+
// components that relies on another engine component should not be checked
|
|
815
|
+
const engine = getBlockletEngine(b.meta);
|
|
816
|
+
if (engine.interpreter === 'blocklet') {
|
|
817
|
+
return;
|
|
818
|
+
}
|
|
819
|
+
|
|
812
820
|
if (!hasStartEngine(b.meta)) {
|
|
813
821
|
return;
|
|
814
822
|
}
|
|
@@ -1308,27 +1316,6 @@ const getBlocklet = async ({
|
|
|
1308
1316
|
|
|
1309
1317
|
const nodeInfo = await states.node.read();
|
|
1310
1318
|
|
|
1311
|
-
// FIXME: 梁柱, 下面的代码块, 在 1.16.29 之后的版本, 可以删除
|
|
1312
|
-
{
|
|
1313
|
-
// 对于历史项目, server.db -> servers -> blockletRegistryList 已经存储了没有 id 的 store, 这里需要兼容处理
|
|
1314
|
-
let isNeedFixRedundantData = false;
|
|
1315
|
-
const urlToId = {
|
|
1316
|
-
[BLOCKLET_STORE.url]: BLOCKLET_STORE.id,
|
|
1317
|
-
[BLOCKLET_STORE_DEV.url]: BLOCKLET_STORE_DEV.id,
|
|
1318
|
-
};
|
|
1319
|
-
(nodeInfo?.blockletRegistryList || []).forEach((store) => {
|
|
1320
|
-
if (!store.id) {
|
|
1321
|
-
store.id = urlToId[store.url];
|
|
1322
|
-
isNeedFixRedundantData = true;
|
|
1323
|
-
}
|
|
1324
|
-
});
|
|
1325
|
-
|
|
1326
|
-
// 更新历史数据中遗漏的 store id, 方便后期删除这段代码
|
|
1327
|
-
if (isNeedFixRedundantData) {
|
|
1328
|
-
await states.node.updateNodeInfo({ blockletRegistryList: nodeInfo.blockletRegistryList });
|
|
1329
|
-
}
|
|
1330
|
-
}
|
|
1331
|
-
|
|
1332
1319
|
(nodeInfo?.blockletRegistryList || []).forEach((store) => {
|
|
1333
1320
|
if (!blocklet.settings.storeList.find((x) => x.url === store.url)) {
|
|
1334
1321
|
blocklet.settings.storeList.push({
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.
|
|
6
|
+
"version": "1.16.28-beta-bfbab430",
|
|
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.
|
|
23
|
-
"@abtnode/auth": "1.16.
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.
|
|
25
|
-
"@abtnode/constant": "1.16.
|
|
26
|
-
"@abtnode/cron": "1.16.
|
|
27
|
-
"@abtnode/logger": "1.16.
|
|
28
|
-
"@abtnode/models": "1.16.
|
|
29
|
-
"@abtnode/queue": "1.16.
|
|
30
|
-
"@abtnode/rbac": "1.16.
|
|
31
|
-
"@abtnode/router-provider": "1.16.
|
|
32
|
-
"@abtnode/static-server": "1.16.
|
|
33
|
-
"@abtnode/timemachine": "1.16.
|
|
34
|
-
"@abtnode/util": "1.16.
|
|
22
|
+
"@abtnode/analytics": "1.16.28-beta-bfbab430",
|
|
23
|
+
"@abtnode/auth": "1.16.28-beta-bfbab430",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.28-beta-bfbab430",
|
|
25
|
+
"@abtnode/constant": "1.16.28-beta-bfbab430",
|
|
26
|
+
"@abtnode/cron": "1.16.28-beta-bfbab430",
|
|
27
|
+
"@abtnode/logger": "1.16.28-beta-bfbab430",
|
|
28
|
+
"@abtnode/models": "1.16.28-beta-bfbab430",
|
|
29
|
+
"@abtnode/queue": "1.16.28-beta-bfbab430",
|
|
30
|
+
"@abtnode/rbac": "1.16.28-beta-bfbab430",
|
|
31
|
+
"@abtnode/router-provider": "1.16.28-beta-bfbab430",
|
|
32
|
+
"@abtnode/static-server": "1.16.28-beta-bfbab430",
|
|
33
|
+
"@abtnode/timemachine": "1.16.28-beta-bfbab430",
|
|
34
|
+
"@abtnode/util": "1.16.28-beta-bfbab430",
|
|
35
35
|
"@arcblock/did": "1.18.123",
|
|
36
36
|
"@arcblock/did-auth": "1.18.123",
|
|
37
37
|
"@arcblock/did-ext": "^1.18.123",
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
"@arcblock/pm2-events": "^0.0.5",
|
|
43
43
|
"@arcblock/validator": "^1.18.123",
|
|
44
44
|
"@arcblock/vc": "1.18.123",
|
|
45
|
-
"@blocklet/constant": "1.16.
|
|
46
|
-
"@blocklet/env": "1.16.
|
|
47
|
-
"@blocklet/meta": "1.16.
|
|
48
|
-
"@blocklet/resolver": "1.16.
|
|
49
|
-
"@blocklet/sdk": "1.16.
|
|
50
|
-
"@blocklet/store": "1.16.
|
|
45
|
+
"@blocklet/constant": "1.16.28-beta-bfbab430",
|
|
46
|
+
"@blocklet/env": "1.16.28-beta-bfbab430",
|
|
47
|
+
"@blocklet/meta": "1.16.28-beta-bfbab430",
|
|
48
|
+
"@blocklet/resolver": "1.16.28-beta-bfbab430",
|
|
49
|
+
"@blocklet/sdk": "1.16.28-beta-bfbab430",
|
|
50
|
+
"@blocklet/store": "1.16.28-beta-bfbab430",
|
|
51
51
|
"@did-space/client": "^0.4.20",
|
|
52
52
|
"@fidm/x509": "^1.2.1",
|
|
53
53
|
"@ocap/mcrypto": "1.18.123",
|
|
@@ -103,5 +103,5 @@
|
|
|
103
103
|
"jest": "^29.7.0",
|
|
104
104
|
"unzipper": "^0.10.11"
|
|
105
105
|
},
|
|
106
|
-
"gitHead": "
|
|
106
|
+
"gitHead": "f1fbf0752de46be00d1faa0d54eb7d28016e0bb9"
|
|
107
107
|
}
|