@abtnode/blocklet-services 1.16.13-beta-d17a7de4 → 1.16.13-beta-90ded76f

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.
Files changed (33) hide show
  1. package/api/index.js +15 -11
  2. package/api/libs/connect/session.js +4 -2
  3. package/api/libs/jwt.js +2 -2
  4. package/api/routes/blocklet.js +1 -1
  5. package/api/routes/oauth.js +4 -2
  6. package/api/routes/user.js +1 -0
  7. package/api/services/auth/connect/invite.js +2 -2
  8. package/api/services/auth/connect/receive-transfer-app-owner.js +1 -1
  9. package/api/services/auth/session.js +2 -1
  10. package/api/services/static.js +3 -4
  11. package/api/services/studio/index.js +26 -1
  12. package/api/util/attach-shared-utils.js +0 -1
  13. package/api/util/index.js +15 -8
  14. package/build/asset-manifest.json +17 -17
  15. package/build/index.html +1 -1
  16. package/build/service-worker.js +1 -1
  17. package/build/static/css/{125.1bbe7d61.chunk.css → 221.f0cfb042.chunk.css} +1 -1
  18. package/build/static/js/158.0f09b75c.chunk.js +2 -0
  19. package/build/static/js/{189.602863fd.chunk.js → 189.971a999d.chunk.js} +3 -3
  20. package/build/static/js/{189.602863fd.chunk.js.LICENSE.txt → 189.971a999d.chunk.js.LICENSE.txt} +4 -0
  21. package/build/static/js/221.c88341d7.chunk.js +3 -0
  22. package/build/static/js/387.faf23026.chunk.js +2 -0
  23. package/build/static/js/737.3e7feae2.chunk.js +2 -0
  24. package/build/static/js/{868.30686f6c.chunk.js → 868.cd5abe55.chunk.js} +2 -2
  25. package/build/static/js/main.ab3b47f4.js +3 -0
  26. package/build/static/js/{main.9c09d1dd.js.LICENSE.txt → main.ab3b47f4.js.LICENSE.txt} +0 -4
  27. package/package.json +19 -20
  28. package/build/static/js/125.910ae6fb.chunk.js +0 -3
  29. package/build/static/js/158.ca656ebd.chunk.js +0 -2
  30. package/build/static/js/343.2a12718c.chunk.js +0 -2
  31. package/build/static/js/737.1f59e1c3.chunk.js +0 -2
  32. package/build/static/js/main.9c09d1dd.js +0 -3
  33. /package/build/static/js/{125.910ae6fb.chunk.js.LICENSE.txt → 221.c88341d7.chunk.js.LICENSE.txt} +0 -0
package/api/index.js CHANGED
@@ -8,7 +8,7 @@ const compression = require('compression');
8
8
  const cookieParser = require('cookie-parser');
9
9
  const bodyParser = require('body-parser');
10
10
  const httpProxy = require('@arcblock/http-proxy');
11
- const dayjs = require('dayjs');
11
+ const dayjs = require('@abtnode/util/lib/dayjs');
12
12
  const minimatch = require('minimatch');
13
13
 
14
14
  const { getAccessLogStream } = require('@abtnode/logger');
@@ -224,7 +224,7 @@ module.exports = function createServer(node, serverOptions = {}) {
224
224
  StaticService.attachStaticResources({ app: server, proxy });
225
225
 
226
226
  // Studio service
227
- StudioService.init({ app: server });
227
+ StudioService.init({ app: server, node });
228
228
 
229
229
  // API: notification
230
230
  notificationService.sendToUser.attach(server);
@@ -291,15 +291,19 @@ module.exports = function createServer(node, serverOptions = {}) {
291
291
  });
292
292
 
293
293
  // After all service middleware, we can now safely pass all traffic to blocklets
