@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.
- package/lib/api/team.js +8 -2
- package/lib/blocklet/downloader/blocklet-downloader.js +2 -2
- package/lib/blocklet/manager/disk.js +32 -32
- package/lib/blocklet/manager/ensure-blocklet-running.js +8 -29
- package/lib/blocklet/manager/helper/install-application-from-backup.js +2 -2
- package/lib/blocklet/manager/helper/install-component-from-upload.js +1 -0
- package/lib/blocklet/migration-dist/migration.cjs +7 -2
- package/lib/blocklet/project/publish-to-endpoint.js +1 -1
- package/lib/blocklet/project/util.js +1 -1
- package/lib/blocklet/storage/backup/base.js +1 -1
- package/lib/blocklet/storage/backup/blocklet-extras.js +4 -4
- package/lib/blocklet/storage/backup/blocklet.js +3 -3
- package/lib/blocklet/storage/backup/blocklets.js +1 -1
- package/lib/blocklet/storage/backup/disk.js +1 -1
- package/lib/blocklet/storage/backup/spaces.js +2 -2
- package/lib/blocklet/storage/restore/blocklet-extras.js +5 -5
- package/lib/blocklet/storage/restore/blocklet.js +3 -3
- package/lib/blocklet/storage/restore/spaces.js +1 -1
- package/lib/crons/rotate-pm2-logs/script.js +1 -1
- package/lib/event/auto-backup-handler.js +1 -1
- package/lib/event/index.js +2 -2
- package/lib/migrations/1.0.22-max-memory.js +2 -6
- package/lib/monitor/node-runtime-monitor.js +1 -1
- package/lib/router/helper.js +1 -1
- package/lib/states/audit-log.js +1 -1
- package/lib/states/backup.js +7 -3
- package/lib/states/blocklet.js +1 -1
- package/lib/states/node.js +3 -3
- package/lib/util/aigne-verify.js +3 -0
- package/lib/util/blocklet.js +6 -5
- package/lib/util/docker/docker-container-prune.js +1 -1
- package/lib/util/docker/ensure-docker-postgres.js +2 -1
- package/lib/util/spaces.js +1 -1
- 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
|
-
|
|
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('@
|
|
194
|
-
* skipList: Array<import('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
1172
|
+
* @param {import('@blocklet/server-js').RequestBlockletInput} param0
|
|
1173
1173
|
* @param {Record<string, any>} context
|
|
1174
|
-
* @returns {import('@
|
|
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('@
|
|
2522
|
-
* spaceGateway: import('@
|
|
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('@
|
|
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('@
|
|
2571
|
-
* spaceGateway: import('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
2708
|
-
* @return {Promise<import('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
2756
|
-
* @return {Promise<import('@
|
|
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('@
|
|
2766
|
-
* @return {Promise<Array<import('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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;
|
|
@@ -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/
|
|
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('@
|
|
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('@
|
|
12
|
+
* @param {import('@blocklet/server-js').BlockletState} blocklet
|
|
13
13
|
* @param {{
|
|
14
14
|
* id: string;
|
|
15
15
|
* blockletLogo?: string;
|
|
@@ -23,12 +23,12 @@ class BlockletExtrasBackup extends BaseBackup {
|
|
|
23
23
|
/**
|
|
24
24
|
*
|
|
25
25
|
* @description
|
|
26
|
-
* @return {Promise<import('@
|
|
26
|
+
* @return {Promise<import('@blocklet/server-js').BlockletState>}
|
|
27
27
|
* @memberof BlockletExtrasBackup
|
|
28
28
|
*/
|
|
29
29
|
async getBlockletExtra() {
|
|
30
30
|
/**
|
|
31
|
-
* @type {import('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
49
|
+
* @param {import('@blocklet/server-js').BlockletState} blocklet
|
|
50
50
|
* @returns {Array<{name: string, version: string, tarball: string}>}
|
|
51
51
|
* @memberof BlockletsBackup
|
|
52
52
|
*/
|
|
@@ -65,7 +65,7 @@ class SpacesBackup extends BaseBackup {
|
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
67
|
* @description blocklet state 对象
|
|
68
|
-
* @type {import('@
|
|
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('@
|
|
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('@
|
|
21
|
+
* @return {import('@blocklet/server-js').BlockletState}
|
|
22
22
|
* @memberof BlockletExtrasRestore
|
|
23
23
|
*/
|
|
24
24
|
getExtras() {
|
|
25
25
|
/**
|
|
26
|
-
* @type {import('@
|
|
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('@
|
|
35
|
-
* @returns {import('@
|
|
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('@
|
|
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('@
|
|
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('@
|
|
31
|
-
* @return {import('@
|
|
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('@
|
|
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('@
|
|
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) {
|
package/lib/event/index.js
CHANGED
|
@@ -282,7 +282,7 @@ module.exports = ({
|
|
|
282
282
|
*/
|
|
283
283
|
const handleBlockletEvent = async (eventName, payload) => {
|
|
284
284
|
/**
|
|
285
|
-
* @type {import('@
|
|
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('@
|
|
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:
|
|
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
|
|
package/lib/router/helper.js
CHANGED
|
@@ -473,7 +473,7 @@ const ensureCorsForWebWallet = async (sites) => {
|
|
|
473
473
|
/**
|
|
474
474
|
* @description
|
|
475
475
|
* @param {Array<any>} [sites=[]]
|
|
476
|
-
* @param {Array<import('@
|
|
476
|
+
* @param {Array<import('@blocklet/server-js').BlockletState>} blocklets
|
|
477
477
|
* @return {Promise<any>}
|
|
478
478
|
*/
|
|
479
479
|
const ensureCorsForDidSpace = (sites = [], blocklets) => {
|
package/lib/states/audit-log.js
CHANGED
|
@@ -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('@
|
|
22
|
+
* @param {import('@blocklet/server-js').BlockletState} blocklet
|
|
23
23
|
* @param {{
|
|
24
24
|
* routing: { adminPath: string }
|
|
25
25
|
* }} info
|
package/lib/states/backup.js
CHANGED
|
@@ -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
|
-
|
|
203
|
-
|
|
204
|
-
|
|
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 = {
|
package/lib/states/blocklet.js
CHANGED
|
@@ -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('@
|
|
168
|
+
* @return {Promise<import('@blocklet/server-js').BlockletState>}
|
|
169
169
|
* @memberof BlockletState
|
|
170
170
|
*/
|
|
171
171
|
async getBlocklet(did, { decryptSk = true } = {}) {
|
package/lib/states/node.js
CHANGED
|
@@ -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('@
|
|
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 =
|
|
168
|
+
doc.runtimeConfig.proxyMaxMemoryLimit = BLOCKLET_MAX_MEM_LIMIT_IN_MB;
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
return doc;
|
package/lib/util/aigne-verify.js
CHANGED
|
@@ -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);
|
package/lib/util/blocklet.js
CHANGED
|
@@ -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('@
|
|
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
|
|
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('@
|
|
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('@
|
|
2507
|
+
* @param {import('@blocklet/server-js').BlockletState} blocklet
|
|
2507
2508
|
* @returns {boolean}
|
|
2508
2509
|
*/
|
|
2509
2510
|
const isDevelopmentMode = (blocklet) => blocklet?.mode === BLOCKLET_MODES.DEVELOPMENT;
|
|
@@ -45,7 +45,8 @@ async function _ensureDockerPostgres(dataDir, name = 'abtnode-postgres', port =
|
|
|
45
45
|
return '';
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
|
|
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
|
}
|
package/lib/util/spaces.js
CHANGED
|
@@ -7,7 +7,7 @@ const { joinURL, withQuery } = require('ufo');
|
|
|
7
7
|
|
|
8
8
|
/**
|
|
9
9
|
* @description
|
|
10
|
-
* @param {import('@
|
|
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-
|
|
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-
|
|
23
|
-
"@abtnode/auth": "1.16.49-beta-
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.49-beta-
|
|
25
|
-
"@abtnode/
|
|
26
|
-
"@abtnode/
|
|
27
|
-
"@abtnode/
|
|
28
|
-
"@abtnode/
|
|
29
|
-
"@abtnode/
|
|
30
|
-
"@abtnode/
|
|
31
|
-
"@abtnode/
|
|
32
|
-
"@abtnode/
|
|
33
|
-
"@abtnode/
|
|
34
|
-
"@abtnode/
|
|
35
|
-
"@abtnode/
|
|
36
|
-
"@abtnode/
|
|
37
|
-
"@
|
|
38
|
-
"@
|
|
39
|
-
"@arcblock/did": "1.
|
|
40
|
-
"@arcblock/did-
|
|
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.
|
|
44
|
-
"@arcblock/event-hub": "1.
|
|
45
|
-
"@arcblock/jwt": "1.
|
|
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.
|
|
48
|
-
"@arcblock/vc": "1.
|
|
49
|
-
"@blocklet/constant": "1.16.49-beta-
|
|
50
|
-
"@blocklet/did-space-js": "^1.1.
|
|
51
|
-
"@blocklet/env": "1.16.49-beta-
|
|
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-
|
|
54
|
-
"@blocklet/resolver": "1.16.49-beta-
|
|
55
|
-
"@blocklet/sdk": "1.16.49-beta-
|
|
56
|
-
"@blocklet/
|
|
57
|
-
"@blocklet/
|
|
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.
|
|
60
|
-
"@ocap/util": "1.
|
|
61
|
-
"@ocap/wallet": "1.
|
|
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": "
|
|
121
|
+
"gitHead": "4fdd3b0cfb87b45ff8c0d539f83c3ddcbd71465b"
|
|
122
122
|
}
|