@abtnode/core 1.16.44-beta-20250601-083116-288e5ea5 → 1.16.44-beta-20250603-231026-30a9d27f

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.
@@ -445,7 +445,7 @@ class DiskBlockletManager extends BaseBlockletManager {
445
445
  title,
446
446
  description,
447
447
  action: `/blocklets/${did}/overview`,
448
- blockletDashboardAction: '/.well-known/service/admin/blocklets',
448
+ blockletDashboardAction: `${WELLKNOWN_SERVICE_PATH_PREFIX}/admin/blocklets`,
449
449
  entityType: 'blocklet',
450
450
  entityId: did,
451
451
  severity,
@@ -1484,7 +1484,7 @@ class DiskBlockletManager extends BaseBlockletManager {
1484
1484
  entityId: newBlocklet.meta.did,
1485
1485
  severity: 'success',
1486
1486
  action: `/blocklets/${newBlocklet.meta.did}/components`,
1487
- blockletDashboardAction: '/.well-known/service/admin/components',
1487
+ blockletDashboardAction: `${WELLKNOWN_SERVICE_PATH_PREFIX}/admin/components`,
1488
1488
  });
1489
1489
 
1490
1490
  this.emit(BlockletEvents.componentRemoved, {
@@ -3527,7 +3527,7 @@ class DiskBlockletManager extends BaseBlockletManager {
3527
3527
  };
3528
3528
 
3529
3529
  const action = `/blocklets/${did}/components?checkUpdate=1`;
3530
- const blockletDashboardAction = '/.well-known/service/admin/components?checkUpdate=1';
3530
+ const blockletDashboardAction = `${WELLKNOWN_SERVICE_PATH_PREFIX}/admin/components?checkUpdate=1`;
3531
3531
  const users = await this.teamManager.getOwnerAndAdminUsers(did, 1);
3532
3532
  const nodeInfo = await states.node.read();
3533
3533
  const { wallet } = getBlockletInfo(blocklet, nodeInfo.sk);
@@ -4081,7 +4081,7 @@ class DiskBlockletManager extends BaseBlockletManager {
4081
4081
  deployedFrom || fromBlockletSource(source)
4082
4082
  })`,
4083
4083
  action: `/blocklets/${did}/overview`,
4084
- blockletDashboardAction: '/.well-known/service/admin/blocklets',
4084
+ blockletDashboardAction: `${WELLKNOWN_SERVICE_PATH_PREFIX}/admin/blocklets`,
4085
4085
  entityType: 'blocklet',
4086
4086
  entityId: did,
4087
4087
  severity: 'success',
@@ -4322,7 +4322,7 @@ class DiskBlockletManager extends BaseBlockletManager {
4322
4322
  componentDids
4323
4323
  )} is ${actionName} successfully for ${title}`,
4324
4324
  action: `/blocklets/${did}/overview`,
4325
- blockletDashboardAction: '/.well-known/service/admin/blocklets',
4325
+ blockletDashboardAction: `${WELLKNOWN_SERVICE_PATH_PREFIX}/admin/blocklets`,
4326
4326
  entityType: 'blocklet',
4327
4327
  entityId: did,
4328
4328
  severity: 'success',
@@ -287,6 +287,8 @@ const EVENTS = {
287
287
  RELOAD_GATEWAY: 'gateway.reload',
288
288
  NOTIFICATION_CREATE_QUEUED: 'notification.create.queued',
289
289
  UPDATE_DOMAIN_ALIAS: 'router.domain.alias.updated',
290
+
291
+ WEBHOOK_ATTEMPT: 'webhook.attempt',
290
292
  };
291
293
 
292
294
  const WHO_CAN_ACCESS = Object.freeze({
@@ -752,6 +754,7 @@ module.exports = Object.freeze({
752
754
  // FIXME: 梁柱, 下面两个 get 接口, 可以不开放但是前端需要根据情况取消获取这两个接口的调用
753
755
  getBlockletRuntimeHistory: true,
754
756
  checkDomains: true,
757
+ isDidDomain: true,
755
758
  },
756
759
  // 这些接口可以跳过 ACCESS VERIFY
757
760
  SKIP_ACCESS_VERIFY_METHODS: {
@@ -38885,7 +38888,7 @@ module.exports = require("zlib");
38885
38888
  /***/ ((module) => {
38886
38889
 
38887
38890
  "use strict";
38888
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.43","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib","test":"node tools/jest.js","coverage":"npm run test -- --coverage"},"keywords":[],"author":"wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)","license":"Apache-2.0","dependencies":{"@abtnode/analytics":"1.16.43","@abtnode/auth":"1.16.43","@abtnode/certificate-manager":"1.16.43","@abtnode/client":"1.16.43","@abtnode/constant":"1.16.43","@abtnode/cron":"1.16.43","@abtnode/docker-utils":"1.16.43","@abtnode/logger":"1.16.43","@abtnode/models":"1.16.43","@abtnode/queue":"1.16.43","@abtnode/rbac":"1.16.43","@abtnode/router-provider":"1.16.43","@abtnode/static-server":"1.16.43","@abtnode/timemachine":"1.16.43","@abtnode/util":"1.16.43","@arcblock/did":"1.20.11","@arcblock/did-auth":"1.20.11","@arcblock/did-ext":"1.20.11","@arcblock/did-motif":"^1.1.13","@arcblock/did-util":"1.20.11","@arcblock/event-hub":"1.20.11","@arcblock/jwt":"1.20.11","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"1.20.11","@arcblock/vc":"1.20.11","@blocklet/constant":"1.16.43","@blocklet/did-space-js":"^1.0.56","@blocklet/env":"1.16.43","@blocklet/error":"^0.2.5","@blocklet/meta":"1.16.43","@blocklet/resolver":"1.16.43","@blocklet/sdk":"1.16.43","@blocklet/store":"1.16.43","@blocklet/theme":"^2.13.57","@fidm/x509":"^1.2.1","@ocap/mcrypto":"1.20.11","@ocap/util":"1.20.11","@ocap/wallet":"1.20.11","@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","lru-cache":"^11.0.2","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","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":"^9.0.1","valid-url":"^1.0.9","which":"^2.0.2","xbytes":"^1.8.0"},"devDependencies":{"expand-tilde":"^2.0.2","express":"^4.18.2","jest":"^29.7.0","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
38891
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.43","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib","test":"node tools/jest.js","coverage":"npm run test -- --coverage"},"keywords":[],"author":"wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)","license":"Apache-2.0","dependencies":{"@abtnode/analytics":"1.16.43","@abtnode/auth":"1.16.43","@abtnode/certificate-manager":"1.16.43","@abtnode/client":"1.16.43","@abtnode/constant":"1.16.43","@abtnode/cron":"1.16.43","@abtnode/docker-utils":"1.16.43","@abtnode/logger":"1.16.43","@abtnode/models":"1.16.43","@abtnode/queue":"1.16.43","@abtnode/rbac":"1.16.43","@abtnode/router-provider":"1.16.43","@abtnode/static-server":"1.16.43","@abtnode/timemachine":"1.16.43","@abtnode/util":"1.16.43","@arcblock/did":"1.20.12","@arcblock/did-auth":"1.20.12","@arcblock/did-ext":"1.20.12","@arcblock/did-motif":"^1.1.13","@arcblock/did-util":"1.20.12","@arcblock/event-hub":"1.20.12","@arcblock/jwt":"1.20.12","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"1.20.12","@arcblock/vc":"1.20.12","@blocklet/constant":"1.16.43","@blocklet/did-space-js":"^1.0.57","@blocklet/env":"1.16.43","@blocklet/error":"^0.2.5","@blocklet/meta":"1.16.43","@blocklet/resolver":"1.16.43","@blocklet/sdk":"1.16.43","@blocklet/store":"1.16.43","@blocklet/theme":"^2.13.61","@fidm/x509":"^1.2.1","@ocap/mcrypto":"1.20.12","@ocap/util":"1.20.12","@ocap/wallet":"1.20.12","@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","lru-cache":"^11.0.2","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","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":"^9.0.1","valid-url":"^1.0.9","which":"^2.0.2","xbytes":"^1.8.0"},"devDependencies":{"expand-tilde":"^2.0.2","express":"^4.18.2","jest":"^29.7.0","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
38889
38892
 
38890
38893
  /***/ }),
38891
38894
 
@@ -2,7 +2,9 @@ const pick = require('lodash/pick');
2
2
  const pickBy = require('lodash/pickBy');
3
3
  const get = require('lodash/get');
4
4
  const { EventEmitter } = require('events');
5
- const { API_VERSION } = require('./util');
5
+ const { EVENTS } = require('@abtnode/constant');
6
+ const { API_VERSION, STATUS } = require('./util');
7
+ const endpointQueueInit = require('./queues');
6
8
 
7
9
  const DEFAULT_PAGE = 1;
8
10
  const DEFAULT_PAGE_SIZE = 10;
@@ -25,6 +27,9 @@ class WebhooksAPI extends EventEmitter {
25
27
 
26
28
  this.cache = new Map();
27
29
  this.TTL = 5 * 60 * 1000;
30
+
31
+ const { webhookEndpointQueue } = endpointQueueInit.init({ states, teamManager });
32
+ this.webhookEndpointQueue = webhookEndpointQueue;
28
33
  }
29
34
 
30
35
  async getUserInfo(userDid, teamDid, serverDid) {
@@ -161,6 +166,46 @@ class WebhooksAPI extends EventEmitter {
161
166
  const list = await webhookAttemptState.list(page, pageSize, where);
162
167
  return list;
163
168
  }
169
+
170
+ async retryWebhookAttempt({ eventId, webhookId, attemptId, teamDid }, context) {
171
+ const { webhookAttemptState } = await this.teamManager.getWebhookState(teamDid);
172
+
173
+ const result = await webhookAttemptState.insert({
174
+ eventId,
175
+ webhookId,
176
+ status: STATUS.PENDING,
177
+ retryCount: 1,
178
+ responseStatus: 200,
179
+ responseBody: {},
180
+ triggeredBy: getUserDid(context),
181
+ triggeredFrom: attemptId,
182
+ });
183
+
184
+ const emitResult = async () => {
185
+ return {
186
+ teamDid,
187
+ ...(await webhookAttemptState.findOne({ eventId, webhookId, id: result.id })),
188
+ };
189
+ };
190
+
191
+ this.webhookEndpointQueue.push({
192
+ eventId,
193
+ webhookId,
194
+ appDid: teamDid,
195
+ attemptId: result.id,
196
+ triggeredBy: getUserDid(context),
197
+ triggeredFrom: attemptId,
198
+ });
199
+
200
+ this.webhookEndpointQueue.on('finished', async () => {
201
+ this.emit(EVENTS.WEBHOOK_ATTEMPT, { ...(await emitResult()) });
202
+ });
203
+ this.webhookEndpointQueue.on('failed', async () => {
204
+ this.emit(EVENTS.WEBHOOK_ATTEMPT, { ...(await emitResult()) });
205
+ });
206
+
207
+ return result;
208
+ }
164
209
  }
165
210
 
166
211
  module.exports = WebhooksAPI;
@@ -3,13 +3,19 @@ const axios = require('@abtnode/util/lib/axios');
3
3
  const { Op } = require('sequelize');
4
4
 
5
5
  const createQueue = require('../../util/queue');
6
- const { getWebhookJobId } = require('./util');
6
+ const { getWebhookJobId, STATUS } = require('./util');
7
7
 
8
8
  const MAX_RETRY_COUNT = 2; // 重试一次
9
9
  const AXIOS_TIMEOUT = 1000 * 60 * 3;
10
10
 
11
11
  const createWebhookEndpointQueue = ({ states, teamManager }) => {
12
12
  // https://stripe.com/docs/webhooks
13
+ /**
14
+ *
15
+ * @param {*} job eventId: event.id, webhookId: webhook.id, appDid: job.appDid, attemptId?:string
16
+ *
17
+ * @returns
18
+ */
13
19
  const handleWebhookEndpoint = async (job) => {
14
20
  logger.info('handle webhook endpoint', job);
15
21
 
@@ -48,14 +54,31 @@ const createWebhookEndpointQueue = ({ states, teamManager }) => {
48
54
  // verify similar to component call, but supports external urls
49
55
  const response = await axios.post(webhook.url, event.request, { timeout: AXIOS_TIMEOUT });
50
56
 
51
- await webhookAttemptState.insert({
52
- eventId: event.id,
53
- webhookId: webhook.id,
54
- status: 'succeeded',
55
- responseStatus: response.status,
56
- responseBody: response.data || {},
57
- retryCount,
58
- });
57
+ if (job.attemptId) {
58
+ await webhookAttemptState.update(
59
+ { id: job.attemptId },
60
+ {
61
+ status: STATUS.SUCCEEDED,
62
+ responseStatus: response.status,
63
+ responseBody: response.data || {},
64
+ retryCount,
65
+ triggeredBy: job.triggeredBy,
66
+ triggeredFrom: job.triggeredFrom,
67
+ }
68
+ );
69
+ } else {
70
+ await webhookAttemptState.insert({
71
+ eventId: event.id,
72
+ webhookId: webhook.id,
73
+ status: STATUS.SUCCEEDED,
74
+ responseStatus: response.status,
75
+ responseBody: response.data || {},
76
+ retryCount,
77
+ triggeredBy: job.triggeredBy,
78
+ triggeredFrom: job.triggeredFrom,
79
+ });
80
+ }
81
+
59
82
  logger.info('WebhookAttempt created successfully', { eventId: event.id, webhookId: webhook.id });
60
83
 
61
84
  const newPendingCount = Math.max(0, event.pendingWebhooks - 1);
@@ -66,14 +89,31 @@ const createWebhookEndpointQueue = ({ states, teamManager }) => {
66
89
  } catch (err) {
67
90
  logger.warn('webhook attempt error', { ...job, retryCount, message: err.message });
68
91
 
69
- await webhookAttemptState.insert({
70
- eventId: event.id,
71
- webhookId: webhook.id,
72
- status: 'failed',
73
- responseStatus: err.response?.status || 500,
74
- responseBody: err.response?.data || {},
75
- retryCount,
76
- });
92
+ if (job.attemptId) {
93
+ await webhookAttemptState.update(
94
+ { id: job.attemptId },
95
+ {
96
+ status: STATUS.FAILED,
97
+ responseStatus: err.response?.status || 500,
98
+ responseBody: err.response?.data || {},
99
+ retryCount,
100
+ triggeredBy: job.triggeredBy,
101
+ triggeredFrom: job.triggeredFrom,
102
+ }
103
+ );
104
+ } else {
105
+ await webhookAttemptState.insert({
106
+ eventId: event.id,
107
+ webhookId: webhook.id,
108
+ status: STATUS.FAILED,
109
+ responseStatus: err.response?.status || 500,
110
+ responseBody: err.response?.data || {},
111
+ retryCount,
112
+ triggeredBy: job.triggeredBy,
113
+ triggeredFrom: job.triggeredFrom,
114
+ });
115
+ }
116
+
77
117
  logger.info('Failed WebhookAttempt created', { eventId: event.id, webhookId: webhook.id });
78
118
 
79
119
  // reschedule next attempt
@@ -6,7 +6,14 @@ const getWebhookJobId = (eventId, webhookId) => {
6
6
  return md5([eventId, webhookId].join('-'));
7
7
  };
8
8
 
9
+ const STATUS = {
10
+ SUCCEEDED: 'succeeded',
11
+ FAILED: 'failed',
12
+ PENDING: 'pending',
13
+ };
14
+
9
15
  module.exports = {
10
16
  API_VERSION,
17
+ STATUS,
11
18
  getWebhookJobId,
12
19
  };
@@ -19,6 +19,7 @@ const {
19
19
  DEFAULT_DID_DOMAIN,
20
20
  WELLKNOWN_BLOCKLET_ADMIN_PATH,
21
21
  TEST_STORE_URL,
22
+ WELLKNOWN_SERVICE_PATH_PREFIX,
22
23
  } = require('@abtnode/constant');
23
24
  const { joinURL } = require('ufo');
24
25
  const { encode } = require('@abtnode/util/lib/base32');
@@ -65,6 +66,7 @@ module.exports = ({
65
66
  node,
66
67
  nodeRuntimeMonitor,
67
68
  daemon,
69
+ webhookManager,
68
70
  }) => {
69
71
  const nodeState = states.node;
70
72
  const nodeMonitSender = new NodeMonitSender({ node });
@@ -561,6 +563,10 @@ module.exports = ({
561
563
  eventHub.broadcast(name, data);
562
564
  });
563
565
 
566
+ listen(webhookManager, EVENTS.WEBHOOK_ATTEMPT, (name, data) => {
567
+ onEvent(name, data, true);
568
+ });
569
+
564
570
  listen(nodeState, BlockletEvents.purchaseChange, onEvent);
565
571
  nodeState.on(EVENTS.ROUTING_UPDATED, (nodeInfo) => onEvent(EVENTS.ROUTING_UPDATED, { routing: nodeInfo.routing }));
566
572
  nodeState.once(EVENTS.NODE_ADDED_OWNER, () => downloadAddedBlocklet());
@@ -706,7 +712,7 @@ module.exports = ({
706
712
  actions: [
707
713
  {
708
714
  name: translation.viewYourAccount,
709
- link: joinURL(origin, '/.well-known/service/user/settings'),
715
+ link: joinURL(origin, `${WELLKNOWN_SERVICE_PATH_PREFIX}/user/settings`),
710
716
  },
711
717
  ],
712
718
  };
package/lib/index.js CHANGED
@@ -753,6 +753,7 @@ function ABTNode(options) {
753
753
  getWebhookEndpoints: webhookAPI.getWebhookEndpoints.bind(webhookAPI),
754
754
  getWebhookEndpoint: webhookAPI.getWebhookEndpoint.bind(webhookAPI),
755
755
  getWebhookAttempts: webhookAPI.getWebhookAttempts.bind(webhookAPI),
756
+ retryWebhookAttempt: webhookAPI.retryWebhookAttempt.bind(webhookAPI),
756
757
 
757
758
  // passport
758
759
  createPassportLog: passportAPI.createPassportLog.bind(passportAPI),
@@ -799,6 +800,7 @@ function ABTNode(options) {
799
800
  nodeRuntimeMonitor: nodeAPI.runtimeMonitor,
800
801
  daemon: options.daemon,
801
802
  handleBlockletWafChange,
803
+ webhookManager: webhookAPI,
802
804
  });
803
805
 
804
806
  const webhook = WebHook({ events, dataDirs, instance, teamManager });
@@ -1,3 +1,4 @@
1
+ const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
1
2
  const { createLogWatcher } = require('./watcher');
2
3
 
3
4
  // Function to parse the log entry and extract relevant information
@@ -36,7 +37,7 @@ function parseLogEntry(line, check = true) {
36
37
  logEntry.status <= 599 &&
37
38
  logEntry.request.includes('/.well-known/did.json') === false &&
38
39
  logEntry.request.includes('/websocket') === false &&
39
- logEntry.request.includes('/.well-known/service/health') === false
40
+ logEntry.request.includes(`${WELLKNOWN_SERVICE_PATH_PREFIX}/health`) === false
40
41
  ) {
41
42
  console.warn(`5xx request detected: ${logEntry.host}`, line);
42
43
  return logEntry;
@@ -515,6 +515,8 @@ const getLogContent = async (action, args, context, result, info, node) => {
515
515
  return `Delete Blocklet Webhook(${result.id})`;
516
516
  case 'ensureBlockletRunning':
517
517
  return `${result.title}:\n* ${result.description}`;
518
+ case 'retryWebhookAttempt':
519
+ return `Retry Webhook Attempt(${args.attemptId})`;
518
520
 
519
521
  case 'addUploadEndpoint':
520
522
  return `Create Upload Endpoint(${args.url})`;
@@ -657,6 +659,7 @@ const getLogCategory = (action) => {
657
659
  case 'createWebhookEndpoint':
658
660
  case 'updateWebhookEndpoint':
659
661
  case 'deleteWebhookEndpoint':
662
+ case 'retryWebhookAttempt':
660
663
  return 'integrations';
661
664
 
662
665
  // server
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.16.44-beta-20250601-083116-288e5ea5",
6
+ "version": "1.16.44-beta-20250603-231026-30a9d27f",
7
7
  "description": "",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -19,44 +19,44 @@
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.44-beta-20250601-083116-288e5ea5",
23
- "@abtnode/auth": "1.16.44-beta-20250601-083116-288e5ea5",
24
- "@abtnode/certificate-manager": "1.16.44-beta-20250601-083116-288e5ea5",
25
- "@abtnode/client": "1.16.44-beta-20250601-083116-288e5ea5",
26
- "@abtnode/constant": "1.16.44-beta-20250601-083116-288e5ea5",
27
- "@abtnode/cron": "1.16.44-beta-20250601-083116-288e5ea5",
28
- "@abtnode/docker-utils": "1.16.44-beta-20250601-083116-288e5ea5",
29
- "@abtnode/logger": "1.16.44-beta-20250601-083116-288e5ea5",
30
- "@abtnode/models": "1.16.44-beta-20250601-083116-288e5ea5",
31
- "@abtnode/queue": "1.16.44-beta-20250601-083116-288e5ea5",
32
- "@abtnode/rbac": "1.16.44-beta-20250601-083116-288e5ea5",
33
- "@abtnode/router-provider": "1.16.44-beta-20250601-083116-288e5ea5",
34
- "@abtnode/static-server": "1.16.44-beta-20250601-083116-288e5ea5",
35
- "@abtnode/timemachine": "1.16.44-beta-20250601-083116-288e5ea5",
36
- "@abtnode/util": "1.16.44-beta-20250601-083116-288e5ea5",
37
- "@arcblock/did": "1.20.11",
38
- "@arcblock/did-auth": "1.20.11",
39
- "@arcblock/did-ext": "1.20.11",
22
+ "@abtnode/analytics": "1.16.44-beta-20250603-231026-30a9d27f",
23
+ "@abtnode/auth": "1.16.44-beta-20250603-231026-30a9d27f",
24
+ "@abtnode/certificate-manager": "1.16.44-beta-20250603-231026-30a9d27f",
25
+ "@abtnode/client": "1.16.44-beta-20250603-231026-30a9d27f",
26
+ "@abtnode/constant": "1.16.44-beta-20250603-231026-30a9d27f",
27
+ "@abtnode/cron": "1.16.44-beta-20250603-231026-30a9d27f",
28
+ "@abtnode/docker-utils": "1.16.44-beta-20250603-231026-30a9d27f",
29
+ "@abtnode/logger": "1.16.44-beta-20250603-231026-30a9d27f",
30
+ "@abtnode/models": "1.16.44-beta-20250603-231026-30a9d27f",
31
+ "@abtnode/queue": "1.16.44-beta-20250603-231026-30a9d27f",
32
+ "@abtnode/rbac": "1.16.44-beta-20250603-231026-30a9d27f",
33
+ "@abtnode/router-provider": "1.16.44-beta-20250603-231026-30a9d27f",
34
+ "@abtnode/static-server": "1.16.44-beta-20250603-231026-30a9d27f",
35
+ "@abtnode/timemachine": "1.16.44-beta-20250603-231026-30a9d27f",
36
+ "@abtnode/util": "1.16.44-beta-20250603-231026-30a9d27f",
37
+ "@arcblock/did": "1.20.12",
38
+ "@arcblock/did-auth": "1.20.12",
39
+ "@arcblock/did-ext": "1.20.12",
40
40
  "@arcblock/did-motif": "^1.1.13",
41
- "@arcblock/did-util": "1.20.11",
42
- "@arcblock/event-hub": "1.20.11",
43
- "@arcblock/jwt": "1.20.11",
41
+ "@arcblock/did-util": "1.20.12",
42
+ "@arcblock/event-hub": "1.20.12",
43
+ "@arcblock/jwt": "1.20.12",
44
44
  "@arcblock/pm2-events": "^0.0.5",
45
- "@arcblock/validator": "1.20.11",
46
- "@arcblock/vc": "1.20.11",
47
- "@blocklet/constant": "1.16.44-beta-20250601-083116-288e5ea5",
48
- "@blocklet/did-space-js": "^1.0.56",
49
- "@blocklet/env": "1.16.44-beta-20250601-083116-288e5ea5",
45
+ "@arcblock/validator": "1.20.12",
46
+ "@arcblock/vc": "1.20.12",
47
+ "@blocklet/constant": "1.16.44-beta-20250603-231026-30a9d27f",
48
+ "@blocklet/did-space-js": "^1.0.57",
49
+ "@blocklet/env": "1.16.44-beta-20250603-231026-30a9d27f",
50
50
  "@blocklet/error": "^0.2.5",
51
- "@blocklet/meta": "1.16.44-beta-20250601-083116-288e5ea5",
52
- "@blocklet/resolver": "1.16.44-beta-20250601-083116-288e5ea5",
53
- "@blocklet/sdk": "1.16.44-beta-20250601-083116-288e5ea5",
54
- "@blocklet/store": "1.16.44-beta-20250601-083116-288e5ea5",
55
- "@blocklet/theme": "^2.13.57",
51
+ "@blocklet/meta": "1.16.44-beta-20250603-231026-30a9d27f",
52
+ "@blocklet/resolver": "1.16.44-beta-20250603-231026-30a9d27f",
53
+ "@blocklet/sdk": "1.16.44-beta-20250603-231026-30a9d27f",
54
+ "@blocklet/store": "1.16.44-beta-20250603-231026-30a9d27f",
55
+ "@blocklet/theme": "^2.13.61",
56
56
  "@fidm/x509": "^1.2.1",
57
- "@ocap/mcrypto": "1.20.11",
58
- "@ocap/util": "1.20.11",
59
- "@ocap/wallet": "1.20.11",
57
+ "@ocap/mcrypto": "1.20.12",
58
+ "@ocap/util": "1.20.12",
59
+ "@ocap/wallet": "1.20.12",
60
60
  "@slack/webhook": "^5.0.4",
61
61
  "archiver": "^7.0.1",
62
62
  "axios": "^1.7.9",
@@ -116,5 +116,5 @@
116
116
  "jest": "^29.7.0",
117
117
  "unzipper": "^0.10.11"
118
118
  },
119
- "gitHead": "5d978739f099374dcc9d4ce9572eb343fd0c39b4"
119
+ "gitHead": "c76d07121652516f178de4188d8694fc130767b8"
120
120
  }