@abtnode/core 1.16.30-beta-2876881d → 1.16.30-beta-cd65989e
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/blocklet/manager/helper/install-application-from-general.js +3 -4
- package/lib/blocklet/manager/helper/upgrade-components.js +4 -1
- package/lib/blocklet/storage/backup/spaces.js +1 -1
- package/lib/router/helper.js +6 -14
- package/lib/router/manager.js +14 -2
- package/lib/util/get-dynamic-components.js +2 -2
- package/lib/util/router.js +29 -1
- package/lib/util/store.js +6 -9
- package/package.json +33 -33
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
const joi = require('joi');
|
|
2
|
-
|
|
3
1
|
const { isInServerlessMode } = require('@abtnode/util/lib/serverless');
|
|
4
2
|
const { BLOCKLET_INSTALL_TYPE, INSTALL_ACTIONS } = require('@abtnode/constant');
|
|
5
3
|
const { BlockletStatus, BlockletEvents, BLOCKLET_CONFIGURABLE_KEY } = require('@blocklet/constant');
|
|
6
4
|
|
|
7
5
|
const logger = require('@abtnode/logger')('@abtnode/core:install-app-general');
|
|
8
6
|
const getApplicationWallet = require('@blocklet/meta/lib/wallet');
|
|
7
|
+
const { installBlockletTitleSchema, installBlockletDescriptionSchema } = require('@blocklet/meta/lib/schema');
|
|
9
8
|
|
|
10
9
|
const StoreUtil = require('../../../util/store');
|
|
11
10
|
const { getBlockletMetaFromUrl, ensureMeta, validateStore, validateInServerless } = require('../../../util/blocklet');
|
|
@@ -48,8 +47,8 @@ const installApplicationFromGeneral = async ({
|
|
|
48
47
|
componentSourceUrl = inputUrl;
|
|
49
48
|
await validateStore(nodeInfo, componentSourceUrl);
|
|
50
49
|
} else if (type === BLOCKLET_INSTALL_TYPE.CREATE) {
|
|
51
|
-
await
|
|
52
|
-
await
|
|
50
|
+
await installBlockletTitleSchema.validateAsync(title);
|
|
51
|
+
await installBlockletDescriptionSchema.validateAsync(description);
|
|
53
52
|
} else {
|
|
54
53
|
throw new Error(`Should not be here: unknown type ${type}`);
|
|
55
54
|
}
|
|
@@ -5,6 +5,7 @@ const logger = require('@abtnode/logger')('@abtnode/core:upgrade-component');
|
|
|
5
5
|
|
|
6
6
|
const { BlockletStatus, BlockletEvents } = require('@blocklet/constant');
|
|
7
7
|
const { INSTALL_ACTIONS } = require('@abtnode/constant');
|
|
8
|
+
const { parseOptionalComponents } = require('@blocklet/resolver');
|
|
8
9
|
const {
|
|
9
10
|
getUpdateMetaList,
|
|
10
11
|
parseComponents,
|
|
@@ -105,9 +106,11 @@ const upgrade = async ({ updateId, componentDids, context, states, manager }) =>
|
|
|
105
106
|
return oldComponent;
|
|
106
107
|
});
|
|
107
108
|
|
|
109
|
+
const optionalComponentDids = new Set((await parseOptionalComponents(oldBlocklet)).map((x) => x.meta.did));
|
|
108
110
|
dynamicComponents = filterDuplicateComponents(dynamicComponents, children);
|
|
109
|
-
|
|
111
|
+
dynamicComponents = dynamicComponents.filter((x) => !optionalComponentDids.has(x.meta.did));
|
|
110
112
|
|
|
113
|
+
children.push(...dynamicComponents);
|
|
111
114
|
// componentDids
|
|
112
115
|
componentDids.push(...dynamicComponents.map((x) => x.meta.did));
|
|
113
116
|
|
package/lib/router/helper.js
CHANGED
|
@@ -33,8 +33,6 @@ const {
|
|
|
33
33
|
USER_AVATAR_PATH_PREFIX,
|
|
34
34
|
DOMAIN_FOR_IP_SITE,
|
|
35
35
|
NAME_FOR_WELLKNOWN_SITE,
|
|
36
|
-
DEFAULT_HTTP_PORT,
|
|
37
|
-
DEFAULT_HTTPS_PORT,
|
|
38
36
|
ROUTING_RULE_TYPES,
|
|
39
37
|
CERTIFICATE_EXPIRES_OFFSET,
|
|
40
38
|
DEFAULT_SERVICE_PATH,
|
|
@@ -76,7 +74,7 @@ const { getFromCache: getAccessibleExternalNodeIp } = require('../util/get-acces
|
|
|
76
74
|
|
|
77
75
|
const Router = require('./index');
|
|
78
76
|
const states = require('../states');
|
|
79
|
-
const { getBlockletDomainGroupName, getDidFromDomainGroupName } = require('../util/router');
|
|
77
|
+
const { getBlockletDomainGroupName, getDidFromDomainGroupName, createProviderInstance } = require('../util/router');
|
|
80
78
|
const {
|
|
81
79
|
getBlockletDidDomainList,
|
|
82
80
|
updateDidDocument: updateBlockletDocument,
|
|
@@ -1258,12 +1256,7 @@ module.exports = function getRouterHelpers({ dataDirs, routingSnapshot, routerMa
|
|
|
1258
1256
|
await providers[providerName].reload();
|
|
1259
1257
|
} else {
|
|
1260
1258
|
providers[providerName] = new Router({
|
|
1261
|
-
provider:
|
|
1262
|
-
configDir: path.join(dataDirs.router, providerName),
|
|
1263
|
-
httpPort: nodeInfo.routing.httpPort || DEFAULT_HTTP_PORT,
|
|
1264
|
-
httpsPort: nodeInfo.routing.httpsPort || DEFAULT_HTTPS_PORT,
|
|
1265
|
-
cacheEnabled: isGatewayCacheEnabled(nodeInfo),
|
|
1266
|
-
}),
|
|
1259
|
+
provider: createProviderInstance({ nodeInfo, routerDataDir: dataDirs.router }),
|
|
1267
1260
|
getRoutingParams: async () => {
|
|
1268
1261
|
try {
|
|
1269
1262
|
const info = await nodeState.read();
|
|
@@ -1434,12 +1427,11 @@ module.exports = function getRouterHelpers({ dataDirs, routingSnapshot, routerMa
|
|
|
1434
1427
|
const Provider = getProvider(info.routing.provider);
|
|
1435
1428
|
if (Provider) {
|
|
1436
1429
|
try {
|
|
1437
|
-
const providerInstance =
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
httpsPort: info.routing.httpsPort || DEFAULT_HTTPS_PORT,
|
|
1441
|
-
cacheEnabled: isGatewayCacheEnabled(info),
|
|
1430
|
+
const providerInstance = createProviderInstance({
|
|
1431
|
+
nodeInfo: info,
|
|
1432
|
+
routerDataDir: dataDirs.router,
|
|
1442
1433
|
});
|
|
1434
|
+
|
|
1443
1435
|
await providerInstance.stop();
|
|
1444
1436
|
logger.info('original router stopped:', { provider: info.routing.provider });
|
|
1445
1437
|
} catch (err) {
|
package/lib/router/manager.js
CHANGED
|
@@ -47,7 +47,12 @@ const { findWebInterface } = require('../util/blocklet');
|
|
|
47
47
|
const { attachRuntimeDomainAliases, ensureLatestInfo } = require('./helper');
|
|
48
48
|
const Router = require('./index');
|
|
49
49
|
const states = require('../states');
|
|
50
|
-
const {
|
|
50
|
+
const {
|
|
51
|
+
getDidFromDomainGroupName,
|
|
52
|
+
updateNFTDomainRecord,
|
|
53
|
+
revokeAndDeleteNFTDomainRecord,
|
|
54
|
+
getGatewayPorts,
|
|
55
|
+
} = require('../util/router');
|
|
51
56
|
|
|
52
57
|
const checkPathPrefixInBlackList = (pathPrefix, extraBlackList = []) => {
|
|
53
58
|
const blacklist = [
|
|
@@ -644,8 +649,15 @@ class RouterManager extends EventEmitter {
|
|
|
644
649
|
const providerName = getProviderFromNodeInfo(info);
|
|
645
650
|
const Provider = getProvider(providerName);
|
|
646
651
|
const tmpDir = path.join(os.tmpdir(), `${providerName}-${Date.now()}`);
|
|
652
|
+
|
|
653
|
+
const { httpPort, httpsPort } = getGatewayPorts(info);
|
|
647
654
|
// disable cache to reduce nginx reload time and memory consumption
|
|
648
|
-
const provider = new Provider({
|
|
655
|
+
const provider = new Provider({
|
|
656
|
+
configDir: tmpDir,
|
|
657
|
+
cacheEnabled: false,
|
|
658
|
+
httpPort,
|
|
659
|
+
httpsPort,
|
|
660
|
+
});
|
|
649
661
|
const tempRouter = new Router({
|
|
650
662
|
provider,
|
|
651
663
|
getRoutingParams: async () => ({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const request = require('./request');
|
|
2
2
|
const { filterDuplicateComponents, parseComponents } = require('./blocklet');
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -6,7 +6,7 @@ const { filterDuplicateComponents, parseComponents } = require('./blocklet');
|
|
|
6
6
|
* @returns {Promise<import('@abtnode/types').TComponentState[]>}
|
|
7
7
|
*/
|
|
8
8
|
async function getDynamicComponents({ url }) {
|
|
9
|
-
const rawMeta = await
|
|
9
|
+
const rawMeta = await request.get(url).then((res) => res.data);
|
|
10
10
|
const { dynamicComponents } = await parseComponents({ meta: rawMeta });
|
|
11
11
|
|
|
12
12
|
const components = filterDuplicateComponents(dynamicComponents);
|
package/lib/util/router.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
const
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const { BLOCKLET_SITE_GROUP_SUFFIX, DEFAULT_HTTP_PORT, DEFAULT_HTTPS_PORT } = require('@abtnode/constant');
|
|
2
3
|
const axios = require('@abtnode/util/lib/axios');
|
|
3
4
|
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
4
5
|
const { stableStringify } = require('@arcblock/vc');
|
|
5
6
|
const { toBase58 } = require('@ocap/util');
|
|
6
7
|
const { getDidDomainServiceURL } = require('@abtnode/util/lib/did-domain');
|
|
8
|
+
const { getProvider } = require('@abtnode/router-provider');
|
|
7
9
|
const logger = require('@abtnode/logger')('@abtnode/core:router:util');
|
|
8
10
|
|
|
11
|
+
const { isGatewayCacheEnabled } = require('.');
|
|
12
|
+
|
|
9
13
|
const getBlockletDomainGroupName = (did) => `${did}${BLOCKLET_SITE_GROUP_SUFFIX}`;
|
|
10
14
|
|
|
11
15
|
const getDidFromDomainGroupName = (name) => {
|
|
@@ -86,9 +90,33 @@ const revokeAndDeleteNFTDomainRecord = async ({ name, blocklet, nodeInfo }) => {
|
|
|
86
90
|
}
|
|
87
91
|
};
|
|
88
92
|
|
|
93
|
+
const getGatewayPorts = (info) => {
|
|
94
|
+
return {
|
|
95
|
+
httpPort: info.routing?.httpPort || DEFAULT_HTTP_PORT,
|
|
96
|
+
httpsPort: info.routing?.httpsPort || DEFAULT_HTTPS_PORT,
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
const createProviderInstance = ({ nodeInfo, routerDataDir }) => {
|
|
101
|
+
const providerName = nodeInfo.routing.provider;
|
|
102
|
+
const Provider = getProvider(providerName);
|
|
103
|
+
const { httpPort, httpsPort } = getGatewayPorts(nodeInfo);
|
|
104
|
+
|
|
105
|
+
logger.info('create router instance', { providerName, httpPort, httpsPort });
|
|
106
|
+
|
|
107
|
+
return new Provider({
|
|
108
|
+
configDir: path.join(routerDataDir, providerName),
|
|
109
|
+
httpPort,
|
|
110
|
+
httpsPort,
|
|
111
|
+
cacheEnabled: isGatewayCacheEnabled(nodeInfo),
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
|
|
89
115
|
module.exports = {
|
|
90
116
|
getBlockletDomainGroupName,
|
|
91
117
|
getDidFromDomainGroupName,
|
|
118
|
+
getGatewayPorts,
|
|
92
119
|
updateNFTDomainRecord,
|
|
93
120
|
revokeAndDeleteNFTDomainRecord,
|
|
121
|
+
createProviderInstance,
|
|
94
122
|
};
|
package/lib/util/store.js
CHANGED
|
@@ -49,11 +49,8 @@ const fixAndVerifyMetaFromStore = (meta) => {
|
|
|
49
49
|
// Note: registry should contain the store endpoint
|
|
50
50
|
const getStoreMeta = async (registry) => {
|
|
51
51
|
try {
|
|
52
|
-
const url = withQuery(joinURL(registry, BLOCKLET_STORE_META_PATH), {
|
|
53
|
-
__t__: Date.now(),
|
|
54
|
-
});
|
|
52
|
+
const url = withQuery(joinURL(registry, BLOCKLET_STORE_META_PATH), { t: Date.now() });
|
|
55
53
|
const { data } = await request.get(url);
|
|
56
|
-
|
|
57
54
|
if (!data) {
|
|
58
55
|
return {};
|
|
59
56
|
}
|
|
@@ -78,6 +75,7 @@ const getStoreMeta = async (registry) => {
|
|
|
78
75
|
|
|
79
76
|
return result;
|
|
80
77
|
} catch (err) {
|
|
78
|
+
logger.error('Failed to getStoreMeta', err);
|
|
81
79
|
throw new Error(`Can not get meta info for store [${registry}]: ${err.message}`);
|
|
82
80
|
}
|
|
83
81
|
};
|
|
@@ -88,12 +86,11 @@ async function getStoreUrl(url) {
|
|
|
88
86
|
try {
|
|
89
87
|
const { data: meta } = await request.get(joinURL(origin, '__blocklet__.js?type=json&nocache=1'));
|
|
90
88
|
const component = meta.componentMountPoints?.find((item) => item.did === BLOCKLET_STORE_DID);
|
|
91
|
-
|
|
92
89
|
if (component) {
|
|
93
90
|
mountPoint = component.mountPoint;
|
|
94
91
|
}
|
|
95
|
-
} catch {
|
|
96
|
-
|
|
92
|
+
} catch (err) {
|
|
93
|
+
logger.error('Failed to getStoreUrl', err);
|
|
97
94
|
}
|
|
98
95
|
|
|
99
96
|
return joinURL(origin, mountPoint);
|
|
@@ -115,8 +112,8 @@ async function getStoreInfo(url) {
|
|
|
115
112
|
registryMeta: meta,
|
|
116
113
|
};
|
|
117
114
|
}
|
|
118
|
-
} catch {
|
|
119
|
-
|
|
115
|
+
} catch (err) {
|
|
116
|
+
logger.error('Failed to getStoreInfo', err);
|
|
120
117
|
}
|
|
121
118
|
}
|
|
122
119
|
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.30-beta-
|
|
6
|
+
"version": "1.16.30-beta-cd65989e",
|
|
7
7
|
"description": "",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -19,40 +19,40 @@
|
|
|
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.30-beta-
|
|
23
|
-
"@abtnode/auth": "1.16.30-beta-
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.30-beta-
|
|
25
|
-
"@abtnode/constant": "1.16.30-beta-
|
|
26
|
-
"@abtnode/cron": "1.16.30-beta-
|
|
27
|
-
"@abtnode/logger": "1.16.30-beta-
|
|
28
|
-
"@abtnode/models": "1.16.30-beta-
|
|
29
|
-
"@abtnode/queue": "1.16.30-beta-
|
|
30
|
-
"@abtnode/rbac": "1.16.30-beta-
|
|
31
|
-
"@abtnode/router-provider": "1.16.30-beta-
|
|
32
|
-
"@abtnode/static-server": "1.16.30-beta-
|
|
33
|
-
"@abtnode/timemachine": "1.16.30-beta-
|
|
34
|
-
"@abtnode/util": "1.16.30-beta-
|
|
35
|
-
"@arcblock/did": "1.18.
|
|
36
|
-
"@arcblock/did-auth": "1.18.
|
|
37
|
-
"@arcblock/did-ext": "^1.18.
|
|
22
|
+
"@abtnode/analytics": "1.16.30-beta-cd65989e",
|
|
23
|
+
"@abtnode/auth": "1.16.30-beta-cd65989e",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.30-beta-cd65989e",
|
|
25
|
+
"@abtnode/constant": "1.16.30-beta-cd65989e",
|
|
26
|
+
"@abtnode/cron": "1.16.30-beta-cd65989e",
|
|
27
|
+
"@abtnode/logger": "1.16.30-beta-cd65989e",
|
|
28
|
+
"@abtnode/models": "1.16.30-beta-cd65989e",
|
|
29
|
+
"@abtnode/queue": "1.16.30-beta-cd65989e",
|
|
30
|
+
"@abtnode/rbac": "1.16.30-beta-cd65989e",
|
|
31
|
+
"@abtnode/router-provider": "1.16.30-beta-cd65989e",
|
|
32
|
+
"@abtnode/static-server": "1.16.30-beta-cd65989e",
|
|
33
|
+
"@abtnode/timemachine": "1.16.30-beta-cd65989e",
|
|
34
|
+
"@abtnode/util": "1.16.30-beta-cd65989e",
|
|
35
|
+
"@arcblock/did": "1.18.131",
|
|
36
|
+
"@arcblock/did-auth": "1.18.131",
|
|
37
|
+
"@arcblock/did-ext": "^1.18.131",
|
|
38
38
|
"@arcblock/did-motif": "^1.1.13",
|
|
39
|
-
"@arcblock/did-util": "1.18.
|
|
40
|
-
"@arcblock/event-hub": "1.18.
|
|
41
|
-
"@arcblock/jwt": "^1.18.
|
|
39
|
+
"@arcblock/did-util": "1.18.131",
|
|
40
|
+
"@arcblock/event-hub": "1.18.131",
|
|
41
|
+
"@arcblock/jwt": "^1.18.131",
|
|
42
42
|
"@arcblock/pm2-events": "^0.0.5",
|
|
43
|
-
"@arcblock/validator": "^1.18.
|
|
44
|
-
"@arcblock/vc": "1.18.
|
|
45
|
-
"@blocklet/constant": "1.16.30-beta-
|
|
46
|
-
"@blocklet/env": "1.16.30-beta-
|
|
47
|
-
"@blocklet/meta": "1.16.30-beta-
|
|
48
|
-
"@blocklet/resolver": "1.16.30-beta-
|
|
49
|
-
"@blocklet/sdk": "1.16.30-beta-
|
|
50
|
-
"@blocklet/store": "1.16.30-beta-
|
|
51
|
-
"@did-space/client": "^0.5.
|
|
43
|
+
"@arcblock/validator": "^1.18.131",
|
|
44
|
+
"@arcblock/vc": "1.18.131",
|
|
45
|
+
"@blocklet/constant": "1.16.30-beta-cd65989e",
|
|
46
|
+
"@blocklet/env": "1.16.30-beta-cd65989e",
|
|
47
|
+
"@blocklet/meta": "1.16.30-beta-cd65989e",
|
|
48
|
+
"@blocklet/resolver": "1.16.30-beta-cd65989e",
|
|
49
|
+
"@blocklet/sdk": "1.16.30-beta-cd65989e",
|
|
50
|
+
"@blocklet/store": "1.16.30-beta-cd65989e",
|
|
51
|
+
"@did-space/client": "^0.5.27",
|
|
52
52
|
"@fidm/x509": "^1.2.1",
|
|
53
|
-
"@ocap/mcrypto": "1.18.
|
|
54
|
-
"@ocap/util": "1.18.
|
|
55
|
-
"@ocap/wallet": "1.18.
|
|
53
|
+
"@ocap/mcrypto": "1.18.131",
|
|
54
|
+
"@ocap/util": "1.18.131",
|
|
55
|
+
"@ocap/wallet": "1.18.131",
|
|
56
56
|
"@slack/webhook": "^5.0.4",
|
|
57
57
|
"archiver": "^7.0.1",
|
|
58
58
|
"axios": "^1.7.2",
|
|
@@ -103,5 +103,5 @@
|
|
|
103
103
|
"jest": "^29.7.0",
|
|
104
104
|
"unzipper": "^0.10.11"
|
|
105
105
|
},
|
|
106
|
-
"gitHead": "
|
|
106
|
+
"gitHead": "8646768b8ac83cdb8c213ab17fe8030f3d5dc6fc"
|
|
107
107
|
}
|