@abtnode/core 1.16.52-beta-20251005-235515-42ad5caf → 1.16.52-beta-20251008-091027-c46c73e3
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 +30 -16
- package/lib/blocklet/manager/disk.js +23 -9
- package/lib/blocklet/manager/helper/blue-green-start-blocklet.js +110 -101
- package/lib/blocklet/migration-dist/migration.cjs +457 -456
- package/lib/states/blocklet.js +7 -6
- package/lib/states/org.js +13 -11
- package/lib/util/blocklet.js +43 -38
- package/package.json +25 -24
package/lib/states/blocklet.js
CHANGED
|
@@ -482,12 +482,13 @@ class BlockletState extends BaseState {
|
|
|
482
482
|
|
|
483
483
|
await forEachComponentV2(blocklet, async (component) => {
|
|
484
484
|
if (!shouldSkipComponent(component.meta.did, componentDids)) {
|
|
485
|
-
component[isGreen ? 'greenPorts' : 'ports']
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
485
|
+
let oldPorts = component[isGreen ? 'greenPorts' : 'ports'];
|
|
486
|
+
if (!oldPorts || Object.keys(oldPorts).length === 0) {
|
|
487
|
+
oldPorts = component.ports;
|
|
488
|
+
}
|
|
489
|
+
component[isGreen ? 'greenPorts' : 'ports'] = await refreshPorts(oldPorts, {
|
|
490
|
+
blackList: [...occupiedExternalPorts.keys(), ...occupiedInternalPorts.keys()],
|
|
491
|
+
});
|
|
491
492
|
}
|
|
492
493
|
});
|
|
493
494
|
|
package/lib/states/org.js
CHANGED
|
@@ -167,21 +167,23 @@ class OrgState extends BaseState {
|
|
|
167
167
|
|
|
168
168
|
// @FIXME: LiuShuang 这里没必要返回 owner 的信息, 可以直接通过 ownerDid 查询 owner 的信息
|
|
169
169
|
const result = await this.paginate({ where, replacements }, { updatedAt: -1 }, paging);
|
|
170
|
+
const { includeMembers = true, includePassports = true } = payload.options || {};
|
|
171
|
+
if (includeMembers) {
|
|
172
|
+
// 查询每个 org 中的用户信息, 在org 列表页没必要查询全部
|
|
173
|
+
const orgMembers = await Promise.all(
|
|
174
|
+
result.list.map((org) => this.getOrgMembers({ orgId: org.id, paging: { page: 1, pageSize: 5 } }, context))
|
|
175
|
+
);
|
|
170
176
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const itme = orgMembers[index];
|
|
178
|
-
org.members = itme.users;
|
|
179
|
-
org.membersCount = itme.paging.total;
|
|
180
|
-
});
|
|
177
|
+
result.list.forEach((org, index) => {
|
|
178
|
+
const item = orgMembers[index];
|
|
179
|
+
org.members = item.users;
|
|
180
|
+
org.membersCount = item.paging.total;
|
|
181
|
+
});
|
|
182
|
+
}
|
|
181
183
|
|
|
182
184
|
// 查询用户的 passport
|
|
183
185
|
let passports = [];
|
|
184
|
-
if (['joined', 'all'].includes(payload.type)) {
|
|
186
|
+
if (['joined', 'all'].includes(payload.type) && includePassports) {
|
|
185
187
|
passports = await this.passport.find({
|
|
186
188
|
where: { userDid: quertUserDid },
|
|
187
189
|
});
|
package/lib/util/blocklet.js
CHANGED
|
@@ -56,7 +56,7 @@ const {
|
|
|
56
56
|
filterRequiredComponents,
|
|
57
57
|
} = require('@blocklet/resolver');
|
|
58
58
|
const formatBackSlash = require('@abtnode/util/lib/format-back-slash');
|
|
59
|
-
const {
|
|
59
|
+
const { killProcessOccupiedPorts, isPortTaken } = require('@abtnode/util/lib/port');
|
|
60
60
|
const { getComponentApiKey } = require('@abtnode/util/lib/blocklet');
|
|
61
61
|
const { toSvg: createDidLogo } = require('@arcblock/did-motif');
|
|
62
62
|
const { createBlockiesSvg } = require('@blocklet/meta/lib/blockies');
|
|
@@ -2337,56 +2337,61 @@ const shouldSkipComponent = (componentDid, whiteList) => {
|
|
|
2337
2337
|
return !arr.includes(componentDid);
|
|
2338
2338
|
};
|
|
2339
2339
|
|
|
2340
|
-
const
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
}
|
|
2340
|
+
const ensurePortsShape = (states, portsA, portsB) => {
|
|
2341
|
+
if (!portsA || Object.keys(portsA).length === 0) {
|
|
2342
|
+
return;
|
|
2343
|
+
}
|
|
2344
|
+
if (Object.keys(portsB).length === 0) {
|
|
2345
|
+
for (const key of Object.keys(portsA)) {
|
|
2346
|
+
portsB[key] = portsA[key];
|
|
2347
|
+
}
|
|
2348
|
+
}
|
|
2349
|
+
};
|
|
2350
|
+
|
|
2351
|
+
const ensureAppPortsNotOccupied = async ({ blocklet, componentDids: inputDids, states, manager, isGreen = false }) => {
|
|
2348
2352
|
const { did } = blocklet.meta;
|
|
2349
|
-
const
|
|
2353
|
+
const occupiedDids = new Set();
|
|
2354
|
+
|
|
2350
2355
|
await forEachComponentV2(blocklet, async (b) => {
|
|
2351
2356
|
try {
|
|
2352
|
-
if (shouldSkipComponent(b.meta.did, inputDids))
|
|
2353
|
-
|
|
2357
|
+
if (shouldSkipComponent(b.meta.did, inputDids)) return;
|
|
2358
|
+
|
|
2359
|
+
if (!b.greenPorts) {
|
|
2360
|
+
b.greenPorts = {};
|
|
2354
2361
|
}
|
|
2355
|
-
const {
|
|
2356
|
-
|
|
2362
|
+
const { ports = {}, greenPorts } = b;
|
|
2363
|
+
ensurePortsShape(states, ports, greenPorts);
|
|
2364
|
+
|
|
2365
|
+
const targetPorts = isGreen ? greenPorts : ports;
|
|
2357
2366
|
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
}
|
|
2364
|
-
) {
|
|
2365
|
-
dids.add(b.meta.did);
|
|
2367
|
+
let currentOccupied = false;
|
|
2368
|
+
for (const port of Object.values(targetPorts)) {
|
|
2369
|
+
currentOccupied = await isPortTaken(port);
|
|
2370
|
+
if (currentOccupied) {
|
|
2371
|
+
break;
|
|
2372
|
+
}
|
|
2366
2373
|
}
|
|
2367
|
-
|
|
2368
|
-
|
|
2369
|
-
|
|
2370
|
-
pm2ProcessId: !isGreen ? `${processId}-green` : processId,
|
|
2371
|
-
printError: logger.error.bind(logger),
|
|
2372
|
-
})
|
|
2373
|
-
) {
|
|
2374
|
-
dids.add(b.meta.did);
|
|
2374
|
+
|
|
2375
|
+
if (currentOccupied) {
|
|
2376
|
+
occupiedDids.add(b.meta.did);
|
|
2375
2377
|
}
|
|
2376
2378
|
} catch (error) {
|
|
2377
|
-
logger.error('Failed to check ports occupied', { error });
|
|
2379
|
+
logger.error('Failed to check ports occupied', { error, blockletDid: b.meta.did, isGreen });
|
|
2378
2380
|
}
|
|
2379
2381
|
});
|
|
2380
2382
|
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
await states.blocklet.refreshBlockletPorts(did, componentDids, isGreen);
|
|
2385
|
-
logger.info('refresh component ports', { did, componentDids });
|
|
2386
|
-
await manager._updateBlockletEnvironment(did);
|
|
2387
|
-
newBlocklet = await manager.ensureBlocklet(did);
|
|
2383
|
+
if (occupiedDids.size === 0) {
|
|
2384
|
+
logger.info('No occupied ports detected, no refresh needed');
|
|
2385
|
+
return blocklet;
|
|
2388
2386
|
}
|
|
2389
2387
|
|
|
2388
|
+
const componentDids = Array.from(occupiedDids);
|
|
2389
|
+
await states.blocklet.refreshBlockletPorts(did, componentDids, isGreen);
|
|
2390
|
+
logger.info('Refreshed component ports due to conflict', { did, componentDids });
|
|
2391
|
+
|
|
2392
|
+
await manager._updateBlockletEnvironment(did);
|
|
2393
|
+
const newBlocklet = await manager.ensureBlocklet(did);
|
|
2394
|
+
|
|
2390
2395
|
return newBlocklet;
|
|
2391
2396
|
};
|
|
2392
2397
|
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.52-beta-
|
|
6
|
+
"version": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
7
7
|
"description": "",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -14,27 +14,28 @@
|
|
|
14
14
|
"lint:fix": "eslint --fix tests lib",
|
|
15
15
|
"test": "node tools/jest.js",
|
|
16
16
|
"test:disk": "CI=true npm run test tests/blocklet/manager/disk.spec.js",
|
|
17
|
+
"test:blue": "CI=true npm run test tests/blocklet/manager/disk-blue-green.spec.js",
|
|
17
18
|
"coverage": "npm run test -- --coverage"
|
|
18
19
|
},
|
|
19
20
|
"keywords": [],
|
|
20
21
|
"author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
|
|
21
22
|
"license": "Apache-2.0",
|
|
22
23
|
"dependencies": {
|
|
23
|
-
"@abtnode/analytics": "1.16.52-beta-
|
|
24
|
-
"@abtnode/auth": "1.16.52-beta-
|
|
25
|
-
"@abtnode/certificate-manager": "1.16.52-beta-
|
|
26
|
-
"@abtnode/constant": "1.16.52-beta-
|
|
27
|
-
"@abtnode/cron": "1.16.52-beta-
|
|
28
|
-
"@abtnode/db-cache": "1.16.52-beta-
|
|
29
|
-
"@abtnode/docker-utils": "1.16.52-beta-
|
|
30
|
-
"@abtnode/logger": "1.16.52-beta-
|
|
31
|
-
"@abtnode/models": "1.16.52-beta-
|
|
32
|
-
"@abtnode/queue": "1.16.52-beta-
|
|
33
|
-
"@abtnode/rbac": "1.16.52-beta-
|
|
34
|
-
"@abtnode/router-provider": "1.16.52-beta-
|
|
35
|
-
"@abtnode/static-server": "1.16.52-beta-
|
|
36
|
-
"@abtnode/timemachine": "1.16.52-beta-
|
|
37
|
-
"@abtnode/util": "1.16.52-beta-
|
|
24
|
+
"@abtnode/analytics": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
25
|
+
"@abtnode/auth": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
26
|
+
"@abtnode/certificate-manager": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
27
|
+
"@abtnode/constant": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
28
|
+
"@abtnode/cron": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
29
|
+
"@abtnode/db-cache": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
30
|
+
"@abtnode/docker-utils": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
31
|
+
"@abtnode/logger": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
32
|
+
"@abtnode/models": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
33
|
+
"@abtnode/queue": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
34
|
+
"@abtnode/rbac": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
35
|
+
"@abtnode/router-provider": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
36
|
+
"@abtnode/static-server": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
37
|
+
"@abtnode/timemachine": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
38
|
+
"@abtnode/util": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
38
39
|
"@aigne/aigne-hub": "^0.10.0",
|
|
39
40
|
"@arcblock/did": "1.25.6",
|
|
40
41
|
"@arcblock/did-connect-js": "1.25.6",
|
|
@@ -46,15 +47,15 @@
|
|
|
46
47
|
"@arcblock/pm2-events": "^0.0.5",
|
|
47
48
|
"@arcblock/validator": "1.25.6",
|
|
48
49
|
"@arcblock/vc": "1.25.6",
|
|
49
|
-
"@blocklet/constant": "1.16.52-beta-
|
|
50
|
+
"@blocklet/constant": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
50
51
|
"@blocklet/did-space-js": "^1.1.29",
|
|
51
|
-
"@blocklet/env": "1.16.52-beta-
|
|
52
|
+
"@blocklet/env": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
52
53
|
"@blocklet/error": "^0.2.5",
|
|
53
|
-
"@blocklet/meta": "1.16.52-beta-
|
|
54
|
-
"@blocklet/resolver": "1.16.52-beta-
|
|
55
|
-
"@blocklet/sdk": "1.16.52-beta-
|
|
56
|
-
"@blocklet/server-js": "1.16.52-beta-
|
|
57
|
-
"@blocklet/store": "1.16.52-beta-
|
|
54
|
+
"@blocklet/meta": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
55
|
+
"@blocklet/resolver": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
56
|
+
"@blocklet/sdk": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
57
|
+
"@blocklet/server-js": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
58
|
+
"@blocklet/store": "1.16.52-beta-20251008-091027-c46c73e3",
|
|
58
59
|
"@blocklet/theme": "^3.1.45",
|
|
59
60
|
"@fidm/x509": "^1.2.1",
|
|
60
61
|
"@ocap/mcrypto": "1.25.6",
|
|
@@ -119,5 +120,5 @@
|
|
|
119
120
|
"jest": "^29.7.0",
|
|
120
121
|
"unzipper": "^0.10.11"
|
|
121
122
|
},
|
|
122
|
-
"gitHead": "
|
|
123
|
+
"gitHead": "2a8d239f019aece938d909a495ff1c54ad0e87a9"
|
|
123
124
|
}
|