@abtnode/core 1.16.49-beta-20250815-032308-7bcf0b85 → 1.16.49-beta-20250821-102221-1b7283d6

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.
Files changed (34) hide show
  1. package/lib/api/team.js +8 -2
  2. package/lib/blocklet/downloader/blocklet-downloader.js +2 -2
  3. package/lib/blocklet/manager/disk.js +32 -32
  4. package/lib/blocklet/manager/ensure-blocklet-running.js +8 -29
  5. package/lib/blocklet/manager/helper/install-application-from-backup.js +2 -2
  6. package/lib/blocklet/manager/helper/install-component-from-upload.js +1 -0
  7. package/lib/blocklet/migration-dist/migration.cjs +7 -2
  8. package/lib/blocklet/project/publish-to-endpoint.js +1 -1
  9. package/lib/blocklet/project/util.js +1 -1
  10. package/lib/blocklet/storage/backup/base.js +1 -1
  11. package/lib/blocklet/storage/backup/blocklet-extras.js +4 -4
  12. package/lib/blocklet/storage/backup/blocklet.js +3 -3
  13. package/lib/blocklet/storage/backup/blocklets.js +1 -1
  14. package/lib/blocklet/storage/backup/disk.js +1 -1
  15. package/lib/blocklet/storage/backup/spaces.js +2 -2
  16. package/lib/blocklet/storage/restore/blocklet-extras.js +5 -5
  17. package/lib/blocklet/storage/restore/blocklet.js +3 -3
  18. package/lib/blocklet/storage/restore/spaces.js +1 -1
  19. package/lib/crons/rotate-pm2-logs/script.js +1 -1
  20. package/lib/event/auto-backup-handler.js +1 -1
  21. package/lib/event/index.js +2 -2
  22. package/lib/migrations/1.0.22-max-memory.js +2 -6
  23. package/lib/monitor/node-runtime-monitor.js +1 -1
  24. package/lib/router/helper.js +1 -1
  25. package/lib/states/audit-log.js +1 -1
  26. package/lib/states/backup.js +7 -3
  27. package/lib/states/blocklet.js +1 -1
  28. package/lib/states/node.js +3 -3
  29. package/lib/util/aigne-verify.js +3 -0
  30. package/lib/util/blocklet.js +6 -5
  31. package/lib/util/docker/docker-container-prune.js +1 -1
  32. package/lib/util/docker/ensure-docker-postgres.js +2 -1
  33. package/lib/util/spaces.js +1 -1
  34. package/package.json +38 -38
package/lib/api/team.js CHANGED
@@ -2270,7 +2270,7 @@ class TeamAPI extends EventEmitter {
2270
2270
  }
2271
2271
  }
2272
2272
 
