@abtnode/core 1.16.14-beta-08abf537 → 1.16.14-beta-9743e8e2
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/blocklet/manager/disk.js +38 -32
- package/lib/index.js +5 -5
- package/lib/router/helper.js +3 -10
- package/lib/states/node.js +2 -0
- package/lib/util/blocklet.js +72 -20
- package/lib/util/get-domain-for-blocklet.js +2 -2
- package/lib/util/launcher.js +3 -1
- package/package.json +19 -19
|
@@ -12,7 +12,6 @@ const pick = require('lodash/pick');
|
|
|
12
12
|
const isEmpty = require('lodash/isEmpty');
|
|
13
13
|
const cloneDeep = require('lodash/cloneDeep');
|
|
14
14
|
const { isNFTExpired, getNftExpirationDate } = require('@abtnode/util/lib/nft');
|
|
15
|
-
const didDocument = require('@abtnode/util/lib/did-document');
|
|
16
15
|
const { sign } = require('@arcblock/jwt');
|
|
17
16
|
const sleep = require('@abtnode/util/lib/sleep');
|
|
18
17
|
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
@@ -118,7 +117,6 @@ const {
|
|
|
118
117
|
validateStore,
|
|
119
118
|
isRotatingAppSk,
|
|
120
119
|
checkVersionCompatibility,
|
|
121
|
-
getBlockletKnownAs,
|
|
122
120
|
updateBlockletFallbackLogo,
|
|
123
121
|
ensureAppLogo,
|
|
124
122
|
getBlockletDidDomainList,
|
|
@@ -128,6 +126,7 @@ const {
|
|
|
128
126
|
exceedRedemptionPeriod,
|
|
129
127
|
ensureAppPortsNotOccupied,
|
|
130
128
|
getComponentNamesWithVersion,
|
|
129
|
+
updateDidDocument: updateBlockletDocument,
|
|
131
130
|
} = require('../../util/blocklet');
|
|
132
131
|
const { getDidDomainForBlocklet } = require('../../util/get-domain-for-blocklet');
|
|
133
132
|
const states = require('../../states');
|
|
@@ -1624,8 +1623,10 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
1624
1623
|
}
|
|
1625
1624
|
}
|
|
1626
1625
|
|
|
1627
|
-
getCrons() {
|
|
1628
|
-
|
|
1626
|
+
async getCrons() {
|
|
1627
|
+
const info = await states.node.read();
|
|
1628
|
+
|
|
1629
|
+
const crons = [
|
|
1629
1630
|
{
|
|
1630
1631
|
name: 'sync-blocklet-status',
|
|
1631
1632
|
time: '*/60 * * * * *', // 60s
|
|
@@ -1646,30 +1647,41 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
1646
1647
|
await refreshAccessibleExternalNodeIp(nodeInfo);
|
|
1647
1648
|
},
|
|
1648
1649
|
},
|
|
1649
|
-
{
|
|
1650
|
-
name: 'check-renewed-blocklet',
|
|
1651
|
-
time: '0 */10 * * * *', // 10min
|
|
1652
|
-
options: { runOnInit: false },
|
|
1653
|
-
fn: () => this.checkRenewedBlocklet(),
|
|
1654
|
-
},
|
|
1655
|
-
{
|
|
1656
|
-
name: 'stop-expired-external-blocklet',
|
|
1657
|
-
time: '0 */30 * * * *', // 30min
|
|
1658
|
-
options: { runOnInit: false },
|
|
1659
|
-
fn: () => this.stopExpiredBlocklets(),
|
|
1660
|
-
},
|
|
1661
|
-
{
|
|
1662
|
-
name: 'clean-expired-blocklet-data',
|
|
1663
|
-
time: '0 */20 0 * * *', // 每天凌晨 0 点的每 20 分钟
|
|
1664
|
-
options: { runOnInit: false },
|
|
1665
|
-
fn: () => this.cleanExpiredBlocklets(),
|
|
1666
|
-
},
|
|
1667
1650
|
{
|
|
1668
1651
|
name: 'record-blocklet-runtime-history',
|
|
1669
1652
|
time: `*/${MONITOR_RECORD_INTERVAL_SEC} * * * * *`, // 10s
|
|
1670
1653
|
fn: () => this.runtimeMonitor.monitAll(),
|
|
1671
1654
|
},
|
|
1672
1655
|
];
|
|
1656
|
+
|
|
1657
|
+
if (info.mode === NODE_MODES.SERVERLESS) {
|
|
1658
|
+
const serverlessJobs = [
|
|
1659
|
+
{
|
|
1660
|
+
name: 'check-renewed-blocklet',
|
|
1661
|
+
time: '0 */10 * * * *', // 10min
|
|
1662
|
+
options: { runOnInit: false },
|
|
1663
|
+
fn: () => this.checkRenewedBlocklet(),
|
|
1664
|
+
},
|
|
1665
|
+
{
|
|
1666
|
+
name: 'stop-expired-external-blocklet',
|
|
1667
|
+
time: '0 */30 * * * *', // 30min
|
|
1668
|
+
options: { runOnInit: false },
|
|
1669
|
+
fn: () => this.stopExpiredBlocklets(),
|
|
1670
|
+
},
|
|
1671
|
+
{
|
|
1672
|
+
name: 'clean-expired-blocklet-data',
|
|
1673
|
+
time: '0 */20 0 * * *', // 每天凌晨 0 点的每 20 分钟
|
|
1674
|
+
options: { runOnInit: false },
|
|
1675
|
+
fn: () => this.cleanExpiredBlocklets(),
|
|
1676
|
+
},
|
|
1677
|
+
];
|
|
1678
|
+
|
|
1679
|
+
logger.info('enable serverless jobs', serverlessJobs.map((x) => x.name).join(','));
|
|
1680
|
+
|
|
1681
|
+
crons.push(...serverlessJobs);
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1684
|
+
return crons;
|
|
1673
1685
|
}
|
|
1674
1686
|
|
|
1675
1687
|
/**
|
|
@@ -3035,7 +3047,7 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
3035
3047
|
const urls = blocklet.site?.domainAliases || [];
|
|
3036
3048
|
const customUrl = urls.find((x) => !x.isProtected)?.value;
|
|
3037
3049
|
blockletUrl = `http://${
|
|
3038
|
-
customUrl || getDidDomainForBlocklet({
|
|
3050
|
+
customUrl || getDidDomainForBlocklet({ did: blocklet.appPid })
|
|
3039
3051
|
}${WELLKNOWN_BLOCKLET_ADMIN_PATH}`;
|
|
3040
3052
|
}
|
|
3041
3053
|
} catch (error) {
|
|
@@ -3237,15 +3249,9 @@ class DiskBlockletManager extends BaseBlockletManager {
|
|
|
3237
3249
|
|
|
3238
3250
|
this.emit(BlockletEvents.appDidChanged, blocklet);
|
|
3239
3251
|
|
|
3240
|
-
|
|
3241
|
-
|
|
3242
|
-
|
|
3243
|
-
wallet,
|
|
3244
|
-
appPid: blocklet.appPid,
|
|
3245
|
-
alsoKnownAs,
|
|
3246
|
-
daemonDidDomain: util.getServerDidDomain(nodeInfo),
|
|
3247
|
-
didRegistryUrl: nodeInfo.didRegistry,
|
|
3248
|
-
domain: nodeInfo.didDomain,
|
|
3252
|
+
await updateBlockletDocument({
|
|
3253
|
+
blocklet,
|
|
3254
|
+
nodeInfo,
|
|
3249
3255
|
});
|
|
3250
3256
|
logger.info('updated blocklet dns document', { appPid: blocklet.appPid, appDid: blocklet.appDid });
|
|
3251
3257
|
}
|
package/lib/index.js
CHANGED
|
@@ -518,14 +518,14 @@ function ABTNode(options) {
|
|
|
518
518
|
|
|
519
519
|
const webhook = WebHook({ events, dataDirs, instance });
|
|
520
520
|
|
|
521
|
-
const initCron = () => {
|
|
521
|
+
const initCron = async () => {
|
|
522
522
|
Cron.init({
|
|
523
523
|
context: { states, events, webhook },
|
|
524
524
|
jobs: [
|
|
525
525
|
IP.cron,
|
|
526
526
|
VersionChecker.getCron(),
|
|
527
527
|
...getRoutingCrons(),
|
|
528
|
-
...blockletManager.getCrons(),
|
|
528
|
+
...(await blockletManager.getCrons()),
|
|
529
529
|
DiskMonitor.getCron(),
|
|
530
530
|
LogRotator.getCron(),
|
|
531
531
|
...getStateCrons(states),
|
|
@@ -566,12 +566,12 @@ function ABTNode(options) {
|
|
|
566
566
|
.catch((error) => logger.error('Certificate manager service start failed', { error }));
|
|
567
567
|
|
|
568
568
|
// start jobs
|
|
569
|
-
setTimeout(() => {
|
|
569
|
+
setTimeout(async () => {
|
|
570
570
|
if (process.env.NODE_ENV === 'development') {
|
|
571
|
-
initCron();
|
|
571
|
+
await initCron();
|
|
572
572
|
} else {
|
|
573
573
|
pm2Events.resume();
|
|
574
|
-
initCron();
|
|
574
|
+
await initCron();
|
|
575
575
|
createCLILog('startServer');
|
|
576
576
|
logger.info('Cron jobs start successfully on daemon start');
|
|
577
577
|
}
|
package/lib/router/helper.js
CHANGED
|
@@ -16,8 +16,6 @@ const { getProvider } = require('@abtnode/router-provider');
|
|
|
16
16
|
const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
|
|
17
17
|
const getTmpDir = require('@abtnode/util/lib/get-tmp-directory');
|
|
18
18
|
const downloadFile = require('@abtnode/util/lib/download-file');
|
|
19
|
-
const { updateBlockletDocument } = require('@abtnode/util/lib/did-document');
|
|
20
|
-
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
21
19
|
const { forEachBlockletSync } = require('@blocklet/meta/lib/util');
|
|
22
20
|
const { processLogByDate } = require('@abtnode/analytics');
|
|
23
21
|
const {
|
|
@@ -73,7 +71,7 @@ const { getFromCache: getAccessibleExternalNodeIp } = require('../util/get-acces
|
|
|
73
71
|
const Router = require('./index');
|
|
74
72
|
const states = require('../states');
|
|
75
73
|
const { getBlockletDomainGroupName, getDidFromDomainGroupName } = require('../util/router');
|
|
76
|
-
const {
|
|
74
|
+
const { getBlockletDidDomainList, updateDidDocument: updateBlockletDocument } = require('../util/blocklet');
|
|
77
75
|
const { toCamelCase } = require('../util/index');
|
|
78
76
|
const { get: getIp } = require('../util/ip');
|
|
79
77
|
|
|
@@ -983,14 +981,9 @@ module.exports = function getRouterHelpers({ dataDirs, routingSnapshot, routerMa
|
|
|
983
981
|
};
|
|
984
982
|
|
|
985
983
|
const existSite = await states.site.findOne({ domain: domainGroup });
|
|
986
|
-
const { wallet } = getBlockletInfo(blocklet, nodeInfo.sk);
|
|
987
984
|
updateBlockletDocument({
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
alsoKnownAs: getBlockletKnownAs(blocklet),
|
|
991
|
-
daemonDidDomain: getServerDidDomain(nodeInfo),
|
|
992
|
-
didRegistryUrl: nodeInfo.didRegistry,
|
|
993
|
-
domain: nodeInfo.didDomain,
|
|
985
|
+
blocklet,
|
|
986
|
+
nodeInfo,
|
|
994
987
|
})
|
|
995
988
|
.then(() => {
|
|
996
989
|
logger.info(`updated blocklet ${blocklet.appDid} dns`);
|
package/lib/states/node.js
CHANGED
|
@@ -83,6 +83,7 @@ class NodeState extends BaseState {
|
|
|
83
83
|
launcher,
|
|
84
84
|
didRegistry,
|
|
85
85
|
didDomain,
|
|
86
|
+
slpDomain,
|
|
86
87
|
enablePassportIssuance = true,
|
|
87
88
|
trustedPassports = [],
|
|
88
89
|
webWalletUrl,
|
|
@@ -119,6 +120,7 @@ class NodeState extends BaseState {
|
|
|
119
120
|
launcher: launcher || null,
|
|
120
121
|
didRegistry,
|
|
121
122
|
didDomain,
|
|
123
|
+
slpDomain,
|
|
122
124
|
enablePassportIssuance,
|
|
123
125
|
trustedPassports,
|
|
124
126
|
customBlockletNumber: 0,
|
package/lib/util/blocklet.js
CHANGED
|
@@ -19,8 +19,8 @@ const isUrl = require('is-url');
|
|
|
19
19
|
const semver = require('semver');
|
|
20
20
|
const { chainInfo: chainInfoSchema } = require('@arcblock/did-auth/lib/schema');
|
|
21
21
|
|
|
22
|
-
const { fromSecretKey } = require('@ocap/wallet');
|
|
23
|
-
const { toHex, isHex, toDid, toAddress } = require('@ocap/util');
|
|
22
|
+
const { fromSecretKey, fromPublicKey } = require('@ocap/wallet');
|
|
23
|
+
const { toHex, isHex, toDid, toAddress, toBuffer } = require('@ocap/util');
|
|
24
24
|
const { isValid: isValidDid, isEthereumDid } = require('@arcblock/did');
|
|
25
25
|
const logger = require('@abtnode/logger')('@abtnode/core:util:blocklet');
|
|
26
26
|
const pm2 = require('@abtnode/util/lib/async-pm2');
|
|
@@ -32,6 +32,7 @@ const CustomError = require('@abtnode/util/lib/custom-error');
|
|
|
32
32
|
const getFolderSize = require('@abtnode/util/lib/get-folder-size');
|
|
33
33
|
const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
|
|
34
34
|
const hashFiles = require('@abtnode/util/lib/hash-files');
|
|
35
|
+
const didDocument = require('@abtnode/util/lib/did-document');
|
|
35
36
|
const {
|
|
36
37
|
BLOCKLET_MAX_MEM_LIMIT_IN_MB,
|
|
37
38
|
BLOCKLET_STORE,
|
|
@@ -39,6 +40,7 @@ const {
|
|
|
39
40
|
BLOCKLET_STORE_DEV,
|
|
40
41
|
APP_STRUCT_VERSION,
|
|
41
42
|
EXPIRED_BLOCKLET_DATA_RETENTION_DAYS,
|
|
43
|
+
NODE_MODES,
|
|
42
44
|
} = require('@abtnode/constant');
|
|
43
45
|
const {
|
|
44
46
|
parseComponents,
|
|
@@ -94,15 +96,13 @@ const {
|
|
|
94
96
|
const { titleSchema, descriptionSchema, logoSchema } = require('@blocklet/meta/lib/schema');
|
|
95
97
|
const { getBlockletMetaFromUrl } = require('@blocklet/meta/lib/util-meta');
|
|
96
98
|
const getComponentProcessId = require('@blocklet/meta/lib/get-component-process-id');
|
|
99
|
+
const md5 = require('@abtnode/util/lib/md5');
|
|
97
100
|
|
|
98
101
|
const { validate: validateEngine, get: getEngine } = require('../blocklet/manager/engine');
|
|
99
102
|
|
|
100
103
|
const isRequirementsSatisfied = require('./requirement');
|
|
101
104
|
const { getDidDomainForBlocklet } = require('./get-domain-for-blocklet');
|
|
102
|
-
const { expandBundle, findInterfacePortByName, prettyURL, templateReplace } = require('./index');
|
|
103
|
-
const externalIpUtil = require('./get-accessible-external-node-ip');
|
|
104
|
-
const { getIpDnsDomainForBlocklet } = require('./get-domain-for-blocklet');
|
|
105
|
-
const { replaceDomainSlot } = require('./index');
|
|
105
|
+
const { expandBundle, findInterfacePortByName, prettyURL, templateReplace, getServerDidDomain } = require('./index');
|
|
106
106
|
|
|
107
107
|
/**
|
|
108
108
|
* get blocklet engine info, default is node
|
|
@@ -296,7 +296,7 @@ const getAppSystemEnvironments = (blocklet, nodeInfo) => {
|
|
|
296
296
|
* 2. 如果没有,再拼接
|
|
297
297
|
*/
|
|
298
298
|
|
|
299
|
-
const pidDomain = getDidDomainForBlocklet({ appPid, didDomain: nodeInfo.didDomain });
|
|
299
|
+
const pidDomain = getDidDomainForBlocklet({ did: appPid, didDomain: nodeInfo.didDomain });
|
|
300
300
|
const domainAliases = get(blocklet, 'site.domainAliases') || [];
|
|
301
301
|
|
|
302
302
|
let didDomain = domainAliases.find((item) => toLower(item.value) === toLower(pidDomain));
|
|
@@ -1346,19 +1346,12 @@ const getConfigFromPreferences = (blocklet) => {
|
|
|
1346
1346
|
return result;
|
|
1347
1347
|
};
|
|
1348
1348
|
|
|
1349
|
-
const getBlockletURLForLauncher =
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
}
|
|
1355
|
-
|
|
1356
|
-
if (nodeIp) {
|
|
1357
|
-
const ipEchoDomain = getIpDnsDomainForBlocklet(blocklet);
|
|
1358
|
-
return `https://${replaceDomainSlot({ domain: ipEchoDomain, nodeIp })}`;
|
|
1359
|
-
}
|
|
1349
|
+
const getBlockletURLForLauncher = ({ blocklet, nodeInfo }) => {
|
|
1350
|
+
const didDomain = getDidDomainForBlocklet({
|
|
1351
|
+
did: getSlpDid(nodeInfo.did, blocklet.appPid),
|
|
1352
|
+
didDomain: nodeInfo.slpDomain,
|
|
1353
|
+
});
|
|
1360
1354
|
|
|
1361
|
-
const didDomain = getDidDomainForBlocklet({ appPid: blocklet.appPid, didDomain: nodeInfo.didDomain });
|
|
1362
1355
|
return `https://${didDomain}`;
|
|
1363
1356
|
};
|
|
1364
1357
|
const createDataArchive = (dataDir, fileName) => {
|
|
@@ -1692,11 +1685,19 @@ const getBlockletDidDomainList = (blocklet, nodeInfo) => {
|
|
|
1692
1685
|
const dids = [blocklet.appPid, blocklet.appDid, ...alsoKnownAs].filter(Boolean).map((did) => toAddress(did));
|
|
1693
1686
|
|
|
1694
1687
|
uniq(dids).forEach((did) => {
|
|
1695
|
-
const domain = getDidDomainForBlocklet({
|
|
1688
|
+
const domain = getDidDomainForBlocklet({ did, didDomain: nodeInfo.didDomain });
|
|
1696
1689
|
|
|
1697
1690
|
domainAliases.push({ value: domain, isProtected: true });
|
|
1698
1691
|
});
|
|
1699
1692
|
|
|
1693
|
+
const enableSlpDomain = shouldEnableSlpDomain({ mode: nodeInfo.mode, launcher: nodeInfo.launcher, blocklet });
|
|
1694
|
+
if (enableSlpDomain) {
|
|
1695
|
+
const slpDid = getSlpDid(nodeInfo.did, blocklet.appPid);
|
|
1696
|
+
const domain = getDidDomainForBlocklet({ did: slpDid, didDomain: nodeInfo.slpDomain });
|
|
1697
|
+
|
|
1698
|
+
domainAliases.push({ value: domain, isProtected: true });
|
|
1699
|
+
}
|
|
1700
|
+
|
|
1700
1701
|
return domainAliases;
|
|
1701
1702
|
};
|
|
1702
1703
|
|
|
@@ -1821,6 +1822,54 @@ const getComponentNamesWithVersion = (app = {}, componentDids = []) => {
|
|
|
1821
1822
|
return str;
|
|
1822
1823
|
};
|
|
1823
1824
|
|
|
1825
|
+
const shouldEnableSlpDomain = ({ mode, launcher, blocklet }) => {
|
|
1826
|
+
if (process.env.NODE_ENV === 'development' && process.env.ABT_NODE_ENABLE_SLP_DOMAIN === 'true') {
|
|
1827
|
+
return true;
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
return mode === NODE_MODES.SERVERLESS && !!launcher && !!blocklet.controller;
|
|
1831
|
+
};
|
|
1832
|
+
|
|
1833
|
+
const getSlpDid = (serverDid, appPid) => {
|
|
1834
|
+
if (!serverDid || !appPid) {
|
|
1835
|
+
throw new Error('serverDid and appPid is required');
|
|
1836
|
+
}
|
|
1837
|
+
|
|
1838
|
+
const buffer = Buffer.concat([toBuffer(serverDid), toBuffer(appPid)]);
|
|
1839
|
+
const md5Str = md5(buffer);
|
|
1840
|
+
|
|
1841
|
+
const wallet = fromPublicKey(md5Str);
|
|
1842
|
+
return wallet.address;
|
|
1843
|
+
};
|
|
1844
|
+
|
|
1845
|
+
// eslint-disable-next-line require-await
|
|
1846
|
+
const updateDidDocument = async ({ blocklet, nodeInfo }) => {
|
|
1847
|
+
const alsoKnownAs = getBlockletKnownAs(blocklet);
|
|
1848
|
+
const { wallet } = getBlockletInfo(blocklet, nodeInfo.sk);
|
|
1849
|
+
const { mode, launcher, did: serverDid } = nodeInfo;
|
|
1850
|
+
|
|
1851
|
+
let slpDid = null;
|
|
1852
|
+
const enableSlpDomain = shouldEnableSlpDomain({ mode, launcher, blocklet });
|
|
1853
|
+
if (enableSlpDomain) {
|
|
1854
|
+
slpDid = getSlpDid(serverDid, blocklet.appPid);
|
|
1855
|
+
|
|
1856
|
+
if (alsoKnownAs.indexOf(slpDid) === -1) {
|
|
1857
|
+
alsoKnownAs.push(toDid(slpDid));
|
|
1858
|
+
}
|
|
1859
|
+
}
|
|
1860
|
+
|
|
1861
|
+
return didDocument.updateBlockletDocument({
|
|
1862
|
+
blocklet,
|
|
1863
|
+
wallet,
|
|
1864
|
+
alsoKnownAs,
|
|
1865
|
+
slpDid,
|
|
1866
|
+
daemonDidDomain: getServerDidDomain(nodeInfo),
|
|
1867
|
+
didRegistryUrl: nodeInfo.didRegistry,
|
|
1868
|
+
domain: nodeInfo.didDomain,
|
|
1869
|
+
slpDomain: nodeInfo.slpDomain,
|
|
1870
|
+
});
|
|
1871
|
+
};
|
|
1872
|
+
|
|
1824
1873
|
module.exports = {
|
|
1825
1874
|
updateBlockletFallbackLogo,
|
|
1826
1875
|
forEachBlocklet,
|
|
@@ -1884,4 +1933,7 @@ module.exports = {
|
|
|
1884
1933
|
exceedRedemptionPeriod,
|
|
1885
1934
|
ensureAppPortsNotOccupied,
|
|
1886
1935
|
getComponentNamesWithVersion,
|
|
1936
|
+
updateDidDocument,
|
|
1937
|
+
getSlpDid,
|
|
1938
|
+
shouldEnableSlpDomain,
|
|
1887
1939
|
};
|
|
@@ -6,8 +6,8 @@ const getIpDnsDomainForBlocklet = (blocklet) => {
|
|
|
6
6
|
return `${encodeBase32(blocklet.meta.did)}-${SLOT_FOR_IP_DNS_SITE}.${DEFAULT_IP_DOMAIN_SUFFIX}`;
|
|
7
7
|
};
|
|
8
8
|
|
|
9
|
-
const getDidDomainForBlocklet = ({
|
|
10
|
-
return `${encodeBase32(
|
|
9
|
+
const getDidDomainForBlocklet = ({ did, didDomain = DEFAULT_DID_DOMAIN }) => {
|
|
10
|
+
return `${encodeBase32(did)}.${didDomain}`;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
13
|
module.exports = { getIpDnsDomainForBlocklet, getDidDomainForBlocklet, formatName };
|
package/lib/util/launcher.js
CHANGED
|
@@ -60,7 +60,9 @@ const consumeServerlessNFT = async ({ nftId, blocklet }) => {
|
|
|
60
60
|
const consumeLauncherSession = async ({ params, blocklet }) => {
|
|
61
61
|
try {
|
|
62
62
|
const info = await states.node.read();
|
|
63
|
-
const {
|
|
63
|
+
const { name } = getBlockletInfo(blocklet, info.sk);
|
|
64
|
+
const appUrl = getBlockletURLForLauncher({ blocklet, nodeInfo: info });
|
|
65
|
+
|
|
64
66
|
const result = await doRequest(info.sk, {
|
|
65
67
|
launcherUrl: params.launcherUrl,
|
|
66
68
|
pathname: `/api/launches/${params.launcherSessionId}/installed`,
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "1.16.14-beta-
|
|
6
|
+
"version": "1.16.14-beta-9743e8e2",
|
|
7
7
|
"description": "",
|
|
8
8
|
"main": "lib/index.js",
|
|
9
9
|
"files": [
|
|
@@ -19,19 +19,19 @@
|
|
|
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.14-beta-
|
|
23
|
-
"@abtnode/auth": "1.16.14-beta-
|
|
24
|
-
"@abtnode/certificate-manager": "1.16.14-beta-
|
|
25
|
-
"@abtnode/constant": "1.16.14-beta-
|
|
26
|
-
"@abtnode/cron": "1.16.14-beta-
|
|
27
|
-
"@abtnode/logger": "1.16.14-beta-
|
|
28
|
-
"@abtnode/models": "1.16.14-beta-
|
|
29
|
-
"@abtnode/queue": "1.16.14-beta-
|
|
30
|
-
"@abtnode/rbac": "1.16.14-beta-
|
|
31
|
-
"@abtnode/router-provider": "1.16.14-beta-
|
|
32
|
-
"@abtnode/static-server": "1.16.14-beta-
|
|
33
|
-
"@abtnode/timemachine": "1.16.14-beta-
|
|
34
|
-
"@abtnode/util": "1.16.14-beta-
|
|
22
|
+
"@abtnode/analytics": "1.16.14-beta-9743e8e2",
|
|
23
|
+
"@abtnode/auth": "1.16.14-beta-9743e8e2",
|
|
24
|
+
"@abtnode/certificate-manager": "1.16.14-beta-9743e8e2",
|
|
25
|
+
"@abtnode/constant": "1.16.14-beta-9743e8e2",
|
|
26
|
+
"@abtnode/cron": "1.16.14-beta-9743e8e2",
|
|
27
|
+
"@abtnode/logger": "1.16.14-beta-9743e8e2",
|
|
28
|
+
"@abtnode/models": "1.16.14-beta-9743e8e2",
|
|
29
|
+
"@abtnode/queue": "1.16.14-beta-9743e8e2",
|
|
30
|
+
"@abtnode/rbac": "1.16.14-beta-9743e8e2",
|
|
31
|
+
"@abtnode/router-provider": "1.16.14-beta-9743e8e2",
|
|
32
|
+
"@abtnode/static-server": "1.16.14-beta-9743e8e2",
|
|
33
|
+
"@abtnode/timemachine": "1.16.14-beta-9743e8e2",
|
|
34
|
+
"@abtnode/util": "1.16.14-beta-9743e8e2",
|
|
35
35
|
"@arcblock/did": "1.18.88",
|
|
36
36
|
"@arcblock/did-auth": "1.18.88",
|
|
37
37
|
"@arcblock/did-ext": "^1.18.88",
|
|
@@ -42,10 +42,10 @@
|
|
|
42
42
|
"@arcblock/pm2-events": "^0.0.5",
|
|
43
43
|
"@arcblock/validator": "^1.18.88",
|
|
44
44
|
"@arcblock/vc": "1.18.88",
|
|
45
|
-
"@blocklet/constant": "1.16.14-beta-
|
|
46
|
-
"@blocklet/meta": "1.16.14-beta-
|
|
47
|
-
"@blocklet/resolver": "1.16.14-beta-
|
|
48
|
-
"@blocklet/sdk": "1.16.14-beta-
|
|
45
|
+
"@blocklet/constant": "1.16.14-beta-9743e8e2",
|
|
46
|
+
"@blocklet/meta": "1.16.14-beta-9743e8e2",
|
|
47
|
+
"@blocklet/resolver": "1.16.14-beta-9743e8e2",
|
|
48
|
+
"@blocklet/sdk": "1.16.14-beta-9743e8e2",
|
|
49
49
|
"@did-space/client": "^0.2.141",
|
|
50
50
|
"@fidm/x509": "^1.2.1",
|
|
51
51
|
"@ocap/mcrypto": "1.18.88",
|
|
@@ -98,5 +98,5 @@
|
|
|
98
98
|
"jest": "^27.5.1",
|
|
99
99
|
"unzipper": "^0.10.11"
|
|
100
100
|
},
|
|
101
|
-
"gitHead": "
|
|
101
|
+
"gitHead": "8c98d12062bfe1ea2d4faff920e4dd99436bea1f"
|
|
102
102
|
}
|