@abtnode/core 1.16.44-beta-20250529-223630-10e16ac8 → 1.16.44-beta-20250601-083116-288e5ea5
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.
|
@@ -26,6 +26,7 @@ const { sendToUser } = require('@blocklet/sdk/lib/util/send-notification');
|
|
|
26
26
|
const { getDidDomainForBlocklet } = require('@abtnode/util/lib/get-domain-for-blocklet');
|
|
27
27
|
const logger = require('@abtnode/logger')('@abtnode/core:blocklet:manager');
|
|
28
28
|
const promiseSpawn = require('@abtnode/util/lib/promise-spawn');
|
|
29
|
+
const { sanitizeTag } = require('@abtnode/util/lib/sanitize');
|
|
29
30
|
|
|
30
31
|
const {
|
|
31
32
|
BLOCKLET_INSTALL_TYPE,
|
|
@@ -237,7 +238,6 @@ const ensureBlockletRunning = require('./ensure-blocklet-running');
|
|
|
237
238
|
const { transformNotification } = require('../../util/notification');
|
|
238
239
|
const { generateUserUpdateData } = require('../../util/user');
|
|
239
240
|
const { blockletThemeSchema } = require('../../validators/theme');
|
|
240
|
-
const checkDNS = require('../../util/check-dns.js');
|
|
241
241
|
const { removeDockerNetwork } = require('../../util/docker/docker-network.js');
|
|
242
242
|
const parseDockerName = require('../../util/docker/parse-docker-name.js');
|
|
243
243
|
|
|
@@ -341,6 +341,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
341
341
|
nodeAPI,
|
|
342
342
|
teamAPI,
|
|
343
343
|
certManager,
|
|
344
|
+
routerManager,
|
|
344
345
|
}) {
|
|
345
346
|
super();
|
|
346
347
|
|
|
@@ -358,6 +359,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
358
359
|
this.resendNotificationQueue = resendNotificationQueue;
|
|
359
360
|
this.teamManager = teamManager;
|
|
360
361
|
this.certManager = certManager;
|
|
362
|
+
this.routerManager = routerManager;
|
|
361
363
|
/**
|
|
362
364
|
* @type {import('../../api/node')}
|
|
363
365
|
*/
|
|
@@ -1664,6 +1666,12 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
1664
1666
|
throw new Error('configs list is not an array');
|
|
1665
1667
|
}
|
|
1666
1668
|
|
|
1669
|
+
// 对用户输入的配置进行 XSS 清理
|
|
1670
|
+
const sanitizedConfigs = newConfigs.map((c) => ({
|
|
1671
|
+
...c,
|
|
1672
|
+
value: sanitizeTag(c.value),
|
|
1673
|
+
}));
|
|
1674
|
+
|
|
1667
1675
|
const tmpDids = Array.isArray(did) ? did : [did];
|
|
1668
1676
|
const [rootDid, childDid] = tmpDids;
|
|
1669
1677
|
const rootMetaDid = await states.blocklet.getBlockletMetaDid(rootDid);
|
|
@@ -1682,7 +1690,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
1682
1690
|
|
|
1683
1691
|
const configObj = {};
|
|
1684
1692
|
const ignoredKeys = [];
|
|
1685
|
-
for (const x of
|
|
1693
|
+
for (const x of sanitizedConfigs) {
|
|
1686
1694
|
if (['CHAIN_TYPE', 'BLOCKLET_APP_CHAIN_TYPE'].includes(x.key)) {
|
|
1687
1695
|
throw new Error(`${x.key} should not be changed`);
|
|
1688
1696
|
} else if (x.custom === true) {
|
|
@@ -1715,7 +1723,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
1715
1723
|
configObj[x.key] = x.value;
|
|
1716
1724
|
}
|
|
1717
1725
|
|
|
1718
|
-
const finalConfigs =
|
|
1726
|
+
const finalConfigs = sanitizedConfigs.filter((x) => !ignoredKeys.includes(x.key));
|
|
1719
1727
|
const willAppSkChange = isRotatingAppSk(finalConfigs, blocklet.configs, blocklet.externalSk);
|
|
1720
1728
|
|
|
1721
1729
|
// NOTICE: cannot use appDid as did param because appDid will become old appDid in alsoKnownAs and cannot get blocklet by the old appDid
|
|
@@ -2348,12 +2356,18 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
2348
2356
|
|
|
2349
2357
|
await Promise.all(
|
|
2350
2358
|
customAliases.map(async (alias) => {
|
|
2351
|
-
const dns = await
|
|
2359
|
+
const dns = await this.routerManager.checkDomainDNS(alias.value, cnameDomain?.value);
|
|
2352
2360
|
logger.info('dns info', { dns });
|
|
2353
2361
|
if (!dns.isDnsResolved || !dns.isCnameMatch) {
|
|
2354
2362
|
return;
|
|
2355
2363
|
}
|
|
2356
2364
|
|
|
2365
|
+
const foundCert = await this.routerManager.getHttpsCert({ domain: alias.value });
|
|
2366
|
+
logger.info('cron check dns global certificate', { foundCert: !!foundCert, domain: alias.value });
|
|
2367
|
+
if (foundCert) {
|
|
2368
|
+
return;
|
|
2369
|
+
}
|
|
2370
|
+
|
|
2357
2371
|
if (!alias.certificateId) {
|
|
2358
2372
|
logger.info('cron check dns no certificate');
|
|
2359
2373
|
await issueCert(alias);
|
|
@@ -5162,7 +5176,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
5162
5176
|
async getDomainDNS({ teamDid, domain }) {
|
|
5163
5177
|
const blocklet = await this.getBlocklet(teamDid);
|
|
5164
5178
|
const cnameDomain = (get(blocklet, 'site.domainAliases') || []).find((item) => isDidDomain(item.value));
|
|
5165
|
-
return
|
|
5179
|
+
return this.routerManager.checkDomainDNS(domain, cnameDomain?.value);
|
|
5166
5180
|
}
|
|
5167
5181
|
}
|
|
5168
5182
|
|
|
@@ -38885,7 +38885,7 @@ module.exports = require("zlib");
|
|
|
38885
38885
|
/***/ ((module) => {
|
|
38886
38886
|
|
|
38887
38887
|
"use strict";
|
|
38888
|
-
module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.43","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib","test":"node tools/jest.js","coverage":"npm run test -- --coverage"},"keywords":[],"author":"wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)","license":"Apache-2.0","dependencies":{"@abtnode/analytics":"1.16.43","@abtnode/auth":"1.16.43","@abtnode/certificate-manager":"1.16.43","@abtnode/client":"1.16.43","@abtnode/constant":"1.16.43","@abtnode/cron":"1.16.43","@abtnode/docker-utils":"1.16.43","@abtnode/logger":"1.16.43","@abtnode/models":"1.16.43","@abtnode/queue":"1.16.43","@abtnode/rbac":"1.16.43","@abtnode/router-provider":"1.16.43","@abtnode/static-server":"1.16.43","@abtnode/timemachine":"1.16.43","@abtnode/util":"1.16.43","@arcblock/did":"1.20.11","@arcblock/did-auth":"1.20.11","@arcblock/did-ext":"1.20.11","@arcblock/did-motif":"^1.1.13","@arcblock/did-util":"1.20.11","@arcblock/event-hub":"1.20.11","@arcblock/jwt":"1.20.11","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"1.20.11","@arcblock/vc":"1.20.11","@blocklet/constant":"1.16.43","@blocklet/did-space-js":"^1.0.56","@blocklet/env":"1.16.43","@blocklet/error":"^0.2.
|
|
38888
|
+
module.exports = /*#__PURE__*/JSON.parse('{"name":"@abtnode/core","publishConfig":{"access":"public"},"version":"1.16.43","description":"","main":"lib/index.js","files":["lib"],"scripts":{"lint":"eslint tests lib --ignore-pattern \'tests/assets/*\'","lint:fix":"eslint --fix tests lib","test":"node tools/jest.js","coverage":"npm run test -- --coverage"},"keywords":[],"author":"wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)","license":"Apache-2.0","dependencies":{"@abtnode/analytics":"1.16.43","@abtnode/auth":"1.16.43","@abtnode/certificate-manager":"1.16.43","@abtnode/client":"1.16.43","@abtnode/constant":"1.16.43","@abtnode/cron":"1.16.43","@abtnode/docker-utils":"1.16.43","@abtnode/logger":"1.16.43","@abtnode/models":"1.16.43","@abtnode/queue":"1.16.43","@abtnode/rbac":"1.16.43","@abtnode/router-provider":"1.16.43","@abtnode/static-server":"1.16.43","@abtnode/timemachine":"1.16.43","@abtnode/util":"1.16.43","@arcblock/did":"1.20.11","@arcblock/did-auth":"1.20.11","@arcblock/did-ext":"1.20.11","@arcblock/did-motif":"^1.1.13","@arcblock/did-util":"1.20.11","@arcblock/event-hub":"1.20.11","@arcblock/jwt":"1.20.11","@arcblock/pm2-events":"^0.0.5","@arcblock/validator":"1.20.11","@arcblock/vc":"1.20.11","@blocklet/constant":"1.16.43","@blocklet/did-space-js":"^1.0.56","@blocklet/env":"1.16.43","@blocklet/error":"^0.2.5","@blocklet/meta":"1.16.43","@blocklet/resolver":"1.16.43","@blocklet/sdk":"1.16.43","@blocklet/store":"1.16.43","@blocklet/theme":"^2.13.57","@fidm/x509":"^1.2.1","@ocap/mcrypto":"1.20.11","@ocap/util":"1.20.11","@ocap/wallet":"1.20.11","@slack/webhook":"^5.0.4","archiver":"^7.0.1","axios":"^1.7.9","axon":"^2.0.3","chalk":"^4.1.2","cross-spawn":"^7.0.3","dayjs":"^1.11.13","deep-diff":"^1.0.2","detect-port":"^1.5.1","envfile":"^7.1.0","escape-string-regexp":"^4.0.0","fast-glob":"^3.3.2","filesize":"^10.1.1","flat":"^5.0.2","fs-extra":"^11.2.0","get-port":"^5.1.1","hasha":"^5.2.2","is-base64":"^1.1.0","is-cidr":"4","is-ip":"3","is-url":"^1.2.4","joi":"17.12.2","joi-extension-semver":"^5.0.0","js-yaml":"^4.1.0","kill-port":"^2.0.1","lodash":"^4.17.21","lru-cache":"^11.0.2","node-stream-zip":"^1.15.0","p-all":"^3.0.0","p-limit":"^3.1.0","p-map":"^4.0.0","p-retry":"^4.6.2","p-wait-for":"^3.2.0","rate-limiter-flexible":"^5.0.5","read-last-lines":"^1.8.0","semver":"^7.6.3","sequelize":"^6.35.0","shelljs":"^0.8.5","slugify":"^1.6.6","ssri":"^8.0.1","stream-throttle":"^0.1.3","stream-to-promise":"^3.0.0","systeminformation":"^5.23.3","tail":"^2.2.4","tar":"^6.1.11","transliteration":"^2.3.5","ua-parser-js":"^1.0.2","ufo":"^1.5.3","uuid":"^9.0.1","valid-url":"^1.0.9","which":"^2.0.2","xbytes":"^1.8.0"},"devDependencies":{"expand-tilde":"^2.0.2","express":"^4.18.2","jest":"^29.7.0","unzipper":"^0.10.11"},"gitHead":"e5764f753181ed6a7c615cd4fc6682aacf0cb7cd"}');
|
|
38889
38889
|
|
|
38890
38890
|
/***/ }),
|
|
38891
38891
|
|
package/lib/index.js
CHANGED
package/lib/router/manager.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* Router manager is the business logic layer of router related, includes:
|
|
5
5
|
* RoutingRuleState, HttpsCertState
|
|
6
6
|
*/
|
|
7
|
+
const https = require('https');
|
|
7
8
|
const path = require('path');
|
|
8
9
|
const os = require('os');
|
|
9
10
|
const dns = require('dns');
|
|
@@ -22,7 +23,7 @@ const { getProvider } = require('@abtnode/router-provider');
|
|
|
22
23
|
const checkDomainMatch = require('@abtnode/util/lib/check-domain-match');
|
|
23
24
|
const { isDidDomain, isCustomDomain } = require('@abtnode/util/lib/url-evaluation');
|
|
24
25
|
const { isTopLevelDomain } = require('@abtnode/util/lib/domain');
|
|
25
|
-
const { EVENTS } = require('@abtnode/constant');
|
|
26
|
+
const { EVENTS, WELLKNOWN_PING_PREFIX } = require('@abtnode/constant');
|
|
26
27
|
const {
|
|
27
28
|
DOMAIN_FOR_IP_SITE,
|
|
28
29
|
DOMAIN_FOR_DEFAULT_SITE,
|
|
@@ -342,12 +343,41 @@ class RouterManager extends EventEmitter {
|
|
|
342
343
|
|
|
343
344
|
if (issueCert) {
|
|
344
345
|
const didDomain = doc.domainAliases.find((x) => isDidDomain(x.value));
|
|
345
|
-
const dnsValue = await
|
|
346
|
-
|
|
346
|
+
const [dnsValue, cert] = await Promise.all([
|
|
347
|
+
this.checkDomainDNS(domain, didDomain?.value),
|
|
348
|
+
this.getHttpsCert({ domain }),
|
|
349
|
+
]);
|
|
350
|
+
|
|
351
|
+
// 自定义域名如果 DNS 未解析成功 或 CNAME 不匹配 或 已配置证书,则不自动颁发证书
|
|
352
|
+
const shouldSkipCertIssue =
|
|
353
|
+
isCustomDomain(domain) && (!dnsValue.isDnsResolved || !dnsValue.isCnameMatch || !!cert);
|
|
354
|
+
|
|
355
|
+
if (shouldSkipCertIssue) {
|
|
356
|
+
const reasonFn = () => {
|
|
357
|
+
if (cert) {
|
|
358
|
+
return 'cert already exists';
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
if (!dnsValue.isDnsResolved) {
|
|
362
|
+
return 'DNS not resolved';
|
|
363
|
+
}
|
|
347
364
|
|
|
348
|
-
|
|
365
|
+
if (!dnsValue.isCnameMatch) {
|
|
366
|
+
return 'CNAME not match';
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
return 'unknown reason';
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
logger.info('skip cert issue for domain alias', {
|
|
373
|
+
cert,
|
|
374
|
+
domain,
|
|
375
|
+
dnsValue,
|
|
376
|
+
reason: reasonFn(),
|
|
377
|
+
});
|
|
378
|
+
} else {
|
|
349
379
|
this.certManager
|
|
350
|
-
.issue({ domain, did, siteId: id, inBlockletSetup }, { delay:
|
|
380
|
+
.issue({ domain, did, siteId: id, inBlockletSetup }, { delay: 3000 })
|
|
351
381
|
.then(() => {
|
|
352
382
|
logger.info('issue cert for domain alias', { domain, did });
|
|
353
383
|
})
|
|
@@ -635,6 +665,63 @@ class RouterManager extends EventEmitter {
|
|
|
635
665
|
return null;
|
|
636
666
|
}
|
|
637
667
|
|
|
668
|
+
checkDomainDNS(domain, cnameDomain) {
|
|
669
|
+
try {
|
|
670
|
+
if (isCustomDomain(domain)) {
|
|
671
|
+
return checkDNS(domain, cnameDomain);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
return Promise.resolve({
|
|
675
|
+
isDnsResolved: true,
|
|
676
|
+
hasCname: true,
|
|
677
|
+
cnameRecords: [cnameDomain],
|
|
678
|
+
isCnameMatch: true,
|
|
679
|
+
});
|
|
680
|
+
} catch (error) {
|
|
681
|
+
logger.error('check domain dns error', error?.message);
|
|
682
|
+
return Promise.resolve({
|
|
683
|
+
isDnsResolved: false,
|
|
684
|
+
hasCname: false,
|
|
685
|
+
cnameRecords: [],
|
|
686
|
+
isCnameMatch: false,
|
|
687
|
+
});
|
|
688
|
+
}
|
|
689
|
+
}
|
|
690
|
+
|
|
691
|
+
async getHttpsCert({ domain }) {
|
|
692
|
+
const matchedCert = await this.getMatchedCert(domain);
|
|
693
|
+
|
|
694
|
+
if (matchedCert) {
|
|
695
|
+
return matchedCert;
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
return new Promise((resolve) => {
|
|
699
|
+
const req = https.request(
|
|
700
|
+
{ host: domain, path: WELLKNOWN_PING_PREFIX, method: 'GET', timeout: 1000 * 10 },
|
|
701
|
+
(res) => {
|
|
702
|
+
try {
|
|
703
|
+
const data = res.socket.getPeerCertificate();
|
|
704
|
+
const cert = {
|
|
705
|
+
issuer: {
|
|
706
|
+
countryName: data.issuer.C,
|
|
707
|
+
organizationName: data.issuer.O,
|
|
708
|
+
commonName: data.issuer.CN,
|
|
709
|
+
},
|
|
710
|
+
validFrom: data.valid_from,
|
|
711
|
+
validTo: data.valid_to,
|
|
712
|
+
};
|
|
713
|
+
resolve(cert);
|
|
714
|
+
} catch {
|
|
715
|
+
resolve(null);
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
);
|
|
719
|
+
|
|
720
|
+
req.on('error', () => resolve(null));
|
|
721
|
+
req.end();
|
|
722
|
+
});
|
|
723
|
+
}
|
|
724
|
+
|
|
638
725
|
isCertMatchedDomain(cert, domain = '') {
|
|
639
726
|
return [cert.domain, ...(cert.sans || [])].some((d) => checkDomainMatch(d, domain));
|
|
640
727
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
const https = require('https');
|
|
2
1
|
const { EventEmitter } = require('events');
|
|
3
2
|
const logger = require('@abtnode/logger')('@abtnode/domain-status');
|
|
4
|
-
const { EVENTS
|
|
3
|
+
const { EVENTS } = require('@abtnode/constant');
|
|
5
4
|
const { BlockletEvents } = require('@blocklet/constant');
|
|
6
|
-
const {
|
|
5
|
+
const { isDidDomain } = require('@abtnode/util/lib/url-evaluation');
|
|
7
6
|
const { checkDomainDNS } = require('./index');
|
|
8
|
-
const checkDNS = require('./check-dns');
|
|
9
7
|
|
|
10
8
|
const dnsStatusStore = Object.create(null);
|
|
11
9
|
|
|
@@ -48,71 +46,6 @@ class DomainStatus extends EventEmitter {
|
|
|
48
46
|
this.states = states;
|
|
49
47
|
}
|
|
50
48
|
|
|
51
|
-
async getHttpsCert(domain) {
|
|
52
|
-
const matchedCert = await this.routerManager.getMatchedCert(domain);
|
|
53
|
-
|
|
54
|
-
if (matchedCert) {
|
|
55
|
-
return matchedCert;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return new Promise((resolve) => {
|
|
59
|
-
const req = https.request(
|
|
60
|
-
{
|
|
61
|
-
host: domain,
|
|
62
|
-
path: WELLKNOWN_PING_PREFIX,
|
|
63
|
-
method: 'GET',
|
|
64
|
-
timeout: 1000 * 10,
|
|
65
|
-
},
|
|
66
|
-
(res) => {
|
|
67
|
-
try {
|
|
68
|
-
const data = res.socket.getPeerCertificate();
|
|
69
|
-
const cert = {
|
|
70
|
-
issuer: {
|
|
71
|
-
countryName: data.issuer.C,
|
|
72
|
-
organizationName: data.issuer.O,
|
|
73
|
-
commonName: data.issuer.CN,
|
|
74
|
-
},
|
|
75
|
-
validFrom: data.valid_from,
|
|
76
|
-
validTo: data.valid_to,
|
|
77
|
-
};
|
|
78
|
-
resolve(cert);
|
|
79
|
-
} catch {
|
|
80
|
-
resolve(null);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
);
|
|
84
|
-
|
|
85
|
-
req.on('error', () => {
|
|
86
|
-
resolve(null);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
req.end();
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
checkDomainDNS(domain, cnameDomain) {
|
|
94
|
-
try {
|
|
95
|
-
if (isCustomDomain(domain)) {
|
|
96
|
-
return checkDNS(domain, cnameDomain);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
return Promise.resolve({
|
|
100
|
-
isDnsResolved: true,
|
|
101
|
-
hasCname: true,
|
|
102
|
-
cnameRecords: [cnameDomain],
|
|
103
|
-
isCnameMatch: true,
|
|
104
|
-
});
|
|
105
|
-
} catch (error) {
|
|
106
|
-
logger.error('check domain dns error', error?.message);
|
|
107
|
-
return Promise.resolve({
|
|
108
|
-
isDnsResolved: false,
|
|
109
|
-
hasCname: false,
|
|
110
|
-
cnameRecords: [],
|
|
111
|
-
isCnameMatch: false,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
49
|
async checkDomainsStatus({ domains, did } = {}) {
|
|
117
50
|
if (did) {
|
|
118
51
|
// eslint-disable-next-line no-param-reassign
|
|
@@ -122,8 +55,12 @@ class DomainStatus extends EventEmitter {
|
|
|
122
55
|
const cnameDomain = domains.find((x) => isDidDomain(x));
|
|
123
56
|
|
|
124
57
|
(domains || []).forEach((domain) => {
|
|
125
|
-
Promise.all([
|
|
126
|
-
.
|
|
58
|
+
Promise.all([
|
|
59
|
+
this.routerManager.getHttpsCert({ domain }),
|
|
60
|
+
this.routerManager.checkDomainDNS(domain, cnameDomain),
|
|
61
|
+
checkDomainDnsWrapper(domain),
|
|
62
|
+
])
|
|
63
|
+
.then(([matchedCert, dnsResolve, dns]) => {
|
|
127
64
|
const eventData = {
|
|
128
65
|
domain,
|
|
129
66
|
matchedCert,
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.44-beta-
|
|
6
|
+
"version": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
7
7
|
"description": "",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -19,21 +19,21 @@
|
|
|
19
19
|
"author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
|
|
20
20
|
"license": "Apache-2.0",
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@abtnode/analytics": "1.16.44-beta-
|
|
23
|
-
"@abtnode/auth": "1.16.44-beta-
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.44-beta-
|
|
25
|
-
"@abtnode/client": "1.16.44-beta-
|
|
26
|
-
"@abtnode/constant": "1.16.44-beta-
|
|
27
|
-
"@abtnode/cron": "1.16.44-beta-
|
|
28
|
-
"@abtnode/docker-utils": "1.16.44-beta-
|
|
29
|
-
"@abtnode/logger": "1.16.44-beta-
|
|
30
|
-
"@abtnode/models": "1.16.44-beta-
|
|
31
|
-
"@abtnode/queue": "1.16.44-beta-
|
|
32
|
-
"@abtnode/rbac": "1.16.44-beta-
|
|
33
|
-
"@abtnode/router-provider": "1.16.44-beta-
|
|
34
|
-
"@abtnode/static-server": "1.16.44-beta-
|
|
35
|
-
"@abtnode/timemachine": "1.16.44-beta-
|
|
36
|
-
"@abtnode/util": "1.16.44-beta-
|
|
22
|
+
"@abtnode/analytics": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
23
|
+
"@abtnode/auth": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
25
|
+
"@abtnode/client": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
26
|
+
"@abtnode/constant": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
27
|
+
"@abtnode/cron": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
28
|
+
"@abtnode/docker-utils": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
29
|
+
"@abtnode/logger": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
30
|
+
"@abtnode/models": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
31
|
+
"@abtnode/queue": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
32
|
+
"@abtnode/rbac": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
33
|
+
"@abtnode/router-provider": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
34
|
+
"@abtnode/static-server": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
35
|
+
"@abtnode/timemachine": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
36
|
+
"@abtnode/util": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
37
37
|
"@arcblock/did": "1.20.11",
|
|
38
38
|
"@arcblock/did-auth": "1.20.11",
|
|
39
39
|
"@arcblock/did-ext": "1.20.11",
|
|
@@ -44,15 +44,15 @@
|
|
|
44
44
|
"@arcblock/pm2-events": "^0.0.5",
|
|
45
45
|
"@arcblock/validator": "1.20.11",
|
|
46
46
|
"@arcblock/vc": "1.20.11",
|
|
47
|
-
"@blocklet/constant": "1.16.44-beta-
|
|
47
|
+
"@blocklet/constant": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
48
48
|
"@blocklet/did-space-js": "^1.0.56",
|
|
49
|
-
"@blocklet/env": "1.16.44-beta-
|
|
50
|
-
"@blocklet/error": "^0.2.
|
|
51
|
-
"@blocklet/meta": "1.16.44-beta-
|
|
52
|
-
"@blocklet/resolver": "1.16.44-beta-
|
|
53
|
-
"@blocklet/sdk": "1.16.44-beta-
|
|
54
|
-
"@blocklet/store": "1.16.44-beta-
|
|
55
|
-
"@blocklet/theme": "^2.13.
|
|
49
|
+
"@blocklet/env": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
50
|
+
"@blocklet/error": "^0.2.5",
|
|
51
|
+
"@blocklet/meta": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
52
|
+
"@blocklet/resolver": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
53
|
+
"@blocklet/sdk": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
54
|
+
"@blocklet/store": "1.16.44-beta-20250601-083116-288e5ea5",
|
|
55
|
+
"@blocklet/theme": "^2.13.57",
|
|
56
56
|
"@fidm/x509": "^1.2.1",
|
|
57
57
|
"@ocap/mcrypto": "1.20.11",
|
|
58
58
|
"@ocap/util": "1.20.11",
|
|
@@ -116,5 +116,5 @@
|
|
|
116
116
|
"jest": "^29.7.0",
|
|
117
117
|
"unzipper": "^0.10.11"
|
|
118
118
|
},
|
|
119
|
-
"gitHead": "
|
|
119
|
+
"gitHead": "5d978739f099374dcc9d4ce9572eb343fd0c39b4"
|
|
120
120
|
}
|