294
- server.use(async (req, res, next) => {
295
- const { target } = await ensureProxyUrl(req);
296
-
297
- if (target) {
298
- proxy.safeWeb(req, res, {
299
- target,
300
- });
301
- } else {
302
- next();
294
+ server.use(async (req, res) => {
295
+ try {
296
+ const { target } = await ensureProxyUrl(req);
297
+ if (target) {
298
+ proxy.safeWeb(req, res, {
299
+ target,
300
+ });
301
+ } else {
302
+ throw new Error('empty proxy target');
303
+ }
304
+ } catch (err) {
305
+ logger.error('Failed to get component target', { url: req.url, error: err });
306
+ res.status(500).send(`Blocklet Service: failed to get component target: ${err.message}`);
303
307
  }
304
308
  });
305
309
 
@@ -322,6 +322,7 @@ module.exports = {
322
322
  ? { provider: 'nft', did: nftState.address, owner: nftState.owner, firstLoginAt: now, lastLoginAt: now }
323
323
  : null;
324
324
 
325
+ let fullName = user?.fullName;
325
326
  // Update profile
326
327
  const passportForLog = passport || { name: 'Guest', role: 'guest' };
327
328
  if (user) {
@@ -349,6 +350,7 @@ module.exports = {
349
350
  } else {
350
351
  // Create user
351
352
  const profile = claims.find((x) => x.type === 'profile');
353
+ fullName = profile.fullName;
352
354
 
353
355
  const doc = await node.loginUser({
354
356
  teamDid,
@@ -388,7 +390,7 @@ module.exports = {
388
390
  const sessionConfig = blocklet.settings?.session || {};
389
391
  const { sessionToken, refreshToken } = createToken(
390
392
  realDid,
391
- { secret, passport, role },
393
+ { secret, passport, role, fullName },
392
394
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(request) }
393
395
  );
394
396
  logger.info(`${action}.success`, { userDid: realDid, role });
@@ -643,7 +645,7 @@ module.exports = {
643
645
  const sessionConfig = blocklet.settings?.session || {};
644
646
  const { sessionToken, refreshToken } = createToken(
645
647
  userDid,
646
- { secret, passport, role },
648
+ { secret, passport, role, fullName: user.fullName },
647
649
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(request) }
648
650
  );
649
651
  return { sessionToken, refreshToken };
package/api/libs/jwt.js CHANGED
@@ -41,7 +41,7 @@ const initJwt = (node, options) => {
41
41
  }
42
42
  }
43
43
 
44
- const { did, role, passport } = decoded;
44
+ const { did, role, passport, fullName } = decoded;
45
45
  let user;
46
46
  if (!did) {
47
47
  return reject(new Error('Invalid jwt token: invalid did'));
@@ -69,7 +69,7 @@ const initJwt = (node, options) => {
69
69
  user.role = role;
70
70
  user.passport = passport;
71
71
  } else {
72
- user = { did, role, passport };
72
+ user = { did, role, passport, fullName };
73
73
  }
74
74
 
75
75
  return resolve(user);
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable no-console */
2
2
  const fs = require('fs');
3
3
  const cloneDeep = require('lodash/cloneDeep');
4
- const dayjs = require('dayjs');
4
+ const dayjs = require('@abtnode/util/lib/dayjs');
5
5
  const JWT = require('@arcblock/jwt');
6
6
  const joinUrl = require('url-join');
7
7
  const handleInstanceInStore = require('@abtnode/core/lib/util/public-to-store');
@@ -88,6 +88,7 @@ async function login(req, node, options) {
88
88
  });
89
89
  let doc;
90
90
  let passportForLog;
91
+ const fullName = currentUser?.fullName || oauthInfo?.nickname;
91
92
  // 当前账户已存在,更新账户信息
92
93
  if (currentUser) {
93
94
  const allPassports = currentUser.passports || [];
@@ -160,6 +161,7 @@ async function login(req, node, options) {
160
161
  secret,
161
162
  passport,
162
163
  role: passport.role,
164
+ fullName,
163
165
  },
164
166
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
165
167
  );
@@ -278,7 +280,7 @@ async function invite(req, node, options) {
278
280
 
279
281
  const { sessionToken, refreshToken } = createToken(
280
282
  userDid,
281
- { secret, passport, role },
283
+ { secret, passport, role, fullName: profile.fullName },
282
284
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
283
285
  );
284
286
 
@@ -462,7 +464,7 @@ module.exports = {
462
464
  const sessionConfig = blocklet.settings?.session || {};
463
465
  const { sessionToken, refreshToken } = createToken(
464
466
  userDid,
465
- { secret, passport, role: passport.role },
467
+ { secret, passport, role: passport.role, fullName: user?.fullName },
466
468
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
467
469
  );
468
470
 
@@ -242,6 +242,7 @@ async function login(req, node, options) {
242
242
  secret,
243
243
  passport,
244
244
  role: passport.role,
245
+ fullName: doc.fullName,
245
246
  },
246
247
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
247
248
  );
@@ -61,7 +61,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
61
61
  const statusEndpointBaseUrl = joinUrl(baseUrl, WELLKNOWN_SERVICE_PATH_PREFIX);
62
62
  const endpoint = baseUrl;
63
63
 
64
- const { passport, response, role } = await handleInvitationResponse({
64
+ const { passport, response, role, profile } = await handleInvitationResponse({
65
65
  req,
66
66
  node,
67
67
  nodeInfo,
@@ -80,7 +80,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
80
80
  const sessionConfig = blocklet.settings?.session || {};
81
81
  const { sessionToken, refreshToken } = createToken(
82
82
  userDid,
83
- { secret, passport, role },
83
+ { secret, passport, role, fullName: profile.fullName },
84
84
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
85
85
  );
86
86
  await updateSession({ sessionToken, refreshToken }, true);
@@ -366,7 +366,7 @@ module.exports = function createRoutes(node, _, createSessionToken) {
366
366
  const sessionConfig = blocklet.settings?.session || {};
367
367
  const { sessionToken, refreshToken } = createToken(
368
368
  userDid,
369
- { secret, passport: vc, role },
369
+ { secret, passport: vc, role, fullName: profile.fullName },
370
370
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
371
371
  );
372
372
  await updateSession({ sessionToken, refreshToken }, true);
@@ -61,6 +61,7 @@ module.exports = {
61
61
  secret,
62
62
  passport: req.user.passport,
63
63
  role: req.user.role,
64
+ fullName: user.fullName,
64
65
  },
65
66
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
66
67
  );
@@ -129,7 +130,7 @@ module.exports = {
129
130
  const sessionConfig = blocklet.settings?.session || {};
130
131
  const { sessionToken, refreshToken } = createToken(
131
132
  userDid,
132
- { secret, passport, role },
133
+ { secret, passport, role, fullName: user.fullName },
133
134
  { ...sessionConfig, didConnectVersion: getDidConnectVersion(req) }
134
135
  );
135
136
 
@@ -40,11 +40,10 @@ const attachStaticResources = ({ app, proxy }) => {
40
40
  });
41
41
  } else {
42
42
  app.use(`${WELLKNOWN_SERVICE_PATH_PREFIX}/static`, serveStatic(distDir, { maxAge: '365d', index: false }));
43
+ app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/service-worker.js`, (req, res) => {
44
+ res.sendFile(path.join(distDir, 'service-worker.js'));
45
+ });
43
46
  }
44
-
45
- app.get(`${WELLKNOWN_SERVICE_PATH_PREFIX}/service-worker.js`, (req, res) => {
46
- res.sendFile(path.join(distDir, 'service-worker.js'));
47
- });
48
47
  };
49
48
 
50
49
  const attachDevProxy = ({ wsRouter, proxy }) => {
@@ -5,6 +5,7 @@ const serveStatic = require('serve-static');
5
5
  const path = require('path');
6
6
  const nocache = require('nocache');
7
7
  const { BLOCKLET_PREFERENCE_FILE, BLOCKLET_UPLOADS_DIR } = require('@blocklet/constant');
8
+ const { getHtmlResultPath } = require('@abtnode/insights');
8
9
 
9
10
  const builderPath = path.dirname(require.resolve('@blocklet/form-builder'));
10
11
  const collectorPath = path.dirname(require.resolve('@blocklet/form-collector'));
@@ -12,7 +13,7 @@ const collectorPath = path.dirname(require.resolve('@blocklet/form-collector'));
12
13
  const { PREFIXES } = require('../../util/constants');
13
14
 
14
15
  module.exports = {
15
- init({ app }) {
16
+ init({ app, node }) {
16
17
  PREFIXES.forEach((prefix) => {
17
18
  const preferenceUrl = `${prefix}/api/studio/preferences`;
18
19
 
@@ -78,6 +79,30 @@ module.exports = {
78
79
 
79
80
  express.static(path.join(blocklet.env.dataDir, BLOCKLET_UPLOADS_DIR), staticOptions)(req, res, next);
80
81
  });
82
+
83
+ // FIXME: @wangshijun should ensurePermission here
84
+ app.get(`${prefix}/api/insights/traffic`, async (req, res) => {
85
+ const blocklet = await req.getBlocklet();
86
+ if (!blocklet) {
87
+ return res.status(400).send('Blocklet not found');
88
+ }
89
+
90
+ if (blocklet.mode !== 'production') {
91
+ return res.status(400).send('Traffic insights are only available for production blocklets');
92
+ }
93
+
94
+ const { date } = req.query;
95
+ if (!date) {
96
+ return res.status(400).send('Date is required to load traffic insights');
97
+ }
98
+
99
+ const filePath = getHtmlResultPath(node.dataDirs.data, date, blocklet.appPid);
100
+ if (fs.existsSync(filePath) === false) {
101
+ return res.status(400).send('Traffic insight for selected date not found');
102
+ }
103
+
104
+ return res.sendFile(filePath);
105
+ });
81
106
  });
82
107
  },
83
108
  };
@@ -10,7 +10,6 @@ const getDynamicServiceConfig = require('./get-dynamic-service-config');
10
10
  const getStaticServiceConfig = require('./get-static-service-config');
11
11
 
12
12
  module.exports = ({ node, req, options }) => {
13
- req.getBlockletUrl = () => req.headers['x-blocklet-url'] || get(options, 'blockletUrl', '');
14
13
  req.getBlockletDid = () => req.headers['x-blocklet-did'] || get(options, 'blockletDid', '');
15
14
  req.getBlockletComponentId = () => req.headers['x-blocklet-component-id'] || get(options, 'blockletComponentId', '');
16
15
  req.getRoutingRuleId = () => req.headers['x-routing-rule-id'] || get(options, 'routingRuleId', '');
package/api/util/index.js CHANGED
@@ -2,7 +2,7 @@ const joinUrl = require('url-join');
2
2
  const get = require('lodash/get');
3
3
  const { ROLES, WHO_CAN_ACCESS } = require('@abtnode/constant');
4
4
  const { BlockletSource, BLOCKLET_MODES, BlockletGroup } = require('@blocklet/constant');
5
- const { findWebInterface } = require('@blocklet/meta/lib/util');
5
+ const { findWebInterface, findWebInterfacePort, findComponentByIdV2 } = require('@blocklet/meta/lib/util');
6
6
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
7
7
 
8
8
  const getGroupPrefix = (req) => {
@@ -91,11 +91,12 @@ const findRootWebPort = (blocklet) => {
91
91
  };
92
92
 
93
93
  const ensureProxyUrl = async (req) => {
94
+ const blocklet = await req.getBlocklet();
94
95
  if (req.url.startsWith('/favicon')) {
95
96
  // convert all faviconXXX to favicon to ensure file exists in root blocklet
96
97
  req.url = '/favicon.ico';
97
98
 
98
- const port = findRootWebPort(await req.getBlocklet());
99
+ const port = findRootWebPort(blocklet);
99
100
  if (port) {
100
101
  return { target: `http://127.0.0.1:${port}` };
101
102
  }
@@ -103,14 +104,20 @@ const ensureProxyUrl = async (req) => {
103
104
  return { target: null };
104
105
  }
105
106
 
106
- const target = req.headers['x-blocklet-url'];
107
+ const componentId = req.getBlockletComponentId();
108
+ const component = findComponentByIdV2(blocklet, componentId) || blocklet;
109
+ const port = findWebInterfacePort(component);
107
110
 
108
- if (target) {
109
- const pathPrefix = req.headers['x-routing-rule-path-prefix'];
111
+ if (!port) {
112
+ return { target: null };
113
+ }
110
114
 
111
- if (pathPrefix && pathPrefix !== '/') {
112
- req.url = `${pathPrefix}${req.url}`;
113
- }
115
+ const target = `http://127.0.0.1:${port}`;
116
+
117
+ // TODO: path prefix check can be removed after meta.interfaces.path|prefix need not supported
118
+ const pathPrefix = req.headers['x-routing-rule-path-prefix'];
119
+ if (pathPrefix && pathPrefix !== '/') {
120
+ req.url = `${pathPrefix}${req.url}`;
114
121
  }
115
122
 
116
123
  return { target };
@@ -1,26 +1,26 @@
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.9c09d1dd.js",
4
+ "main.js": "/.well-known/service/static/static/js/main.ab3b47f4.js",
5
5
  "static/js/716.1c25a58a.chunk.js": "/.well-known/service/static/static/js/716.1c25a58a.chunk.js",
6
6
  "static/js/359.0eb124b0.chunk.js": "/.well-known/service/static/static/js/359.0eb124b0.chunk.js",
7
7
  "static/js/255.279b1bca.chunk.js": "/.well-known/service/static/static/js/255.279b1bca.chunk.js",
8
8
  "static/js/371.f67a06b4.chunk.js": "/.well-known/service/static/static/js/371.f67a06b4.chunk.js",
9
- "static/js/737.1f59e1c3.chunk.js": "/.well-known/service/static/static/js/737.1f59e1c3.chunk.js",
10
- "static/js/158.ca656ebd.chunk.js": "/.well-known/service/static/static/js/158.ca656ebd.chunk.js",
11
- "static/js/868.30686f6c.chunk.js": "/.well-known/service/static/static/js/868.30686f6c.chunk.js",
9
+ "static/js/737.3e7feae2.chunk.js": "/.well-known/service/static/static/js/737.3e7feae2.chunk.js",
10
+ "static/js/158.0f09b75c.chunk.js": "/.well-known/service/static/static/js/158.0f09b75c.chunk.js",
11
+ "static/js/868.cd5abe55.chunk.js": "/.well-known/service/static/static/js/868.cd5abe55.chunk.js",
12
12
  "static/js/547.ce4b87b4.chunk.js": "/.well-known/service/static/static/js/547.ce4b87b4.chunk.js",
13
- "static/js/343.2a12718c.chunk.js": "/.well-known/service/static/static/js/343.2a12718c.chunk.js",
13
+ "static/js/387.faf23026.chunk.js": "/.well-known/service/static/static/js/387.faf23026.chunk.js",
14
14
  "static/js/682.a8bf723a.chunk.js": "/.well-known/service/static/static/js/682.a8bf723a.chunk.js",
15
15
  "static/js/711.56427a24.chunk.js": "/.well-known/service/static/static/js/711.56427a24.chunk.js",
16
16
  "static/js/437.075e8453.chunk.js": "/.well-known/service/static/static/js/437.075e8453.chunk.js",
17
17
  "static/js/690.afb99ee7.chunk.js": "/.well-known/service/static/static/js/690.afb99ee7.chunk.js",
18
18
  "static/js/42.c390a3f4.chunk.js": "/.well-known/service/static/static/js/42.c390a3f4.chunk.js",
19
- "static/js/189.602863fd.chunk.js": "/.well-known/service/static/static/js/189.602863fd.chunk.js",
19
+ "static/js/189.971a999d.chunk.js": "/.well-known/service/static/static/js/189.971a999d.chunk.js",
20
20
  "static/js/162.8c29e450.chunk.js": "/.well-known/service/static/static/js/162.8c29e450.chunk.js",
21
21
  "static/js/610.40349d57.chunk.js": "/.well-known/service/static/static/js/610.40349d57.chunk.js",
22
- "static/css/125.1bbe7d61.chunk.css": "/.well-known/service/static/static/css/125.1bbe7d61.chunk.css",
23
- "static/js/125.910ae6fb.chunk.js": "/.well-known/service/static/static/js/125.910ae6fb.chunk.js",
22
+ "static/css/221.f0cfb042.chunk.css": "/.well-known/service/static/static/css/221.f0cfb042.chunk.css",
23
+ "static/js/221.c88341d7.chunk.js": "/.well-known/service/static/static/js/221.c88341d7.chunk.js",
24
24
  "static/js/199.3d76c24b.chunk.js": "/.well-known/service/static/static/js/199.3d76c24b.chunk.js",
25
25
  "static/js/573.5db9b322.chunk.js": "/.well-known/service/static/static/js/573.5db9b322.chunk.js",
26
26
  "static/media/ubuntu-mono-all-400-normal.woff": "/.well-known/service/static/static/media/ubuntu-mono-all-400-normal.c879328bc62e9c68268f.woff",
@@ -46,31 +46,31 @@
46
46
  "router-template-styles/styles.css": "/.well-known/service/static/router-template-styles/styles.css",
47
47
  "index.html": "/.well-known/service/static/index.html",
48
48
  "main.7ea79dc8.css.map": "/.well-known/service/static/static/css/main.7ea79dc8.css.map",
49
- "main.9c09d1dd.js.map": "/.well-known/service/static/static/js/main.9c09d1dd.js.map",
49
+ "main.ab3b47f4.js.map": "/.well-known/service/static/static/js/main.ab3b47f4.js.map",
50
50
  "716.1c25a58a.chunk.js.map": "/.well-known/service/static/static/js/716.1c25a58a.chunk.js.map",
51
51
  "359.0eb124b0.chunk.js.map": "/.well-known/service/static/static/js/359.0eb124b0.chunk.js.map",
52
52
  "255.279b1bca.chunk.js.map": "/.well-known/service/static/static/js/255.279b1bca.chunk.js.map",
53
53
  "371.f67a06b4.chunk.js.map": "/.well-known/service/static/static/js/371.f67a06b4.chunk.js.map",
54
- "737.1f59e1c3.chunk.js.map": "/.well-known/service/static/static/js/737.1f59e1c3.chunk.js.map",
55
- "158.ca656ebd.chunk.js.map": "/.well-known/service/static/static/js/158.ca656ebd.chunk.js.map",
56
- "868.30686f6c.chunk.js.map": "/.well-known/service/static/static/js/868.30686f6c.chunk.js.map",
54
+ "737.3e7feae2.chunk.js.map": "/.well-known/service/static/static/js/737.3e7feae2.chunk.js.map",
55
+ "158.0f09b75c.chunk.js.map": "/.well-known/service/static/static/js/158.0f09b75c.chunk.js.map",
56
+ "868.cd5abe55.chunk.js.map": "/.well-known/service/static/static/js/868.cd5abe55.chunk.js.map",
57
57
  "547.ce4b87b4.chunk.js.map": "/.well-known/service/static/static/js/547.ce4b87b4.chunk.js.map",
58
- "343.2a12718c.chunk.js.map": "/.well-known/service/static/static/js/343.2a12718c.chunk.js.map",
58
+ "387.faf23026.chunk.js.map": "/.well-known/service/static/static/js/387.faf23026.chunk.js.map",
59
59
  "682.a8bf723a.chunk.js.map": "/.well-known/service/static/static/js/682.a8bf723a.chunk.js.map",
60
60
  "711.56427a24.chunk.js.map": "/.well-known/service/static/static/js/711.56427a24.chunk.js.map",
61
61
  "437.075e8453.chunk.js.map": "/.well-known/service/static/static/js/437.075e8453.chunk.js.map",
62
62
  "690.afb99ee7.chunk.js.map": "/.well-known/service/static/static/js/690.afb99ee7.chunk.js.map",
63
63
  "42.c390a3f4.chunk.js.map": "/.well-known/service/static/static/js/42.c390a3f4.chunk.js.map",
64
- "189.602863fd.chunk.js.map": "/.well-known/service/static/static/js/189.602863fd.chunk.js.map",
64
+ "189.971a999d.chunk.js.map": "/.well-known/service/static/static/js/189.971a999d.chunk.js.map",
65
65
  "162.8c29e450.chunk.js.map": "/.well-known/service/static/static/js/162.8c29e450.chunk.js.map",
66
66
  "610.40349d57.chunk.js.map": "/.well-known/service/static/static/js/610.40349d57.chunk.js.map",
67
- "125.1bbe7d61.chunk.css.map": "/.well-known/service/static/static/css/125.1bbe7d61.chunk.css.map",
68
- "125.910ae6fb.chunk.js.map": "/.well-known/service/static/static/js/125.910ae6fb.chunk.js.map",
67
+ "221.f0cfb042.chunk.css.map": "/.well-known/service/static/static/css/221.f0cfb042.chunk.css.map",
68
+ "221.c88341d7.chunk.js.map": "/.well-known/service/static/static/js/221.c88341d7.chunk.js.map",
69
69
  "199.3d76c24b.chunk.js.map": "/.well-known/service/static/static/js/199.3d76c24b.chunk.js.map",
70
70
  "573.5db9b322.chunk.js.map": "/.well-known/service/static/static/js/573.5db9b322.chunk.js.map"
71
71
  },
72
72
  "entrypoints": [
73
73
  "static/css/main.7ea79dc8.css",
74
- "static/js/main.9c09d1dd.js"
74
+ "static/js/main.ab3b47f4.js"
75
75
  ]
76
76
  }
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.9c09d1dd.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>
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.ab3b47f4.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>