@abtnode/core 1.16.54-beta-20251016-050817-2fc632b8 → 1.16.54-beta-20251021-070951-25e3083c
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 +1 -1
- package/lib/blocklet/manager/disk.js +3 -2
- package/lib/blocklet/manager/helper/install-application-from-backup.js +1 -1
- package/lib/blocklet/manager/helper/install-application-from-general.js +1 -1
- package/lib/blocklet/manager/helper/install-component-from-upload.js +1 -1
- package/lib/blocklet/manager/helper/install-component-from-url.js +1 -1
- package/lib/blocklet/manager/helper/migrate-application-to-struct-v2.js +1 -1
- package/lib/blocklet/migration-dist/migration.cjs +1 -1
- package/lib/blocklet/project/publish-to-endpoint.js +5 -5
- package/lib/blocklet/storage/backup/base.js +1 -1
- package/lib/blocklet/storage/backup/spaces.js +1 -0
- package/lib/event/index.js +5 -0
- package/lib/monitor/blocklet-runtime-monitor.js +1 -1
- package/lib/states/audit-log.js +14 -0
- package/lib/team/manager.js +1 -1
- package/lib/util/blocklet.js +33 -12
- package/lib/util/index.js +1 -1
- package/lib/util/launcher.js +1 -1
- package/lib/util/router.js +6 -6
- package/lib/util/store.js +1 -1
- package/lib/validators/router.js +1 -1
- package/package.json +40 -41
package/lib/api/team.js
CHANGED
|
@@ -39,7 +39,7 @@ const {
|
|
|
39
39
|
getUserAvatarUrl: getFederatedUserAvatarUrl,
|
|
40
40
|
} = require('@abtnode/auth/lib/util/federated');
|
|
41
41
|
const { hasActiveOwnerPassport } = require('@abtnode/util/lib/passport');
|
|
42
|
-
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
42
|
+
const { getBlockletInfo } = require('@blocklet/meta/lib/info');
|
|
43
43
|
const { getUserAvatarUrl, getAppAvatarUrl, extractUserAvatar, getAvatarByUrl } = require('@abtnode/util/lib/user');
|
|
44
44
|
const { getChainClient } = require('@abtnode/util/lib/get-chain-client');
|
|
45
45
|
const { getWalletDid } = require('@blocklet/meta/lib/did-utils');
|
|
@@ -20,7 +20,7 @@ const isUndefined = require('lodash/isUndefined');
|
|
|
20
20
|
const { sign } = require('@arcblock/jwt');
|
|
21
21
|
const { isInServerlessMode } = require('@abtnode/util/lib/serverless');
|
|
22
22
|
const sleep = require('@abtnode/util/lib/sleep');
|
|
23
|
-
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
23
|
+
const { getBlockletInfo } = require('@blocklet/meta/lib/info');
|
|
24
24
|
const { joinURL } = require('ufo');
|
|
25
25
|
const { sendToUser } = require('@blocklet/sdk/lib/util/send-notification');
|
|
26
26
|
const { getDidDomainForBlocklet } = require('@abtnode/util/lib/get-domain-for-blocklet');
|
|
@@ -122,7 +122,7 @@ const {
|
|
|
122
122
|
shouldSyncFederated,
|
|
123
123
|
getUserAvatarUrl,
|
|
124
124
|
} = require('@abtnode/auth/lib/util/federated');
|
|
125
|
-
const toBlockletDid = require('@blocklet/meta/lib/did');
|
|
125
|
+
const { toBlockletDid } = require('@blocklet/meta/lib/did');
|
|
126
126
|
const { updateComponentDid, removeUploadFile } = require('@abtnode/util/lib/upload-component');
|
|
127
127
|
|
|
128
128
|
const groupBy = require('lodash/groupBy');
|
|
@@ -3514,6 +3514,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
3514
3514
|
|
|
3515
3515
|
const nodeInfo = await states.node.read();
|
|
3516
3516
|
const successBlockletIds = new Set();
|
|
3517
|
+
|
|
3517
3518
|
try {
|
|
3518
3519
|
if (!skipRunningCheck) {
|
|
3519
3520
|
await checkBlockletProcessHealthy(blocklet, {
|
|
@@ -4,7 +4,7 @@ const omit = require('lodash/omit');
|
|
|
4
4
|
const toLower = require('lodash/toLower');
|
|
5
5
|
|
|
6
6
|
const { forEachBlockletSync, getBlockletAppIdList } = require('@blocklet/meta/lib/util');
|
|
7
|
-
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
7
|
+
const { getBlockletInfo } = require('@blocklet/meta/lib/info');
|
|
8
8
|
|
|
9
9
|
const { BLOCKLET_CONFIGURABLE_KEY, BlockletEvents, BlockletStatus } = require('@blocklet/constant');
|
|
10
10
|
const { INSTALL_ACTIONS } = require('@abtnode/constant');
|
|
@@ -3,7 +3,7 @@ const { BLOCKLET_INSTALL_TYPE, INSTALL_ACTIONS } = require('@abtnode/constant');
|
|
|
3
3
|
const { BlockletStatus, BlockletEvents, BLOCKLET_CONFIGURABLE_KEY } = require('@blocklet/constant');
|
|
4
4
|
|
|
5
5
|
const logger = require('@abtnode/logger')('@abtnode/core:install-app-general');
|
|
6
|
-
const getApplicationWallet = require('@blocklet/meta/lib/wallet');
|
|
6
|
+
const { getApplicationWallet } = require('@blocklet/meta/lib/wallet');
|
|
7
7
|
const { installBlockletTitleSchema, installBlockletDescriptionSchema } = require('@blocklet/meta/lib/schema');
|
|
8
8
|
|
|
9
9
|
const StoreUtil = require('../../../util/store');
|
|
@@ -2,7 +2,7 @@ const path = require('path');
|
|
|
2
2
|
|
|
3
3
|
const logger = require('@abtnode/logger')('@abtnode/core:install-component-upload');
|
|
4
4
|
const uniq = require('lodash/uniq');
|
|
5
|
-
const getComponentProcessId = require('@blocklet/meta/lib/get-component-process-id');
|
|
5
|
+
const { getComponentProcessId } = require('@blocklet/meta/lib/get-component-process-id');
|
|
6
6
|
const { isInProgress, hasStartEngine } = require('@blocklet/meta/lib/util');
|
|
7
7
|
|
|
8
8
|
const { BlockletSource, BlockletGroup, fromBlockletStatus } = require('@blocklet/constant');
|
|
@@ -4,7 +4,7 @@ const logger = require('@abtnode/logger')('@abtnode/core:install-component-url')
|
|
|
4
4
|
const uniq = require('lodash/uniq');
|
|
5
5
|
const { isFreeBlocklet, hasStartEngine } = require('@blocklet/meta/lib/util');
|
|
6
6
|
const { titleSchema, updateMountPointSchema } = require('@blocklet/meta/lib/schema');
|
|
7
|
-
const hasReservedKey = require('@blocklet/meta/lib/has-reserved-key');
|
|
7
|
+
const { hasReservedKey } = require('@blocklet/meta/lib/has-reserved-key');
|
|
8
8
|
const formatName = require('@abtnode/util/lib/format-name');
|
|
9
9
|
|
|
10
10
|
const { BlockletStatus, BlockletEvents, BlockletGroup } = require('@blocklet/constant');
|
|
@@ -32,7 +32,7 @@ const {
|
|
|
32
32
|
CHAIN_PROP_MAP,
|
|
33
33
|
} = require('@blocklet/constant');
|
|
34
34
|
const { update: updateMetaFile } = require('@blocklet/meta/lib/file');
|
|
35
|
-
const getBlockletWallet = require('@blocklet/meta/lib/wallet');
|
|
35
|
+
const { getApplicationWallet: getBlockletWallet } = require('@blocklet/meta/lib/wallet');
|
|
36
36
|
const cloneDeep = require('@abtnode/util/lib/deep-clone');
|
|
37
37
|
|
|
38
38
|
const { getBlockletDomainGroupName } = require('../../../util/router');
|
|
@@ -38963,7 +38963,7 @@ module.exports = require("zlib");
|
|
|
38963
38963
|
/***/ ((module) => {
|
|
38964
38964
|
|
|
38965
38965
|
"use strict";
|
|
38966
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.53","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib","test":"
|
|
38966
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.53","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib","test":"bun test","coverage":"bun test --coverage"},"keywords":[],"author":"wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)","license":"Apache-2.0","dependencies":{"@abtnode/analytics":"1.16.53","@abtnode/auth":"1.16.53","@abtnode/certificate-manager":"1.16.53","@abtnode/constant":"1.16.53","@abtnode/cron":"1.16.53","@abtnode/db-cache":"1.16.53","@abtnode/docker-utils":"1.16.53","@abtnode/logger":"1.16.53","@abtnode/models":"1.16.53","@abtnode/queue":"1.16.53","@abtnode/rbac":"1.16.53","@abtnode/router-provider":"1.16.53","@abtnode/static-server":"1.16.53","@abtnode/timemachine":"1.16.53","@abtnode/util":"1.16.53","@aigne/aigne-hub":"^0.10.1","@arcblock/did":"^1.26.2","@arcblock/did-connect-js":"^1.26.2","@arcblock/did-ext":"^1.26.2","@arcblock/did-motif":"^1.1.14","@arcblock/did-util":"^1.26.2","@arcblock/event-hub":"^1.26.2","@arcblock/jwt":"^1.26.2","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"^1.26.2","@arcblock/vc":"^1.26.2","@blocklet/constant":"1.16.53","@blocklet/did-space-js":"^1.1.34","@blocklet/env":"1.16.53","@blocklet/error":"^0.2.5","@blocklet/meta":"1.16.53","@blocklet/resolver":"1.16.53","@blocklet/sdk":"1.16.53","@blocklet/server-js":"1.16.53","@blocklet/store":"1.16.53","@blocklet/theme":"^3.1.51","@fidm/x509":"^1.2.1","@ocap/mcrypto":"^1.26.2","@ocap/util":"^1.26.2","@ocap/wallet":"^1.26.2","@slack/webhook":"^5.0.4","archiver":"^7.0.1","axios":"^1.7.9","axon":"^2.0.3","chalk":"^4.1.2","cross-spawn":"^7.0.3","dayjs":"^1.11.13","deep-diff":"^1.0.2","detect-port":"^1.5.1","envfile":"^7.1.0","escape-string-regexp":"^4.0.0","fast-glob":"^3.3.2","filesize":"^10.1.1","flat":"^5.0.2","fs-extra":"^11.2.0","get-port":"^5.1.1","hasha":"^5.2.2","is-base64":"^1.1.0","is-cidr":"4","is-ip":"3","is-url":"^1.2.4","joi":"17.12.2","joi-extension-semver":"^5.0.0","js-yaml":"^4.1.0","kill-port":"^2.0.1","lodash":"^4.17.21","node-stream-zip":"^1.15.0","p-all":"^3.0.0","p-limit":"^3.1.0","p-map":"^4.0.0","p-retry":"^4.6.2","p-wait-for":"^3.2.0","private-ip":"^2.3.4","rate-limiter-flexible":"^5.0.5","read-last-lines":"^1.8.0","semver":"^7.6.3","sequelize":"^6.35.0","shelljs":"^0.8.5","slugify":"^1.6.6","ssri":"^8.0.1","stream-throttle":"^0.1.3","stream-to-promise":"^3.0.0","systeminformation":"^5.23.3","tail":"^2.2.4","tar":"^6.1.11","transliteration":"^2.3.5","ua-parser-js":"^1.0.2","ufo":"^1.5.3","uuid":"^11.1.0","valid-url":"^1.0.9","which":"^2.0.2","xbytes":"^1.8.0"},"devDependencies":{"axios-mock-adapter":"^2.1.0","expand-tilde":"^2.0.2","express":"^4.18.2","jest":"^29.7.0","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
|
|
38967
38967
|
|
|
38968
38968
|
/***/ }),
|
|
38969
38969
|
|
|
@@ -3,17 +3,17 @@ const path = require('path');
|
|
|
3
3
|
const { PROJECT } = require('@blocklet/constant');
|
|
4
4
|
|
|
5
5
|
const fs = require('fs/promises');
|
|
6
|
-
const getBlockletMeta = require('@blocklet/meta/lib/parse');
|
|
7
|
-
const hasReservedKey = require('@blocklet/meta/lib/has-reserved-key');
|
|
6
|
+
const { parse: getBlockletMeta } = require('@blocklet/meta/lib/parse');
|
|
7
|
+
const { hasReservedKey } = require('@blocklet/meta/lib/has-reserved-key');
|
|
8
8
|
const logger = require('@abtnode/logger')('@abtnode/core:publish-to-endpoint');
|
|
9
9
|
const slugify = require('slugify');
|
|
10
10
|
const tar = require('tar');
|
|
11
11
|
|
|
12
12
|
const { default: axios } = require('axios');
|
|
13
13
|
const hashFiles = require('@abtnode/util/lib/hash-files');
|
|
14
|
-
const validateBlockletEntry = require('@blocklet/meta/lib/entry');
|
|
14
|
+
const { validateBlockletEntry } = require('@blocklet/meta/lib/entry');
|
|
15
15
|
const { hasMountPoint } = require('@blocklet/meta/lib/engine');
|
|
16
|
-
const urlPathFriendly = require('@blocklet/meta/lib/url-path-friendly')
|
|
16
|
+
const { urlPathFriendly } = require('@blocklet/meta/lib/url-path-friendly');
|
|
17
17
|
const makeFormData = require('@abtnode/util/lib/make-from-data');
|
|
18
18
|
const { fileFilter } = require('@abtnode/util/lib/check-file');
|
|
19
19
|
const { formatError } = require('@blocklet/error');
|
|
@@ -196,7 +196,7 @@ const publishToEndpoint = async ({ did, projectId, endpointId, releaseId, manage
|
|
|
196
196
|
'user-agent': 'PublishToEndpoint',
|
|
197
197
|
'x-access-key-id': accessKeyId,
|
|
198
198
|
'x-access-stamp': timestamp,
|
|
199
|
-
'x-access-signature': signWithAccessKey({
|
|
199
|
+
'x-access-signature': await signWithAccessKey({
|
|
200
200
|
accessKeyId,
|
|
201
201
|
accessKeySecret,
|
|
202
202
|
message: `${timestamp}-${accessKeyId}`,
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
const { Hasher } = require('@ocap/mcrypto');
|
|
20
20
|
const { toBuffer } = require('@ocap/util');
|
|
21
|
-
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
21
|
+
const { getBlockletInfo } = require('@blocklet/meta/lib/info');
|
|
22
22
|
const security = require('@abtnode/util/lib/security');
|
|
23
23
|
|
|
24
24
|
class BaseBackup {
|
package/lib/event/index.js
CHANGED
|
@@ -92,6 +92,11 @@ module.exports = ({
|
|
|
92
92
|
return;
|
|
93
93
|
}
|
|
94
94
|
eventHub.on(name, (data) => {
|
|
95
|
+
if (process.env.TEST_LOG === 'true') {
|
|
96
|
+
// eslint-disable-next-line no-console
|
|
97
|
+
console.log('eventHub.on', name);
|
|
98
|
+
}
|
|
99
|
+
|
|
95
100
|
if (name === BlockletEvents.removed) {
|
|
96
101
|
// Cleanup cache in teamManager for every node instance
|
|
97
102
|
teamManager.deleteTeam(data?.meta?.did).catch((error) => {
|
|
@@ -4,7 +4,7 @@ const cloneDeep = require('@abtnode/util/lib/deep-clone');
|
|
|
4
4
|
const pLimit = require('p-limit');
|
|
5
5
|
const dayjs = require('@abtnode/util/lib/dayjs');
|
|
6
6
|
const { forEachBlocklet, isGatewayBlocklet, hasStartEngine } = require('@blocklet/meta/lib/util');
|
|
7
|
-
const getComponentProcessId = require('@blocklet/meta/lib/get-component-process-id');
|
|
7
|
+
const { getComponentProcessId } = require('@blocklet/meta/lib/get-component-process-id');
|
|
8
8
|
const { EVENTS } = require('@abtnode/constant');
|
|
9
9
|
const { BlockletStatus } = require('@blocklet/constant');
|
|
10
10
|
const defaultLogger = require('@abtnode/logger')('blocklet-runtime-monitor');
|
package/lib/states/audit-log.js
CHANGED
|
@@ -551,6 +551,16 @@ const getLogContent = async (action, args, context, result, info, node) => {
|
|
|
551
551
|
case 'deleteAccessKey':
|
|
552
552
|
return `deleted access key ${args.accessKeyId}`; // prettier-ignore
|
|
553
553
|
|
|
554
|
+
// remote signing
|
|
555
|
+
case 'remoteSign':
|
|
556
|
+
return `component \`${args.componentId}\` signed payload remotely (type: ${args.payloadType}):\n\`\`\`\n${args.payloadContent || '(no content)'}\n\`\`\``;
|
|
557
|
+
case 'remoteSignJWT':
|
|
558
|
+
return `component \`${args.componentId}\` signed JWT remotely${args.jwtVersion ? ` (version: ${args.jwtVersion})` : ''}:\n\`\`\`\n${args.payloadContent || '(no content)'}\n\`\`\``;
|
|
559
|
+
case 'remoteSignETH':
|
|
560
|
+
return `component \`${args.componentId}\` signed Ethereum data remotely${args.hashBeforeSign ? ' (pre-hashed)' : ''}:\n\`\`\`\n${args.dataContent || '(no content)'}\n\`\`\``;
|
|
561
|
+
case 'remoteDeriveWallet':
|
|
562
|
+
return `component \`${args.componentId}\` derived wallet from sub: \`${args.sub}\`${args.index !== undefined ? `, index: ${args.index}` : ''}`;
|
|
563
|
+
|
|
554
564
|
// integrations
|
|
555
565
|
case 'createWebHook':
|
|
556
566
|
return `added integration ${result.id}: \n- type: ${args.type}\n${args.params.map(x => `- ${x.name}: ${x.value}`).join('\n')}`; // prettier-ignore
|
|
@@ -865,6 +875,10 @@ const getLogCategory = (action) => {
|
|
|
865
875
|
case 'addBlockletResponseHeaderPolicy': // response-header-policy
|
|
866
876
|
case 'updateBlockletResponseHeaderPolicy':
|
|
867
877
|
case 'deleteBlockletResponseHeaderPolicy':
|
|
878
|
+
case 'remoteSign': // remote signing
|
|
879
|
+
case 'remoteSignJWT':
|
|
880
|
+
case 'remoteSignETH':
|
|
881
|
+
case 'remoteDeriveWallet':
|
|
868
882
|
return 'security';
|
|
869
883
|
|
|
870
884
|
// integrations
|
package/lib/team/manager.js
CHANGED
|
@@ -28,7 +28,7 @@ const { joinURL, withHttps } = require('ufo');
|
|
|
28
28
|
const { isCustomDomain } = require('@abtnode/util/lib/url-evaluation');
|
|
29
29
|
const dayjs = require('@abtnode/util/lib/dayjs');
|
|
30
30
|
const { getDidDomainForBlocklet } = require('@abtnode/util/lib/get-domain-for-blocklet');
|
|
31
|
-
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
31
|
+
const { getBlockletInfo } = require('@blocklet/meta/lib/info');
|
|
32
32
|
const { getDomainsByDid } = require('../router/helper');
|
|
33
33
|
const { isCLI, getDbFilePath } = require('../util');
|
|
34
34
|
const { transformNotification } = require('../util/notification');
|
package/lib/util/blocklet.js
CHANGED
|
@@ -13,6 +13,7 @@ const cloneDeep = require('lodash/cloneDeep');
|
|
|
13
13
|
const mergeWith = require('lodash/mergeWith');
|
|
14
14
|
const toLower = require('lodash/toLower');
|
|
15
15
|
const isEmpty = require('lodash/isEmpty');
|
|
16
|
+
const omit = require('lodash/omit');
|
|
16
17
|
const streamToPromise = require('stream-to-promise');
|
|
17
18
|
const { Throttle } = require('stream-throttle');
|
|
18
19
|
const { slugify } = require('transliteration');
|
|
@@ -23,7 +24,7 @@ const isUrl = require('is-url');
|
|
|
23
24
|
const semver = require('semver');
|
|
24
25
|
const { chainInfo: chainInfoSchema } = require('@arcblock/did-connect-js/lib/schema');
|
|
25
26
|
|
|
26
|
-
const urlPathFriendly = require('@blocklet/meta/lib/url-path-friendly')
|
|
27
|
+
const { urlPathFriendly } = require('@blocklet/meta/lib/url-path-friendly');
|
|
27
28
|
const { fromSecretKey, fromPublicKey } = require('@ocap/wallet');
|
|
28
29
|
const { toHex, isHex, toDid, toAddress, toBuffer } = require('@ocap/util');
|
|
29
30
|
const { isValid: isValidDid, isEthereumDid } = require('@arcblock/did');
|
|
@@ -83,10 +84,10 @@ const {
|
|
|
83
84
|
PROJECT,
|
|
84
85
|
BLOCKLET_INTERFACE_TYPE_DOCKER,
|
|
85
86
|
} = require('@blocklet/constant');
|
|
86
|
-
const validateBlockletEntry = require('@blocklet/meta/lib/entry');
|
|
87
|
+
const { validateBlockletEntry } = require('@blocklet/meta/lib/entry');
|
|
87
88
|
const { getBlockletEngine } = require('@blocklet/meta/lib/engine');
|
|
88
|
-
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
89
|
-
const getBlockletWallet = require('@blocklet/meta/lib/wallet');
|
|
89
|
+
const { getBlockletInfo } = require('@blocklet/meta/lib/info');
|
|
90
|
+
const { getApplicationWallet: getBlockletWallet } = require('@blocklet/meta/lib/wallet');
|
|
90
91
|
const {
|
|
91
92
|
forEachBlocklet,
|
|
92
93
|
getDisplayName,
|
|
@@ -108,7 +109,7 @@ const {
|
|
|
108
109
|
const { getComponentsInternalInfo } = require('@blocklet/meta/lib/blocklet');
|
|
109
110
|
const { titleSchema, descriptionSchema, logoSchema } = require('@blocklet/meta/lib/schema');
|
|
110
111
|
const { getBlockletMetaFromUrl } = require('@blocklet/meta/lib/util-meta');
|
|
111
|
-
const getComponentProcessId = require('@blocklet/meta/lib/get-component-process-id');
|
|
112
|
+
const { getComponentProcessId } = require('@blocklet/meta/lib/get-component-process-id');
|
|
112
113
|
const { isInServerlessMode } = require('@abtnode/util/lib/serverless');
|
|
113
114
|
const { getDidDomainForBlocklet } = require('@abtnode/util/lib/get-domain-for-blocklet');
|
|
114
115
|
const md5 = require('@abtnode/util/lib/md5');
|
|
@@ -522,6 +523,12 @@ const getRuntimeEnvironments = (blocklet, nodeEnvironments, ancestors, isGreen =
|
|
|
522
523
|
? getBlockletWallet(blocklet.meta.did, nodeEnvironments.ABT_NODE_SK, undefined, 1)
|
|
523
524
|
: null;
|
|
524
525
|
|
|
526
|
+
// For Access Key authentication, components should use root app's wallet
|
|
527
|
+
// This ensures consistent accessKeyId across parent and child components
|
|
528
|
+
const accessKeyWallet = get(nodeEnvironments, 'ABT_NODE_SK')
|
|
529
|
+
? getBlockletWallet(root.meta.did, nodeEnvironments.ABT_NODE_SK, undefined, 1)
|
|
530
|
+
: null;
|
|
531
|
+
|
|
525
532
|
const BLOCKLET_APP_IDS = getBlockletAppIdList(root).join(',');
|
|
526
533
|
|
|
527
534
|
const componentApiKey = getComponentApiKey({
|
|
@@ -530,6 +537,11 @@ const getRuntimeEnvironments = (blocklet, nodeEnvironments, ancestors, isGreen =
|
|
|
530
537
|
component: blocklet,
|
|
531
538
|
});
|
|
532
539
|
|
|
540
|
+
const blockletInfo = getBlockletInfo(blocklet, nodeEnvironments.ABT_NODE_SK, { returnWallet: true });
|
|
541
|
+
|
|
542
|
+
const rootBlockletInfo =
|
|
543
|
+
blocklet === root ? blockletInfo : getBlockletInfo(root, nodeEnvironments.ABT_NODE_SK, { returnWallet: true });
|
|
544
|
+
|
|
533
545
|
const env = {
|
|
534
546
|
...blocklet.configObj,
|
|
535
547
|
...getSharedConfigObj((ancestors || [])[0], blocklet, true),
|
|
@@ -538,11 +550,15 @@ const getRuntimeEnvironments = (blocklet, nodeEnvironments, ancestors, isGreen =
|
|
|
538
550
|
BLOCKLET_MOUNT_POINTS: JSON.stringify(componentsInternalInfo),
|
|
539
551
|
BLOCKLET_MODE: blocklet.mode || BLOCKLET_MODES.PRODUCTION,
|
|
540
552
|
BLOCKLET_APP_EK: tmp?.secretKey,
|
|
553
|
+
// for login token authentication
|
|
554
|
+
BLOCKLET_SESSION_SECRET: rootBlockletInfo.secret,
|
|
541
555
|
BLOCKLET_APP_VERSION: root.meta.version,
|
|
542
556
|
BLOCKLET_APP_IDS,
|
|
543
557
|
BLOCKLET_COMPONENT_API_KEY: componentApiKey,
|
|
544
558
|
...nodeEnvironments,
|
|
545
559
|
...safeNodeEnvironments,
|
|
560
|
+
// compatible with previous version
|
|
561
|
+
...(process.env.WITH_SK ? {} : { BLOCKLET_APP_ASK: accessKeyWallet?.secretKey }),
|
|
546
562
|
};
|
|
547
563
|
|
|
548
564
|
const aigne = get(root, 'settings.aigne', {});
|
|
@@ -757,13 +773,17 @@ const startBlockletProcess = async (
|
|
|
757
773
|
max_restarts: b.mode === BLOCKLET_MODES.DEVELOPMENT ? 0 : 3,
|
|
758
774
|
min_uptime: 60 * 1000,
|
|
759
775
|
exp_backoff_restart_delay: 300,
|
|
760
|
-
env:
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
776
|
+
env: omit(
|
|
777
|
+
{
|
|
778
|
+
...environmentObj,
|
|
779
|
+
...env,
|
|
780
|
+
NODE_ENV: 'production',
|
|
781
|
+
BLOCKLET_START_AT: now,
|
|
782
|
+
NODE_OPTIONS: await getSecurityNodeOptions(b, nodeInfo.enableFileSystemIsolation),
|
|
783
|
+
},
|
|
784
|
+
// should not inject appSk and appPsk to the blocklet environment
|
|
785
|
+
process.env.WITH_SK ? [] : ['BLOCKLET_APP_SK', 'BLOCKLET_APP_PSK']
|
|
786
|
+
),
|
|
767
787
|
script,
|
|
768
788
|
args,
|
|
769
789
|
interpreter,
|
|
@@ -1144,6 +1164,7 @@ const checkBlockletProcessHealthy = async (
|
|
|
1144
1164
|
const startedAt = Date.now();
|
|
1145
1165
|
|
|
1146
1166
|
await _checkProcessHealthy(b, { minConsecutiveTime, timeout, logToTerminal, isGreen });
|
|
1167
|
+
|
|
1147
1168
|
logger.info('done check component healthy', { processId: b.env.processId, time: Date.now() - startedAt });
|
|
1148
1169
|
|
|
1149
1170
|
if (setBlockletRunning) {
|
package/lib/util/index.js
CHANGED
|
@@ -17,7 +17,7 @@ const StreamZip = require('node-stream-zip');
|
|
|
17
17
|
const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
|
|
18
18
|
const axios = require('@abtnode/util/lib/axios');
|
|
19
19
|
const { encode: encodeBase32 } = require('@abtnode/util/lib/base32');
|
|
20
|
-
const parseBlockletMeta = require('@blocklet/meta/lib/parse');
|
|
20
|
+
const { parse: parseBlockletMeta } = require('@blocklet/meta/lib/parse');
|
|
21
21
|
const { BlockletStatus } = require('@blocklet/constant');
|
|
22
22
|
const { replaceSlotToIp, isInProgress } = require('@blocklet/meta/lib/util');
|
|
23
23
|
const {
|
package/lib/util/launcher.js
CHANGED
|
@@ -20,7 +20,7 @@ const { createLaunchBlockletHandler, createServerlessInstallGuard } = require('@
|
|
|
20
20
|
const { getDisplayName } = require('@blocklet/meta/lib/util');
|
|
21
21
|
const { fromAppDid } = require('@arcblock/did-ext');
|
|
22
22
|
const { fromRandom } = require('@ocap/wallet');
|
|
23
|
-
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
23
|
+
const { getBlockletInfo } = require('@blocklet/meta/lib/info');
|
|
24
24
|
const { getBlockletLogos } = require('@abtnode/util/lib/blocklet');
|
|
25
25
|
const { PASSPORT_SOURCE, PASSPORT_LOG_ACTION, PASSPORT_ISSUE_ACTION } = require('@abtnode/constant');
|
|
26
26
|
|
package/lib/util/router.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
const { BLOCKLET_SITE_GROUP_SUFFIX, DEFAULT_HTTP_PORT, DEFAULT_HTTPS_PORT } = require('@abtnode/constant');
|
|
3
3
|
const axios = require('@abtnode/util/lib/axios');
|
|
4
|
-
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
4
|
+
const { getBlockletInfo } = require('@blocklet/meta/lib/info');
|
|
5
5
|
const { stableStringify } = require('@arcblock/vc');
|
|
6
6
|
const { toBase58 } = require('@ocap/util');
|
|
7
7
|
const { getDidDomainServiceURL } = require('@abtnode/util/lib/did-domain');
|
|
@@ -25,8 +25,8 @@ const getDidFromDomainGroupName = (name) => {
|
|
|
25
25
|
return did;
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
-
const getNFTDomainHeaders = ({ wallet, payload }) => ({
|
|
29
|
-
'x-blocklet-sig': toBase58(wallet.sign(stableStringify(payload))),
|
|
28
|
+
const getNFTDomainHeaders = async ({ wallet, payload }) => ({
|
|
29
|
+
'x-blocklet-sig': toBase58(await wallet.sign(stableStringify(payload))),
|
|
30
30
|
});
|
|
31
31
|
|
|
32
32
|
const updateNFTDomainRecord = async ({ name, value, blocklet, nodeInfo, bindCap }) => {
|
|
@@ -44,7 +44,7 @@ const updateNFTDomainRecord = async ({ name, value, blocklet, nodeInfo, bindCap
|
|
|
44
44
|
|
|
45
45
|
let proof;
|
|
46
46
|
if (bindCap) {
|
|
47
|
-
proof = wallet.sign(stableStringify(`${bindCap.cap.sessionId}|${bindCap.cap.domain}`));
|
|
47
|
+
proof = await wallet.sign(stableStringify(`${bindCap.cap.sessionId}|${bindCap.cap.domain}`));
|
|
48
48
|
|
|
49
49
|
payload.bindCap = bindCap;
|
|
50
50
|
payload.proof = proof;
|
|
@@ -58,7 +58,7 @@ const updateNFTDomainRecord = async ({ name, value, blocklet, nodeInfo, bindCap
|
|
|
58
58
|
method: 'POST',
|
|
59
59
|
url: nftDomainServiceUrl.domain,
|
|
60
60
|
data: payload,
|
|
61
|
-
headers: getNFTDomainHeaders({ wallet, payload }),
|
|
61
|
+
headers: await getNFTDomainHeaders({ wallet, payload }),
|
|
62
62
|
});
|
|
63
63
|
|
|
64
64
|
return data;
|
|
@@ -92,7 +92,7 @@ const revokeAndDeleteNFTDomainRecord = async ({ name, blocklet, nodeInfo }) => {
|
|
|
92
92
|
method: 'DELETE',
|
|
93
93
|
url: nftDomainServiceUrl.domain,
|
|
94
94
|
data: payload,
|
|
95
|
-
headers: getNFTDomainHeaders({ wallet, payload }),
|
|
95
|
+
headers: await getNFTDomainHeaders({ wallet, payload }),
|
|
96
96
|
});
|
|
97
97
|
|
|
98
98
|
return data;
|
package/lib/util/store.js
CHANGED
|
@@ -4,7 +4,7 @@ const isBase64 = require('is-base64');
|
|
|
4
4
|
const semver = require('semver');
|
|
5
5
|
const { BLOCKLET_STORE_API_PREFIX, BLOCKLET_STORE_META_PATH, BLOCKLET_STORE_DID } = require('@abtnode/constant');
|
|
6
6
|
const { validateMeta, fixAndValidateService } = require('@blocklet/meta/lib/validate');
|
|
7
|
-
const verifyMultiSig = require('@blocklet/meta/lib/verify-multi-sig');
|
|
7
|
+
const { verifyMultiSig } = require('@blocklet/meta/lib/verify-multi-sig');
|
|
8
8
|
const isRequirementsSatisfied = require('./requirement');
|
|
9
9
|
|
|
10
10
|
const { name } = require('../../package.json');
|
package/lib/validators/router.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable newline-per-chained-call */
|
|
2
2
|
const Joi = require('joi');
|
|
3
3
|
const { DOMAIN_FOR_DEFAULT_SITE, ROUTING_RULE_TYPES, ROUTER_CACHE_GROUPS } = require('@abtnode/constant');
|
|
4
|
-
const urlPathFriendly = require('@blocklet/meta/lib/url-path-friendly')
|
|
4
|
+
const { urlPathFriendly } = require('@blocklet/meta/lib/url-path-friendly');
|
|
5
5
|
const { getMultipleLangParams } = require('./util');
|
|
6
6
|
|
|
7
7
|
const WILDCARD_DOMAIN_REGEX = /^\*.(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]/;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.54-beta-
|
|
6
|
+
"version": "1.16.54-beta-20251021-070951-25e3083c",
|
|
7
7
|
"description": "",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -12,55 +12,53 @@
|
|
|
12
12
|
"scripts": {
|
|
13
13
|
"lint": "eslint tests lib --ignore-pattern 'tests/assets/*'",
|
|
14
14
|
"lint:fix": "eslint --fix tests lib",
|
|
15
|
-
"test": "
|
|
16
|
-
"
|
|
17
|
-
"test:blue": "CI=true npm run test tests/blocklet/manager/disk-blue-green.spec.js",
|
|
18
|
-
"coverage": "npm run test -- --coverage"
|
|
15
|
+
"test": "bun test",
|
|
16
|
+
"coverage": "bun test --coverage"
|
|
19
17
|
},
|
|
20
18
|
"keywords": [],
|
|
21
19
|
"author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
|
|
22
20
|
"license": "Apache-2.0",
|
|
23
21
|
"dependencies": {
|
|
24
|
-
"@abtnode/analytics": "1.16.54-beta-
|
|
25
|
-
"@abtnode/auth": "1.16.54-beta-
|
|
26
|
-
"@abtnode/certificate-manager": "1.16.54-beta-
|
|
27
|
-
"@abtnode/constant": "1.16.54-beta-
|
|
28
|
-
"@abtnode/cron": "1.16.54-beta-
|
|
29
|
-
"@abtnode/db-cache": "1.16.54-beta-
|
|
30
|
-
"@abtnode/docker-utils": "1.16.54-beta-
|
|
31
|
-
"@abtnode/logger": "1.16.54-beta-
|
|
32
|
-
"@abtnode/models": "1.16.54-beta-
|
|
33
|
-
"@abtnode/queue": "1.16.54-beta-
|
|
34
|
-
"@abtnode/rbac": "1.16.54-beta-
|
|
35
|
-
"@abtnode/router-provider": "1.16.54-beta-
|
|
36
|
-
"@abtnode/static-server": "1.16.54-beta-
|
|
37
|
-
"@abtnode/timemachine": "1.16.54-beta-
|
|
38
|
-
"@abtnode/util": "1.16.54-beta-
|
|
22
|
+
"@abtnode/analytics": "1.16.54-beta-20251021-070951-25e3083c",
|
|
23
|
+
"@abtnode/auth": "1.16.54-beta-20251021-070951-25e3083c",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.54-beta-20251021-070951-25e3083c",
|
|
25
|
+
"@abtnode/constant": "1.16.54-beta-20251021-070951-25e3083c",
|
|
26
|
+
"@abtnode/cron": "1.16.54-beta-20251021-070951-25e3083c",
|
|
27
|
+
"@abtnode/db-cache": "1.16.54-beta-20251021-070951-25e3083c",
|
|
28
|
+
"@abtnode/docker-utils": "1.16.54-beta-20251021-070951-25e3083c",
|
|
29
|
+
"@abtnode/logger": "1.16.54-beta-20251021-070951-25e3083c",
|
|
30
|
+
"@abtnode/models": "1.16.54-beta-20251021-070951-25e3083c",
|
|
31
|
+
"@abtnode/queue": "1.16.54-beta-20251021-070951-25e3083c",
|
|
32
|
+
"@abtnode/rbac": "1.16.54-beta-20251021-070951-25e3083c",
|
|
33
|
+
"@abtnode/router-provider": "1.16.54-beta-20251021-070951-25e3083c",
|
|
34
|
+
"@abtnode/static-server": "1.16.54-beta-20251021-070951-25e3083c",
|
|
35
|
+
"@abtnode/timemachine": "1.16.54-beta-20251021-070951-25e3083c",
|
|
36
|
+
"@abtnode/util": "1.16.54-beta-20251021-070951-25e3083c",
|
|
39
37
|
"@aigne/aigne-hub": "^0.10.1",
|
|
40
|
-
"@arcblock/did": "1.
|
|
41
|
-
"@arcblock/did-connect-js": "1.
|
|
42
|
-
"@arcblock/did-ext": "1.
|
|
38
|
+
"@arcblock/did": "^1.26.2",
|
|
39
|
+
"@arcblock/did-connect-js": "^1.26.2",
|
|
40
|
+
"@arcblock/did-ext": "^1.26.2",
|
|
43
41
|
"@arcblock/did-motif": "^1.1.14",
|
|
44
|
-
"@arcblock/did-util": "1.
|
|
45
|
-
"@arcblock/event-hub": "1.
|
|
46
|
-
"@arcblock/jwt": "1.
|
|
42
|
+
"@arcblock/did-util": "^1.26.2",
|
|
43
|
+
"@arcblock/event-hub": "^1.26.2",
|
|
44
|
+
"@arcblock/jwt": "^1.26.2",
|
|
47
45
|
"@arcblock/pm2-events": "^0.0.5",
|
|
48
|
-
"@arcblock/validator": "1.
|
|
49
|
-
"@arcblock/vc": "1.
|
|
50
|
-
"@blocklet/constant": "1.16.54-beta-
|
|
51
|
-
"@blocklet/did-space-js": "^1.1.
|
|
52
|
-
"@blocklet/env": "1.16.54-beta-
|
|
46
|
+
"@arcblock/validator": "^1.26.2",
|
|
47
|
+
"@arcblock/vc": "^1.26.2",
|
|
48
|
+
"@blocklet/constant": "1.16.54-beta-20251021-070951-25e3083c",
|
|
49
|
+
"@blocklet/did-space-js": "^1.1.34",
|
|
50
|
+
"@blocklet/env": "1.16.54-beta-20251021-070951-25e3083c",
|
|
53
51
|
"@blocklet/error": "^0.2.5",
|
|
54
|
-
"@blocklet/meta": "1.16.54-beta-
|
|
55
|
-
"@blocklet/resolver": "1.16.54-beta-
|
|
56
|
-
"@blocklet/sdk": "1.16.54-beta-
|
|
57
|
-
"@blocklet/server-js": "1.16.54-beta-
|
|
58
|
-
"@blocklet/store": "1.16.54-beta-
|
|
59
|
-
"@blocklet/theme": "^3.1.
|
|
52
|
+
"@blocklet/meta": "1.16.54-beta-20251021-070951-25e3083c",
|
|
53
|
+
"@blocklet/resolver": "1.16.54-beta-20251021-070951-25e3083c",
|
|
54
|
+
"@blocklet/sdk": "1.16.54-beta-20251021-070951-25e3083c",
|
|
55
|
+
"@blocklet/server-js": "1.16.54-beta-20251021-070951-25e3083c",
|
|
56
|
+
"@blocklet/store": "1.16.54-beta-20251021-070951-25e3083c",
|
|
57
|
+
"@blocklet/theme": "^3.1.51",
|
|
60
58
|
"@fidm/x509": "^1.2.1",
|
|
61
|
-
"@ocap/mcrypto": "1.
|
|
62
|
-
"@ocap/util": "1.
|
|
63
|
-
"@ocap/wallet": "1.
|
|
59
|
+
"@ocap/mcrypto": "^1.26.2",
|
|
60
|
+
"@ocap/util": "^1.26.2",
|
|
61
|
+
"@ocap/wallet": "^1.26.2",
|
|
64
62
|
"@slack/webhook": "^5.0.4",
|
|
65
63
|
"archiver": "^7.0.1",
|
|
66
64
|
"axios": "^1.7.9",
|
|
@@ -115,10 +113,11 @@
|
|
|
115
113
|
"xbytes": "^1.8.0"
|
|
116
114
|
},
|
|
117
115
|
"devDependencies": {
|
|
116
|
+
"axios-mock-adapter": "^2.1.0",
|
|
118
117
|
"expand-tilde": "^2.0.2",
|
|
119
118
|
"express": "^4.18.2",
|
|
120
119
|
"jest": "^29.7.0",
|
|
121
120
|
"unzipper": "^0.10.11"
|
|
122
121
|
},
|
|
123
|
-
"gitHead": "
|
|
122
|
+
"gitHead": "db517e9013dbad744e38883f56e4eba1fa1615c1"
|
|
124
123
|
}
|