@abtnode/core 1.17.7-beta-20251225-073259-cb6ecf68 → 1.17.7-beta-20251227-001958-ea2ba3f5

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.
@@ -66,6 +66,7 @@ const {
66
66
  getDisplayName,
67
67
  isExternalBlocklet,
68
68
  } = require('@blocklet/meta/lib/util');
69
+ const { getConfigs } = require('@blocklet/meta/lib/util-config');
69
70
  const { getComponentsInternalInfo } = require('@blocklet/meta/lib/blocklet');
70
71
  const { getRequiredComponentsLayers } = require('@blocklet/meta/lib/get-required-components-layers');
71
72
  const { update: updateMetaFile } = require('@blocklet/meta/lib/file');
@@ -102,6 +103,7 @@ const {
102
103
  APP_CONFIG_DIR,
103
104
  COMPONENT_ENV_FILE_NAME,
104
105
  BLOCKLET_PREFERENCE_PREFIX,
106
+ LOGIN_PROVIDER,
105
107
  } = require('@blocklet/constant');
106
108
 
107
109
  const { WELLKNOWN_SERVICE_PATH_PREFIX, WELLKNOWN_BLOCKLET_ADMIN_PATH } = require('@abtnode/constant');
@@ -2285,10 +2287,22 @@ class DiskBlockletManager extends BaseBlockletManager {
2285
2287
  return newState;
2286
2288
  }
2287
2289
 
