@abtnode/blocklet-services 1.8.69-beta-76f8a46f → 1.16.0-beta-b16cb035
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/README.md +1 -0
- package/api/middlewares/proxy-to-daemon.js +3 -1
- package/api/services/auth/connect/pre-setup.js +24 -0
- package/api/services/auth/connect/setup.js +17 -41
- package/api/services/auth/index.js +2 -0
- package/api/socket/channel/app.js +11 -8
- package/api/socket/channel/relay.js +14 -8
- package/api/socket/util.js +12 -8
- package/build/asset-manifest.json +11 -11
- package/build/index.html +1 -1
- package/build/static/js/409.1dcd48aa.chunk.js +2 -0
- package/build/static/js/503.8399a560.chunk.js +3 -0
- package/build/static/js/906.a980020a.chunk.js +2 -0
- package/build/static/js/{313.546141b2.chunk.js → 950.8e1097d2.chunk.js} +3 -3
- package/build/static/js/main.cb6e6a93.js +3 -0
- package/build/static/js/{main.ccf2aa21.js.LICENSE.txt → main.cb6e6a93.js.LICENSE.txt} +1 -1
- package/package.json +32 -31
- package/build/static/js/409.f7b6e2fd.chunk.js +0 -2
- package/build/static/js/503.c96d3943.chunk.js +0 -3
- package/build/static/js/906.8d0bbdde.chunk.js +0 -2
- package/build/static/js/main.ccf2aa21.js +0 -3
- /package/build/static/js/{503.c96d3943.chunk.js.LICENSE.txt → 503.8399a560.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{313.546141b2.chunk.js.LICENSE.txt → 950.8e1097d2.chunk.js.LICENSE.txt} +0 -0
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ const pick = require('lodash/pick');
|
|
|
6
6
|
const md5 = require('@abtnode/util/lib/md5');
|
|
7
7
|
const { AUTH_CERT_TYPE } = require('@abtnode/constant');
|
|
8
8
|
|
|
9
|
-
const cacheKey = (userDid,
|
|
9
|
+
const cacheKey = (userDid, appPid) => md5(`${userDid}:${appPid}`);
|
|
10
10
|
|
|
11
11
|
const proxyToDaemon = ({ proxy, pathname, sessionSecret }) => {
|
|
12
12
|
const cache = new LRU({
|
|
@@ -39,6 +39,8 @@ const proxyToDaemon = ({ proxy, pathname, sessionSecret }) => {
|
|
|
39
39
|
|
|
40
40
|
return async (req, res) => {
|
|
41
41
|
req.url = `${pathname}?${qs.stringify(req.query)}`;
|
|
42
|
+
// did returned ty req.getBlockletDid() is blocklet.meta.did
|
|
43
|
+
// the blocklet.meta.did is always the same as appPid in structV2 application
|
|
42
44
|
const did = req.getBlockletDid();
|
|
43
45
|
const token = getToken(did, pick(req.user, ['did', 'role']));
|
|
44
46
|
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
const pick = require('lodash/pick');
|
|
2
|
+
const { getSetupBlockletClaims } = require('@abtnode/auth/lib/server');
|
|
3
|
+
const verifySignature = require('@abtnode/auth/lib/util/verify-signature');
|
|
4
|
+
|
|
5
|
+
const logger = require('@abtnode/logger')(require('../../../../package.json').name);
|
|
6
|
+
|
|
7
|
+
module.exports = function createRoutes() {
|
|
8
|
+
return {
|
|
9
|
+
action: 'pre-setup',
|
|
10
|
+
authPrincipal: false,
|
|
11
|
+
claims: getSetupBlockletClaims(),
|
|
12
|
+
onAuth: async ({ claims, userDid, userPk, extraParams: { locale } }) => {
|
|
13
|
+
const claim = claims.find((x) => x.type === 'signature');
|
|
14
|
+
verifySignature(claim, userDid, userPk, locale);
|
|
15
|
+
logger.info('pre-setup.connect.success', { userDid });
|
|
16
|
+
return {
|
|
17
|
+
nextWorkflowData: {
|
|
18
|
+
claim: pick(claim, ['origin', 'sig']),
|
|
19
|
+
pk: userPk,
|
|
20
|
+
},
|
|
21
|
+
};
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
};
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/* eslint-disable arrow-parens */
|
|
2
2
|
const get = require('lodash/get');
|
|
3
3
|
const { messages } = require('@abtnode/auth/lib/auth');
|
|
4
|
-
const formatContext = require('@abtnode/util/lib/format-context');
|
|
5
|
-
const { getServerAuthMethod } = require('@abtnode/auth/lib/util/get-auth-method');
|
|
6
|
-
const { getSetupBlockletClaims, ensureBlockletPermission } = require('@abtnode/auth/lib/server');
|
|
7
4
|
const { extractUserAvatar } = require('@abtnode/util/lib/user-avatar');
|
|
5
|
+
const formatContext = require('@abtnode/util/lib/format-context');
|
|
6
|
+
const verifySignature = require('@abtnode/auth/lib/util/verify-signature');
|
|
8
7
|
|
|
9
8
|
const logger = require('@abtnode/logger')(require('../../../../package.json').name);
|
|
10
9
|
|
|
@@ -31,52 +30,29 @@ const checkOwner = async ({ node, userDid, blocklet }) => {
|
|
|
31
30
|
module.exports = function createRoutes(node, _authenticator, createSessionToken) {
|
|
32
31
|
return {
|
|
33
32
|
action: 'setup',
|
|
34
|
-
onConnect: async ({ req, userDid, extraParams: {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
const claims = {
|
|
38
|
-
profile: async ({ extraParams }) => {
|
|
39
|
-
const { locale } = extraParams;
|
|
33
|
+
onConnect: async ({ req, userDid, extraParams: { locale } }) => {
|
|
34
|
+
const blocklet = await req.getBlocklet();
|
|
35
|
+
await checkOwner({ node, userDid, blocklet });
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
37
|
+
return {
|
|
38
|
+
profile: {
|
|
39
|
+
fields: ['fullName', 'avatar'],
|
|
40
|
+
description: messages.description[locale],
|
|
45
41
|
},
|
|
46
42
|
};
|
|
47
|
-
|
|
48
|
-
const authMethod = getServerAuthMethod(info, launchType);
|
|
49
|
-
const serverClaims = await getSetupBlockletClaims(node, authMethod, blocklet);
|
|
50
|
-
|
|
51
|
-
await checkOwner({ node, userDid, blocklet });
|
|
52
|
-
|
|
53
|
-
return Object.assign(serverClaims, claims);
|
|
54
43
|
},
|
|
55
44
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const
|
|
59
|
-
const [blocklet, info] = await Promise.all([req.getBlocklet(), req.getNodeInfo()]);
|
|
45
|
+
onAuth: async ({ claims, userDid, userPk, updateSession, extraParams, req, baseUrl }) => {
|
|
46
|
+
const { locale, previousWorkflowData: proof } = extraParams;
|
|
47
|
+
const blocklet = await req.getBlocklet();
|
|
60
48
|
const teamDid = blocklet.meta.did;
|
|
49
|
+
const user = await checkOwner({ node, userDid, blocklet });
|
|
61
50
|
|
|
62
|
-
|
|
63
|
-
if (
|
|
64
|
-
throw new Error(
|
|
51
|
+
// ensure owner proof form previous workflow
|
|
52
|
+
if (!proof || !proof.claim || !proof.pk) {
|
|
53
|
+
throw new Error('No owner proof found from previous workflow');
|
|
65
54
|
}
|
|
66
|
-
|
|
67
|
-
await ensureBlockletPermission({
|
|
68
|
-
authMethod,
|
|
69
|
-
node,
|
|
70
|
-
userDid,
|
|
71
|
-
claims,
|
|
72
|
-
challenge,
|
|
73
|
-
locale,
|
|
74
|
-
blocklet,
|
|
75
|
-
isAuth: true,
|
|
76
|
-
chainHost,
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
const user = await checkOwner({ node, userDid, blocklet });
|
|
55
|
+
verifySignature(proof.claim, blocklet.appDid, proof.pk, locale);
|
|
80
56
|
|
|
81
57
|
try {
|
|
82
58
|
if (user) {
|
|
@@ -27,6 +27,7 @@ const createInviteRoutes = require('./connect/invite');
|
|
|
27
27
|
const createIssuePassportAuth = require('./connect/issue-passport');
|
|
28
28
|
const createLostPassportListAuth = require('./connect/lost-passport-list');
|
|
29
29
|
const createLostPassportIssueAuth = require('./connect/lost-passport-issue');
|
|
30
|
+
const createPreSetupAuth = require('./connect/pre-setup');
|
|
30
31
|
const createSetupAuth = require('./connect/setup');
|
|
31
32
|
const createSwitchProfileAuth = require('./connect/switch-profile');
|
|
32
33
|
const createSwitchPassportAuth = require('./connect/switch-passport');
|
|
@@ -168,6 +169,7 @@ const init = ({ node, options }) => {
|
|
|
168
169
|
handler.attach(Object.assign({ app }, createIssuePassportAuth(node, authenticator, createSessionToken)));
|
|
169
170
|
handler.attach(Object.assign({ app }, createLostPassportListAuth(node, authenticator, createSessionToken)));
|
|
170
171
|
handler.attach(Object.assign({ app }, createLostPassportIssueAuth(node, authenticator, createSessionToken)));
|
|
172
|
+
handler.attach(Object.assign({ app }, createPreSetupAuth(node, authenticator, createSessionToken)));
|
|
171
173
|
handler.attach(Object.assign({ app }, createSetupAuth(node, authenticator, createSessionToken)));
|
|
172
174
|
handler.attach(Object.assign({ app }, createSwitchProfileAuth(node, authenticator, createSessionToken)));
|
|
173
175
|
handler.attach(Object.assign({ app }, createSwitchPassportAuth(node, authenticator, createSessionToken)));
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const get = require('lodash/get');
|
|
2
2
|
|
|
3
|
-
const { CHANNEL_TYPE, parseChannel } = require('@blocklet/meta/lib/channel');
|
|
3
|
+
const { CHANNEL_TYPE, parseChannel, getAppPublicChannel } = require('@blocklet/meta/lib/channel');
|
|
4
4
|
const { validateNotification } = require('@blocklet/sdk/lib/validators/notification');
|
|
5
5
|
const { NODE_MODES } = require('@abtnode/constant');
|
|
6
6
|
|
|
@@ -45,9 +45,6 @@ const sendToAppChannel = async ({
|
|
|
45
45
|
if (socketId) {
|
|
46
46
|
socketFilters.id = socketId;
|
|
47
47
|
}
|
|
48
|
-
if (socketDid) {
|
|
49
|
-
socketFilters[`channel.${channel}.authInfo.did`] = socketDid;
|
|
50
|
-
}
|
|
51
48
|
|
|
52
49
|
// validate
|
|
53
50
|
|
|
@@ -57,19 +54,25 @@ const sendToAppChannel = async ({
|
|
|
57
54
|
|
|
58
55
|
// parse sender
|
|
59
56
|
|
|
60
|
-
const
|
|
57
|
+
const appInfo = await ensureSender({ sender, node, nodeInfo });
|
|
61
58
|
|
|
62
|
-
if (
|
|
59
|
+
if (![appInfo.wallet.address, appInfo.permanentWallet.address].includes(channelInfo.appDid)) {
|
|
63
60
|
throw new Error('Cannot sent message to channel of other app');
|
|
64
61
|
}
|
|
65
62
|
|
|
66
63
|
// parse notification
|
|
67
64
|
|
|
68
|
-
const notifications = parseNotification(notification,
|
|
65
|
+
const notifications = parseNotification(notification, appInfo);
|
|
66
|
+
|
|
67
|
+
const actualChannel = getAppPublicChannel(appInfo.permanentWallet.address);
|
|
68
|
+
|
|
69
|
+
if (socketDid) {
|
|
70
|
+
socketFilters[`channel.${actualChannel}.authInfo.did`] = socketDid;
|
|
71
|
+
}
|
|
69
72
|
|
|
70
73
|
// send notification
|
|
71
74
|
notifications.forEach((data) => {
|
|
72
|
-
broadcast(wsServer,
|
|
75
|
+
broadcast(wsServer, actualChannel, event, data, { socketFilters });
|
|
73
76
|
});
|
|
74
77
|
};
|
|
75
78
|
|
|
@@ -1,22 +1,28 @@
|
|
|
1
|
-
const { CHANNEL_TYPE, parseChannel } = require('@blocklet/meta/lib/channel');
|
|
1
|
+
const { CHANNEL_TYPE, parseChannel, getRelayChannel } = require('@blocklet/meta/lib/channel');
|
|
2
2
|
const { ensureSender, broadcast, EVENTS } = require('../util');
|
|
3
3
|
|
|
4
|
-
// Only
|
|
4
|
+
// Only an application can send message to a relay channel
|
|
5
5
|
// But multiple clients can subscribe to the same relay channel
|
|
6
6
|
const sendToRelay = async ({ sender, channel, event = EVENTS.MESSAGE, data, node, wsServer }) => {
|
|
7
|
-
const
|
|
8
|
-
if (
|
|
7
|
+
const channelInfo = parseChannel(channel);
|
|
8
|
+
if (channelInfo.type !== CHANNEL_TYPE.RELAY) {
|
|
9
9
|
throw new Error('Cannot send message to non-relay channel');
|
|
10
10
|
}
|
|
11
11
|
|
|
12
12
|
const nodeInfo = await node.getNodeInfo();
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
|
|
14
|
+
// Sender is appDid of application
|
|
15
|
+
const appInfo = await ensureSender({ sender, node, nodeInfo });
|
|
16
|
+
|
|
17
|
+
if (![appInfo.wallet.address, appInfo.permanentWallet.address].includes(channelInfo.appDid)) {
|
|
15
18
|
throw new Error('Cannot sent message to relay channel of other app');
|
|
16
19
|
}
|
|
17
20
|
|
|
18
|
-
const
|
|
19
|
-
|
|
21
|
+
const actualChannel = getRelayChannel(appInfo.permanentWallet.address, channelInfo.topic);
|
|
22
|
+
|
|
23
|
+
const socketFilters = { [`channel.${actualChannel}.authInfo.topic`]: channelInfo.topic };
|
|
24
|
+
|
|
25
|
+
broadcast(wsServer, actualChannel, event, data, { socketFilters });
|
|
20
26
|
};
|
|
21
27
|
|
|
22
28
|
const onAuthenticate = () => {};
|
package/api/socket/util.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const { nanoid } = require('nanoid');
|
|
2
2
|
const JWT = require('@arcblock/jwt');
|
|
3
3
|
|
|
4
|
-
const {
|
|
4
|
+
const { getApplicationInfo } = require('@abtnode/auth/lib/auth');
|
|
5
5
|
|
|
6
6
|
// eslint-disable-next-line global-require
|
|
7
7
|
const logger = require('@abtnode/logger')(`${require('../../package.json').name}:socket`);
|
|
@@ -24,9 +24,13 @@ const parseNotification = (notification, senderInfo) => {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
x.sender = {
|
|
27
|
-
did
|
|
28
|
-
|
|
27
|
+
// did is permanent did of an application that is used to identify the application by DID Wallet
|
|
28
|
+
did: senderInfo.permanentWallet.address,
|
|
29
|
+
pk: senderInfo.permanentWallet.pk,
|
|
29
30
|
name: senderInfo.name,
|
|
31
|
+
// actualDid is the did of the application that is used to decrypt the message if needed
|
|
32
|
+
actualDid: senderInfo.wallet.address,
|
|
33
|
+
actualPk: senderInfo.wallet.pk,
|
|
30
34
|
};
|
|
31
35
|
});
|
|
32
36
|
|
|
@@ -44,9 +48,9 @@ const broadcast = (...args) => {
|
|
|
44
48
|
};
|
|
45
49
|
|
|
46
50
|
const ensureSender = async ({ sender, node, nodeInfo }) => {
|
|
47
|
-
let
|
|
51
|
+
let appInfo;
|
|
48
52
|
try {
|
|
49
|
-
|
|
53
|
+
appInfo = await getApplicationInfo({ node, nodeInfo, teamDid: sender.appDid });
|
|
50
54
|
} catch (err) {
|
|
51
55
|
if (err.message === 'Blocklet state must be an object') {
|
|
52
56
|
err.message = `Sender blocklet does not exist: ${sender.appDid}`;
|
|
@@ -54,12 +58,12 @@ const ensureSender = async ({ sender, node, nodeInfo }) => {
|
|
|
54
58
|
throw err;
|
|
55
59
|
}
|
|
56
60
|
|
|
57
|
-
const { wallet } =
|
|
61
|
+
const { wallet } = appInfo;
|
|
58
62
|
if (!JWT.verify(sender.token, wallet.publicKey)) {
|
|
59
|
-
throw new Error(`Invalid authentication token for sender blocklet: ${sender.
|
|
63
|
+
throw new Error(`Invalid authentication token for sender blocklet: ${sender.appDid}`);
|
|
60
64
|
}
|
|
61
65
|
|
|
62
|
-
return
|
|
66
|
+
return appInfo;
|
|
63
67
|
};
|
|
64
68
|
|
|
65
69
|
const getTokenInfo = (decoded) => ({
|
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"main.css": "/.blocklet/proxy/blocklet-service/static/css/main.632501d5.css",
|
|
4
|
-
"main.js": "/.blocklet/proxy/blocklet-service/static/js/main.
|
|
4
|
+
"main.js": "/.blocklet/proxy/blocklet-service/static/js/main.cb6e6a93.js",
|
|
5
5
|
"static/js/560.4d01281e.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/560.4d01281e.chunk.js",
|
|
6
6
|
"static/js/255.4b68f586.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/255.4b68f586.chunk.js",
|
|
7
7
|
"static/js/371.60842581.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/371.60842581.chunk.js",
|
|
8
8
|
"static/js/737.76692b09.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/737.76692b09.chunk.js",
|
|
9
|
-
"static/js/906.
|
|
9
|
+
"static/js/906.a980020a.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/906.a980020a.chunk.js",
|
|
10
10
|
"static/js/868.43103624.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/868.43103624.chunk.js",
|
|
11
|
-
"static/js/409.
|
|
11
|
+
"static/js/409.1dcd48aa.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/409.1dcd48aa.chunk.js",
|
|
12
12
|
"static/js/682.c64ae291.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/682.c64ae291.chunk.js",
|
|
13
13
|
"static/js/711.6c22b7c7.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/711.6c22b7c7.chunk.js",
|
|
14
14
|
"static/js/437.d815f0c0.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/437.d815f0c0.chunk.js",
|
|
15
15
|
"static/js/690.f9a59613.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/690.f9a59613.chunk.js",
|
|
16
|
-
"static/js/
|
|
16
|
+
"static/js/950.8e1097d2.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/950.8e1097d2.chunk.js",
|
|
17
17
|
"static/js/712.9667cdcd.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/712.9667cdcd.chunk.js",
|
|
18
18
|
"static/js/511.1dd226f9.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/511.1dd226f9.chunk.js",
|
|
19
19
|
"static/js/248.ad6363a4.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/248.ad6363a4.chunk.js",
|
|
20
20
|
"static/css/503.b2c1f856.chunk.css": "/.blocklet/proxy/blocklet-service/static/css/503.b2c1f856.chunk.css",
|
|
21
|
-
"static/js/503.
|
|
21
|
+
"static/js/503.8399a560.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/503.8399a560.chunk.js",
|
|
22
22
|
"static/js/203.0c856580.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/203.0c856580.chunk.js",
|
|
23
23
|
"static/media/ubuntu-mono-all-400-normal.woff": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-all-400-normal.c879328bc62e9c68268f.woff",
|
|
24
24
|
"static/media/lato-all-400-normal.woff": "/.blocklet/proxy/blocklet-service/static/media/lato-all-400-normal.3dc1eff492ab1f598560.woff",
|
|
@@ -42,28 +42,28 @@
|
|
|
42
42
|
"router-template-styles/styles.css": "/.blocklet/proxy/blocklet-service/router-template-styles/styles.css",
|
|
43
43
|
"index.html": "/.blocklet/proxy/blocklet-service/index.html",
|
|
44
44
|
"main.632501d5.css.map": "/.blocklet/proxy/blocklet-service/static/css/main.632501d5.css.map",
|
|
45
|
-
"main.
|
|
45
|
+
"main.cb6e6a93.js.map": "/.blocklet/proxy/blocklet-service/static/js/main.cb6e6a93.js.map",
|
|
46
46
|
"560.4d01281e.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/560.4d01281e.chunk.js.map",
|
|
47
47
|
"255.4b68f586.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/255.4b68f586.chunk.js.map",
|
|
48
48
|
"371.60842581.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/371.60842581.chunk.js.map",
|
|
49
49
|
"737.76692b09.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/737.76692b09.chunk.js.map",
|
|
50
|
-
"906.
|
|
50
|
+
"906.a980020a.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/906.a980020a.chunk.js.map",
|
|
51
51
|
"868.43103624.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/868.43103624.chunk.js.map",
|
|
52
|
-
"409.
|
|
52
|
+
"409.1dcd48aa.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/409.1dcd48aa.chunk.js.map",
|
|
53
53
|
"682.c64ae291.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/682.c64ae291.chunk.js.map",
|
|
54
54
|
"711.6c22b7c7.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/711.6c22b7c7.chunk.js.map",
|
|
55
55
|
"437.d815f0c0.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/437.d815f0c0.chunk.js.map",
|
|
56
56
|
"690.f9a59613.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/690.f9a59613.chunk.js.map",
|
|
57
|
-
"
|
|
57
|
+
"950.8e1097d2.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/950.8e1097d2.chunk.js.map",
|
|
58
58
|
"712.9667cdcd.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/712.9667cdcd.chunk.js.map",
|
|
59
59
|
"511.1dd226f9.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/511.1dd226f9.chunk.js.map",
|
|
60
60
|
"248.ad6363a4.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/248.ad6363a4.chunk.js.map",
|
|
61
61
|
"503.b2c1f856.chunk.css.map": "/.blocklet/proxy/blocklet-service/static/css/503.b2c1f856.chunk.css.map",
|
|
62
|
-
"503.
|
|
62
|
+
"503.8399a560.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/503.8399a560.chunk.js.map",
|
|
63
63
|
"203.0c856580.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/203.0c856580.chunk.js.map"
|
|
64
64
|
},
|
|
65
65
|
"entrypoints": [
|
|
66
66
|
"static/css/main.632501d5.css",
|
|
67
|
-
"static/js/main.
|
|
67
|
+
"static/js/main.cb6e6a93.js"
|
|
68
68
|
]
|
|
69
69
|
}
|
package/build/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/><meta name="theme-color" content="#000000"/><title>Blocklet Service</title><script src=".well-known/service/api/env"></script><script src="/__blocklet__.js"></script><script defer="defer" src="/.blocklet/proxy/blocklet-service/static/js/main.
|
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=0"/><meta name="theme-color" content="#000000"/><title>Blocklet Service</title><script src=".well-known/service/api/env"></script><script src="/__blocklet__.js"></script><script defer="defer" src="/.blocklet/proxy/blocklet-service/static/js/main.cb6e6a93.js"></script><link href="/.blocklet/proxy/blocklet-service/static/css/main.632501d5.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|