@abtnode/blocklet-services 1.16.15-beta-d8e7b6c0 → 1.16.15-beta-9318a201
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 +0 -1
- package/api/index.js +16 -1
- package/api/libs/image.js +9 -1
- package/api/libs/open-graph/index.js +4 -4
- package/api/libs/open-graph/template.js +26 -16
- package/api/libs/spaces.js +0 -15
- package/api/services/auth/index.js +0 -2
- package/api/services/notification/index.js +5 -0
- package/api/socket/channel/component.js +112 -0
- package/api/socket/channel/hooks.js +4 -0
- package/build/asset-manifest.json +9 -9
- package/build/index.html +1 -1
- package/build/service-worker.js +1 -1
- package/build/static/js/{1565.f2e6e45e.chunk.js → 1565.74308e72.chunk.js} +2 -2
- package/build/static/js/3551.49951db3.chunk.js +2 -0
- package/build/static/js/6869.2fb2d274.chunk.js +2 -0
- package/build/static/js/main.dad0c18f.js +3 -0
- package/package.json +18 -18
- package/api/services/auth/connect/get-did-spaces-endpoint.js +0 -90
- package/build/static/js/3551.a3cfa6aa.chunk.js +0 -2
- package/build/static/js/6869.08bd3d6f.chunk.js +0 -2
- package/build/static/js/main.e29a7133.js +0 -3
- /package/build/static/js/{main.e29a7133.js.LICENSE.txt → main.dad0c18f.js.LICENSE.txt} +0 -0
package/README.md
CHANGED
package/api/index.js
CHANGED
|
@@ -158,7 +158,22 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
158
158
|
const event = BlockletInternalEvents[key];
|
|
159
159
|
eventHub.on(event, (data) => {
|
|
160
160
|
const { appDid } = data;
|
|
161
|
-
|
|
161
|
+
|
|
162
|
+
// Let first worker process do something as master
|
|
163
|
+
if (process.env.NODE_ENV === 'test' || process.env.NODE_APP_INSTANCE === '0') {
|
|
164
|
+
if (event === BlockletInternalEvents.componentsUpdated) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
notificationService.sendToAppComponents.exec({ event, appDid, data }).catch((error) => {
|
|
169
|
+
logger.error('send to component error', { error });
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// backward compatibility, should be removed if BlockletSDK@1.6.14 is not supported anymore
|
|
174
|
+
notificationService.sendToApp.exec({ event, appDid, data }).catch((error) => {
|
|
175
|
+
logger.error('send to app error', { error });
|
|
176
|
+
});
|
|
162
177
|
});
|
|
163
178
|
});
|
|
164
179
|
|
package/api/libs/image.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// @link https://sharp.pixelplumbing.com/
|
|
3
3
|
const fs = require('fs-extra');
|
|
4
4
|
const path = require('path');
|
|
5
|
+
const { rmSync } = require('fs');
|
|
5
6
|
const sharp = require('sharp');
|
|
6
7
|
const toLower = require('lodash/toLower');
|
|
7
8
|
const { Joi } = require('@arcblock/validator');
|
|
@@ -193,7 +194,7 @@ const processImage = (src, extension, dest, params) => {
|
|
|
193
194
|
dimensions.height = height;
|
|
194
195
|
}
|
|
195
196
|
|
|
196
|
-
const pipeline = sharp({ animated: true }).timeout({ seconds:
|
|
197
|
+
const pipeline = sharp({ animated: true }).timeout({ seconds: 30 });
|
|
197
198
|
if (rotate) {
|
|
198
199
|
pipeline.rotate(rotate);
|
|
199
200
|
}
|
|
@@ -238,8 +239,15 @@ const processImage = (src, extension, dest, params) => {
|
|
|
238
239
|
|
|
239
240
|
pipeline[format || EXTENSIONS[extension]]({ quality, progressive: !!progressive, force: true });
|
|
240
241
|
|
|
242
|
+
pipeline.on('error', (error) => {
|
|
243
|
+
reject(error);
|
|
244
|
+
});
|
|
245
|
+
|
|
241
246
|
// run the pipeline
|
|
242
247
|
src.pipe(pipeline).pipe(out);
|
|
248
|
+
}).catch((error) => {
|
|
249
|
+
rmSync(dest, { force: true });
|
|
250
|
+
throw error;
|
|
243
251
|
});
|
|
244
252
|
};
|
|
245
253
|
|
|
@@ -68,16 +68,16 @@ const getOgImage = (input, info, dataDir, format) => {
|
|
|
68
68
|
if (error) {
|
|
69
69
|
throw new Error(`open graph service params invalid: ${formatError(error)}`);
|
|
70
70
|
}
|
|
71
|
+
if (value.template === 'cover') {
|
|
72
|
+
value.description = value.description || value.title;
|
|
73
|
+
value.title = info.name;
|
|
74
|
+
}
|
|
71
75
|
if (!value.title) {
|
|
72
76
|
value.title = info.name;
|
|
73
77
|
}
|
|
74
78
|
if (!value.description) {
|
|
75
79
|
value.description = info.description;
|
|
76
80
|
}
|
|
77
|
-
if (value.template === 'cover') {
|
|
78
|
-
value.description = value.title;
|
|
79
|
-
value.title = info.name;
|
|
80
|
-
}
|
|
81
81
|
|
|
82
82
|
const params = { ...value, width: 1200, height: 630, color, logoUrl, format };
|
|
83
83
|
const cacheKey = md5(stringify(params));
|
|
@@ -7,6 +7,14 @@ const join = (strings, ...values) => {
|
|
|
7
7
|
return original;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
+
const getTextColor = (background) => {
|
|
11
|
+
const r = parseInt(background.slice(1, 3), 16);
|
|
12
|
+
const g = parseInt(background.slice(3, 5), 16);
|
|
13
|
+
const b = parseInt(background.slice(5, 7), 16);
|
|
14
|
+
const luminance = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
|
|
15
|
+
return luminance > 0.5 ? '#111' : '#EEE';
|
|
16
|
+
};
|
|
17
|
+
|
|
10
18
|
const getLogoSvg = (color) => {
|
|
11
19
|
return `<svg
|
|
12
20
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -45,14 +53,13 @@ const getDefaultTemplate = ({ width, height, logoUrl, format, color, title, desc
|
|
|
45
53
|
/>
|
|
46
54
|
<h2
|
|
47
55
|
style="
|
|
48
|
-
font-size:
|
|
56
|
+
font-size: 3rem;
|
|
49
57
|
letter-spacing: -2px;
|
|
50
58
|
margin: 32px 0;
|
|
51
59
|
color: #ddd;
|
|
52
60
|
font-weight: 400;
|
|
53
61
|
font-family: Arial, sans-serif;
|
|
54
62
|
text-align: left;
|
|
55
|
-
text-transform: capitalize;
|
|
56
63
|
padding: 0 96px;
|
|
57
64
|
"
|
|
58
65
|
>
|
|
@@ -60,7 +67,7 @@ const getDefaultTemplate = ({ width, height, logoUrl, format, color, title, desc
|
|
|
60
67
|
</h2>
|
|
61
68
|
<h3
|
|
62
69
|
style="
|
|
63
|
-
font-size:
|
|
70
|
+
font-size: 2rem;
|
|
64
71
|
margin: 0;
|
|
65
72
|
color: #aaa;
|
|
66
73
|
font-weight: 400;
|
|
@@ -92,16 +99,17 @@ const getSectionTemplate = ({ width, height, logoUrl, color, format, title, desc
|
|
|
92
99
|
src="${logoUrl}"
|
|
93
100
|
height="90"
|
|
94
101
|
width="90"
|
|
95
|
-
style="margin-left: 96px; height: 90px; width: 90px; margin-bottom:
|
|
102
|
+
style="margin-left: 96px; height: 90px; width: 90px; margin-bottom: 64px"
|
|
96
103
|
/>
|
|
97
104
|
<p
|
|
98
105
|
style="
|
|
99
|
-
font-size: 1.
|
|
106
|
+
font-size: 1.5rem;
|
|
100
107
|
margin: 0;
|
|
101
108
|
color: ${color.start};
|
|
102
109
|
font-weight: 400;
|
|
103
110
|
font-family: Arial, sans-serif;
|
|
104
111
|
text-align: left;
|
|
112
|
+
text-transform: uppercase;
|
|
105
113
|
padding: 0 96px;
|
|
106
114
|
"
|
|
107
115
|
>
|
|
@@ -109,28 +117,29 @@ const getSectionTemplate = ({ width, height, logoUrl, color, format, title, desc
|
|
|
109
117
|
</p>
|
|
110
118
|
<h2
|
|
111
119
|
style="
|
|
112
|
-
font-size:
|
|
120
|
+
font-size: 3rem;
|
|
113
121
|
margin: 32px 0;
|
|
114
122
|
color: #eee;
|
|
115
123
|
letter-spacing: -2px;
|
|
116
124
|
font-weight: 400;
|
|
117
125
|
font-family: Arial, sans-serif;
|
|
118
|
-
text-align:
|
|
119
|
-
text-transform: capitalize;
|
|
126
|
+
text-align: left;
|
|
120
127
|
padding: 0 96px;
|
|
128
|
+
lineClamp: 2;
|
|
121
129
|
"
|
|
122
130
|
>
|
|
123
131
|
${title}
|
|
124
132
|
</h2>
|
|
125
133
|
<h3
|
|
126
134
|
style="
|
|
127
|
-
font-size:
|
|
135
|
+
font-size: 2rem;
|
|
128
136
|
margin: 0;
|
|
129
137
|
color: #bbb;
|
|
130
138
|
font-weight: 400;
|
|
131
139
|
font-family: Arial, sans-serif;
|
|
132
140
|
text-align: left;
|
|
133
141
|
padding: 0 96px;
|
|
142
|
+
lineClamp: 3;
|
|
134
143
|
"
|
|
135
144
|
>
|
|
136
145
|
${description}
|
|
@@ -140,16 +149,17 @@ const getSectionTemplate = ({ width, height, logoUrl, color, format, title, desc
|
|
|
140
149
|
};
|
|
141
150
|
|
|
142
151
|
const getCoverTemplate = ({ width, height, logoUrl, color, title, description, cover }, fn) => {
|
|
152
|
+
const textColor = getTextColor(color.start);
|
|
143
153
|
return fn`<div style="width: ${width}px; height: ${height}px; display: flex; background: ${color.start};">
|
|
144
154
|
<div style="display: flex; height: ${height}px; background: ${color.start}; width: 45%">
|
|
145
155
|
<div style="margin-left: 32px; display: flex; flex-direction: column; align-items: flex-start; justify-content: space-around;">
|
|
146
156
|
<h2
|
|
147
157
|
style="
|
|
148
|
-
font-size:
|
|
149
|
-
color:
|
|
158
|
+
font-size: 3rem;
|
|
159
|
+
color: ${textColor};
|
|
150
160
|
font-weight: 400;
|
|
151
161
|
font-family: Arial, sans-serif;
|
|
152
|
-
margin: 32px 0 0;
|
|
162
|
+
margin: 32px 32px 0 0;
|
|
153
163
|
text-align: left;
|
|
154
164
|
"
|
|
155
165
|
>
|
|
@@ -161,7 +171,7 @@ const getCoverTemplate = ({ width, height, logoUrl, color, title, description, c
|
|
|
161
171
|
style="
|
|
162
172
|
font-size: 2rem;
|
|
163
173
|
margin: 0 0 0 16px;
|
|
164
|
-
color:
|
|
174
|
+
color: ${textColor};
|
|
165
175
|
font-weight: 400;
|
|
166
176
|
font-family: Arial, sans-serif;
|
|
167
177
|
text-align: left;
|
|
@@ -179,10 +189,10 @@ const getCoverTemplate = ({ width, height, logoUrl, color, title, description, c
|
|
|
179
189
|
display: flex;
|
|
180
190
|
background: ${color.start};
|
|
181
191
|
height: ${height * 2}px;
|
|
182
|
-
width:
|
|
192
|
+
width: 100px;
|
|
183
193
|
position: absolute;
|
|
184
|
-
transform: rotate(
|
|
185
|
-
left: -
|
|
194
|
+
transform: rotate(8deg);
|
|
195
|
+
left: -90px;
|
|
186
196
|
top: -25px;"></div>
|
|
187
197
|
</div>
|
|
188
198
|
</div>`;
|
package/api/libs/spaces.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const isUrl = require('is-url');
|
|
2
|
-
const joinUrl = require('url-join');
|
|
3
2
|
|
|
4
3
|
/**
|
|
5
4
|
* @description
|
|
@@ -14,20 +13,6 @@ function getDIDSpacesUrlFromDisplayUrl(endpoint) {
|
|
|
14
13
|
return endpoint.replace(/\/api\/.+/, '');
|
|
15
14
|
}
|
|
16
15
|
|
|
17
|
-
/**
|
|
18
|
-
* @description
|
|
19
|
-
* @param {string} spacesUrl
|
|
20
|
-
* @return {string}
|
|
21
|
-
*/
|
|
22
|
-
function getDIDSpacesSilentAuthorizationFromUrl(spacesUrl) {
|
|
23
|
-
if (!isUrl(spacesUrl)) {
|
|
24
|
-
throw new Error(`SpacesUrl(${spacesUrl}) is not a valid url`);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return joinUrl(spacesUrl, '/api/space/silent-authorization');
|
|
28
|
-
}
|
|
29
|
-
|
|
30
16
|
module.exports = {
|
|
31
17
|
getDIDSpacesUrlFromDisplayUrl,
|
|
32
|
-
getDIDSpacesSilentAuthorizationFromUrl,
|
|
33
18
|
};
|
|
@@ -38,7 +38,6 @@ const createReceiveTransferAppOwnerRoutes = require('./connect/receive-transfer-
|
|
|
38
38
|
const createSessionRoutes = require('./session');
|
|
39
39
|
const createPassportRoutes = require('./passport');
|
|
40
40
|
const { getRedirectUrl } = require('../../util');
|
|
41
|
-
const createGetDIDSpacesEndpointRoutes = require('./connect/get-did-spaces-endpoint');
|
|
42
41
|
const { sessionCacheDisabledUser } = require('../../cache');
|
|
43
42
|
|
|
44
43
|
const getTokenFromWsConnect = (req, options) => {
|
|
@@ -191,7 +190,6 @@ const init = ({ node, options }) => {
|
|
|
191
190
|
handler.attach(Object.assign({ app }, createMigrateToStructV2Routes(node, options)));
|
|
192
191
|
handler.attach(Object.assign({ app }, createTransferAppOwnerRoutes(node, options)));
|
|
193
192
|
handler.attach(Object.assign({ app }, createReceiveTransferAppOwnerRoutes(node, options, createSessionToken)));
|
|
194
|
-
handler.attach(Object.assign({ app }, createGetDIDSpacesEndpointRoutes(node, options, createSessionToken)));
|
|
195
193
|
});
|
|
196
194
|
};
|
|
197
195
|
|
|
@@ -10,6 +10,7 @@ const states = require('../../state');
|
|
|
10
10
|
const { PREFIXES } = require('../../util/constants');
|
|
11
11
|
|
|
12
12
|
const { sendToAppChannel } = require('../../socket/channel/app');
|
|
13
|
+
const { sendToAppComponents } = require('../../socket/channel/component');
|
|
13
14
|
const { sendToUserDid, sendToAppDid } = require('../../socket/channel/did');
|
|
14
15
|
const getHooksByChannel = require('../../socket/channel/hooks');
|
|
15
16
|
const { getTokenInfo } = require('../../socket/util');
|
|
@@ -151,6 +152,10 @@ const init = ({ node }) => {
|
|
|
151
152
|
exec: ({ event, appDid, data }) => sendToAppDid({ event, appDid, data, node, wsServer }),
|
|
152
153
|
},
|
|
153
154
|
|
|
155
|
+
sendToAppComponents: {
|
|
156
|
+
exec: ({ event, appDid, data }) => sendToAppComponents({ event, appDid, data, node, wsServer }),
|
|
157
|
+
},
|
|
158
|
+
|
|
154
159
|
sendToAppChannel: {
|
|
155
160
|
attach: (app) => {
|
|
156
161
|
PREFIXES.forEach((prefix) => {
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
const JWT = require('@arcblock/jwt');
|
|
2
|
+
const { CHANNEL_TYPE, parseChannel, getComponentChannel } = require('@blocklet/meta/lib/channel');
|
|
3
|
+
const { findComponentByIdV2 } = require('@blocklet/meta/lib/util');
|
|
4
|
+
const { getComponentApiKey } = require('@abtnode/util/lib/blocklet');
|
|
5
|
+
const Lock = require('@abtnode/util/lib/lock');
|
|
6
|
+
|
|
7
|
+
const logger = require('@abtnode/logger')('channel:component');
|
|
8
|
+
const { getSenderServer, broadcast } = require('../util');
|
|
9
|
+
const states = require('../../state');
|
|
10
|
+
|
|
11
|
+
const lock = new Lock('');
|
|
12
|
+
|
|
13
|
+
const getCacheId = (appDid, componentDid) => `${appDid}/${componentDid}`;
|
|
14
|
+
|
|
15
|
+
const onAuthenticate = async ({ channel, payload, node }) => {
|
|
16
|
+
const { type, appDid, componentDid } = parseChannel(channel);
|
|
17
|
+
if (type !== CHANNEL_TYPE.COMPONENT) {
|
|
18
|
+
throw new Error(`Can not join non-component channel: ${channel}`);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const { apiKey } = payload;
|
|
22
|
+
|
|
23
|
+
const app = await node.getBlocklet({ did: appDid, useCache: true });
|
|
24
|
+
|
|
25
|
+
if (!app) {
|
|
26
|
+
throw new Error(`App not found: ${appDid}`);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const component = findComponentByIdV2(app, componentDid);
|
|
30
|
+
|
|
31
|
+
if (!component) {
|
|
32
|
+
throw new Error(`Component not found: ${appDid}/${componentDid}`);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const nodeInfo = await node.getNodeInfo({ useCache: true });
|
|
36
|
+
|
|
37
|
+
if (getComponentApiKey({ serverSk: nodeInfo.sk, app, component }) !== apiKey) {
|
|
38
|
+
throw new Error(`Invalid API key. app: ${appDid}, component: ${componentDid}`);
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const sendCachedMessages = async (wsServer, appDid, componentDid) => {
|
|
43
|
+
await lock.acquire();
|
|
44
|
+
try {
|
|
45
|
+
const cacheId = getCacheId(appDid, componentDid);
|
|
46
|
+
const messages = await states.message.find({ did: cacheId });
|
|
47
|
+
if (messages.length) {
|
|
48
|
+
messages.forEach(({ event, data }) => {
|
|
49
|
+
wsServer.broadcast(getComponentChannel(appDid, componentDid), event, data, { noCluster: true });
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
await states.message.remove({ did: cacheId });
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
lock.release();
|
|
56
|
+
} catch (error) {
|
|
57
|
+
lock.release();
|
|
58
|
+
logger.error('Error on sending cached messages to component', { appDid, componentDid, error });
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
const onJoin = async ({ channel, wsServer }) => {
|
|
63
|
+
const { appDid, componentDid } = parseChannel(channel);
|
|
64
|
+
if (appDid && componentDid) {
|
|
65
|
+
await sendCachedMessages(wsServer, appDid, componentDid);
|
|
66
|
+
} else {
|
|
67
|
+
throw new Error(`onJoin: Invalid channel: ${channel}`);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
const onMessage = () => {};
|
|
72
|
+
|
|
73
|
+
const sendToAppComponents = async ({ event, appDid, data, node, wsServer }) => {
|
|
74
|
+
const senderInfo = await getSenderServer({ node });
|
|
75
|
+
|
|
76
|
+
const app = await node.getBlocklet({ did: appDid, useCache: true });
|
|
77
|
+
|
|
78
|
+
if (!app) {
|
|
79
|
+
throw new Error(`App not found: ${appDid}`);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const notification = {
|
|
83
|
+
data,
|
|
84
|
+
time: Date.now(),
|
|
85
|
+
sender: {
|
|
86
|
+
did: senderInfo.wallet.address,
|
|
87
|
+
pk: senderInfo.wallet.publicKey,
|
|
88
|
+
token: JWT.sign(senderInfo.wallet.address, senderInfo.wallet.secretKey),
|
|
89
|
+
name: senderInfo.name,
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
for (const component of app.children || []) {
|
|
94
|
+
const componentDid = component.meta.did;
|
|
95
|
+
// eslint-disable-next-line no-loop-func
|
|
96
|
+
broadcast(wsServer, getComponentChannel(appDid, componentDid), event, notification, async (count) => {
|
|
97
|
+
// FIXME @linchen 组件以 cluster 模式启动时, 是否确保所有组件实例都收到消息?
|
|
98
|
+
if (count <= 0) {
|
|
99
|
+
logger.info('Online component client was not found', { appDid, componentDid });
|
|
100
|
+
await lock.acquire();
|
|
101
|
+
try {
|
|
102
|
+
await states.message.insert({ did: getCacheId(appDid, componentDid), event, data: notification });
|
|
103
|
+
lock.release();
|
|
104
|
+
} catch (error) {
|
|
105
|
+
lock.release();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
module.exports = { onAuthenticate, onJoin, onMessage, sendToAppComponents };
|
|
@@ -3,6 +3,7 @@ const { CHANNEL_TYPE, parseChannel } = require('@blocklet/meta/lib/channel');
|
|
|
3
3
|
const AppChannel = require('./app');
|
|
4
4
|
const DidChannel = require('./did');
|
|
5
5
|
const ConnectChannel = require('./relay');
|
|
6
|
+
const ComponentChannel = require('./component');
|
|
6
7
|
|
|
7
8
|
const getHooksByChannel = (channel) => {
|
|
8
9
|
const { type } = parseChannel(channel);
|
|
@@ -15,6 +16,9 @@ const getHooksByChannel = (channel) => {
|
|
|
15
16
|
if (type === CHANNEL_TYPE.RELAY) {
|
|
16
17
|
return ConnectChannel;
|
|
17
18
|
}
|
|
19
|
+
if (type === CHANNEL_TYPE.COMPONENT) {
|
|
20
|
+
return ComponentChannel;
|
|
21
|
+
}
|
|
18
22
|
|
|
19
23
|
throw new Error('Unknown channel type');
|
|
20
24
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
3
|
"main.css": "/.well-known/service/static/static/css/main.7ea79dc8.css",
|
|
4
|
-
"main.js": "/.well-known/service/static/static/js/main.
|
|
4
|
+
"main.js": "/.well-known/service/static/static/js/main.dad0c18f.js",
|
|
5
5
|
"static/js/4716.58477c5c.chunk.js": "/.well-known/service/static/static/js/4716.58477c5c.chunk.js",
|
|
6
6
|
"static/js/6856.163537c7.chunk.js": "/.well-known/service/static/static/js/6856.163537c7.chunk.js",
|
|
7
7
|
"static/js/1660.e2ff5a21.chunk.js": "/.well-known/service/static/static/js/1660.e2ff5a21.chunk.js",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"static/js/5434.523d071d.chunk.js": "/.well-known/service/static/static/js/5434.523d071d.chunk.js",
|
|
19
19
|
"static/js/9409.0d5d4de2.chunk.js": "/.well-known/service/static/static/js/9409.0d5d4de2.chunk.js",
|
|
20
20
|
"static/js/5859.b3338b24.chunk.js": "/.well-known/service/static/static/js/5859.b3338b24.chunk.js",
|
|
21
|
-
"static/js/3551.
|
|
21
|
+
"static/js/3551.49951db3.chunk.js": "/.well-known/service/static/static/js/3551.49951db3.chunk.js",
|
|
22
22
|
"static/js/1980.79862e88.chunk.js": "/.well-known/service/static/static/js/1980.79862e88.chunk.js",
|
|
23
23
|
"static/js/861.a19bf499.chunk.js": "/.well-known/service/static/static/js/861.a19bf499.chunk.js",
|
|
24
24
|
"static/js/5176.9f08e927.chunk.js": "/.well-known/service/static/static/js/5176.9f08e927.chunk.js",
|
|
@@ -32,8 +32,8 @@
|
|
|
32
32
|
"static/css/5982.ac464505.chunk.css": "/.well-known/service/static/static/css/5982.ac464505.chunk.css",
|
|
33
33
|
"static/js/5982.19c5663f.chunk.js": "/.well-known/service/static/static/js/5982.19c5663f.chunk.js",
|
|
34
34
|
"static/js/4023.f88d8f4b.chunk.js": "/.well-known/service/static/static/js/4023.f88d8f4b.chunk.js",
|
|
35
|
-
"static/js/6869.
|
|
36
|
-
"static/js/1565.
|
|
35
|
+
"static/js/6869.2fb2d274.chunk.js": "/.well-known/service/static/static/js/6869.2fb2d274.chunk.js",
|
|
36
|
+
"static/js/1565.74308e72.chunk.js": "/.well-known/service/static/static/js/1565.74308e72.chunk.js",
|
|
37
37
|
"static/js/2393.9c045444.chunk.js": "/.well-known/service/static/static/js/2393.9c045444.chunk.js",
|
|
38
38
|
"static/js/5683.46331372.chunk.js": "/.well-known/service/static/static/js/5683.46331372.chunk.js",
|
|
39
39
|
"static/js/7.b3c58209.chunk.js": "/.well-known/service/static/static/js/7.b3c58209.chunk.js",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
"index.html": "/.well-known/service/static/index.html",
|
|
99
99
|
"static/media/space-connected.svg": "/.well-known/service/static/static/media/space-connected.9a4e18fd2bc7d065191b0d241a131c28.svg",
|
|
100
100
|
"main.7ea79dc8.css.map": "/.well-known/service/static/static/css/main.7ea79dc8.css.map",
|
|
101
|
-
"main.
|
|
101
|
+
"main.dad0c18f.js.map": "/.well-known/service/static/static/js/main.dad0c18f.js.map",
|
|
102
102
|
"4716.58477c5c.chunk.js.map": "/.well-known/service/static/static/js/4716.58477c5c.chunk.js.map",
|
|
103
103
|
"6856.163537c7.chunk.js.map": "/.well-known/service/static/static/js/6856.163537c7.chunk.js.map",
|
|
104
104
|
"1660.e2ff5a21.chunk.js.map": "/.well-known/service/static/static/js/1660.e2ff5a21.chunk.js.map",
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
"5434.523d071d.chunk.js.map": "/.well-known/service/static/static/js/5434.523d071d.chunk.js.map",
|
|
116
116
|
"9409.0d5d4de2.chunk.js.map": "/.well-known/service/static/static/js/9409.0d5d4de2.chunk.js.map",
|
|
117
117
|
"5859.b3338b24.chunk.js.map": "/.well-known/service/static/static/js/5859.b3338b24.chunk.js.map",
|
|
118
|
-
"3551.
|
|
118
|
+
"3551.49951db3.chunk.js.map": "/.well-known/service/static/static/js/3551.49951db3.chunk.js.map",
|
|
119
119
|
"1980.79862e88.chunk.js.map": "/.well-known/service/static/static/js/1980.79862e88.chunk.js.map",
|
|
120
120
|
"861.a19bf499.chunk.js.map": "/.well-known/service/static/static/js/861.a19bf499.chunk.js.map",
|
|
121
121
|
"5176.9f08e927.chunk.js.map": "/.well-known/service/static/static/js/5176.9f08e927.chunk.js.map",
|
|
@@ -129,8 +129,8 @@
|
|
|
129
129
|
"5982.ac464505.chunk.css.map": "/.well-known/service/static/static/css/5982.ac464505.chunk.css.map",
|
|
130
130
|
"5982.19c5663f.chunk.js.map": "/.well-known/service/static/static/js/5982.19c5663f.chunk.js.map",
|
|
131
131
|
"4023.f88d8f4b.chunk.js.map": "/.well-known/service/static/static/js/4023.f88d8f4b.chunk.js.map",
|
|
132
|
-
"6869.
|
|
133
|
-
"1565.
|
|
132
|
+
"6869.2fb2d274.chunk.js.map": "/.well-known/service/static/static/js/6869.2fb2d274.chunk.js.map",
|
|
133
|
+
"1565.74308e72.chunk.js.map": "/.well-known/service/static/static/js/1565.74308e72.chunk.js.map",
|
|
134
134
|
"2393.9c045444.chunk.js.map": "/.well-known/service/static/static/js/2393.9c045444.chunk.js.map",
|
|
135
135
|
"5683.46331372.chunk.js.map": "/.well-known/service/static/static/js/5683.46331372.chunk.js.map",
|
|
136
136
|
"7.b3c58209.chunk.js.map": "/.well-known/service/static/static/js/7.b3c58209.chunk.js.map",
|
|
@@ -174,6 +174,6 @@
|
|
|
174
174
|
},
|
|
175
175
|
"entrypoints": [
|
|
176
176
|
"static/css/main.7ea79dc8.css",
|
|
177
|
-
"static/js/main.
|
|
177
|
+
"static/js/main.dad0c18f.js"
|
|
178
178
|
]
|
|
179
179
|
}
|
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><link rel="manifest" href="/.well-known/service/manifest.json"/><script src="/.well-known/service/api/env"></script><script src="/__blocklet__.js"></script><script defer="defer" src="/.well-known/service/static/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><link rel="manifest" href="/.well-known/service/manifest.json"/><script src="/.well-known/service/api/env"></script><script src="/__blocklet__.js"></script><script defer="defer" src="/.well-known/service/static/static/js/main.dad0c18f.js"></script><link href="/.well-known/service/static/static/css/main.7ea79dc8.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
|