2288
- async configOAuth({ did, oauth = {} }, context) {
2289
- const oldOAuth = await states.blockletExtras.getSettings(did, 'oauth', {});
2290
- const mergeConfig = defaultsDeep(JSON.parse(oauth), oldOAuth);
2291
- await states.blockletExtras.setSettings(did, { oauth: mergeConfig });
2290
+ async configAuthentication({ did, authentication = {} }, context) {
2291
+ const oldConfig = await states.blockletExtras.getSettings(did, 'authentication', {});
2292
+ const parsedData = JSON.parse(authentication);
2293
+ const mergeConfig = defaultsDeep(parsedData, oldConfig);
2294
+ await states.blockletExtras.setSettings(did, { authentication: mergeConfig });
2295
+ const newState = await this.getBlocklet(did);
2296
+ this.emit(BlockletInternalEvents.appSettingChanged, { appDid: did });
2297
+ this.emit(BlockletEvents.updated, { ...newState, context });
2298
+ return newState;
2299
+ }
2300
+
2301
+ async configDidConnect({ did, didConnect = {} }, context) {
2302
+ const oldConfig = await states.blockletExtras.getSettings(did, 'didConnect', {});
2303
+ const parsedData = JSON.parse(didConnect);
2304
+ const mergeConfig = defaultsDeep(parsedData, oldConfig);
2305
+ await states.blockletExtras.setSettings(did, { didConnect: mergeConfig });
2292
2306
  const newState = await this.getBlocklet(did);
2293
2307
  this.emit(BlockletInternalEvents.appSettingChanged, { appDid: did });
2294
2308
  this.emit(BlockletEvents.updated, { ...newState, context });
@@ -4512,6 +4526,9 @@ class DiskBlockletManager extends BaseBlockletManager {
4512
4526
  await this._updateBlockletEnvironment(meta.did);
4513
4527
  blocklet = await this.getBlocklet(did);
4514
4528
 
4529
+ // Add initialize authentication settings
4530
+ await this.migrateBlockletAuthentication({ did });
4531
+
4515
4532
  // pre install
4516
4533
  await this._runUserHook('preInstall', blocklet, context);
4517
4534
 
@@ -5717,6 +5734,62 @@ class DiskBlockletManager extends BaseBlockletManager {
5717
5734
  const cnameDomain = (get(blocklet, 'site.domainAliases') || []).find((item) => isDidDomain(item.value));
5718
5735
  return this.routerManager.checkDomainDNS(domain, cnameDomain?.value);
5719
5736
  }
5737
+
5738
+ /**
5739
+ * used for 1.17.7-settings-authentication migrate, don't use in other places
5740
+ * @param {string} options.did blocklet did
5741
+ */
5742
+ async migrateBlockletAuthentication({ did }) {
5743
+ const blocklet = await this.getBlocklet(did);
5744
+ if (blocklet.settings?.authentication) return;
5745
+
5746
+ const authenticationList = [];
5747
+
5748
+ const configs = getConfigs(blocklet, did);
5749
+ const allowWallet = configs.find((x) => x.key === 'DID_CONNECT_ALLOW_WALLET')?.value;
5750
+ if (['1', 'true', undefined, null].includes(allowWallet)) {
5751
+ // 默认是允许使用 wallet
5752
+ authenticationList.push({
5753
+ enabled: true,
5754
+ showQrcode: true,
5755
+ type: 'builtin',
5756
+ provider: LOGIN_PROVIDER.WALLET,
5757
+ });
5758
+ }
5759
+
5760
+ const isEmailServiceEnabled = Boolean(getEmailServiceProvider(blocklet));
5761
+ if (isEmailServiceEnabled) {
5762
+ authenticationList.push({
5763
+ enabled: isEmailServiceEnabled,
5764
+ type: 'builtin',
5765
+ provider: LOGIN_PROVIDER.EMAIL,
5766
+ });
5767
+ }
5768
+
5769
+ // 对旧的数据进行转换,并保存
5770
+ if (blocklet.settings?.oauth) {
5771
+ const oauthList = Object.keys(blocklet.settings?.oauth)
5772
+ .map((key) => ({
5773
+ ...omit(blocklet.settings?.oauth[key], 'order'),
5774
+ type: 'oauth',
5775
+ }))
5776
+ .filter((x) => x.enabled === true);
5777
+ authenticationList.push(...oauthList);
5778
+ }
5779
+ authenticationList.push({
5780
+ enabled: true,
5781
+ type: 'builtin',
5782
+ provider: LOGIN_PROVIDER.PASSKEY,
5783
+ });
5784
+ const authentication = authenticationList.reduce((acc, curr, index) => {
5785
+ acc[curr.provider] = {
5786
+ ...omit(curr, ['provider']),
5787
+ order: index,
5788
+ };
5789
+ return acc;
5790
+ }, {});
5791
+ await this.configAuthentication({ did, authentication: JSON.stringify(authentication) });
5792
+ }
5720
5793
  }
5721
5794
 
5722
5795
  class FederatedBlockletManager extends DiskBlockletManager {
@@ -39044,7 +39044,7 @@ module.exports = require("zlib");
39044
39044
  /***/ ((module) => {
39045
39045
 
39046
39046
  "use strict";
39047
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.17.6","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib"},"keywords":[],"author":"wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)","license":"Apache-2.0","dependencies":{"@abtnode/analytics":"1.17.6","@abtnode/auth":"1.17.6","@abtnode/certificate-manager":"1.17.6","@abtnode/constant":"1.17.6","@abtnode/cron":"1.17.6","@abtnode/db-cache":"1.17.6","@abtnode/docker-utils":"1.17.6","@abtnode/logger":"1.17.6","@abtnode/models":"1.17.6","@abtnode/queue":"1.17.6","@abtnode/rbac":"1.17.6","@abtnode/router-provider":"1.17.6","@abtnode/static-server":"1.17.6","@abtnode/timemachine":"1.17.6","@abtnode/util":"1.17.6","@aigne/aigne-hub":"^0.10.15","@arcblock/did":"^1.27.15","@arcblock/did-connect-js":"^1.27.15","@arcblock/did-ext":"^1.27.15","@arcblock/did-motif":"^1.1.14","@arcblock/did-util":"^1.27.15","@arcblock/event-hub":"^1.27.15","@arcblock/jwt":"^1.27.15","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"^1.27.15","@arcblock/vc":"^1.27.15","@blocklet/constant":"1.17.6","@blocklet/did-space-js":"^1.2.11","@blocklet/env":"1.17.6","@blocklet/error":"^0.3.5","@blocklet/meta":"1.17.6","@blocklet/resolver":"1.17.6","@blocklet/sdk":"1.17.6","@blocklet/server-js":"1.17.6","@blocklet/store":"1.17.6","@blocklet/theme":"^3.2.19","@fidm/x509":"^1.2.1","@ocap/mcrypto":"^1.27.15","@ocap/util":"^1.27.15","@ocap/wallet":"^1.27.15","@slack/webhook":"^7.0.6","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","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
39047
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.17.6","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib"},"keywords":[],"author":"wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)","license":"Apache-2.0","dependencies":{"@abtnode/analytics":"1.17.6","@abtnode/auth":"1.17.6","@abtnode/certificate-manager":"1.17.6","@abtnode/constant":"1.17.6","@abtnode/cron":"1.17.6","@abtnode/db-cache":"1.17.6","@abtnode/docker-utils":"1.17.6","@abtnode/logger":"1.17.6","@abtnode/models":"1.17.6","@abtnode/queue":"1.17.6","@abtnode/rbac":"1.17.6","@abtnode/router-provider":"1.17.6","@abtnode/static-server":"1.17.6","@abtnode/timemachine":"1.17.6","@abtnode/util":"1.17.6","@aigne/aigne-hub":"^0.10.15","@arcblock/did":"^1.27.16","@arcblock/did-connect-js":"^1.27.16","@arcblock/did-ext":"^1.27.16","@arcblock/did-motif":"^1.1.14","@arcblock/did-util":"^1.27.16","@arcblock/event-hub":"^1.27.16","@arcblock/jwt":"^1.27.16","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"^1.27.16","@arcblock/vc":"^1.27.16","@blocklet/constant":"1.17.6","@blocklet/did-space-js":"^1.2.12","@blocklet/env":"1.17.6","@blocklet/error":"^0.3.5","@blocklet/meta":"1.17.6","@blocklet/resolver":"1.17.6","@blocklet/sdk":"1.17.6","@blocklet/server-js":"1.17.6","@blocklet/store":"1.17.6","@blocklet/theme":"^3.3.0","@fidm/x509":"^1.2.1","@ocap/mcrypto":"^1.27.16","@ocap/util":"^1.27.16","@ocap/wallet":"^1.27.16","@slack/webhook":"^7.0.6","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","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
39048
39048
 
39049
39049
  /***/ }),
39050
39050
 
package/lib/index.js CHANGED
@@ -401,7 +401,9 @@ function ABTNode(options) {
401
401
  deleteBlockletProcess: blockletManager.deleteProcess.bind(blockletManager),
402
402
  configNavigations: blockletManager.configNavigations.bind(blockletManager),
403
403
  configTheme: blockletManager.configTheme.bind(blockletManager),
404
- configOAuth: blockletManager.configOAuth.bind(blockletManager),
404
+ configAuthentication: blockletManager.configAuthentication.bind(blockletManager),
405
+ migrateBlockletAuthentication: blockletManager.migrateBlockletAuthentication.bind(blockletManager),
406
+ configDidConnect: blockletManager.configDidConnect.bind(blockletManager),
405
407
  joinFederatedLogin: blockletManager.joinFederatedLogin.bind(blockletManager),
406
408
  quitFederatedLogin: blockletManager.quitFederatedLogin.bind(blockletManager),
407
409
  disbandFederatedLogin: blockletManager.disbandFederatedLogin.bind(blockletManager),
@@ -0,0 +1,19 @@
1
+ const pAll = require('p-all');
2
+
3
+ module.exports = async ({ node, states, printInfo }) => {
4
+ printInfo('Try to update blocklet settings...');
5
+ const apps = await states.blocklet.find();
6
+ await pAll(
7
+ apps.map((app) => async () => {
8
+ const blockletDid = app.meta.did;
9
+ try {
10
+ await node.migrateBlockletAuthentication({ did: blockletDid });
11
+ } catch (err) {
12
+ console.error(`Failed to update blocklet settings: ${blockletDid}`);
13
+ throw err;
14
+ }
15
+ printInfo(`Blocklet settings updated: ${app.meta?.title}`);
16
+ }),
17
+ { concurrency: 10 }
18
+ );
19
+ };
@@ -351,8 +351,10 @@ const getLogContent = async (action, args, context, result, info, node) => {
351
351
  return `updated following navigations:\n${args.navigations.map((x) => `- ${x.title}: ${x.link}\n`)}`;
352
352
  case 'configTheme':
353
353
  return `updated theme for application ${args.did}`;
354
- case 'configOAuth':
355
- return `updated following OAuth for blocklet ${getBlockletInfo(result, info)}:\n${args.oauth}`;
354
+ case 'configAuthentication':
355
+ return `updated authentication for blocklet ${getBlockletInfo(result, info)}:\n${args.authentication}`;
356
+ case 'configDidConnect':
357
+ return `updated DID Connect for blocklet ${getBlockletInfo(result, info)}:\n${args.didConnect}`;
356
358
  case 'joinFederatedLogin':
357
359
  return `blocklet ${getBlockletInfo(result, info)} join federated login to ${args.appUrl}`;
358
360
  case 'quitFederatedLogin':
@@ -802,7 +804,8 @@ const getLogCategory = (action) => {
802
804
  case 'upgradeComponents':
803
805
  case 'configNavigations':
804
806
  case 'configTheme':
805
- case 'configOAuth':
807
+ case 'configAuthentication':
808
+ case 'configDidConnect':
806
809
  case 'configNotification':
807
810
  case 'updateComponentTitle':
808
811
  case 'updateComponentMountPoint':
@@ -2434,6 +2434,21 @@ const validateStore = (nodeInfo, storeUrl) => {
2434
2434
  }
2435
2435
 
2436
2436
  const storeUrlObj = new URL(storeUrl);
2437
+
2438
+ // Check trusted blocklet sources from environment variable first
2439
+ const trustedSources = process.env.ABT_NODE_TRUSTED_SOURCES;
2440
+ if (trustedSources) {
2441
+ const trustedHosts = trustedSources
2442
+ .split(',')
2443
+ .map((url) => url.trim())
2444
+ .filter(Boolean)
2445
+ .map((url) => new URL(url).host);
2446
+
2447
+ if (trustedHosts.includes(storeUrlObj.host)) {
2448
+ return;
2449
+ }
2450
+ }
2451
+
2437
2452
  const registerUrlObj = new URL(nodeInfo.registerUrl);
2438
2453
 
2439
2454
  // 信任 Launcher 打包的应用
@@ -2804,7 +2819,7 @@ const publishDidDocument = async ({ blocklet, ownerInfo, nodeInfo }) => {
2804
2819
  const name = blocklet.meta?.title || blocklet.meta?.name;
2805
2820
  const state = fromBlockletStatus(blocklet.status);
2806
2821
 
2807
- let launcher = null;
2822
+ let launcher;
2808
2823
  if (!isEmpty(blocklet.controller)) {
2809
2824
  launcher = {
2810
2825
  did: toDid(blocklet.controller.did || nodeInfo.registerInfo.appPid), // 目前 controller 没有 launcher 的元信息, 默认在 nodeInfo 中存储
@@ -2847,11 +2862,14 @@ const publishDidDocument = async ({ blocklet, ownerInfo, nodeInfo }) => {
2847
2862
  })
2848
2863
  );
2849
2864
 
2850
- const owner = {
2851
- did: toDid(ownerInfo.did),
2852
- name: ownerInfo.fullName,
2853
- avatar: fixAvatar(ownerInfo.avatar),
2854
- };
2865
+ let owner;
2866
+ if (ownerInfo) {
2867
+ owner = {
2868
+ did: toDid(ownerInfo.did),
2869
+ name: ownerInfo.fullName,
2870
+ avatar: fixAvatar(ownerInfo.avatar),
2871
+ };
2872
+ }
2855
2873
 
2856
2874
  return didDocument.updateBlockletDocument({
2857
2875
  blocklet,
@@ -2878,21 +2896,17 @@ const updateDidDocument = async ({ did, nodeInfo, teamManager, states }) => {
2878
2896
 
2879
2897
  blocklet.site = await states.site.findOneByBlocklet(did);
2880
2898
  blocklet.settings = await states.blockletExtras.getSettings(did);
2881
- blocklet.controller = blockletExtra.controller;
2899
+ blocklet.controller = blockletExtra?.controller;
2882
2900
 
2883
2901
  logger.debug('update did document', { blocklet });
2884
2902
 
2885
- const ownerDid = blocklet.settings.owner.did;
2886
- logger.info('get owner info', { ownerDid, teamDid: blocklet.appPid });
2887
- const userState = await teamManager.getUserState(blocklet.appPid);
2888
- const ownerInfo = await userState.getUser(ownerDid);
2889
-
2890
- logger.info('got user info', {
2891
- owner: ownerInfo,
2892
- blockletDid: blocklet.meta.did,
2893
- ownerDid,
2894
- teamDid: blocklet.appPid,
2895
- });
2903
+ const ownerDid = blocklet.settings?.owner?.did;
2904
+ let ownerInfo;
2905
+ if (ownerDid) {
2906
+ logger.info('get owner info', { ownerDid, teamDid: blocklet.appPid });
2907
+ const userState = await teamManager.getUserState(blocklet.appPid);
2908
+ ownerInfo = await userState.getUser(ownerDid);
2909
+ }
2896
2910
 
2897
2911
  return publishDidDocument({ blocklet, ownerInfo, nodeInfo });
2898
2912
  };
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.17.7-beta-20251225-073259-cb6ecf68",
6
+ "version": "1.17.7-beta-20251227-001958-ea2ba3f5",
7
7
  "description": "",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -17,46 +17,46 @@
17
17
  "author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
18
18
  "license": "Apache-2.0",
19
19
  "dependencies": {
20
- "@abtnode/analytics": "1.17.7-beta-20251225-073259-cb6ecf68",
21
- "@abtnode/auth": "1.17.7-beta-20251225-073259-cb6ecf68",
22
- "@abtnode/certificate-manager": "1.17.7-beta-20251225-073259-cb6ecf68",
23
- "@abtnode/constant": "1.17.7-beta-20251225-073259-cb6ecf68",
24
- "@abtnode/cron": "1.17.7-beta-20251225-073259-cb6ecf68",
25
- "@abtnode/db-cache": "1.17.7-beta-20251225-073259-cb6ecf68",
26
- "@abtnode/docker-utils": "1.17.7-beta-20251225-073259-cb6ecf68",
27
- "@abtnode/logger": "1.17.7-beta-20251225-073259-cb6ecf68",
28
- "@abtnode/models": "1.17.7-beta-20251225-073259-cb6ecf68",
29
- "@abtnode/queue": "1.17.7-beta-20251225-073259-cb6ecf68",
30
- "@abtnode/rbac": "1.17.7-beta-20251225-073259-cb6ecf68",
31
- "@abtnode/router-provider": "1.17.7-beta-20251225-073259-cb6ecf68",
32
- "@abtnode/static-server": "1.17.7-beta-20251225-073259-cb6ecf68",
33
- "@abtnode/timemachine": "1.17.7-beta-20251225-073259-cb6ecf68",
34
- "@abtnode/util": "1.17.7-beta-20251225-073259-cb6ecf68",
20
+ "@abtnode/analytics": "1.17.7-beta-20251227-001958-ea2ba3f5",
21
+ "@abtnode/auth": "1.17.7-beta-20251227-001958-ea2ba3f5",
22
+ "@abtnode/certificate-manager": "1.17.7-beta-20251227-001958-ea2ba3f5",
23
+ "@abtnode/constant": "1.17.7-beta-20251227-001958-ea2ba3f5",
24
+ "@abtnode/cron": "1.17.7-beta-20251227-001958-ea2ba3f5",
25
+ "@abtnode/db-cache": "1.17.7-beta-20251227-001958-ea2ba3f5",
26
+ "@abtnode/docker-utils": "1.17.7-beta-20251227-001958-ea2ba3f5",
27
+ "@abtnode/logger": "1.17.7-beta-20251227-001958-ea2ba3f5",
28
+ "@abtnode/models": "1.17.7-beta-20251227-001958-ea2ba3f5",
29
+ "@abtnode/queue": "1.17.7-beta-20251227-001958-ea2ba3f5",
30
+ "@abtnode/rbac": "1.17.7-beta-20251227-001958-ea2ba3f5",
31
+ "@abtnode/router-provider": "1.17.7-beta-20251227-001958-ea2ba3f5",
32
+ "@abtnode/static-server": "1.17.7-beta-20251227-001958-ea2ba3f5",
33
+ "@abtnode/timemachine": "1.17.7-beta-20251227-001958-ea2ba3f5",
34
+ "@abtnode/util": "1.17.7-beta-20251227-001958-ea2ba3f5",
35
35
  "@aigne/aigne-hub": "^0.10.15",
36
- "@arcblock/did": "^1.27.15",
37
- "@arcblock/did-connect-js": "^1.27.15",
38
- "@arcblock/did-ext": "^1.27.15",
36
+ "@arcblock/did": "^1.27.16",
37
+ "@arcblock/did-connect-js": "^1.27.16",
38
+ "@arcblock/did-ext": "^1.27.16",
39
39
  "@arcblock/did-motif": "^1.1.14",
40
- "@arcblock/did-util": "^1.27.15",
41
- "@arcblock/event-hub": "^1.27.15",
42
- "@arcblock/jwt": "^1.27.15",
40
+ "@arcblock/did-util": "^1.27.16",
41
+ "@arcblock/event-hub": "^1.27.16",
42
+ "@arcblock/jwt": "^1.27.16",
43
43
  "@arcblock/pm2-events": "^0.0.5",
44
- "@arcblock/validator": "^1.27.15",
45
- "@arcblock/vc": "^1.27.15",
46
- "@blocklet/constant": "1.17.7-beta-20251225-073259-cb6ecf68",
47
- "@blocklet/did-space-js": "^1.2.11",
48
- "@blocklet/env": "1.17.7-beta-20251225-073259-cb6ecf68",
44
+ "@arcblock/validator": "^1.27.16",
45
+ "@arcblock/vc": "^1.27.16",
46
+ "@blocklet/constant": "1.17.7-beta-20251227-001958-ea2ba3f5",
47
+ "@blocklet/did-space-js": "^1.2.12",
48
+ "@blocklet/env": "1.17.7-beta-20251227-001958-ea2ba3f5",
49
49
  "@blocklet/error": "^0.3.5",
50
- "@blocklet/meta": "1.17.7-beta-20251225-073259-cb6ecf68",
51
- "@blocklet/resolver": "1.17.7-beta-20251225-073259-cb6ecf68",
52
- "@blocklet/sdk": "1.17.7-beta-20251225-073259-cb6ecf68",
53
- "@blocklet/server-js": "1.17.7-beta-20251225-073259-cb6ecf68",
54
- "@blocklet/store": "1.17.7-beta-20251225-073259-cb6ecf68",
55
- "@blocklet/theme": "^3.2.19",
50
+ "@blocklet/meta": "1.17.7-beta-20251227-001958-ea2ba3f5",
51
+ "@blocklet/resolver": "1.17.7-beta-20251227-001958-ea2ba3f5",
52
+ "@blocklet/sdk": "1.17.7-beta-20251227-001958-ea2ba3f5",
53
+ "@blocklet/server-js": "1.17.7-beta-20251227-001958-ea2ba3f5",
54
+ "@blocklet/store": "1.17.7-beta-20251227-001958-ea2ba3f5",
55
+ "@blocklet/theme": "^3.3.0",
56
56
  "@fidm/x509": "^1.2.1",
57
- "@ocap/mcrypto": "^1.27.15",
58
- "@ocap/util": "^1.27.15",
59
- "@ocap/wallet": "^1.27.15",
57
+ "@ocap/mcrypto": "^1.27.16",
58
+ "@ocap/util": "^1.27.16",
59
+ "@ocap/wallet": "^1.27.16",
60
60
  "@slack/webhook": "^7.0.6",
61
61
  "archiver": "^7.0.1",
62
62
  "axios": "^1.7.9",
@@ -116,5 +116,5 @@
116
116
  "express": "^4.18.2",
117
117
  "unzipper": "^0.10.11"
118
118
  },
119
- "gitHead": "16715912460ed534e1e023d7e968714e3990051d"
119
+ "gitHead": "ec0a542fc2c66f2530d25884b43bddfa28d921a0"
120
120
  }