@abtnode/core 1.16.49-beta-20250819-084933-3bcbd851 → 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.
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 },
@@ -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
@@ -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;
@@ -580,7 +580,6 @@ module.exports = Object.freeze({
580
580
  // Time and dates
581
581
  DAY_IN_MS,
582
582
  DAEMON_MAX_MEM_LIMIT_IN_MB: 800,
583
- PROXY_MAX_MEM_LIMIT_IN_MB: 800,
584
583
  BLOCKLET_MAX_MEM_LIMIT_IN_MB: 800,
585
584
  CERTIFICATE_EXPIRES_OFFSET: 10 * DAY_IN_MS,
586
585
  ROUTING_RESPONSE_TYPES,
@@ -38924,7 +38923,7 @@ module.exports = require("zlib");
38924
38923
  /***/ ((module) => {
38925
38924
 
38926
38925
  "use strict";
38927
- 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.6.4","@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/did-space-js":"^1.1.17","@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.23","@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"}');
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"}');
38928
38927
 
38929
38928
  /***/ }),
38930
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;
@@ -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 }) => {
@@ -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;
@@ -246,7 +246,7 @@ const getComponentDirs = (component, { dataDirs, ensure = false, ancestors = []
246
246
  };
247
247
 
248
248
  /**
249
- * @param component {import('@abtnode/client').ComponentState & { environmentObj: {[key: string]: string } } }
249
+ * @param component {import('@blocklet/server-js').ComponentState & { environmentObj: {[key: string]: string } } }
250
250
  * @returns {{cwd, script, args, environmentObj, interpreter, interpreterArgs}: { args: []}}
251
251
  * @return {*}
252
252
  */
@@ -815,7 +815,7 @@ const startBlockletProcess = async (
815
815
  blocklet,
816
816
  /**
817
817
  *
818
- * @param {import('@abtnode/client').BlockletState} b
818
+ * @param {import('@blocklet/server-js').BlockletState} b
819
819
  * @param {*} param1
820
820
  * @returns
821
821
  */
@@ -2504,7 +2504,7 @@ const copyPackImages = async ({ appDataDir, packDir, packConfig = {} }) => {
2504
2504
  };
2505
2505
 
2506
2506
  /**
2507
- * @param {import('@abtnode/client').BlockletState} blocklet
2507
+ * @param {import('@blocklet/server-js').BlockletState} blocklet
2508
2508
  * @returns {boolean}
2509
2509
  */
2510
2510
  const isDevelopmentMode = (blocklet) => blocklet?.mode === BLOCKLET_MODES.DEVELOPMENT;
@@ -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-20250819-084933-3bcbd851",
6
+ "version": "1.16.49-beta-20250821-102221-1b7283d6",
7
7
  "description": "",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -19,23 +19,22 @@
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-20250819-084933-3bcbd851",
23
- "@abtnode/auth": "1.16.49-beta-20250819-084933-3bcbd851",
24
- "@abtnode/certificate-manager": "1.16.49-beta-20250819-084933-3bcbd851",
25
- "@abtnode/client": "1.16.49-beta-20250819-084933-3bcbd851",
26
- "@abtnode/constant": "1.16.49-beta-20250819-084933-3bcbd851",
27
- "@abtnode/cron": "1.16.49-beta-20250819-084933-3bcbd851",
28
- "@abtnode/db-cache": "1.16.49-beta-20250819-084933-3bcbd851",
29
- "@abtnode/docker-utils": "1.16.49-beta-20250819-084933-3bcbd851",
30
- "@abtnode/logger": "1.16.49-beta-20250819-084933-3bcbd851",
31
- "@abtnode/models": "1.16.49-beta-20250819-084933-3bcbd851",
32
- "@abtnode/queue": "1.16.49-beta-20250819-084933-3bcbd851",
33
- "@abtnode/rbac": "1.16.49-beta-20250819-084933-3bcbd851",
34
- "@abtnode/router-provider": "1.16.49-beta-20250819-084933-3bcbd851",
35
- "@abtnode/static-server": "1.16.49-beta-20250819-084933-3bcbd851",
36
- "@abtnode/timemachine": "1.16.49-beta-20250819-084933-3bcbd851",
37
- "@abtnode/util": "1.16.49-beta-20250819-084933-3bcbd851",
38
- "@aigne/aigne-hub": "^0.6.4",
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",
39
38
  "@arcblock/did": "1.22.2",
40
39
  "@arcblock/did-connect-js": "1.22.2",
41
40
  "@arcblock/did-ext": "1.22.2",
@@ -46,15 +45,16 @@
46
45
  "@arcblock/pm2-events": "^0.0.5",
47
46
  "@arcblock/validator": "1.22.2",
48
47
  "@arcblock/vc": "1.22.2",
49
- "@blocklet/constant": "1.16.49-beta-20250819-084933-3bcbd851",
50
- "@blocklet/did-space-js": "^1.1.17",
51
- "@blocklet/env": "1.16.49-beta-20250819-084933-3bcbd851",
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-20250819-084933-3bcbd851",
54
- "@blocklet/resolver": "1.16.49-beta-20250819-084933-3bcbd851",
55
- "@blocklet/sdk": "1.16.49-beta-20250819-084933-3bcbd851",
56
- "@blocklet/store": "1.16.49-beta-20250819-084933-3bcbd851",
57
- "@blocklet/theme": "^3.1.23",
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
59
  "@ocap/mcrypto": "1.22.2",
60
60
  "@ocap/util": "1.22.2",
@@ -118,5 +118,5 @@
118
118
  "jest": "^29.7.0",
119
119
  "unzipper": "^0.10.11"
120
120
  },
121
- "gitHead": "b8bbf2279e9a29bd58eac7b66e1db16e851a183c"
121
+ "gitHead": "4fdd3b0cfb87b45ff8c0d539f83c3ddcbd71465b"
122
122
  }