@abtnode/core 1.8.26 → 1.8.28

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 CHANGED
@@ -12,7 +12,7 @@ const {
12
12
  WELLKNOWN_SERVICE_PATH_PREFIX,
13
13
  } = require('@abtnode/constant');
14
14
  const { isValid: isValidDid } = require('@arcblock/did');
15
- const { BlockletEvents } = require('@blocklet/meta/lib/constants');
15
+ const { BlockletEvents } = require('@blocklet/constant');
16
16
  const { sendToUser } = require('@blocklet/sdk/lib/util/send-notification');
17
17
  const {
18
18
  createPassportVC,
@@ -1,7 +1,7 @@
1
1
  const uniqBy = require('lodash/uniqBy');
2
2
  const cloneDeep = require('lodash/cloneDeep');
3
3
  const security = require('@abtnode/util/lib/security');
4
- const { BLOCKLET_CONFIGURABLE_KEY } = require('@blocklet/meta/lib/constants');
4
+ const { BLOCKLET_CONFIGURABLE_KEY } = require('@blocklet/constant');
5
5
 
6
6
  const mergeConfigs = ({ old: oldConfigs, cur: newConfigs = [], did = '', dek = '' }) => {
7
7
  const metaConfigs = (oldConfigs || []).filter((x) => !x.custom);
@@ -43,7 +43,7 @@ const validateBlockletEntry = require('@blocklet/meta/lib/entry');
43
43
  const toBlockletDid = require('@blocklet/meta/lib/did');
44
44
  const { validateMeta } = require('@blocklet/meta/lib/validate');
45
45
  const { update: updateMetaFile } = require('@blocklet/meta/lib/file');
46
- const { titleSchema, descriptionSchema, mountPointSchema } = require('@blocklet/meta/lib/schema');
46
+ const { titleSchema, descriptionSchema, mountPointSchema, logoSchema } = require('@blocklet/meta/lib/schema');
47
47
  const hasReservedKey = require('@blocklet/meta/lib/has-reserved-key');
48
48
 
49
49
  const {
@@ -65,7 +65,7 @@ const {
65
65
  BLOCKLET_LATEST_SPEC_VERSION,
66
66
  BLOCKLET_META_FILE,
67
67
  BLOCKLET_CONFIGURABLE_KEY,
68
- } = require('@blocklet/meta/lib/constants');
68
+ } = require('@blocklet/constant');
69
69
  const util = require('../../util');
70
70
  const {
71
71
  refresh: refreshAccessibleExternalNodeIp,
@@ -102,6 +102,7 @@ const {
102
102
  findAvailableDid,
103
103
  ensureMeta,
104
104
  getBlocklet,
105
+ ensureEnvDefault,
105
106
  } = require('../../util/blocklet');
106
107
  const { parseSourceUrl } = require('../../util/registry');
107
108
  const states = require('../../states');
@@ -870,6 +871,10 @@ class BlockletManager extends BaseBlockletManager {
870
871
  x.value = await descriptionSchema.validateAsync(x.value);
871
872
  }
872
873
 
874
+ if (x.key === 'BLOCKLET_APP_LOGO') {
875
+ x.value = await logoSchema.validateAsync(x.value);
876
+ }
877
+
873
878
  if (x.key === 'BLOCKLET_WALLET_TYPE') {
874
879
  if (['default', 'eth'].includes(x.value) === false) {
875
880
  throw new Error('Invalid blocklet wallet type, only "default" and "eth" are supported');
@@ -3371,10 +3376,13 @@ class BlockletManager extends BaseBlockletManager {
3371
3376
 
3372
3377
  if (!childDid) {
3373
3378
  await forEachBlocklet(blocklet, async (b, { ancestors }) => {
3374
- await states.blockletExtras.setConfigs(
3375
- [...ancestors.map((x) => x.meta.did), b.meta.did],
3376
- get(b.meta, 'environments', [])
3377
- );
3379
+ const environments = get(b.meta, 'environments', []);
3380
+
3381
+ // remove default if ancestors has a value
3382
+ ensureEnvDefault(environments, ancestors);
3383
+
3384
+ // write configs to db
3385
+ await states.blockletExtras.setConfigs([...ancestors.map((x) => x.meta.did), b.meta.did], environments);
3378
3386
  });
3379
3387
  } else {
3380
3388
  const child = blocklet.children.find((x) => x.meta.did === childDid);
package/lib/event.js CHANGED
@@ -3,7 +3,7 @@ const cloneDeep = require('lodash/cloneDeep');
3
3
  const { EventEmitter } = require('events');
4
4
  const { wipeSensitiveData } = require('@blocklet/meta/lib/util');
5
5
  const logger = require('@abtnode/logger')('@abtnode/core:event');
6
- const { BLOCKLET_MODES, BlockletStatus, BlockletSource, BlockletEvents } = require('@blocklet/meta/lib/constants');
6
+ const { BLOCKLET_MODES, BlockletStatus, BlockletSource, BlockletEvents } = require('@blocklet/constant');
7
7
  const { EVENTS } = require('@abtnode/constant');
8
8
  const handleInstanceInStore = require('./util/public-to-store');
9
9
 
package/lib/index.js CHANGED
@@ -5,12 +5,7 @@ const formatContext = require('@abtnode/util/lib/format-context');
5
5
  const Cron = require('@abtnode/cron');
6
6
 
7
7
  const logger = require('@abtnode/logger')('@abtnode/core');
8
- const {
9
- fromBlockletStatus,
10
- toBlockletStatus,
11
- fromBlockletSource,
12
- toBlockletSource,
13
- } = require('@blocklet/meta/lib/constants');
8
+ const { fromBlockletStatus, toBlockletStatus, fromBlockletSource, toBlockletSource } = require('@blocklet/constant');
14
9
  const { getServiceMetas } = require('@blocklet/meta/lib/service');
15
10
  const { listProviders } = require('@abtnode/router-provider');
16
11
  const { DEFAULT_CERTIFICATE_EMAIL, EVENTS } = require('@abtnode/constant');
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable no-await-in-loop */
2
2
  /* eslint-disable no-underscore-dangle */
3
- const { BLOCKLET_DEFAULT_PORT_NAME } = require('@blocklet/meta/lib/constants');
3
+ const { BLOCKLET_DEFAULT_PORT_NAME } = require('@blocklet/constant');
4
4
 
5
5
  module.exports = async ({ states, printInfo }) => {
6
6
  printInfo('Try to update node config to 1.0.33...');
@@ -37,7 +37,7 @@ const {
37
37
  BLOCKLET_INTERFACE_TYPE_WEB,
38
38
  BLOCKLET_INTERFACE_WELLKNOWN,
39
39
  BLOCKLET_INTERFACE_TYPE_WELLKNOWN,
40
- } = require('@blocklet/meta/lib/constants');
40
+ } = require('@blocklet/constant');
41
41
 
42
42
  // eslint-disable-next-line global-require
43
43
  const logger = require('@abtnode/logger')(`${require('../../package.json').name}:router:helper`);
@@ -10,7 +10,7 @@ const {
10
10
  BLOCKLET_SITE_GROUP_SUFFIX,
11
11
  GATEWAY_REQ_LIMIT,
12
12
  } = require('@abtnode/constant');
13
- const { BLOCKLET_UI_INTERFACES } = require('@blocklet/meta/lib/constants');
13
+ const { BLOCKLET_UI_INTERFACES } = require('@blocklet/constant');
14
14
  const logger = require('@abtnode/logger')('@abtnode/core:router');
15
15
 
16
16
  const expandSites = (sites = []) => {
@@ -191,7 +191,7 @@ Router.formatSites = (sites = []) => {
191
191
  if (daemonRule) {
192
192
  // Serve meta js: both prefix and suffix do not contain trailing slash
193
193
  // NOTICE: 这里隐含了一个约定
194
- // 如果安装的 blockletA 和 blockletB 都需要 __meta__.js
194
+ // 如果安装的 blockletA 和 blockletB 都需要 __blocklet__.js
195
195
  // 则不可以将 blockletA mount 在 /a, 将 blockletB mount 在 /a/b (实际上也不会有这种需求)
196
196
  site.rules.push({
197
197
  from: {
@@ -206,6 +206,19 @@ Router.formatSites = (sites = []) => {
206
206
  componentId: rule.to.componentId,
207
207
  },
208
208
  });
209
+ site.rules.push({
210
+ from: {
211
+ pathPrefix: rule.from.pathPrefix.replace(/\/$/, ''),
212
+ groupPathPrefix: (rule.from.groupPathPrefix || '').replace(/\/$/, ''),
213
+ pathSuffix: '/__blocklet__.js',
214
+ },
215
+ to: {
216
+ type: ROUTING_RULE_TYPES.DAEMON,
217
+ port: daemonRule.to.port,
218
+ did: rule.to.did,
219
+ componentId: rule.to.componentId,
220
+ },
221
+ });
209
222
 
210
223
  site.rules.push({
211
224
  from: {
@@ -27,7 +27,7 @@ const {
27
27
  BLOCKLET_DYNAMIC_PATH_PREFIX,
28
28
  BLOCKLET_INTERFACE_TYPE_WEB,
29
29
  BlockletGroup,
30
- } = require('@blocklet/meta/lib/constants');
30
+ } = require('@blocklet/constant');
31
31
  const { forEachChildSync } = require('@blocklet/meta/lib/util');
32
32
 
33
33
  const {
@@ -16,7 +16,7 @@ const {
16
16
  BLOCKLET_MODES,
17
17
  BLOCKLET_DEFAULT_PORT_NAME,
18
18
  BLOCKLET_INTERFACE_TYPE_SERVICE,
19
- } = require('@blocklet/meta/lib/constants');
19
+ } = require('@blocklet/constant');
20
20
 
21
21
  const logger = require('@abtnode/logger')('state-blocklet');
22
22
 
@@ -36,7 +36,7 @@ const {
36
36
  BLOCKLET_CONFIGURABLE_KEY,
37
37
  BLOCKLET_DYNAMIC_PATH_PREFIX,
38
38
  fromBlockletStatus,
39
- } = require('@blocklet/meta/lib/constants');
39
+ } = require('@blocklet/constant');
40
40
  const verifyMultiSig = require('@blocklet/meta/lib/verify-multi-sig');
41
41
  const validateBlockletEntry = require('@blocklet/meta/lib/entry');
42
42
  const getBlockletEngine = require('@blocklet/meta/lib/engine');
@@ -52,6 +52,7 @@ const {
52
52
  isComponentBlocklet,
53
53
  getSharedConfigObj,
54
54
  getComponentName,
55
+ isEnvShareable,
55
56
  } = require('@blocklet/meta/lib/util');
56
57
  const toBlockletDid = require('@blocklet/meta/lib/did');
57
58
  const { titleSchema, descriptionSchema } = require('@blocklet/meta/lib/schema');
@@ -324,6 +325,8 @@ const getComponentSystemEnvironments = (blocklet) => {
324
325
  };
325
326
 
326
327
  const getRuntimeEnvironments = (blocklet, nodeEnvironments, ancestors) => {
328
+ const root = (ancestors || [])[0] || blocklet;
329
+
327
330
  // pm2 will force inject env variables of daemon process to blocklet process
328
331
  // we can only rewrite these private env variables to empty
329
332
  const safeNodeEnvironments = PRIVATE_NODE_ENVS.reduce((o, x) => {
@@ -339,7 +342,11 @@ const getRuntimeEnvironments = (blocklet, nodeEnvironments, ancestors) => {
339
342
  }
340
343
  : {};
341
344
 
342
- const root = (ancestors || [])[0] || blocklet;
345
+ // BLOCKLET_DEV_PORT should NOT in components of production mode
346
+ if (process.env.BLOCKLET_DEV_PORT) {
347
+ devEnvironments.BLOCKLET_DEV_PORT =
348
+ blocklet.mode === BLOCKLET_MODES.DEVELOPMENT ? process.env.BLOCKLET_DEV_PORT : '';
349
+ }
343
350
 
344
351
  const ports = {};
345
352
  forEachBlockletSync(root, (x) => {
@@ -1331,6 +1338,35 @@ const getBlocklet = async ({
1331
1338
  return blocklet;
1332
1339
  };
1333
1340
 
1341
+ /**
1342
+ * this function has side effect on environments
1343
+ */
1344
+ const ensureEnvDefault = (environments, ancestors) => {
1345
+ // remove default if ancestors has a value
1346
+ const envMap = environments.reduce((o, env) => {
1347
+ o[env.name] = env;
1348
+ return o;
1349
+ }, {});
1350
+
1351
+ for (let i = ancestors.length - 1; i >= 0; i--) {
1352
+ const ancestor = ancestors[i];
1353
+ const aEnvironments = get(ancestor.meta, 'environments', []);
1354
+ const aEnv = aEnvironments.find((x) => envMap[x.name]);
1355
+
1356
+ if (!isEnvShareable(aEnv)) {
1357
+ break;
1358
+ }
1359
+
1360
+ const env = envMap[aEnv.name];
1361
+ if (isEnvShareable(env) && aEnv.default) {
1362
+ env.default = '';
1363
+ break;
1364
+ }
1365
+ }
1366
+
1367
+ return environments;
1368
+ };
1369
+
1334
1370
  module.exports = {
1335
1371
  forEachBlocklet,
1336
1372
  getBlockletMetaFromUrl: (url) => getBlockletMetaFromUrl(url, { logger }),
@@ -1370,4 +1406,5 @@ module.exports = {
1370
1406
  findAvailableDid,
1371
1407
  ensureMeta,
1372
1408
  getBlocklet,
1409
+ ensureEnvDefault,
1373
1410
  };
package/lib/util/chain.js CHANGED
@@ -1,4 +1,4 @@
1
- const axios = require('axios');
1
+ const axios = require('@abtnode/util/lib/axios');
2
2
  const get = require('lodash/get');
3
3
 
4
4
  const getFactoryState = async (endpoint, address) => {
package/lib/util/index.js CHANGED
@@ -17,7 +17,7 @@ const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
17
17
  const axios = require('@abtnode/util/lib/axios');
18
18
  const parseBlockletMeta = require('@blocklet/meta/lib/parse');
19
19
  const { validateMeta, fixAndValidateService } = require('@blocklet/meta/lib/validate');
20
- const { BlockletStatus, BLOCKLET_INTERFACE_WELLKNOWN } = require('@blocklet/meta/lib/constants');
20
+ const { BlockletStatus, BLOCKLET_INTERFACE_WELLKNOWN } = require('@blocklet/constant');
21
21
  const { replaceSlotToIp } = require('@blocklet/meta/lib/util');
22
22
  const {
23
23
  StatusCode,
@@ -1,5 +1,5 @@
1
1
  const { sign } = require('@arcblock/jwt');
2
- const { BlockletSource } = require('@blocklet/meta/lib/constants');
2
+ const { BlockletSource } = require('@blocklet/constant');
3
3
  const { WHO_CAN_ACCESS } = require('@abtnode/constant');
4
4
  const logger = require('@abtnode/logger')('@abtnode/util:public-to-store');
5
5
 
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.8.26",
6
+ "version": "1.8.28",
7
7
  "description": "",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -19,55 +19,56 @@
19
19
  "author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
20
20
  "license": "MIT",
21
21
  "dependencies": {
22
- "@abtnode/auth": "1.8.26",
23
- "@abtnode/certificate-manager": "1.8.26",
24
- "@abtnode/constant": "1.8.26",
25
- "@abtnode/cron": "1.8.26",
26
- "@abtnode/db": "1.8.26",
27
- "@abtnode/logger": "1.8.26",
28
- "@abtnode/queue": "1.8.26",
29
- "@abtnode/rbac": "1.8.26",
30
- "@abtnode/router-provider": "1.8.26",
31
- "@abtnode/static-server": "1.8.26",
32
- "@abtnode/timemachine": "1.8.26",
33
- "@abtnode/util": "1.8.26",
34
- "@arcblock/did": "1.17.19",
22
+ "@abtnode/auth": "1.8.28",
23
+ "@abtnode/certificate-manager": "1.8.28",
24
+ "@abtnode/constant": "1.8.28",
25
+ "@abtnode/cron": "1.8.28",
26
+ "@abtnode/db": "1.8.28",
27
+ "@abtnode/logger": "1.8.28",
28
+ "@abtnode/queue": "1.8.28",
29
+ "@abtnode/rbac": "1.8.28",
30
+ "@abtnode/router-provider": "1.8.28",
31
+ "@abtnode/static-server": "1.8.28",
32
+ "@abtnode/timemachine": "1.8.28",
33
+ "@abtnode/util": "1.8.28",
34
+ "@arcblock/did": "1.17.23",
35
35
  "@arcblock/did-motif": "^1.1.10",
36
- "@arcblock/did-util": "1.17.19",
37
- "@arcblock/event-hub": "1.17.19",
38
- "@arcblock/jwt": "^1.17.19",
36
+ "@arcblock/did-util": "1.17.23",
37
+ "@arcblock/event-hub": "1.17.23",
38
+ "@arcblock/jwt": "^1.17.23",
39
39
  "@arcblock/pm2-events": "^0.0.5",
40
- "@arcblock/vc": "1.17.19",
41
- "@blocklet/meta": "1.8.26",
42
- "@blocklet/sdk": "1.8.26",
40
+ "@arcblock/vc": "1.17.23",
41
+ "@blocklet/constant": "1.8.28",
42
+ "@blocklet/meta": "1.8.28",
43
+ "@blocklet/sdk": "1.8.28",
43
44
  "@fidm/x509": "^1.2.1",
44
- "@ocap/mcrypto": "1.17.19",
45
- "@ocap/util": "1.17.19",
46
- "@ocap/wallet": "1.17.19",
45
+ "@ocap/mcrypto": "1.17.23",
46
+ "@ocap/util": "1.17.23",
47
+ "@ocap/wallet": "1.17.23",
47
48
  "@slack/webhook": "^5.0.4",
48
49
  "axios": "^0.27.2",
49
50
  "axon": "^2.0.3",
50
51
  "chalk": "^4.1.2",
51
52
  "deep-diff": "^1.0.2",
52
- "detect-port": "^1.3.0",
53
+ "detect-port": "^1.5.1",
53
54
  "flat": "^5.0.2",
54
55
  "fs-extra": "^10.1.0",
55
56
  "get-port": "^5.1.1",
56
57
  "is-base64": "^1.1.0",
57
58
  "is-ip": "^3.1.0",
58
59
  "is-url": "^1.2.4",
59
- "joi": "^17.6.0",
60
+ "joi": "^17.6.2",
60
61
  "js-yaml": "^4.1.0",
61
62
  "lodash": "^4.17.21",
62
63
  "lru-cache": "^6.0.0",
63
64
  "pm2": "^5.2.0",
64
- "semver": "^7.3.7",
65
+ "semver": "^7.3.8",
65
66
  "shelljs": "^0.8.5",
66
67
  "slugify": "^1.6.5",
67
68
  "ssri": "^8.0.1",
68
69
  "stream-throttle": "^0.1.3",
69
70
  "stream-to-promise": "^3.0.0",
70
- "systeminformation": "^5.12.4",
71
+ "systeminformation": "^5.12.6",
71
72
  "tar": "^6.1.11",
72
73
  "ua-parser-js": "^1.0.2",
73
74
  "unzipper": "^0.10.11",
@@ -77,8 +78,8 @@
77
78
  "devDependencies": {
78
79
  "compression": "^1.7.4",
79
80
  "expand-tilde": "^2.0.2",
80
- "express": "^4.18.1",
81
+ "express": "^4.18.2",
81
82
  "jest": "^27.5.1"
82
83
  },
83
- "gitHead": "71937dabc196a98a1bb514789bc32aee44a1e8c4"
84
+ "gitHead": "af7aacf5507177600ae563ab597cb42d7223b113"
84
85
  }