2273
- async logoutUser({ teamDid, userDid, visitorId = '', appPid = '', status = '' }) {
2273
+ async logoutUser({ teamDid, userDid, visitorId = '', appPid = '', status = '', remove = false }) {
2274
2274
  if (!userDid) {
2275
2275
  throw new Error('userDid is required');
2276
2276
  }
@@ -2290,7 +2290,12 @@ class TeamAPI extends EventEmitter {
2290
2290
  const blocklet = await getBlocklet({ did: teamDid, states: this.states, dataDirs: this.dataDirs, useCache: true });
2291
2291
  const whereStatus = getUserSessionWhere({ status, blocklet });
2292
2292
  Object.assign(where, whereStatus);
2293
- const result = await userSessionState.update(where, { $set: { status: 'offline' } });
2293
+ let result;
2294
+ if (remove) {
2295
+ result = await userSessionState.remove(where);
2296
+ } else {
2297
+ result = await userSessionState.update(where, { $set: { status: 'offline' } });
2298
+ }
2294
2299
  const { permanentWallet } = getBlockletInfo(blocklet, nodeInfo.sk);
2295
2300
  const masterSite = getFederatedMaster(blocklet);
2296
2301
  if (masterSite && masterSite.isMaster !== false && masterSite.appPid !== teamDid) {
@@ -2307,6 +2312,7 @@ class TeamAPI extends EventEmitter {
2307
2312
  visitorId,
2308
2313
  // HACK: 如果未传入 appPid,代表要注销当前用户在 master 中所有登录状态,所以传入 undefined;否则就只注销 master 中记录的当前 member 的登录状态
2309
2314
  appPid: appPid ? teamDid : undefined,
2315
+ remove,
2310
2316
  },
2311
2317
  ],
2312
2318
  },
@@ -190,8 +190,8 @@ class BlockletDownloader extends EventEmitter {
190
190
  * blocklet;
191
191
  * }}
192
192
  * @returns {{
193
- * downloadList: Array<import('@abtnode/client').BlockletMeta>;
194
- * skipList: Array<import('@abtnode/client').BlockletMeta>;
193
+ * downloadList: Array<import('@blocklet/server-js').BlockletMeta>;
194
+ * skipList: Array<import('@blocklet/server-js').BlockletMeta>;
195
195
  * downloadComponentIds: Array<string>; // like: "z8ia1i2yq67x39vruqQTbkVcwCnqRGx8zSPsJ/z8iZwubkNdA1BfEUwc5NJpY2Jnfm7yEbyvmKS"
196
196
  * }}
197
197
  */
@@ -1104,7 +1104,7 @@ class DiskBlockletManager extends BaseBlockletManager {
1104
1104
  }
1105
1105
 
1106
1106
  /**
1107
- * @param {import('@abtnode/client').RequestBackupBlockletInput} input
1107
+ * @param {import('@blocklet/server-js').RequestBackupBlockletInput} input
1108
1108
  * @memberof BlockletManager
1109
1109
  */
1110
1110
  // eslint-disable-next-line no-unused-vars
@@ -1126,7 +1126,7 @@ class DiskBlockletManager extends BaseBlockletManager {
1126
1126
  }
1127
1127
 
1128
1128
  /**
1129
- * @param {import('@abtnode/client').RequestAbortBlockletBackupInput} input
1129
+ * @param {import('@blocklet/server-js').RequestAbortBlockletBackupInput} input
1130
1130
  * @memberof BlockletManager
1131
1131
  */
1132
1132
  abortBlockletBackup({ appPid }) {
@@ -1134,7 +1134,7 @@ class DiskBlockletManager extends BaseBlockletManager {
1134
1134
  }
1135
1135
 
1136
1136
  /**
1137
- * @param {import('@abtnode/client').RequestRestoreBlockletInput} input
1137
+ * @param {import('@blocklet/server-js').RequestRestoreBlockletInput} input
1138
1138
  * @memberof BlockletManager
1139
1139
  */
1140
1140
  async restoreBlocklet(input, context) {
@@ -1169,9 +1169,9 @@ class DiskBlockletManager extends BaseBlockletManager {
1169
1169
 
1170
1170
  /**
1171
1171
  *
1172
- * @param {import('@abtnode/client').RequestBlockletInput} param0
1172
+ * @param {import('@blocklet/server-js').RequestBlockletInput} param0
1173
1173
  * @param {Record<string, any>} context
1174
- * @returns {import('@abtnode/client').BlockletState}
1174
+ * @returns {import('@blocklet/server-js').BlockletState}
1175
1175
  */
1176
1176
  async restart({ did, componentDids }, context) {
1177
1177
  logger.info('restart blocklet', { did });
@@ -2518,8 +2518,8 @@ class DiskBlockletManager extends BaseBlockletManager {
2518
2518
  /**
2519
2519
  * @description
2520
2520
  * @param {{
2521
- * did: import('@abtnode/client').RequestAddBlockletSpaceGatewayInput,
2522
- * spaceGateway: import('@abtnode/client').SpaceGateway
2521
+ * did: import('@blocklet/server-js').RequestAddBlockletSpaceGatewayInput,
2522
+ * spaceGateway: import('@blocklet/server-js').SpaceGateway
2523
2523
  * }} { did, spaceGateway }
2524
2524
  * @return {Promise<void>}
2525
2525
  * @memberof BlockletManager
@@ -2544,7 +2544,7 @@ class DiskBlockletManager extends BaseBlockletManager {
2544
2544
 
2545
2545
  /**
2546
2546
  * @description
2547
- * @param {import('@abtnode/client').RequestAddBlockletSpaceGatewayInput} { did, spaceGatewayDid }
2547
+ * @param {import('@blocklet/server-js').RequestAddBlockletSpaceGatewayInput} { did, spaceGatewayDid }
2548
2548
  * @return {Promise<void>}
2549
2549
  * @memberof BlockletManager
2550
2550
  */
@@ -2567,8 +2567,8 @@ class DiskBlockletManager extends BaseBlockletManager {
2567
2567
  * @description
2568
2568
  * @param {{
2569
2569
  * did: string,
2570
- * where: import('@abtnode/client').SpaceGateway
2571
- * spaceGateway: import('@abtnode/client').SpaceGateway
2570
+ * where: import('@blocklet/server-js').SpaceGateway
2571
+ * spaceGateway: import('@blocklet/server-js').SpaceGateway
2572
2572
  * }} { did, spaceGateway }
2573
2573
  * @return {Promise<void>}
2574
2574
  * @memberof BlockletManager
@@ -2599,7 +2599,7 @@ class DiskBlockletManager extends BaseBlockletManager {
2599
2599
  /**
2600
2600
  * @description
2601
2601
  * @param {{ did: string }} { did }
2602
- * @return {Promise<Array<import('@abtnode/client').SpaceGateway>>}
2602
+ * @return {Promise<Array<import('@blocklet/server-js').SpaceGateway>>}
2603
2603
  * @memberof BlockletManager
2604
2604
  */
2605
2605
  async getBlockletSpaceGateways({ did }) {
@@ -2642,13 +2642,13 @@ class DiskBlockletManager extends BaseBlockletManager {
2642
2642
  * @description
2643
2643
  * @param {{
2644
2644
  * did: string,
2645
- * autoBackup: import('@abtnode/client').AutoBackup
2645
+ * autoBackup: import('@blocklet/server-js').AutoBackup
2646
2646
  * }} { did, autoBackup }
2647
2647
  * @param {{}} context
2648
2648
  * @memberof DiskBlockletManager
2649
2649
  */
2650
2650
  async updateAutoBackup({ did, autoBackup }, context) {
2651
- /** @type {import('@abtnode/client').AutoBackup} */
2651
+ /** @type {import('@blocklet/server-js').AutoBackup} */
2652
2652
  const value = { ...autoBackup };
2653
2653
 
2654
2654
  const jobId = getBackupJobId(did);
@@ -2704,8 +2704,8 @@ class DiskBlockletManager extends BaseBlockletManager {
2704
2704
 
2705
2705
  /**
2706
2706
  * @description
2707
- * @param {import('@abtnode/client').RequestGetAutoBackupInput} { did }
2708
- * @return {Promise<import('@abtnode/client').AutoBackup>}
2707
+ * @param {import('@blocklet/server-js').RequestGetAutoBackupInput} { did }
2708
+ * @return {Promise<import('@blocklet/server-js').AutoBackup>}
2709
2709
  * @memberof DiskBlockletManager
2710
2710
  */
2711
2711
  async getAutoBackup({ did }) {
@@ -2717,13 +2717,13 @@ class DiskBlockletManager extends BaseBlockletManager {
2717
2717
  * @description
2718
2718
  * @param {{
2719
2719
  * did: string,
2720
- * autoCheckUpdate: import('@abtnode/client').AutoCheckUpdate
2720
+ * autoCheckUpdate: import('@blocklet/server-js').AutoCheckUpdate
2721
2721
  * }} { did, autoCheckUpdate }
2722
2722
  * @param {{}} context
2723
2723
  * @memberof DiskBlockletManager
2724
2724
  */
2725
2725
  async updateAutoCheckUpdate({ did, autoCheckUpdate }, context) {
2726
- /** @type {import('@abtnode/client').AutoCheckUpdate} */
2726
+ /** @type {import('@blocklet/server-js').AutoCheckUpdate} */
2727
2727
  const value = { ...autoCheckUpdate };
2728
2728
  await states.blockletExtras.setSettings(did, { autoCheckUpdate: value });
2729
2729
 
@@ -2752,8 +2752,8 @@ class DiskBlockletManager extends BaseBlockletManager {
2752
2752
 
2753
2753
  /**
2754
2754
  * @description
2755
- * @param {import('@abtnode/client').RequestGetAutoCheckUpdateInput} { did }
2756
- * @return {Promise<import('@abtnode/client').AutoCheckUpdate>}
2755
+ * @param {import('@blocklet/server-js').RequestGetAutoCheckUpdateInput} { did }
2756
+ * @return {Promise<import('@blocklet/server-js').AutoCheckUpdate>}
2757
2757
  * @memberof DiskBlockletManager
2758
2758
  */
2759
2759
  getAutoCheckUpdate({ did }) {
@@ -2762,8 +2762,8 @@ class DiskBlockletManager extends BaseBlockletManager {
2762
2762
 
2763
2763
  /**
2764
2764
  * @description
2765
- * @param {import('@abtnode/client').RequestGetBlockletBackupsInput} options
2766
- * @return {Promise<Array<import('@abtnode/client').Backup>>}
2765
+ * @param {import('@blocklet/server-js').RequestGetBlockletBackupsInput} options
2766
+ * @return {Promise<Array<import('@blocklet/server-js').Backup>>}
2767
2767
  * @memberof BlockletManager
2768
2768
  */
2769
2769
  async getBlockletBackups(options) {
@@ -3355,7 +3355,7 @@ class DiskBlockletManager extends BaseBlockletManager {
3355
3355
  /**
3356
3356
  * @param {{
3357
3357
  * did: string,
3358
- * blocklet: import('@abtnode/client').BlockletState,
3358
+ * blocklet: import('@blocklet/server-js').BlockletState,
3359
3359
  * context: {
3360
3360
  * referrer: string;
3361
3361
  * user: {
@@ -3404,7 +3404,7 @@ class DiskBlockletManager extends BaseBlockletManager {
3404
3404
  if (isEmpty(referrer)) {
3405
3405
  // fixes: https://github.com/ArcBlock/did-spaces/issues/908, referrer 在某些情况下会不存在
3406
3406
  /**
3407
- * @type {import('@abtnode/client').NodeState}
3407
+ * @type {import('@blocklet/server-js').NodeState}
3408
3408
  */
3409
3409
  const node = await states.node.read();
3410
3410
  referrer = joinURL(
@@ -3516,7 +3516,7 @@ class DiskBlockletManager extends BaseBlockletManager {
3516
3516
 
3517
3517
  /**
3518
3518
  * @param {{
3519
- * input: import('@abtnode/client').RequestRestoreBlockletInput,
3519
+ * input: import('@blocklet/server-js').RequestRestoreBlockletInput,
3520
3520
  * context: Record<string, string>,
3521
3521
  * }} {input, context}
3522
3522
  * @memberof BlockletManager
@@ -3719,12 +3719,12 @@ class DiskBlockletManager extends BaseBlockletManager {
3719
3719
  * @description send notification to multiple users, and send different notifications according to the user's own language
3720
3720
  * @param {{
3721
3721
  * did: string,
3722
- * blocklet: import('@abtnode/client').BlockletState,
3722
+ * blocklet: import('@blocklet/server-js').BlockletState,
3723
3723
  * title: {zh: string, en: string},
3724
3724
  * body: {zh: string, en: string},
3725
3725
  * button: {zh: string, en: string},
3726
3726
  * description: {zh: string, en: string},
3727
- * attachments: Array<import('@abtnode/client').NotificationAttachment>,
3727
+ * attachments: Array<import('@blocklet/server-js').NotificationAttachment>,
3728
3728
  * action: string,
3729
3729
  * blockletDashboardAction: string,
3730
3730
  * sender: { appDid: string, appSk: string },
@@ -4110,13 +4110,13 @@ class DiskBlockletManager extends BaseBlockletManager {
4110
4110
  logger.error('ensure delete blocklet process failed for installing', { did, name: meta.name, error: err });
4111
4111
  }
4112
4112
 
4113
- // pre install
4114
- await this._runUserHook('preInstall', blocklet, context);
4115
-
4116
4113
  // Add environments
4117
4114
  await this._updateBlockletEnvironment(meta.did);
4118
4115
  blocklet = await this.getBlocklet(did);
4119
4116
 
4117
+ // pre install
4118
+ await this._runUserHook('preInstall', blocklet, context);
4119
+
4120
4120
  // post install
4121
4121
  await this._runUserHook('postInstall', blocklet, context);
4122
4122
 
@@ -5124,7 +5124,7 @@ class DiskBlockletManager extends BaseBlockletManager {
5124
5124
 
5125
5125
  /**
5126
5126
  * @param {{
5127
- * blocklet: import('@abtnode/client').BlockletState,
5127
+ * blocklet: import('@blocklet/server-js').BlockletState,
5128
5128
  * context: {
5129
5129
  * referrer: string;
5130
5130
  * user: {
@@ -5171,7 +5171,7 @@ class DiskBlockletManager extends BaseBlockletManager {
5171
5171
  }
5172
5172
 
5173
5173
  /**
5174
- * @param {import('@abtnode/client').BlockletState} blocklet
5174
+ * @param {import('@blocklet/server-js').BlockletState} blocklet
5175
5175
  */
5176
5176
  // eslint-disable-next-line no-unused-vars
5177
5177
  async _backupToDisk({ blocklet }, context) {
@@ -5191,7 +5191,7 @@ class DiskBlockletManager extends BaseBlockletManager {
5191
5191
 
5192
5192
  /**
5193
5193
  * FIXME: @linchen support cancel
5194
- * @param {import('@abtnode/client').RequestRestoreBlockletInput} input
5194
+ * @param {import('@blocklet/server-js').RequestRestoreBlockletInput} input
5195
5195
  * @memberof BlockletManager
5196
5196
  */
5197
5197
  // eslint-disable-next-line no-unused-vars
@@ -10,6 +10,8 @@ const { isBlockletPortHealthy, shouldCheckHealthy } = require('../../util/blockl
10
10
  const inProgressStatuses = [BlockletStatus.stopping, BlockletStatus.restarting, BlockletStatus.waiting];
11
11
 
12
12
  class EnsureBlockletRunning {
13
+ canRunEnsureBlockletRunning = false;
14
+
13
15
  initialized = false;
14
16
 
15
17
  whenCycleCheck = false;
@@ -98,6 +100,12 @@ class EnsureBlockletRunning {
98
100
  this.checkSystemHighLoad = checkSystemHighLoad;
99
101
  logger.info('check and fix blocklet status interval', this.checkInterval);
100
102
  const task = async () => {
103
+ // 如果还没进入到需要检查的阶段,则等待 1 秒后继续检查
104
+ if (!this.canRunEnsureBlockletRunning) {
105
+ await sleep(1000);
106
+ task();
107
+ return;
108
+ }
101
109
  if (this.whenCycleCheck) {
102
110
  await sleep(this.checkInterval);
103
111
  }
@@ -144,9 +152,6 @@ class EnsureBlockletRunning {
144
152
  try {
145
153
  await this.getRunningBlocklets();
146
154
  await this.getFakeRunningBlocklets();
147
- if (!this.whenCycleCheck) {
148
- await this.setFakeRunningToWaiting();
149
- }
150
155
  await this.restartFakeRunningBlocklets();
151
156
  } catch (e) {
152
157
  logger.error('ensure blocklet status failed', e);
@@ -183,7 +188,6 @@ class EnsureBlockletRunning {
183
188
  }
184
189
  }
185
190
  }
186
-
187
191
  logger.info('get running blocklets', Object.keys(this.runningBlocklets).length);
188
192
  };
189
193
 
@@ -237,31 +241,6 @@ class EnsureBlockletRunning {
237
241
  logger.info('get fake running blocklets', Object.keys(this.fakeRunningBlocklets).length);
238
242
  };
239
243
 
240
- setFakeRunningToWaiting = async () => {
241
- if (this.fakeRunningToWaitingOnce) {
242
- return;
243
- }
244
- this.setFakeRunningToWaitingOnce = true;
245
- const blockletDids = Object.keys(this.fakeRunningBlocklets);
246
- await pAll(
247
- blockletDids.map((did) => {
248
- return async () => {
249
- const blocklets = this.fakeRunningBlocklets[did];
250
- const componentDids = blocklets
251
- .filter((b) => b.status === BlockletStatus.running || b.status === BlockletStatus.waiting)
252
- .map((b) => b.meta.did);
253
- try {
254
- // eslint-disable-next-line
255
- await this.states.blocklet.setBlockletStatus(did, BlockletStatus.waiting, { componentDids });
256
- } catch (e) {
257
- logger.error('set blocklet waiting failed', did, componentDids, e);
258
- }
259
- };
260
- }),
261
- { concurrency: 8 }
262
- );
263
- };
264
-
265
244
  restartFakeRunningBlocklets = async () => {
266
245
  // blocklet 一组组重启
267
246
  const blockletDids = Object.keys(this.fakeRunningBlocklets);
@@ -54,7 +54,7 @@ const installApplicationFromBackup = async ({
54
54
 
55
55
  const srcDataDir = path.join(dir, 'data');
56
56
 
57
- /** @type {import('@abtnode/client').BlockletState} */
57
+ /** @type {import('@blocklet/server-js').BlockletState} */
58
58
  const blockletState = omit(fs.readJSONSync(path.join(dir, 'blocklet.json')), [
59
59
  '_id',
60
60
  'createdAt',
@@ -69,7 +69,7 @@ const installApplicationFromBackup = async ({
69
69
  );
70
70
  }
71
71
 
72
- /** @type {import('@abtnode/client').RoutingSite} */
72
+ /** @type {import('@blocklet/server-js').RoutingSite} */
73
73
  const routingSite = omit(fs.readJSONSync(path.join(dir, 'routing_rule.json')));
74
74
 
75
75
  const { meta } = blockletState;
@@ -104,6 +104,7 @@ const installComponentFromUpload = async ({
104
104
  newBlocklet.children.splice(index, 1, newChild);
105
105
  } else {
106
106
  newChild.installedAt = new Date();
107
+ resolveMountPointConflict(newChild, oldBlocklet);
107
108
  newBlocklet.children.push(newChild);
108
109
  }
109
110
 
@@ -484,6 +484,7 @@ module.exports = Object.freeze({
484
484
  PROCESS_NAME_ROUTER: 'abt-node-router',
485
485
  PROCESS_NAME_LOG_ROTATE: 'abt-node-log-rotate',
486
486
  PROCESS_NAME_EVENT_HUB: 'abt-node-event-hub',
487
+ PROCESS_NAME_PM2_EVENT_HUB: 'abt-node-pm2-event-hub',
487
488
 
488
489
  BLOCKLET_LAUNCHER_URL: 'https://launcher.arcblock.io/',
489
490
  WEB_WALLET_URL: 'https://web.abtwallet.io',
@@ -579,7 +580,6 @@ module.exports = Object.freeze({
579
580
  // Time and dates
580
581
  DAY_IN_MS,
581
582
  DAEMON_MAX_MEM_LIMIT_IN_MB: 800,
582
- PROXY_MAX_MEM_LIMIT_IN_MB: 800,
583
583
  BLOCKLET_MAX_MEM_LIMIT_IN_MB: 800,
584
584
  CERTIFICATE_EXPIRES_OFFSET: 10 * DAY_IN_MS,
585
585
  ROUTING_RESPONSE_TYPES,
@@ -766,6 +766,11 @@ module.exports = Object.freeze({
766
766
  launchBlockletWithoutWallet: true,
767
767
  backupBlocklet: true,
768
768
  destroySelf: true,
769
+ connectToAigne: true,
770
+ disconnectToAigne: true,
771
+ verifyAigneConnection: true,
772
+ connectToEndpoint: true,
773
+ disconnectFromEndpoint: true,
769
774
  },
770
775
  NOTIFICATION_SEND_STATUS: {
771
776
  PENDING: 0, // 待发送
@@ -38918,7 +38923,7 @@ module.exports = require("zlib");
38918
38923
  /***/ ((module) => {
38919
38924
 
38920
38925
  "use strict";
38921
- module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.48","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.48","@abtnode/auth":"1.16.48","@abtnode/certificate-manager":"1.16.48","@abtnode/client":"1.16.48","@abtnode/constant":"1.16.48","@abtnode/cron":"1.16.48","@abtnode/db-cache":"1.16.48","@abtnode/docker-utils":"1.16.48","@abtnode/logger":"1.16.48","@abtnode/models":"1.16.48","@abtnode/queue":"1.16.48","@abtnode/rbac":"1.16.48","@abtnode/router-provider":"1.16.48","@abtnode/static-server":"1.16.48","@abtnode/timemachine":"1.16.48","@abtnode/util":"1.16.48","@aigne/aigne-hub":"^0.4.9","@arcblock/did":"1.21.2","@arcblock/did-connect-js":"1.21.2","@arcblock/did-ext":"1.21.2","@arcblock/did-motif":"^1.1.14","@arcblock/did-util":"1.21.2","@arcblock/event-hub":"1.21.2","@arcblock/jwt":"1.21.2","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"1.21.2","@arcblock/vc":"1.21.2","@blocklet/constant":"1.16.48","@blocklet/did-space-js":"^1.1.16","@blocklet/env":"1.16.48","@blocklet/error":"^0.2.5","@blocklet/meta":"1.16.48","@blocklet/resolver":"1.16.48","@blocklet/sdk":"1.16.48","@blocklet/store":"1.16.48","@blocklet/theme":"^3.1.19","@fidm/x509":"^1.2.1","@ocap/mcrypto":"1.21.2","@ocap/util":"1.21.2","@ocap/wallet":"1.21.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":{"expand-tilde":"^2.0.2","express":"^4.18.2","jest":"^29.7.0","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
38926
+ module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.48","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.48","@abtnode/auth":"1.16.48","@abtnode/certificate-manager":"1.16.48","@abtnode/constant":"1.16.48","@abtnode/cron":"1.16.48","@abtnode/db-cache":"1.16.48","@abtnode/docker-utils":"1.16.48","@abtnode/logger":"1.16.48","@abtnode/models":"1.16.48","@abtnode/queue":"1.16.48","@abtnode/rbac":"1.16.48","@abtnode/router-provider":"1.16.48","@abtnode/static-server":"1.16.48","@abtnode/timemachine":"1.16.48","@abtnode/util":"1.16.48","@aigne/aigne-hub":"^0.6.7","@arcblock/did":"1.22.2","@arcblock/did-connect-js":"1.22.2","@arcblock/did-ext":"1.22.2","@arcblock/did-motif":"^1.1.14","@arcblock/did-util":"1.22.2","@arcblock/event-hub":"1.22.2","@arcblock/jwt":"1.22.2","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"1.22.2","@arcblock/vc":"1.22.2","@blocklet/constant":"1.16.48","@blocklet/server-js":"1.16.48","@blocklet/did-space-js":"^1.1.18","@blocklet/env":"1.16.48","@blocklet/error":"^0.2.5","@blocklet/meta":"1.16.48","@blocklet/resolver":"1.16.48","@blocklet/sdk":"1.16.48","@blocklet/store":"1.16.48","@blocklet/theme":"^3.1.25","@fidm/x509":"^1.2.1","@ocap/mcrypto":"1.22.2","@ocap/util":"1.22.2","@ocap/wallet":"1.22.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":{"expand-tilde":"^2.0.2","express":"^4.18.2","jest":"^29.7.0","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
38922
38927
 
38923
38928
  /***/ }),
38924
38929
 
@@ -46,7 +46,7 @@ function getReleaseDir(blocklet, projectId, releaseId) {
46
46
  return path.join(projectDir, PROJECT.RELEASE_DIR, `${releaseId}`);
47
47
  }
48
48
 
49
- const Client = require('@abtnode/client');
49
+ const Client = require('@blocklet/server-js');
50
50
 
51
51
  const { signWithAccessKey, validateAccessKey } = Client;
52
52
 
@@ -9,7 +9,7 @@ const { expandBundle, APP_CONFIG_IMAGE_KEYS } = require('../../util');
9
9
  const COMPONENT_CONFIG_MAP_DIR = '.component_config';
10
10
 
11
11
  /**
12
- * @param {import('@abtnode/client').BlockletState} blocklet
12
+ * @param {import('@blocklet/server-js').BlockletState} blocklet
13
13
  * @param {{
14
14
  * id: string;
15
15
  * blockletLogo?: string;
@@ -30,7 +30,7 @@ class BaseBackup {
30
30
 
31
31
  /**
32
32
  * @description blocklet state 对象
33
- * @type {import('@abtnode/client').BlockletState}
33
+ * @type {import('@blocklet/server-js').BlockletState}
34
34
  * @memberof BaseBackup
35
35
  */
36
36
  blocklet;
@@ -23,12 +23,12 @@ class BlockletExtrasBackup extends BaseBackup {
23
23
  /**
24
24
  *
25
25
  * @description
26
- * @return {Promise<import('@abtnode/client').BlockletState>}
26
+ * @return {Promise<import('@blocklet/server-js').BlockletState>}
27
27
  * @memberof BlockletExtrasBackup
28
28
  */
29
29
  async getBlockletExtra() {
30
30
  /**
31
- * @type {import('@abtnode/client').BlockletState}
31
+ * @type {import('@blocklet/server-js').BlockletState}
32
32
  */
33
33
  const blockletExtra = await states.blockletExtras.findOne({
34
34
  did: this.blocklet.meta.did,
@@ -43,7 +43,7 @@ class BlockletExtrasBackup extends BaseBackup {
43
43
  /**
44
44
  *
45
45
  * @description 清理数据并加密
46
- * @param {import('@abtnode/client').BlockletState} raw
46
+ * @param {import('@blocklet/server-js').BlockletState} raw
47
47
  * @return {Promise<any>}
48
48
  * @memberof BlockletExtrasBackup
49
49
  */
@@ -75,7 +75,7 @@ class BlockletExtrasBackup extends BaseBackup {
75
75
  /**
76
76
  *
77
77
  * @description 清理数据并加密
78
- * @param {import('@abtnode/client').ConfigEntry[]} configs
78
+ * @param {import('@blocklet/server-js').ConfigEntry[]} configs
79
79
  * @return {void}
80
80
  * @memberof BlockletExtrasBackup
81
81
  */
@@ -34,13 +34,13 @@ class BlockletBackup extends BaseBackup {
34
34
  /**
35
35
  * @description 清理数据
36
36
  * @see blocklet.db 中需要删除哪些字段呢? https://github.com/ArcBlock/blocklet-server/issues/6120#issuecomment-1383798348
37
- * @return {Promise<import('@abtnode/client').BlockletState>}
37
+ * @return {Promise<import('@blocklet/server-js').BlockletState>}
38
38
  * @memberof BlockletBackup
39
39
  */
40
40
  cleanData() {
41
41
  const clone = cloneDeep(this.blocklet);
42
42
 
43
- /** @type {import('@abtnode/client').ComponentState[]} */
43
+ /** @type {import('@blocklet/server-js').ComponentState[]} */
44
44
  const queue = [clone];
45
45
 
46
46
  // 广度优先遍历
@@ -71,7 +71,7 @@ class BlockletBackup extends BaseBackup {
71
71
  /**
72
72
  *
73
73
  * @description 清理数据并加密
74
- * @param {import('@abtnode/client').BlockletState} info
74
+ * @param {import('@blocklet/server-js').BlockletState} info
75
75
  * @memberof BlockletExtrasBackup
76
76
  */
77
77
  encrypt(info) {
@@ -46,7 +46,7 @@ class BlockletsBackup extends BaseBackup {
46
46
  /**
47
47
  *
48
48
  *
49
- * @param {import('@abtnode/client').BlockletState} blocklet
49
+ * @param {import('@blocklet/server-js').BlockletState} blocklet
50
50
  * @returns {Array<{name: string, version: string, tarball: string}>}
51
51
  * @memberof BlockletsBackup
52
52
  */
@@ -24,7 +24,7 @@ class DiskBackup extends BaseBackup {
24
24
 
25
25
  /**
26
26
  * @description blocklet state 对象
27
- * @type {import('@abtnode/client').BlockletState}
27
+ * @type {import('@blocklet/server-js').BlockletState}
28
28
  * @memberof DiskBackup
29
29
  */
30
30
  blocklet;
@@ -65,7 +65,7 @@ class SpacesBackup extends BaseBackup {
65
65
 
66
66
  /**
67
67
  * @description blocklet state 对象
68
- * @type {import('@abtnode/client').BlockletState}
68
+ * @type {import('@blocklet/server-js').BlockletState}
69
69
  * @memberof SpacesBackup
70
70
  */
71
71
  blocklet;
@@ -330,7 +330,7 @@ class SpacesBackup extends BaseBackup {
330
330
  this.throwErrorIfAborted();
331
331
 
332
332
  /**
333
- * @type {import('@abtnode/client').NodeState}
333
+ * @type {import('@blocklet/server-js').NodeState}
334
334
  */
335
335
  const node = await states.node.read();
336
336
  const serverDid = node.did;
@@ -18,12 +18,12 @@ class BlockletExtrasRestore extends BaseRestore {
18
18
  /**
19
19
  *
20
20
  * @description
21
- * @return {import('@abtnode/client').BlockletState}
21
+ * @return {import('@blocklet/server-js').BlockletState}
22
22
  * @memberof BlockletExtrasRestore
23
23
  */
24
24
  getExtras() {
25
25
  /**
26
- * @type {import('@abtnode/client').BlockletState}
26
+ * @type {import('@blocklet/server-js').BlockletState}
27
27
  */
28
28
  return readJSONSync(join(this.restoreDir, this.filename));
29
29
  }
@@ -31,8 +31,8 @@ class BlockletExtrasRestore extends BaseRestore {
31
31
  /**
32
32
  *
33
33
  * @description 清理数据并加密
34
- * @param {import('@abtnode/client').BlockletState} raw
35
- * @returns {import('@abtnode/client').BlockletState}
34
+ * @param {import('@blocklet/server-js').BlockletState} raw
35
+ * @returns {import('@blocklet/server-js').BlockletState}
36
36
  * @memberof BlockletExtrasRestore
37
37
  */
38
38
  cleanExtras(raw, params) {
@@ -56,7 +56,7 @@ class BlockletExtrasRestore extends BaseRestore {
56
56
  /**
57
57
  *
58
58
  * @description 解密加密的数据
59
- * @param {import('@abtnode/client').ConfigEntry[]} configs
59
+ * @param {import('@blocklet/server-js').ConfigEntry[]} configs
60
60
  * @param {object} params
61
61
  * @return {void}
62
62
  * @memberof BlockletExtrasRestore
@@ -17,7 +17,7 @@ class BlockletRestore extends BaseRestore {
17
17
  /**
18
18
  *
19
19
  * @description
20
- * @return {import('@abtnode/client').BlockletState}
20
+ * @return {import('@blocklet/server-js').BlockletState}
21
21
  * @memberof BlockletRestore
22
22
  */
23
23
  getBlocklet() {
@@ -27,8 +27,8 @@ class BlockletRestore extends BaseRestore {
27
27
  /**
28
28
  *
29
29
  * @description 解密加密的数据
30
- * @param {import('@abtnode/client').BlockletState} blocklet
31
- * @return {import('@abtnode/client').BlockletState}
30
+ * @param {import('@blocklet/server-js').BlockletState} blocklet
31
+ * @return {import('@blocklet/server-js').BlockletState}
32
32
  * @memberof BlockletRestore
33
33
  */
34
34
  decrypt(blocklet, params) {
@@ -104,7 +104,7 @@ class SpacesRestore extends BaseRestore {
104
104
  async syncFromSpaces() {
105
105
  const { endpoint, wallet, delegation } = this.input;
106
106
  /**
107
- * @type {import('@abtnode/client').NodeState}
107
+ * @type {import('@blocklet/server-js').NodeState}
108
108
  */
109
109
  const node = await states.node.read();
110
110
  const serverDid = node.did;
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-console */
2
- const pm2 = require('@abtnode/util/lib/async-pm2');
2
+ const pm2 = require('@abtnode/util/lib/pm2/async-pm2');
3
3
 
4
4
  const LogRotator = require('../../util/rotator');
5
5
 
@@ -6,7 +6,7 @@ const { getBackupJobId } = require('../util/spaces');
6
6
  /**
7
7
  * @description
8
8
  * @param {string} _eventName
9
- * @param {import('@abtnode/client').BlockletState & {context: {}} } payload
9
+ * @param {import('@blocklet/server-js').BlockletState & {context: {}} } payload
10
10
  * @param {import('../blocklet/manager/disk')} blockletManager
11
11
  */
12
12
  async function autoBackupHandler(_eventName, payload, blockletManager) {
@@ -282,7 +282,7 @@ module.exports = ({
282
282
  */
283
283
  const handleBlockletEvent = async (eventName, payload) => {
284
284
  /**
285
- * @type {import('@abtnode/client').BlockletState} payload
285
+ * @type {import('@blocklet/server-js').BlockletState} payload
286
286
  */
287
287
  const blocklet = payload.blocklet || payload;
288
288
 
@@ -556,7 +556,7 @@ module.exports = ({
556
556
  /**
557
557
  *
558
558
  * @param {string} eventName
559
- * @param {import('@abtnode/client').BlockletState & {context: {}} } payload
559
+ * @param {import('@blocklet/server-js').BlockletState & {context: {}} } payload
560
560
  * @returns
561
561
  */
562
562
  (_eventName, payload, ...args) => {
@@ -3,11 +3,7 @@ const yaml = require('js-yaml');
3
3
  const get = require('lodash/get');
4
4
  const set = require('lodash/set');
5
5
 
6
- const {
7
- DAEMON_MAX_MEM_LIMIT_IN_MB,
8
- PROXY_MAX_MEM_LIMIT_IN_MB,
9
- BLOCKLET_MAX_MEM_LIMIT_IN_MB,
10
- } = require('@abtnode/constant');
6
+ const { DAEMON_MAX_MEM_LIMIT_IN_MB, BLOCKLET_MAX_MEM_LIMIT_IN_MB } = require('@abtnode/constant');
11
7
 
12
8
  module.exports = async ({ states, config, configFile, printInfo }) => {
13
9
  printInfo('Try to update node config to 1.0.22...');
@@ -18,7 +14,7 @@ module.exports = async ({ states, config, configFile, printInfo }) => {
18
14
 
19
15
  const updates = [
20
16
  { key: 'runtimeConfig.daemonMaxMemoryLimit', value: DAEMON_MAX_MEM_LIMIT_IN_MB },
21
- { key: 'runtimeConfig.proxyMaxMemoryLimit', value: PROXY_MAX_MEM_LIMIT_IN_MB },
17
+ { key: 'runtimeConfig.proxyMaxMemoryLimit', value: BLOCKLET_MAX_MEM_LIMIT_IN_MB },
22
18
  { key: 'runtimeConfig.blockletMaxMemoryLimit', value: BLOCKLET_MAX_MEM_LIMIT_IN_MB },
23
19
  ];
24
20
  updates.forEach(({ key, value }) => {
@@ -5,7 +5,7 @@ const cloneDeep = require('@abtnode/util/lib/deep-clone');
5
5
 
6
6
  const { PROCESS_NAME_DAEMON, PROCESS_NAME_SERVICE, EVENTS } = require('@abtnode/constant');
7
7
  const defaultLogger = require('@abtnode/logger')('@abtnode/util:node-runtime-info');
8
- const pm2 = require('@abtnode/util/lib/async-pm2');
8
+ const pm2 = require('@abtnode/util/lib/pm2/async-pm2');
9
9
 
10
10
  const { getSysInfo } = require('../util/sysinfo');
11
11
 
@@ -473,7 +473,7 @@ const ensureCorsForWebWallet = async (sites) => {
473
473
  /**
474
474
  * @description
475
475
  * @param {Array<any>} [sites=[]]
476
- * @param {Array<import('@abtnode/client').BlockletState>} blocklets
476
+ * @param {Array<import('@blocklet/server-js').BlockletState>} blocklets
477
477
  * @return {Promise<any>}
478
478
  */
479
479
  const ensureCorsForDidSpace = (sites = [], blocklets) => {
@@ -19,7 +19,7 @@ const getServerInfo = (info) =>
19
19
  `[${info.name}](${joinURL(process.env.NODE_ENV === 'production' ? info.routing.adminPath : '', '/settings/about')})`;
20
20
  /**
21
21
  * @description
22
- * @param {import('@abtnode/client').BlockletState} blocklet
22
+ * @param {import('@blocklet/server-js').BlockletState} blocklet
23
23
  * @param {{
24
24
  * routing: { adminPath: string }
25
25
  * }} info
@@ -198,10 +198,14 @@ class BackupState extends BaseState {
198
198
  } else {
199
199
  // SQLite:datetime + strftime
200
200
  // SQLite 的 datetime(col, '+X minutes') already returns text in UTC+offset
201
+ // 计算时差: 返回与 UTC 的偏移,单位:分钟
201
202
  const offset = dayjs.tz(dayjs.utc(), timezone).utcOffset();
202
- const dt = sequelize.fn('datetime', sequelize.col('createdAt'), `${offset} minutes`);
203
- dateExpr = sequelize.fn('strftime', '%Y-%m-%d', dt);
204
- groupExpr = dt;
203
+ groupExpr = sequelize.fn(
204
+ 'strftime',
205
+ '%Y-%m-%d', // 提取年月日
206
+ this.model.sequelize.fn('datetime', this.model.sequelize.col('createdAt'), `${offset} minutes`)
207
+ );
208
+ dateExpr = sequelize.fn('strftime', '%Y-%m-%d', groupExpr);
205
209
  }
206
210
 
207
211
  const options = {
@@ -165,7 +165,7 @@ class BlockletState extends BaseState {
165
165
  * @description
166
166
  * @param {string} did
167
167
  * @param {*} [{ decryptSk = true }={}]
168
- * @return {Promise<import('@abtnode/client').BlockletState>}
168
+ * @return {Promise<import('@blocklet/server-js').BlockletState>}
169
169
  * @memberof BlockletState
170
170
  */
171
171
  async getBlocklet(did, { decryptSk = true } = {}) {
@@ -12,9 +12,9 @@ const {
12
12
  DISK_ALERT_THRESHOLD_PERCENT,
13
13
  EVENTS,
14
14
  SERVER_STATUS,
15
- PROXY_MAX_MEM_LIMIT_IN_MB,
16
15
  DEFAULT_NFT_DOMAIN_URL,
17
16
  SERVER_CACHE_TTL,
17
+ BLOCKLET_MAX_MEM_LIMIT_IN_MB,
18
18
  } = require('@abtnode/constant');
19
19
  const logger = require('@abtnode/logger')('@abtnode/core:states:node');
20
20
 
@@ -80,7 +80,7 @@ class NodeState extends BaseState {
80
80
  /**
81
81
  * Ensure we have an node record in the database
82
82
  *
83
- * @returns {Promise<import('@abtnode/client').NodeState>} Node document json
83
+ * @returns {Promise<import('@blocklet/server-js').NodeState>} Node document json
84
84
  * @memberof NodeState
85
85
  */
86
86
  async _read() {
@@ -165,7 +165,7 @@ class NodeState extends BaseState {
165
165
  doc.isDockerInstalled = await checkDockerInstalled();
166
166
 
167
167
  if (doc.runtimeConfig && !doc.runtimeConfig.proxyMaxMemoryLimit) {
168
- doc.runtimeConfig.proxyMaxMemoryLimit = PROXY_MAX_MEM_LIMIT_IN_MB;
168
+ doc.runtimeConfig.proxyMaxMemoryLimit = BLOCKLET_MAX_MEM_LIMIT_IN_MB;
169
169
  }
170
170
 
171
171
  return doc;
@@ -52,6 +52,9 @@ const verifyAigneHub = async (config, blocklet) => {
52
52
  apiKey: decryptValue(config.key, did),
53
53
  model: !config.model || config.model === 'auto' ? undefined : config.model,
54
54
  url: baseUrl,
55
+ clientOptions: {
56
+ clientId: did,
57
+ },
55
58
  };
56
59
 
57
60
  const model = new AIGNEHubChatModel(modelConfig);
@@ -28,7 +28,7 @@ const { fromSecretKey, fromPublicKey } = require('@ocap/wallet');
28
28
  const { toHex, isHex, toDid, toAddress, toBuffer } = require('@ocap/util');
29
29
  const { isValid: isValidDid, isEthereumDid } = require('@arcblock/did');
30
30
  const logger = require('@abtnode/logger')('@abtnode/core:util:blocklet');
31
- const pm2 = require('@abtnode/util/lib/async-pm2');
31
+ const pm2 = require('@abtnode/util/lib/pm2/async-pm2');
32
32
  const sleep = require('@abtnode/util/lib/sleep');
33
33
  const getPm2ProcessInfo = require('@abtnode/util/lib/get-pm2-process-info');
34
34
  const { formatEnv, getSecurityNodeOptions, decrypt } = require('@abtnode/util/lib/security');
@@ -112,6 +112,7 @@ const getComponentProcessId = require('@blocklet/meta/lib/get-component-process-
112
112
  const { isInServerlessMode } = require('@abtnode/util/lib/serverless');
113
113
  const { getDidDomainForBlocklet } = require('@abtnode/util/lib/get-domain-for-blocklet');
114
114
  const md5 = require('@abtnode/util/lib/md5');
115
+ const fetchPm2 = require('@abtnode/util/lib/pm2/fetch-pm2');
115
116
 
116
117
  const promiseSpawn = require('@abtnode/util/lib/promise-spawn');
117
118
  const { getAbtNodeRedisAndSQLiteUrl } = require('@abtnode/db-cache');
@@ -245,7 +246,7 @@ const getComponentDirs = (component, { dataDirs, ensure = false, ancestors = []
245
246
  };
246
247
 
247
248
  /**
248
- * @param component {import('@abtnode/client').ComponentState & { environmentObj: {[key: string]: string } } }
249
+ * @param component {import('@blocklet/server-js').ComponentState & { environmentObj: {[key: string]: string } } }
249
250
  * @returns {{cwd, script, args, environmentObj, interpreter, interpreterArgs}: { args: []}}
250
251
  * @return {*}
251
252
  */
@@ -785,7 +786,7 @@ const startBlockletProcess = async (
785
786
  rootBlocklet: blocklet,
786
787
  });
787
788
 
788
- await pm2.startAsync({ ...nextOptions, pmx: false });
789
+ await fetchPm2({ ...nextOptions, pmx: false }, nodeEnvironments.ABT_NODE_SK);
789
790
 
790
791
  // eslint-disable-next-line no-use-before-define
791
792
  const status = await getProcessState(processId);
@@ -814,7 +815,7 @@ const startBlockletProcess = async (
814
815
  blocklet,
815
816
  /**
816
817
  *
817
- * @param {import('@abtnode/client').BlockletState} b
818
+ * @param {import('@blocklet/server-js').BlockletState} b
818
819
  * @param {*} param1
819
820
  * @returns
820
821
  */
@@ -2503,7 +2504,7 @@ const copyPackImages = async ({ appDataDir, packDir, packConfig = {} }) => {
2503
2504
  };
2504
2505
 
2505
2506
  /**
2506
- * @param {import('@abtnode/client').BlockletState} blocklet
2507
+ * @param {import('@blocklet/server-js').BlockletState} blocklet
2507
2508
  * @returns {boolean}
2508
2509
  */
2509
2510
  const isDevelopmentMode = (blocklet) => blocklet?.mode === BLOCKLET_MODES.DEVELOPMENT;
@@ -1,4 +1,4 @@
1
- const pm2 = require('@abtnode/util/lib/async-pm2');
1
+ const pm2 = require('@abtnode/util/lib/pm2/async-pm2');
2
2
  const logger = require('@abtnode/logger')('@abtnode/core:util:blocklet');
3
3
  const promiseSpawn = require('@abtnode/util/lib/promise-spawn');
4
4
 
@@ -45,7 +45,8 @@ async function _ensureDockerPostgres(dataDir, name = 'abtnode-postgres', port =
45
45
  return '';
46
46
  }
47
47
 
48
- if (process.env.ABT_NODE_IGNORE_RESTART_POSTGRES !== 'true') {
48
+ // 本地开发环境, 可以把这个参数设置成 true, 这样切换 .blocklet-server 路径的时候, 会自动重启 postgres, 应用对应的 postgres 配置
49
+ if (process.env.ABT_NODE_RESTART_POSTGRES === 'true') {
49
50
  await stopDockerPostgres(name);
50
51
  await sleep(1000);
51
52
  }
@@ -7,7 +7,7 @@ const { joinURL, withQuery } = require('ufo');
7
7
 
8
8
  /**
9
9
  * @description
10
- * @param {import('@abtnode/client').ConfigEntry[]} configs
10
+ * @param {import('@blocklet/server-js').ConfigEntry[]} configs
11
11
  * @return {string | null}
12
12
  */
13
13
  const getBackupEndpoint = (configs) => {
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.16.49-beta-20250815-032308-7bcf0b85",
6
+ "version": "1.16.49-beta-20250821-102221-1b7283d6",
7
7
  "description": "",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -19,46 +19,46 @@
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.49-beta-20250815-032308-7bcf0b85",
23
- "@abtnode/auth": "1.16.49-beta-20250815-032308-7bcf0b85",
24
- "@abtnode/certificate-manager": "1.16.49-beta-20250815-032308-7bcf0b85",
25
- "@abtnode/client": "1.16.49-beta-20250815-032308-7bcf0b85",
26
- "@abtnode/constant": "1.16.49-beta-20250815-032308-7bcf0b85",
27
- "@abtnode/cron": "1.16.49-beta-20250815-032308-7bcf0b85",
28
- "@abtnode/db-cache": "1.16.49-beta-20250815-032308-7bcf0b85",
29
- "@abtnode/docker-utils": "1.16.49-beta-20250815-032308-7bcf0b85",
30
- "@abtnode/logger": "1.16.49-beta-20250815-032308-7bcf0b85",
31
- "@abtnode/models": "1.16.49-beta-20250815-032308-7bcf0b85",
32
- "@abtnode/queue": "1.16.49-beta-20250815-032308-7bcf0b85",
33
- "@abtnode/rbac": "1.16.49-beta-20250815-032308-7bcf0b85",
34
- "@abtnode/router-provider": "1.16.49-beta-20250815-032308-7bcf0b85",
35
- "@abtnode/static-server": "1.16.49-beta-20250815-032308-7bcf0b85",
36
- "@abtnode/timemachine": "1.16.49-beta-20250815-032308-7bcf0b85",
37
- "@abtnode/util": "1.16.49-beta-20250815-032308-7bcf0b85",
38
- "@aigne/aigne-hub": "^0.4.9",
39
- "@arcblock/did": "1.21.2",
40
- "@arcblock/did-connect-js": "1.21.2",
41
- "@arcblock/did-ext": "1.21.2",
22
+ "@abtnode/analytics": "1.16.49-beta-20250821-102221-1b7283d6",
23
+ "@abtnode/auth": "1.16.49-beta-20250821-102221-1b7283d6",
24
+ "@abtnode/certificate-manager": "1.16.49-beta-20250821-102221-1b7283d6",
25
+ "@abtnode/constant": "1.16.49-beta-20250821-102221-1b7283d6",
26
+ "@abtnode/cron": "1.16.49-beta-20250821-102221-1b7283d6",
27
+ "@abtnode/db-cache": "1.16.49-beta-20250821-102221-1b7283d6",
28
+ "@abtnode/docker-utils": "1.16.49-beta-20250821-102221-1b7283d6",
29
+ "@abtnode/logger": "1.16.49-beta-20250821-102221-1b7283d6",
30
+ "@abtnode/models": "1.16.49-beta-20250821-102221-1b7283d6",
31
+ "@abtnode/queue": "1.16.49-beta-20250821-102221-1b7283d6",
32
+ "@abtnode/rbac": "1.16.49-beta-20250821-102221-1b7283d6",
33
+ "@abtnode/router-provider": "1.16.49-beta-20250821-102221-1b7283d6",
34
+ "@abtnode/static-server": "1.16.49-beta-20250821-102221-1b7283d6",
35
+ "@abtnode/timemachine": "1.16.49-beta-20250821-102221-1b7283d6",
36
+ "@abtnode/util": "1.16.49-beta-20250821-102221-1b7283d6",
37
+ "@aigne/aigne-hub": "^0.6.7",
38
+ "@arcblock/did": "1.22.2",
39
+ "@arcblock/did-connect-js": "1.22.2",
40
+ "@arcblock/did-ext": "1.22.2",
42
41
  "@arcblock/did-motif": "^1.1.14",
43
- "@arcblock/did-util": "1.21.2",
44
- "@arcblock/event-hub": "1.21.2",
45
- "@arcblock/jwt": "1.21.2",
42
+ "@arcblock/did-util": "1.22.2",
43
+ "@arcblock/event-hub": "1.22.2",
44
+ "@arcblock/jwt": "1.22.2",
46
45
  "@arcblock/pm2-events": "^0.0.5",
47
- "@arcblock/validator": "1.21.2",
48
- "@arcblock/vc": "1.21.2",
49
- "@blocklet/constant": "1.16.49-beta-20250815-032308-7bcf0b85",
50
- "@blocklet/did-space-js": "^1.1.16",
51
- "@blocklet/env": "1.16.49-beta-20250815-032308-7bcf0b85",
46
+ "@arcblock/validator": "1.22.2",
47
+ "@arcblock/vc": "1.22.2",
48
+ "@blocklet/constant": "1.16.49-beta-20250821-102221-1b7283d6",
49
+ "@blocklet/did-space-js": "^1.1.18",
50
+ "@blocklet/env": "1.16.49-beta-20250821-102221-1b7283d6",
52
51
  "@blocklet/error": "^0.2.5",
53
- "@blocklet/meta": "1.16.49-beta-20250815-032308-7bcf0b85",
54
- "@blocklet/resolver": "1.16.49-beta-20250815-032308-7bcf0b85",
55
- "@blocklet/sdk": "1.16.49-beta-20250815-032308-7bcf0b85",
56
- "@blocklet/store": "1.16.49-beta-20250815-032308-7bcf0b85",
57
- "@blocklet/theme": "^3.1.19",
52
+ "@blocklet/meta": "1.16.49-beta-20250821-102221-1b7283d6",
53
+ "@blocklet/resolver": "1.16.49-beta-20250821-102221-1b7283d6",
54
+ "@blocklet/sdk": "1.16.49-beta-20250821-102221-1b7283d6",
55
+ "@blocklet/server-js": "1.16.49-beta-20250821-102221-1b7283d6",
56
+ "@blocklet/store": "1.16.49-beta-20250821-102221-1b7283d6",
57
+ "@blocklet/theme": "^3.1.25",
58
58
  "@fidm/x509": "^1.2.1",
59
- "@ocap/mcrypto": "1.21.2",
60
- "@ocap/util": "1.21.2",
61
- "@ocap/wallet": "1.21.2",
59
+ "@ocap/mcrypto": "1.22.2",
60
+ "@ocap/util": "1.22.2",
61
+ "@ocap/wallet": "1.22.2",
62
62
  "@slack/webhook": "^5.0.4",
63
63
  "archiver": "^7.0.1",
64
64
  "axios": "^1.7.9",
@@ -118,5 +118,5 @@
118
118
  "jest": "^29.7.0",
119
119
  "unzipper": "^0.10.11"
120
120
  },
121
- "gitHead": "75dd236eb42d14a5093c1364e51625412aa91790"
121
+ "gitHead": "4fdd3b0cfb87b45ff8c0d539f83c3ddcbd71465b"
122
122
  }