@abtnode/blocklet-services 1.16.15-beta-58d50c9a → 1.16.15-beta-e143b1cf
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/api/index.js +3 -3
- package/api/libs/email.js +15 -18
- package/api/libs/image.js +15 -1
- package/api/libs/open-graph/index.js +6 -5
- package/api/routes/blocklet.js +16 -30
- package/api/services/image/index.js +3 -3
- package/build/asset-manifest.json +39 -39
- package/build/index.html +1 -1
- package/build/service-worker.js +1 -1
- package/build/service-worker.js.map +1 -1
- package/build/static/css/{7272.0ae9f678.chunk.css → 2784.1780cb4a.chunk.css} +1 -1
- package/build/static/css/{5355.c4fb5c4a.chunk.css → 4802.bf353f58.chunk.css} +1 -1
- package/build/static/js/{1565.77a767e9.chunk.js → 1565.a5a98618.chunk.js} +2 -2
- package/build/static/js/{1760.f694de7c.chunk.js → 1760.7726694e.chunk.js} +2 -2
- package/build/static/js/1980.ff084f4c.chunk.js +2 -0
- package/build/static/js/2653.892d84ff.chunk.js +2 -0
- package/build/static/js/2784.b037c6d1.chunk.js +3 -0
- package/build/static/js/3620.da2326b7.chunk.js +2 -0
- package/build/static/js/3688.0122dfcd.chunk.js +2 -0
- package/build/static/js/4461.d7dcfc2f.chunk.js +2 -0
- package/build/static/js/4802.4e44fe6c.chunk.js +2 -0
- package/build/static/js/{3551.4fc28c54.chunk.js → 5628.01088d1b.chunk.js} +2 -2
- package/build/static/js/6186.e4739d35.chunk.js +2 -0
- package/build/static/js/6498.bd96fa39.chunk.js +2 -0
- package/build/static/js/6640.14ab87a4.chunk.js +2 -0
- package/build/static/js/6868.8289e873.chunk.js +2 -0
- package/build/static/js/7310.1163692a.chunk.js +2 -0
- package/build/static/js/7465.b76f2c39.chunk.js +3 -0
- package/build/static/js/main.2c491798.js +3 -0
- package/package.json +18 -18
- package/build/static/js/1546.2866cfc3.chunk.js +0 -2
- package/build/static/js/1980.79862e88.chunk.js +0 -2
- package/build/static/js/2653.4f690d53.chunk.js +0 -2
- package/build/static/js/4422.f79c1ff1.chunk.js +0 -3
- package/build/static/js/5299.cf6e20df.chunk.js +0 -2
- package/build/static/js/5355.cc6d4f2b.chunk.js +0 -2
- package/build/static/js/5541.aec2d90d.chunk.js +0 -2
- package/build/static/js/6186.d46ba024.chunk.js +0 -2
- package/build/static/js/6326.3a3cb154.chunk.js +0 -2
- package/build/static/js/7272.c85146f8.chunk.js +0 -3
- package/build/static/js/7524.de240f40.chunk.js +0 -2
- package/build/static/js/878.daf9064b.chunk.js +0 -2
- package/build/static/js/926.2a63d835.chunk.js +0 -2
- package/build/static/js/main.e324f949.js +0 -3
- /package/build/static/js/{7272.c85146f8.chunk.js.LICENSE.txt → 2784.b037c6d1.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{4422.f79c1ff1.chunk.js.LICENSE.txt → 7465.b76f2c39.chunk.js.LICENSE.txt} +0 -0
- /package/build/static/js/{main.e324f949.js.LICENSE.txt → main.2c491798.js.LICENSE.txt} +0 -0
package/api/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
const http = require('http');
|
|
2
|
-
const path = require('path');
|
|
3
2
|
const get = require('lodash/get');
|
|
4
3
|
const morgan = require('morgan');
|
|
5
4
|
const express = require('express');
|
|
@@ -14,6 +13,7 @@ const minimatch = require('minimatch');
|
|
|
14
13
|
const { getAccessLogStream } = require('@abtnode/logger');
|
|
15
14
|
const { WELLKNOWN_SERVICE_PATH_PREFIX, NODE_SERVICES_PREFIX, EVENTS } = require('@abtnode/constant');
|
|
16
15
|
const { BlockletEvents, BlockletInternalEvents } = require('@blocklet/constant');
|
|
16
|
+
const { getAppOgCacheDir } = require('@abtnode/util/lib/blocklet');
|
|
17
17
|
const normalizePathPrefix = require('@abtnode/util/lib/normalize-path-prefix');
|
|
18
18
|
const createInvite = require('@abtnode/auth/lib/invitation');
|
|
19
19
|
const eventHub =
|
|
@@ -250,7 +250,7 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
250
250
|
extraResources: [
|
|
251
251
|
{
|
|
252
252
|
prefix: '/open-graph',
|
|
253
|
-
dir:
|
|
253
|
+
dir: getAppOgCacheDir(node.dataDirs.tmp),
|
|
254
254
|
},
|
|
255
255
|
],
|
|
256
256
|
});
|
|
@@ -278,7 +278,7 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
278
278
|
createFederatedRoutes.init(server, node, options);
|
|
279
279
|
createUserRoutes.init(server, node, options);
|
|
280
280
|
createEnvRoutes.init(server, node, options);
|
|
281
|
-
createBlockletRoutes.init(server, node
|
|
281
|
+
createBlockletRoutes.init(server, node);
|
|
282
282
|
createConnectSessionRoutes.init(server, node, options);
|
|
283
283
|
createConnectRelayRoutes.init(server, node, options, wsRouter);
|
|
284
284
|
authRoutes.attachDidAuthHandlers(server);
|
package/api/libs/email.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
const { Joi } = require('@arcblock/validator');
|
|
2
2
|
const { render } = require('@react-email/components');
|
|
3
|
-
const { getSafeEnv } = require('@abtnode/core/lib/util');
|
|
4
|
-
const { getRuntimeEnvironments } = require('@abtnode/core/lib/util/blocklet');
|
|
5
3
|
const { emailConfigSchema } = require('@blocklet/sdk/lib/validators/email');
|
|
4
|
+
const getBlockletInfo = require('@blocklet/meta/lib/info');
|
|
6
5
|
const logger = require('@abtnode/logger')('blocklet-services:notification');
|
|
7
6
|
const omit = require('lodash/omit');
|
|
8
7
|
|
|
@@ -26,35 +25,33 @@ async function sendEmail(receiver, notification, { teamDid, node, locale }) {
|
|
|
26
25
|
if (!blocklet) {
|
|
27
26
|
logger.warn(`Failed to get blocklet: ${teamDid}`);
|
|
28
27
|
}
|
|
29
|
-
const config = blocklet
|
|
28
|
+
const config = blocklet.settings?.notification?.email || {};
|
|
30
29
|
|
|
31
30
|
if (!config.enabled) {
|
|
32
31
|
// skip send email
|
|
33
32
|
return;
|
|
34
33
|
}
|
|
35
34
|
|
|
36
|
-
const { error, value
|
|
35
|
+
const { error, value } = emailConfigSchema.validate(omit(config, 'enabled'));
|
|
37
36
|
if (error) {
|
|
38
37
|
throw new Error(error.message);
|
|
39
38
|
}
|
|
40
39
|
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const url = env?.BLOCKLET_APP_URL;
|
|
45
|
-
// logo 采用顺序:横板 logo -> 正方形 logo -> blocklet.yml 指定的 logo
|
|
40
|
+
const info = getBlockletInfo(blocklet);
|
|
41
|
+
// logo 采用顺序:横板 logo -> 正方形 logo
|
|
46
42
|
const logo =
|
|
47
|
-
|
|
43
|
+
blocklet.environmentObj?.BLOCKLET_APP_LOGO_RECT ||
|
|
44
|
+
`${info.appUrl}/.well-known/service/blocklet/logo?imageFilter=resize&h=80`;
|
|
48
45
|
|
|
49
46
|
const appInfo = {
|
|
50
47
|
logo,
|
|
51
|
-
description:
|
|
52
|
-
title:
|
|
53
|
-
version:
|
|
54
|
-
url,
|
|
48
|
+
description: info.description,
|
|
49
|
+
title: info.name,
|
|
50
|
+
version: info.version,
|
|
51
|
+
url: info.appUrl,
|
|
55
52
|
};
|
|
56
53
|
|
|
57
|
-
const subject =
|
|
54
|
+
const subject = `${
|
|
58
55
|
notification.title ||
|
|
59
56
|
{ zh: '您收到了一个通知', en: 'You have received a notification' }[locale] ||
|
|
60
57
|
'You have received a notification'
|
|
@@ -69,14 +66,14 @@ async function sendEmail(receiver, notification, { teamDid, node, locale }) {
|
|
|
69
66
|
})
|
|
70
67
|
);
|
|
71
68
|
const emailData = {
|
|
72
|
-
from:
|
|
69
|
+
from: `"${info.name}" <${value.user}>`,
|
|
73
70
|
to: receiver,
|
|
74
71
|
title: notification.title,
|
|
75
72
|
subject,
|
|
76
73
|
html,
|
|
77
|
-
replyTo:
|
|
74
|
+
replyTo: value.from,
|
|
78
75
|
};
|
|
79
|
-
const transporter = cache.getTransport({ did: teamDid, config:
|
|
76
|
+
const transporter = cache.getTransport({ did: teamDid, config: value });
|
|
80
77
|
await transporter.sendMail(emailData);
|
|
81
78
|
}
|
|
82
79
|
|
package/api/libs/image.js
CHANGED
|
@@ -101,6 +101,12 @@ const isImageAccepted = (req) => {
|
|
|
101
101
|
return FORMATS.some((x) => req.accepts(`image/${x}`));
|
|
102
102
|
};
|
|
103
103
|
|
|
104
|
+
const getCacheFilePath = (dataDir, fileName) => {
|
|
105
|
+
const result = path.join(dataDir, fileName.substring(0, 2), fileName.substring(2));
|
|
106
|
+
fs.ensureDirSync(path.dirname(result));
|
|
107
|
+
return result;
|
|
108
|
+
};
|
|
109
|
+
|
|
104
110
|
const isImageRequest = (req) => {
|
|
105
111
|
if (req.method !== 'GET') {
|
|
106
112
|
return false;
|
|
@@ -108,6 +114,10 @@ const isImageRequest = (req) => {
|
|
|
108
114
|
if (!req.query.imageFilter) {
|
|
109
115
|
return false;
|
|
110
116
|
}
|
|
117
|
+
const extension = toLower(path.extname(req.path).slice(1));
|
|
118
|
+
if (extension && !FORMATS.includes(EXTENSIONS[extension])) {
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
111
121
|
const { error, value } = schema.validate(req.query);
|
|
112
122
|
if (error) {
|
|
113
123
|
logger.warn('image service filter params invalid:', formatError(error));
|
|
@@ -137,6 +147,9 @@ const processAndRespond = (req, res, cacheDir, getSrc, ext, sendOptions = { maxA
|
|
|
137
147
|
params.f = 'png';
|
|
138
148
|
}
|
|
139
149
|
}
|
|
150
|
+
if (!extension && !params.f) {
|
|
151
|
+
params.f = 'png';
|
|
152
|
+
}
|
|
140
153
|
|
|
141
154
|
if (!extension && !params.f) {
|
|
142
155
|
res.status(400).send('Image filter failed: either extension or format must be specified');
|
|
@@ -144,7 +157,7 @@ const processAndRespond = (req, res, cacheDir, getSrc, ext, sendOptions = { maxA
|
|
|
144
157
|
}
|
|
145
158
|
|
|
146
159
|
const cacheKey = md5(stringify({ target: req.target, path: req.originalUrl, params }));
|
|
147
|
-
const destPath =
|
|
160
|
+
const destPath = getCacheFilePath(cacheDir, `${cacheKey}.${params.f || extension}`);
|
|
148
161
|
if (fs.existsSync(destPath)) {
|
|
149
162
|
res.header('Content-Type', `image/${params.f || extension}`);
|
|
150
163
|
res.sendFile(destPath, sendOptions);
|
|
@@ -267,6 +280,7 @@ module.exports = {
|
|
|
267
280
|
isImageRequest,
|
|
268
281
|
processAndRespond,
|
|
269
282
|
processImage,
|
|
283
|
+
getCacheFilePath,
|
|
270
284
|
EXTENSIONS,
|
|
271
285
|
MODES,
|
|
272
286
|
};
|
|
@@ -14,6 +14,7 @@ const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
|
14
14
|
const logger = require('@abtnode/logger')('@abtnode/blocklet-services/og');
|
|
15
15
|
|
|
16
16
|
const { getTemplate, getLogoSvg } = require('./template');
|
|
17
|
+
const { getCacheFilePath } = require('../image');
|
|
17
18
|
|
|
18
19
|
const TEMPLATES = ['default', 'section', 'cover'];
|
|
19
20
|
|
|
@@ -66,8 +67,8 @@ const schema = Joi.object({
|
|
|
66
67
|
}).options({ stripUnknown: true, allowUnknown: true, noDefaults: false });
|
|
67
68
|
|
|
68
69
|
const generateTasks = {};
|
|
69
|
-
const getOgImage = ({ input, info,
|
|
70
|
-
fs.ensureDirSync(
|
|
70
|
+
const getOgImage = ({ input, info, cacheDir, format, tmpDir }) => {
|
|
71
|
+
fs.ensureDirSync(cacheDir);
|
|
71
72
|
fs.ensureDirSync(tmpDir);
|
|
72
73
|
|
|
73
74
|
const color = getPassportColor(info.passportColor, info.did);
|
|
@@ -94,7 +95,7 @@ const getOgImage = ({ input, info, dataDir, format, tmpDir }) => {
|
|
|
94
95
|
const params = { ...value, width: 1200, height: 630, color, format };
|
|
95
96
|
const cacheKey = md5(stringify(params));
|
|
96
97
|
const nocache = input.nocache === '1';
|
|
97
|
-
const destPath =
|
|
98
|
+
const destPath = getCacheFilePath(cacheDir, `${cacheKey}.${format}`);
|
|
98
99
|
if (!nocache && fs.existsSync(destPath)) {
|
|
99
100
|
return destPath;
|
|
100
101
|
}
|
|
@@ -159,14 +160,14 @@ const convertExternalImage = (url, dest) => {
|
|
|
159
160
|
};
|
|
160
161
|
|
|
161
162
|
const getCachedExternalImage = (cacheKey, port = process.env.ABT_NODE_SERVICE_PORT) => {
|
|
162
|
-
return `http://127.0.0.1:${port}/open-graph/${cacheKey}.png`;
|
|
163
|
+
return `http://127.0.0.1:${port}/open-graph/${cacheKey.slice(0, 2)}/${cacheKey.slice(2)}.png`;
|
|
163
164
|
};
|
|
164
165
|
|
|
165
166
|
const cacheTasks = {};
|
|
166
167
|
const ensureExternalImage = (params, key, tmpDir) => {
|
|
167
168
|
if (params[key]) {
|
|
168
169
|
const cacheKey = md5(params[key]);
|
|
169
|
-
const destPath =
|
|
170
|
+
const destPath = getCacheFilePath(tmpDir, `${cacheKey}.png`);
|
|
170
171
|
if (fs.existsSync(destPath)) {
|
|
171
172
|
return getCachedExternalImage(cacheKey);
|
|
172
173
|
}
|
package/api/routes/blocklet.js
CHANGED
|
@@ -23,6 +23,7 @@ const {
|
|
|
23
23
|
cacheError,
|
|
24
24
|
} = require('@abtnode/util/lib/logo-middleware');
|
|
25
25
|
const formatName = require('@abtnode/util/lib/format-name');
|
|
26
|
+
const { getAppOgCacheDir, getAppImageCacheDir } = require('@abtnode/util/lib/blocklet');
|
|
26
27
|
const {
|
|
27
28
|
fixBlockletStatus,
|
|
28
29
|
wipeSensitiveData,
|
|
@@ -34,13 +35,12 @@ const {
|
|
|
34
35
|
USER_AVATAR_PATH_PREFIX,
|
|
35
36
|
ROLES,
|
|
36
37
|
USER_AVATAR_URL_PREFIX,
|
|
37
|
-
OPEN_GRAPH_DIR,
|
|
38
38
|
} = require('@abtnode/constant');
|
|
39
39
|
const logger = require('@abtnode/logger')(require('../../package.json').name);
|
|
40
40
|
|
|
41
41
|
const { createDownloadLogStream } = require('@abtnode/core/lib/util/log');
|
|
42
42
|
|
|
43
|
-
const { BlockletStatus
|
|
43
|
+
const { BlockletStatus } = require('@blocklet/constant');
|
|
44
44
|
|
|
45
45
|
const { checkAdminPermission } = require('../middlewares/check-permission');
|
|
46
46
|
const { isImageAccepted, isImageRequest, processAndRespond } = require('../libs/image');
|
|
@@ -55,17 +55,16 @@ const polishBlocklet = (doc) => {
|
|
|
55
55
|
const prefix = WELLKNOWN_SERVICE_PATH_PREFIX;
|
|
56
56
|
|
|
57
57
|
module.exports = {
|
|
58
|
-
init(server, node
|
|
58
|
+
init(server, node) {
|
|
59
59
|
const onSendFallbackLogo = ({ res, sendOptions }) => {
|
|
60
60
|
res.sendStaticFile('/images/blocklet.png', sendOptions);
|
|
61
61
|
};
|
|
62
62
|
|
|
63
63
|
const attachSendLogoFn = (req, res, next) => {
|
|
64
64
|
res.sendLogoFile = (fileName, options) => {
|
|
65
|
-
logger.info('send logo file', { fileName, options });
|
|
66
65
|
if (isImageRequest(req)) {
|
|
67
|
-
logger.info('send logo
|
|
68
|
-
const appDir = path.join(cacheDir,
|
|
66
|
+
logger.info('send logo with image service', { fileName, options });
|
|
67
|
+
const appDir = path.join(req.blocklet.env.cacheDir, '.services', 'image-filter');
|
|
69
68
|
processAndRespond(
|
|
70
69
|
req,
|
|
71
70
|
res,
|
|
@@ -75,7 +74,7 @@ module.exports = {
|
|
|
75
74
|
req.sendOptions
|
|
76
75
|
);
|
|
77
76
|
} else {
|
|
78
|
-
logger.info('send logo
|
|
77
|
+
logger.info('send logo with file', { fileName, options });
|
|
79
78
|
res.sendFile(fileName, options);
|
|
80
79
|
}
|
|
81
80
|
};
|
|
@@ -139,7 +138,6 @@ module.exports = {
|
|
|
139
138
|
cacheError
|
|
140
139
|
);
|
|
141
140
|
|
|
142
|
-
const cacheDir = path.join(node.dataDirs.cache, 'services', 'image');
|
|
143
141
|
server.get(`${prefix}${USER_AVATAR_PATH_PREFIX}/:fileName`, async (req, res) => {
|
|
144
142
|
try {
|
|
145
143
|
const blocklet = await req.getBlocklet();
|
|
@@ -160,7 +158,7 @@ module.exports = {
|
|
|
160
158
|
}
|
|
161
159
|
|
|
162
160
|
if (isImageAccepted(req) && isImageRequest(req)) {
|
|
163
|
-
const appDir = path.join(cacheDir,
|
|
161
|
+
const appDir = path.join(blocklet.env.cacheDir, '.services', 'image-filter');
|
|
164
162
|
processAndRespond(req, res, appDir, () =>
|
|
165
163
|
Promise.resolve([fs.createReadStream(avatarFile), path.extname(avatarFile).slice(1)])
|
|
166
164
|
);
|
|
@@ -503,7 +501,7 @@ module.exports = {
|
|
|
503
501
|
});
|
|
504
502
|
});
|
|
505
503
|
|
|
506
|
-
const tmpDir =
|
|
504
|
+
const tmpDir = getAppOgCacheDir(node.dataDirs.tmp);
|
|
507
505
|
server.get(`${prefix}/blocklet/og.(png|html)`, async (req, res) => {
|
|
508
506
|
try {
|
|
509
507
|
const format = req.path.split('.').pop();
|
|
@@ -511,10 +509,15 @@ module.exports = {
|
|
|
511
509
|
const blocklet = await req.getBlocklet();
|
|
512
510
|
const cache = req.query.nocache !== '1';
|
|
513
511
|
|
|
514
|
-
const
|
|
515
|
-
|
|
512
|
+
const sourceFile = await getOgImage({
|
|
513
|
+
input: req.query,
|
|
514
|
+
info,
|
|
515
|
+
format,
|
|
516
|
+
cacheDir: getAppOgCacheDir(blocklet.env.cacheDir),
|
|
517
|
+
tmpDir,
|
|
518
|
+
});
|
|
516
519
|
if (format === 'png' && isImageAccepted(req) && isImageRequest(req)) {
|
|
517
|
-
const appDir =
|
|
520
|
+
const appDir = getAppImageCacheDir(blocklet.env.cacheDir);
|
|
518
521
|
processAndRespond(req, res, appDir, () =>
|
|
519
522
|
Promise.resolve([fs.createReadStream(sourceFile), path.extname(sourceFile).slice(1)])
|
|
520
523
|
);
|
|
@@ -526,22 +529,5 @@ module.exports = {
|
|
|
526
529
|
res.status(500).send(err.message);
|
|
527
530
|
}
|
|
528
531
|
});
|
|
529
|
-
// Bust cache on blocklet config change
|
|
530
|
-
if (events) {
|
|
531
|
-
events.on(BlockletInternalEvents.appConfigChanged, ({ appDid }) => {
|
|
532
|
-
['png', 'html'].forEach((format) => {
|
|
533
|
-
const cached = path.join(node.dataDirs.data, appDid, `og.${format}`);
|
|
534
|
-
if (fs.existsSync(cached)) {
|
|
535
|
-
logger.info('bust og cache on blocklet config change', { appDid, cached });
|
|
536
|
-
try {
|
|
537
|
-
fs.unlinkSync(cached);
|
|
538
|
-
logger.info('bust og cache on blocklet config change', { appDid, format });
|
|
539
|
-
} catch (err) {
|
|
540
|
-
logger.error('bust og cache on blocklet config change', { appDid, format, error: err });
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
});
|
|
544
|
-
});
|
|
545
|
-
}
|
|
546
532
|
},
|
|
547
533
|
};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// @link https://sharp.pixelplumbing.com/
|
|
3
3
|
const http = require('http');
|
|
4
4
|
const path = require('path');
|
|
5
|
+
const { getAppImageCacheDir } = require('@abtnode/util/lib/blocklet');
|
|
5
6
|
|
|
6
7
|
const logger = require('@abtnode/logger')(require('../../../package.json').name);
|
|
7
8
|
|
|
@@ -29,7 +30,7 @@ const createImageService = ({ node }) => {
|
|
|
29
30
|
|
|
30
31
|
const [type, extension] = (res.headers['content-type'] || '').split('/');
|
|
31
32
|
if (type !== 'image') {
|
|
32
|
-
reject(new Error(
|
|
33
|
+
reject(new Error(`unexpected response type from upstream: ${type}, expected image`));
|
|
33
34
|
return;
|
|
34
35
|
}
|
|
35
36
|
|
|
@@ -41,9 +42,8 @@ const createImageService = ({ node }) => {
|
|
|
41
42
|
});
|
|
42
43
|
};
|
|
43
44
|
|
|
44
|
-
const cacheDir = path.join(node.dataDirs.cache, 'services', 'image');
|
|
45
45
|
const processImage = (req, res) => {
|
|
46
|
-
const appDir = path.join(
|
|
46
|
+
const appDir = getAppImageCacheDir(path.join(node.dataDirs.cache, req.getBlockletDid()));
|
|
47
47
|
processAndRespond(req, res, appDir, getUpstreamImage);
|
|
48
48
|
};
|
|
49
49
|
|
|
@@ -1,16 +1,16 @@
|
|
|
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.2c491798.js",
|
|
5
5
|
"static/js/4716.60c7a9b1.chunk.js": "/.well-known/service/static/static/js/4716.60c7a9b1.chunk.js",
|
|
6
6
|
"static/js/6856.01a0c9a2.chunk.js": "/.well-known/service/static/static/js/6856.01a0c9a2.chunk.js",
|
|
7
7
|
"static/js/1660.c490fcee.chunk.js": "/.well-known/service/static/static/js/1660.c490fcee.chunk.js",
|
|
8
8
|
"static/js/9899.eb448353.chunk.js": "/.well-known/service/static/static/js/9899.eb448353.chunk.js",
|
|
9
9
|
"static/js/6737.597a5126.chunk.js": "/.well-known/service/static/static/js/6737.597a5126.chunk.js",
|
|
10
|
-
"static/js/1760.
|
|
10
|
+
"static/js/1760.7726694e.chunk.js": "/.well-known/service/static/static/js/1760.7726694e.chunk.js",
|
|
11
11
|
"static/js/9620.c8f2696a.chunk.js": "/.well-known/service/static/static/js/9620.c8f2696a.chunk.js",
|
|
12
12
|
"static/js/1480.35a3e406.chunk.js": "/.well-known/service/static/static/js/1480.35a3e406.chunk.js",
|
|
13
|
-
"static/js/6186.
|
|
13
|
+
"static/js/6186.e4739d35.chunk.js": "/.well-known/service/static/static/js/6186.e4739d35.chunk.js",
|
|
14
14
|
"static/js/4682.23dd054e.chunk.js": "/.well-known/service/static/static/js/4682.23dd054e.chunk.js",
|
|
15
15
|
"static/js/6711.38948be4.chunk.js": "/.well-known/service/static/static/js/6711.38948be4.chunk.js",
|
|
16
16
|
"static/js/8437.0d88b9db.chunk.js": "/.well-known/service/static/static/js/8437.0d88b9db.chunk.js",
|
|
@@ -18,22 +18,22 @@
|
|
|
18
18
|
"static/js/5434.523d071d.chunk.js": "/.well-known/service/static/static/js/5434.523d071d.chunk.js",
|
|
19
19
|
"static/js/9409.21bf1e37.chunk.js": "/.well-known/service/static/static/js/9409.21bf1e37.chunk.js",
|
|
20
20
|
"static/js/5859.b3338b24.chunk.js": "/.well-known/service/static/static/js/5859.b3338b24.chunk.js",
|
|
21
|
-
"static/js/
|
|
22
|
-
"static/js/1980.
|
|
21
|
+
"static/js/5628.01088d1b.chunk.js": "/.well-known/service/static/static/js/5628.01088d1b.chunk.js",
|
|
22
|
+
"static/js/1980.ff084f4c.chunk.js": "/.well-known/service/static/static/js/1980.ff084f4c.chunk.js",
|
|
23
23
|
"static/js/861.2a22cbbf.chunk.js": "/.well-known/service/static/static/js/861.2a22cbbf.chunk.js",
|
|
24
24
|
"static/js/5176.98a62a22.chunk.js": "/.well-known/service/static/static/js/5176.98a62a22.chunk.js",
|
|
25
25
|
"static/js/9102.7087c66c.chunk.js": "/.well-known/service/static/static/js/9102.7087c66c.chunk.js",
|
|
26
|
-
"static/js/
|
|
27
|
-
"static/js/2653.
|
|
26
|
+
"static/js/3688.0122dfcd.chunk.js": "/.well-known/service/static/static/js/3688.0122dfcd.chunk.js",
|
|
27
|
+
"static/js/2653.892d84ff.chunk.js": "/.well-known/service/static/static/js/2653.892d84ff.chunk.js",
|
|
28
28
|
"static/js/3593.98d9341a.chunk.js": "/.well-known/service/static/static/js/3593.98d9341a.chunk.js",
|
|
29
|
-
"static/css/
|
|
30
|
-
"static/js/
|
|
29
|
+
"static/css/4802.bf353f58.chunk.css": "/.well-known/service/static/static/css/4802.bf353f58.chunk.css",
|
|
30
|
+
"static/js/4802.4e44fe6c.chunk.js": "/.well-known/service/static/static/js/4802.4e44fe6c.chunk.js",
|
|
31
31
|
"static/js/6771.dfad334c.chunk.js": "/.well-known/service/static/static/js/6771.dfad334c.chunk.js",
|
|
32
32
|
"static/css/5982.ac464505.chunk.css": "/.well-known/service/static/static/css/5982.ac464505.chunk.css",
|
|
33
33
|
"static/js/5982.e80abbc4.chunk.js": "/.well-known/service/static/static/js/5982.e80abbc4.chunk.js",
|
|
34
34
|
"static/js/4023.cb71646d.chunk.js": "/.well-known/service/static/static/js/4023.cb71646d.chunk.js",
|
|
35
35
|
"static/js/6452.c7f6c102.chunk.js": "/.well-known/service/static/static/js/6452.c7f6c102.chunk.js",
|
|
36
|
-
"static/js/1565.
|
|
36
|
+
"static/js/1565.a5a98618.chunk.js": "/.well-known/service/static/static/js/1565.a5a98618.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.7e2e9b58.chunk.js": "/.well-known/service/static/static/js/5683.7e2e9b58.chunk.js",
|
|
39
39
|
"static/js/2100.1e7f0c60.chunk.js": "/.well-known/service/static/static/js/2100.1e7f0c60.chunk.js",
|
|
@@ -56,23 +56,23 @@
|
|
|
56
56
|
"static/js/7606.25231f8c.chunk.js": "/.well-known/service/static/static/js/7606.25231f8c.chunk.js",
|
|
57
57
|
"static/js/6921.3ab94bf5.chunk.js": "/.well-known/service/static/static/js/6921.3ab94bf5.chunk.js",
|
|
58
58
|
"static/js/8143.5bd71f08.chunk.js": "/.well-known/service/static/static/js/8143.5bd71f08.chunk.js",
|
|
59
|
-
"static/js/
|
|
60
|
-
"static/
|
|
61
|
-
"static/
|
|
62
|
-
"static/js/7272.c85146f8.chunk.js": "/.well-known/service/static/static/js/7272.c85146f8.chunk.js",
|
|
59
|
+
"static/js/6498.bd96fa39.chunk.js": "/.well-known/service/static/static/js/6498.bd96fa39.chunk.js",
|
|
60
|
+
"static/css/2784.1780cb4a.chunk.css": "/.well-known/service/static/static/css/2784.1780cb4a.chunk.css",
|
|
61
|
+
"static/js/2784.b037c6d1.chunk.js": "/.well-known/service/static/static/js/2784.b037c6d1.chunk.js",
|
|
63
62
|
"static/js/8128.e95991f7.chunk.js": "/.well-known/service/static/static/js/8128.e95991f7.chunk.js",
|
|
64
63
|
"static/js/6700.6c404ac2.chunk.js": "/.well-known/service/static/static/js/6700.6c404ac2.chunk.js",
|
|
65
|
-
"static/js/
|
|
66
|
-
"static/js/
|
|
64
|
+
"static/js/6640.14ab87a4.chunk.js": "/.well-known/service/static/static/js/6640.14ab87a4.chunk.js",
|
|
65
|
+
"static/js/7465.b76f2c39.chunk.js": "/.well-known/service/static/static/js/7465.b76f2c39.chunk.js",
|
|
67
66
|
"static/js/252.27d0e320.chunk.js": "/.well-known/service/static/static/js/252.27d0e320.chunk.js",
|
|
68
67
|
"static/js/617.ecc73170.chunk.js": "/.well-known/service/static/static/js/617.ecc73170.chunk.js",
|
|
69
|
-
"static/js/
|
|
70
|
-
"static/js/
|
|
68
|
+
"static/js/7310.1163692a.chunk.js": "/.well-known/service/static/static/js/7310.1163692a.chunk.js",
|
|
69
|
+
"static/js/3620.da2326b7.chunk.js": "/.well-known/service/static/static/js/3620.da2326b7.chunk.js",
|
|
70
|
+
"static/js/4461.d7dcfc2f.chunk.js": "/.well-known/service/static/static/js/4461.d7dcfc2f.chunk.js",
|
|
71
71
|
"static/js/5645.3c5c0f93.chunk.js": "/.well-known/service/static/static/js/5645.3c5c0f93.chunk.js",
|
|
72
72
|
"static/js/3038.8cbed218.chunk.js": "/.well-known/service/static/static/js/3038.8cbed218.chunk.js",
|
|
73
73
|
"static/css/3154.e954fcda.chunk.css": "/.well-known/service/static/static/css/3154.e954fcda.chunk.css",
|
|
74
74
|
"static/js/9657.e974d577.chunk.js": "/.well-known/service/static/static/js/9657.e974d577.chunk.js",
|
|
75
|
-
"static/js/
|
|
75
|
+
"static/js/6868.8289e873.chunk.js": "/.well-known/service/static/static/js/6868.8289e873.chunk.js",
|
|
76
76
|
"static/media/ubuntu-mono-all-400-normal.woff": "/.well-known/service/static/static/media/ubuntu-mono-all-400-normal.c879328bc62e9c68268f.woff",
|
|
77
77
|
"service-worker.js": "/.well-known/service/static/service-worker.js",
|
|
78
78
|
"static/media/lato-all-400-normal.woff": "/.well-known/service/static/static/media/lato-all-400-normal.3dc1eff492ab1f598560.woff",
|
|
@@ -97,16 +97,16 @@
|
|
|
97
97
|
"index.html": "/.well-known/service/static/index.html",
|
|
98
98
|
"static/media/space-connected.svg": "/.well-known/service/static/static/media/space-connected.9a4e18fd2bc7d065191b0d241a131c28.svg",
|
|
99
99
|
"main.7ea79dc8.css.map": "/.well-known/service/static/static/css/main.7ea79dc8.css.map",
|
|
100
|
-
"main.
|
|
100
|
+
"main.2c491798.js.map": "/.well-known/service/static/static/js/main.2c491798.js.map",
|
|
101
101
|
"4716.60c7a9b1.chunk.js.map": "/.well-known/service/static/static/js/4716.60c7a9b1.chunk.js.map",
|
|
102
102
|
"6856.01a0c9a2.chunk.js.map": "/.well-known/service/static/static/js/6856.01a0c9a2.chunk.js.map",
|
|
103
103
|
"1660.c490fcee.chunk.js.map": "/.well-known/service/static/static/js/1660.c490fcee.chunk.js.map",
|
|
104
104
|
"9899.eb448353.chunk.js.map": "/.well-known/service/static/static/js/9899.eb448353.chunk.js.map",
|
|
105
105
|
"6737.597a5126.chunk.js.map": "/.well-known/service/static/static/js/6737.597a5126.chunk.js.map",
|
|
106
|
-
"1760.
|
|
106
|
+
"1760.7726694e.chunk.js.map": "/.well-known/service/static/static/js/1760.7726694e.chunk.js.map",
|
|
107
107
|
"9620.c8f2696a.chunk.js.map": "/.well-known/service/static/static/js/9620.c8f2696a.chunk.js.map",
|
|
108
108
|
"1480.35a3e406.chunk.js.map": "/.well-known/service/static/static/js/1480.35a3e406.chunk.js.map",
|
|
109
|
-
"6186.
|
|
109
|
+
"6186.e4739d35.chunk.js.map": "/.well-known/service/static/static/js/6186.e4739d35.chunk.js.map",
|
|
110
110
|
"4682.23dd054e.chunk.js.map": "/.well-known/service/static/static/js/4682.23dd054e.chunk.js.map",
|
|
111
111
|
"6711.38948be4.chunk.js.map": "/.well-known/service/static/static/js/6711.38948be4.chunk.js.map",
|
|
112
112
|
"8437.0d88b9db.chunk.js.map": "/.well-known/service/static/static/js/8437.0d88b9db.chunk.js.map",
|
|
@@ -114,22 +114,22 @@
|
|
|
114
114
|
"5434.523d071d.chunk.js.map": "/.well-known/service/static/static/js/5434.523d071d.chunk.js.map",
|
|
115
115
|
"9409.21bf1e37.chunk.js.map": "/.well-known/service/static/static/js/9409.21bf1e37.chunk.js.map",
|
|
116
116
|
"5859.b3338b24.chunk.js.map": "/.well-known/service/static/static/js/5859.b3338b24.chunk.js.map",
|
|
117
|
-
"
|
|
118
|
-
"1980.
|
|
117
|
+
"5628.01088d1b.chunk.js.map": "/.well-known/service/static/static/js/5628.01088d1b.chunk.js.map",
|
|
118
|
+
"1980.ff084f4c.chunk.js.map": "/.well-known/service/static/static/js/1980.ff084f4c.chunk.js.map",
|
|
119
119
|
"861.2a22cbbf.chunk.js.map": "/.well-known/service/static/static/js/861.2a22cbbf.chunk.js.map",
|
|
120
120
|
"5176.98a62a22.chunk.js.map": "/.well-known/service/static/static/js/5176.98a62a22.chunk.js.map",
|
|
121
121
|
"9102.7087c66c.chunk.js.map": "/.well-known/service/static/static/js/9102.7087c66c.chunk.js.map",
|
|
122
|
-
"
|
|
123
|
-
"2653.
|
|
122
|
+
"3688.0122dfcd.chunk.js.map": "/.well-known/service/static/static/js/3688.0122dfcd.chunk.js.map",
|
|
123
|
+
"2653.892d84ff.chunk.js.map": "/.well-known/service/static/static/js/2653.892d84ff.chunk.js.map",
|
|
124
124
|
"3593.98d9341a.chunk.js.map": "/.well-known/service/static/static/js/3593.98d9341a.chunk.js.map",
|
|
125
|
-
"
|
|
126
|
-
"
|
|
125
|
+
"4802.bf353f58.chunk.css.map": "/.well-known/service/static/static/css/4802.bf353f58.chunk.css.map",
|
|
126
|
+
"4802.4e44fe6c.chunk.js.map": "/.well-known/service/static/static/js/4802.4e44fe6c.chunk.js.map",
|
|
127
127
|
"6771.dfad334c.chunk.js.map": "/.well-known/service/static/static/js/6771.dfad334c.chunk.js.map",
|
|
128
128
|
"5982.ac464505.chunk.css.map": "/.well-known/service/static/static/css/5982.ac464505.chunk.css.map",
|
|
129
129
|
"5982.e80abbc4.chunk.js.map": "/.well-known/service/static/static/js/5982.e80abbc4.chunk.js.map",
|
|
130
130
|
"4023.cb71646d.chunk.js.map": "/.well-known/service/static/static/js/4023.cb71646d.chunk.js.map",
|
|
131
131
|
"6452.c7f6c102.chunk.js.map": "/.well-known/service/static/static/js/6452.c7f6c102.chunk.js.map",
|
|
132
|
-
"1565.
|
|
132
|
+
"1565.a5a98618.chunk.js.map": "/.well-known/service/static/static/js/1565.a5a98618.chunk.js.map",
|
|
133
133
|
"2393.9c045444.chunk.js.map": "/.well-known/service/static/static/js/2393.9c045444.chunk.js.map",
|
|
134
134
|
"5683.7e2e9b58.chunk.js.map": "/.well-known/service/static/static/js/5683.7e2e9b58.chunk.js.map",
|
|
135
135
|
"2100.1e7f0c60.chunk.js.map": "/.well-known/service/static/static/js/2100.1e7f0c60.chunk.js.map",
|
|
@@ -152,26 +152,26 @@
|
|
|
152
152
|
"7606.25231f8c.chunk.js.map": "/.well-known/service/static/static/js/7606.25231f8c.chunk.js.map",
|
|
153
153
|
"6921.3ab94bf5.chunk.js.map": "/.well-known/service/static/static/js/6921.3ab94bf5.chunk.js.map",
|
|
154
154
|
"8143.5bd71f08.chunk.js.map": "/.well-known/service/static/static/js/8143.5bd71f08.chunk.js.map",
|
|
155
|
-
"
|
|
156
|
-
"
|
|
157
|
-
"
|
|
158
|
-
"7272.c85146f8.chunk.js.map": "/.well-known/service/static/static/js/7272.c85146f8.chunk.js.map",
|
|
155
|
+
"6498.bd96fa39.chunk.js.map": "/.well-known/service/static/static/js/6498.bd96fa39.chunk.js.map",
|
|
156
|
+
"2784.1780cb4a.chunk.css.map": "/.well-known/service/static/static/css/2784.1780cb4a.chunk.css.map",
|
|
157
|
+
"2784.b037c6d1.chunk.js.map": "/.well-known/service/static/static/js/2784.b037c6d1.chunk.js.map",
|
|
159
158
|
"8128.e95991f7.chunk.js.map": "/.well-known/service/static/static/js/8128.e95991f7.chunk.js.map",
|
|
160
159
|
"6700.6c404ac2.chunk.js.map": "/.well-known/service/static/static/js/6700.6c404ac2.chunk.js.map",
|
|
161
|
-
"
|
|
162
|
-
"
|
|
160
|
+
"6640.14ab87a4.chunk.js.map": "/.well-known/service/static/static/js/6640.14ab87a4.chunk.js.map",
|
|
161
|
+
"7465.b76f2c39.chunk.js.map": "/.well-known/service/static/static/js/7465.b76f2c39.chunk.js.map",
|
|
163
162
|
"252.27d0e320.chunk.js.map": "/.well-known/service/static/static/js/252.27d0e320.chunk.js.map",
|
|
164
163
|
"617.ecc73170.chunk.js.map": "/.well-known/service/static/static/js/617.ecc73170.chunk.js.map",
|
|
165
|
-
"
|
|
166
|
-
"
|
|
164
|
+
"7310.1163692a.chunk.js.map": "/.well-known/service/static/static/js/7310.1163692a.chunk.js.map",
|
|
165
|
+
"3620.da2326b7.chunk.js.map": "/.well-known/service/static/static/js/3620.da2326b7.chunk.js.map",
|
|
166
|
+
"4461.d7dcfc2f.chunk.js.map": "/.well-known/service/static/static/js/4461.d7dcfc2f.chunk.js.map",
|
|
167
167
|
"5645.3c5c0f93.chunk.js.map": "/.well-known/service/static/static/js/5645.3c5c0f93.chunk.js.map",
|
|
168
168
|
"3038.8cbed218.chunk.js.map": "/.well-known/service/static/static/js/3038.8cbed218.chunk.js.map",
|
|
169
169
|
"3154.e954fcda.chunk.css.map": "/.well-known/service/static/static/css/3154.e954fcda.chunk.css.map",
|
|
170
170
|
"9657.e974d577.chunk.js.map": "/.well-known/service/static/static/js/9657.e974d577.chunk.js.map",
|
|
171
|
-
"
|
|
171
|
+
"6868.8289e873.chunk.js.map": "/.well-known/service/static/static/js/6868.8289e873.chunk.js.map"
|
|
172
172
|
},
|
|
173
173
|
"entrypoints": [
|
|
174
174
|
"static/css/main.7ea79dc8.css",
|
|
175
|
-
"static/js/main.
|
|
175
|
+
"static/js/main.2c491798.js"
|
|
176
176
|
]
|
|
177
177
|
}
|
package/build/index.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico?imageFilter=resize&w=32"/><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?imageFilter=resize&w=32"/><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.2c491798.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>
|