@abtnode/blocklet-services 1.7.9 → 1.7.12

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 (82) hide show
  1. package/api/middlewares/proxy-to-daemon.js +4 -2
  2. package/api/routes/blocklet.js +39 -2
  3. package/api/services/auth/connect/fuel.js +73 -0
  4. package/api/services/auth/connect/invite.js +1 -0
  5. package/api/services/auth/connect/issue-passport.js +1 -0
  6. package/api/services/auth/connect/setup.js +11 -1
  7. package/api/services/auth/index.js +2 -0
  8. package/api/util/attach-shared-utils.js +1 -1
  9. package/api/util/index.js +7 -1
  10. package/build/asset-manifest.json +32 -34
  11. package/build/index.html +1 -1
  12. package/build/precache-manifest.5f319c29c408a50466b0d034dc444e5f.js +114 -0
  13. package/build/service-worker.js +1 -1
  14. package/build/static/css/4.6e1172e8.chunk.css +2 -0
  15. package/build/static/css/4.6e1172e8.chunk.css.map +1 -0
  16. package/build/static/js/0.86df5972.chunk.js +3 -0
  17. package/build/static/js/{0.b63c03e9.chunk.js.LICENSE.txt → 0.86df5972.chunk.js.LICENSE.txt} +0 -0
  18. package/build/static/js/0.86df5972.chunk.js.map +1 -0
  19. package/build/static/js/1.b67e3571.chunk.js +2 -0
  20. package/build/static/js/1.b67e3571.chunk.js.map +1 -0
  21. package/build/static/js/10.6f840670.chunk.js +2 -0
  22. package/build/static/js/10.6f840670.chunk.js.map +1 -0
  23. package/build/static/js/4.6313a12f.chunk.js +3 -0
  24. package/build/static/js/{4.fd2a994d.chunk.js.LICENSE.txt → 4.6313a12f.chunk.js.LICENSE.txt} +0 -0
  25. package/build/static/js/4.6313a12f.chunk.js.map +1 -0
  26. package/build/static/js/5.4fa6174b.chunk.js +2 -0
  27. package/build/static/js/5.4fa6174b.chunk.js.map +1 -0
  28. package/build/static/js/6.84afc8e0.chunk.js +2 -0
  29. package/build/static/js/6.84afc8e0.chunk.js.map +1 -0
  30. package/build/static/js/7.33ef0515.chunk.js +2 -0
  31. package/build/static/js/7.33ef0515.chunk.js.map +1 -0
  32. package/build/static/js/8.6684f959.chunk.js +2 -0
  33. package/build/static/js/8.6684f959.chunk.js.map +1 -0
  34. package/build/static/js/9.d7a1d6be.chunk.js +2 -0
  35. package/build/static/js/9.d7a1d6be.chunk.js.map +1 -0
  36. package/build/static/js/main.d9f162f2.chunk.js +2 -0
  37. package/build/static/js/main.d9f162f2.chunk.js.map +1 -0
  38. package/build/static/js/{runtime-main.3b7f6300.js → runtime-main.c57b91d0.js} +2 -2
  39. package/build/static/js/{runtime-main.3b7f6300.js.map → runtime-main.c57b91d0.js.map} +1 -1
  40. package/package.json +25 -26
  41. package/build/precache-manifest.6d3980942db17d0030ae86fe37ac56e9.js +0 -186
  42. package/build/static/css/4.634341e0.chunk.css +0 -2
  43. package/build/static/css/4.634341e0.chunk.css.map +0 -1
  44. package/build/static/js/0.b63c03e9.chunk.js +0 -3
  45. package/build/static/js/0.b63c03e9.chunk.js.map +0 -1
  46. package/build/static/js/1.20e8fca4.chunk.js +0 -2
  47. package/build/static/js/1.20e8fca4.chunk.js.map +0 -1
  48. package/build/static/js/10.0c4b966e.chunk.js +0 -2
  49. package/build/static/js/10.0c4b966e.chunk.js.map +0 -1
  50. package/build/static/js/4.fd2a994d.chunk.js +0 -3
  51. package/build/static/js/4.fd2a994d.chunk.js.map +0 -1
  52. package/build/static/js/5.574360ce.chunk.js +0 -2
  53. package/build/static/js/5.574360ce.chunk.js.map +0 -1
  54. package/build/static/js/6.5f3e2cbf.chunk.js +0 -2
  55. package/build/static/js/6.5f3e2cbf.chunk.js.map +0 -1
  56. package/build/static/js/7.701587af.chunk.js +0 -2
  57. package/build/static/js/7.701587af.chunk.js.map +0 -1
  58. package/build/static/js/8.4b52a96d.chunk.js +0 -2
  59. package/build/static/js/8.4b52a96d.chunk.js.map +0 -1
  60. package/build/static/js/9.6262e0c5.chunk.js +0 -2
  61. package/build/static/js/9.6262e0c5.chunk.js.map +0 -1
  62. package/build/static/js/main.4ae86267.chunk.js +0 -2
  63. package/build/static/js/main.4ae86267.chunk.js.map +0 -1
  64. package/build/static/media/rubik-all-400-normal.c2324103.woff +0 -0
  65. package/build/static/media/rubik-all-500-normal.000c3408.woff +0 -0
  66. package/build/static/media/rubik-all-600-normal.30df2fd0.woff +0 -0
  67. package/build/static/media/rubik-cyrillic-400-normal.49f3ce37.woff2 +0 -0
  68. package/build/static/media/rubik-cyrillic-500-normal.0c1bd2ab.woff2 +0 -0
  69. package/build/static/media/rubik-cyrillic-600-normal.b76031ea.woff2 +0 -0
  70. package/build/static/media/rubik-cyrillic-ext-400-normal.d3902986.woff2 +0 -0
  71. package/build/static/media/rubik-cyrillic-ext-500-normal.7e493ee0.woff2 +0 -0
  72. package/build/static/media/rubik-cyrillic-ext-600-normal.f4b6c519.woff2 +0 -0
  73. package/build/static/media/rubik-hebrew-400-normal.0ebef856.woff2 +0 -0
  74. package/build/static/media/rubik-hebrew-500-normal.3664f2b5.woff2 +0 -0
  75. package/build/static/media/rubik-hebrew-600-normal.6207349a.woff2 +0 -0
  76. package/build/static/media/rubik-latin-400-normal.b836d2ed.woff2 +0 -0
  77. package/build/static/media/rubik-latin-500-normal.18984747.woff2 +0 -0
  78. package/build/static/media/rubik-latin-600-normal.b1216018.woff2 +0 -0
  79. package/build/static/media/rubik-latin-ext-400-normal.69a88832.woff2 +0 -0
  80. package/build/static/media/rubik-latin-ext-500-normal.21b63491.woff2 +0 -0
  81. package/build/static/media/rubik-latin-ext-600-normal.d0d90e83.woff2 +0 -0
  82. package/configs/auth.json +0 -66
@@ -1,4 +1,5 @@
1
1
  const jwt = require('jsonwebtoken');
2
+ const pick = require('lodash/pick');
2
3
  const LRU = require('lru-cache');
3
4
 
4
5
  const proxyToDaemon = ({ proxy, sessionSecret }) => {
@@ -7,7 +8,7 @@ const proxyToDaemon = ({ proxy, sessionSecret }) => {
7
8
  maxAge: 86400 * 1000, // cache for 1 day
8
9
  });
9
10
 
10
- const getToken = (did) => {
11
+ const getToken = (did, user) => {
11
12
  const cacheToken = cache.get(did);
12
13
  if (cacheToken) {
13
14
  return cacheToken;
@@ -17,6 +18,7 @@ const proxyToDaemon = ({ proxy, sessionSecret }) => {
17
18
  {
18
19
  type: 'blocklet',
19
20
  did,
21
+ actual: pick(user, ['did', 'role', 'fullName']),
20
22
  },
21
23
  sessionSecret,
22
24
  { expiresIn: '1d' }
@@ -30,7 +32,7 @@ const proxyToDaemon = ({ proxy, sessionSecret }) => {
30
32
  return async (req, res) => {
31
33
  req.url = '/api/gql';
32
34
  const did = req.getBlockletDid();
33
- const token = getToken(did);
35
+ const token = getToken(did, req.user);
34
36
 
35
37
  req.headers.authorization = `Bearer ${token}`;
36
38
  proxy.safeWeb(req, res, {
@@ -6,6 +6,7 @@ const cloneDeep = require('lodash/cloneDeep');
6
6
  const joinUrl = require('url-join');
7
7
  const JWT = require('@arcblock/jwt');
8
8
 
9
+ const formatContext = require('@abtnode/util/lib/format-context');
9
10
  const { fixBlockletStatus, wipeSensitiveData } = require('@blocklet/meta/lib/util');
10
11
  const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
11
12
  const logger = require('@abtnode/logger')(require('../../package.json').name);
@@ -83,6 +84,15 @@ module.exports = {
83
84
  childDid,
84
85
  configs,
85
86
  });
87
+ await node.createAuditLog(
88
+ {
89
+ action: 'configBlocklet',
90
+ args: { did: blocklet.meta.did },
91
+ context: formatContext(req),
92
+ result: doc,
93
+ },
94
+ node
95
+ );
86
96
 
87
97
  res.json(polishBlocklet(doc));
88
98
  });
@@ -96,6 +106,15 @@ module.exports = {
96
106
  checkHealthImmediately: true,
97
107
  throwOnError: true,
98
108
  });
109
+ await node.createAuditLog(
110
+ {
111
+ action: 'startBlocklet',
112
+ args: { did: blocklet.meta.did },
113
+ context: formatContext(req),
114
+ result: doc,
115
+ },
116
+ node
117
+ );
99
118
 
100
119
  if (fromSetup) {
101
120
  const { did: userDid, role } = req.user;
@@ -130,7 +149,7 @@ module.exports = {
130
149
 
131
150
  // write passport to db
132
151
  const passport = createUserPassport(vc, { role });
133
- await node.updateUser({
152
+ const result = await node.updateUser({
134
153
  teamDid,
135
154
  user: {
136
155
  did: userDid,
@@ -138,6 +157,15 @@ module.exports = {
138
157
  passports: upsertToPassports(user.passports || [], passport),
139
158
  },
140
159
  });
160
+ await node.createAuditLog(
161
+ {
162
+ action: 'updateUser',
163
+ args: { teamDid, passport, reason: 'setup blocklet' },
164
+ context: formatContext(req),
165
+ result,
166
+ },
167
+ node
168
+ );
141
169
 
142
170
  // send vc to wallet
143
171
  const receiver = userDid;
@@ -181,7 +209,16 @@ module.exports = {
181
209
  const { whoCanAccess } = req.body;
182
210
  const blocklet = await req.getBlocklet();
183
211
 
184
- await node.configWhoCanAccess({ teamDid: blocklet.meta.did, value: whoCanAccess });
212
+ const result = await node.configWhoCanAccess({ teamDid: blocklet.meta.did, value: whoCanAccess });
213
+ await node.createAuditLog(
214
+ {
215
+ action: 'configWhoCanAccess',
216
+ args: { teamDid: blocklet.meta.did, value: whoCanAccess, reason: 'setup blocklet' },
217
+ context: formatContext(req),
218
+ result,
219
+ },
220
+ node
221
+ );
185
222
 
186
223
  const newBlocklet = await req.getBlocklet({ useCache: false });
187
224
 
@@ -0,0 +1,73 @@
1
+ const { fromTokenToUnit } = require('@ocap/util');
2
+ const { fromAddress } = require('@ocap/wallet');
3
+ const Client = require('@ocap/client');
4
+ const logger = require('@abtnode/logger')(require('../../../../package.json').name);
5
+
6
+ module.exports = function createRoutes() {
7
+ return {
8
+ action: 'fuel',
9
+
10
+ claims: {
11
+ prepareTx: async ({ context: { request }, extraParams }) => {
12
+ const { amount, locale, symbol, address, decimal, endpoint } = extraParams;
13
+ const { wallet } = await request.getBlockletInfo();
14
+ if (!Number(amount) || Number(amount) < 0) {
15
+ throw new Error(`Invalid amount: ${amount}`);
16
+ }
17
+
18
+ const description = {
19
+ en: `Please pay ${amount} ${symbol} to application`,
20
+ zh: `请支付 ${amount} ${symbol}`,
21
+ };
22
+
23
+ const tokens = [
24
+ {
25
+ address,
26
+ value: fromTokenToUnit(amount, decimal).toString(),
27
+ },
28
+ ];
29
+
30
+ return {
31
+ type: 'TransferV3Tx',
32
+ partialTx: {
33
+ itx: {
34
+ inputs: [],
35
+ outputs: [
36
+ {
37
+ // 转给 app
38
+ owner: wallet.address,
39
+ tokens,
40
+ },
41
+ ],
42
+ },
43
+ },
44
+ requirement: {
45
+ tokens,
46
+ },
47
+ description: description[locale] || description.en,
48
+ chainInfo: { host: endpoint },
49
+ };
50
+ },
51
+ },
52
+ onAuth: async ({ claims, userDid, extraParams: { locale, endpoint } }) => {
53
+ try {
54
+ const client = new Client(`${endpoint}/api/gql?locale=${locale}`.replace(/\/+/g, '/').trim());
55
+ const claim = claims.find((x) => x.type === 'prepareTx');
56
+ const tx = client.decodeTx(claim.finalTx);
57
+ const hash = await client.sendTransferV3Tx({
58
+ tx,
59
+ wallet: fromAddress(userDid),
60
+ });
61
+ logger.info('fuel_application.onAuth', { claims, userDid, hash });
62
+ return { hash, tx: claim.finalTx };
63
+ } catch (err) {
64
+ logger.info('fuel_application.onAuth.error', err);
65
+ const errors = {
66
+ en: 'Failed to fuel the application',
67
+ zh: '支付失败',
68
+ };
69
+ throw new Error(errors[locale] || errors.en);
70
+ }
71
+ },
72
+ };
73
+ };
@@ -58,6 +58,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
58
58
  const endpoint = baseUrl;
59
59
 
60
60
  const { passport, response, role } = await handleInvitationResponse({
61
+ req,
61
62
  node,
62
63
  nodeInfo,
63
64
  teamDid,
@@ -46,6 +46,7 @@ module.exports = function createRoutes(node) {
46
46
  const endpoint = baseUrl;
47
47
 
48
48
  return handleIssuePassportResponse({
49
+ req,
49
50
  node,
50
51
  nodeInfo,
51
52
  teamDid,
@@ -1,5 +1,6 @@
1
1
  /* eslint-disable arrow-parens */
2
2
  const { messages } = require('@abtnode/auth/lib/auth');
3
+ const formatContext = require('@abtnode/util/lib/format-context');
3
4
  const { getServerAuthMethod } = require('@abtnode/auth/lib/util/get-auth-method');
4
5
  const { getLaunchFreeBlockletClaims, ensureBlockletPermission } = require('@abtnode/auth/lib/server');
5
6
 
@@ -80,7 +81,7 @@ module.exports = function createRoutes(node, _authenticator, createSessionToken)
80
81
  } else {
81
82
  // Create user
82
83
  const profile = claims.find((x) => x.type === 'profile');
83
- await node.addUser({
84
+ const doc = await node.addUser({
84
85
  teamDid,
85
86
  user: {
86
87
  ...profile,
@@ -96,6 +97,15 @@ module.exports = function createRoutes(node, _authenticator, createSessionToken)
96
97
  },
97
98
  },
98
99
  });
100
+ await node.createAuditLog(
101
+ {
102
+ action: 'addUser',
103
+ args: { teamDid, profile, reason: 'setup blocklet' },
104
+ context: formatContext(Object.assign(req, { user: doc })),
105
+ result: doc,
106
+ },
107
+ node
108
+ );
99
109
  }
100
110
 
101
111
  // Generate new session token that client can save to localStorage
@@ -19,6 +19,7 @@ const createLostPassportIssueAuth = require('./connect/lost-passport-issue');
19
19
  const createSetupAuth = require('./connect/setup');
20
20
  const createSwitchProfileAuth = require('./connect/switch-profile');
21
21
  const createSwitchPassportAuth = require('./connect/switch-passport');
22
+ const createFuelAuth = require('./connect/fuel');
22
23
  const createSessionRoutes = require('./session');
23
24
  const createPassportRoutes = require('./passport');
24
25
  const { getRedirectUrl } = require('../../util');
@@ -130,6 +131,7 @@ const init = ({ node, options }) => {
130
131
  handler.attach(Object.assign({ app }, createSetupAuth(node, authenticator, createSessionToken)));
131
132
  handler.attach(Object.assign({ app }, createSwitchProfileAuth(node, authenticator, createSessionToken)));
132
133
  handler.attach(Object.assign({ app }, createSwitchPassportAuth(node, authenticator, createSessionToken)));
134
+ handler.attach(Object.assign({ app }, createFuelAuth(authenticator, createSessionToken)));
133
135
  });
134
136
  };
135
137
 
@@ -1,7 +1,7 @@
1
1
  const get = require('lodash/get');
2
2
 
3
3
  const getBlockletInfo = require('@blocklet/meta/lib/info');
4
- const { getDefaultServiceConfig, findService } = require('@abtnode/core/lib/util/service');
4
+ const { getDefaultServiceConfig, findService } = require('@blocklet/meta/lib/service');
5
5
  const logger = require('@abtnode/logger')(require('../../package.json').name);
6
6
  const cache = require('../cache');
7
7
 
package/api/util/index.js CHANGED
@@ -77,9 +77,11 @@ const ensureProxyUrl = (req) => {
77
77
 
78
78
  const getRedirectUrl = ({ req, pagePath }) => {
79
79
  const baseUrl = getBaseUrl(req);
80
-
81
80
  const redirectUrlObj = new URL(`http://localhost${req.url}`);
81
+ // 重定向时考虑 serverUrl 查询参数的处理
82
+ const serverUrl = redirectUrlObj.searchParams.get('serverUrl');
82
83
  redirectUrlObj.searchParams.delete('__start__');
84
+ redirectUrlObj.searchParams.delete('serverUrl');
83
85
  const redirectUrl = `${baseUrl.replace(/\/+$/, '')}${redirectUrlObj.pathname}${redirectUrlObj.search}`;
84
86
 
85
87
  const url = new URL(`http://localhost${joinUrl(baseUrl, WELLKNOWN_SERVICE_PATH_PREFIX, pagePath || '/')}`);
@@ -90,6 +92,10 @@ const getRedirectUrl = ({ req, pagePath }) => {
90
92
  url.searchParams.set('locale', locale);
91
93
  }
92
94
 
95
+ if (serverUrl) {
96
+ url.searchParams.set('serverUrl', serverUrl);
97
+ }
98
+
93
99
  return `${url.pathname}${url.search}`;
94
100
  };
95
101
 
@@ -1,43 +1,41 @@
1
1
  {
2
2
  "files": {
3
- "static/js/0.b63c03e9.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/0.b63c03e9.chunk.js",
4
- "static/js/0.b63c03e9.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/0.b63c03e9.chunk.js.map",
5
- "static/js/1.20e8fca4.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/1.20e8fca4.chunk.js",
6
- "static/js/1.20e8fca4.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/1.20e8fca4.chunk.js.map",
7
- "main.js": "/.blocklet/proxy/blocklet-service/static/js/main.4ae86267.chunk.js",
8
- "main.js.map": "/.blocklet/proxy/blocklet-service/static/js/main.4ae86267.chunk.js.map",
9
- "runtime-main.js": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.3b7f6300.js",
10
- "runtime-main.js.map": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.3b7f6300.js.map",
11
- "static/css/4.634341e0.chunk.css": "/.blocklet/proxy/blocklet-service/static/css/4.634341e0.chunk.css",
12
- "static/js/4.fd2a994d.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/4.fd2a994d.chunk.js",
13
- "static/js/4.fd2a994d.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/4.fd2a994d.chunk.js.map",
14
- "static/js/5.574360ce.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/5.574360ce.chunk.js",
15
- "static/js/5.574360ce.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/5.574360ce.chunk.js.map",
16
- "static/js/6.5f3e2cbf.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/6.5f3e2cbf.chunk.js",
17
- "static/js/6.5f3e2cbf.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/6.5f3e2cbf.chunk.js.map",
18
- "static/js/7.701587af.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/7.701587af.chunk.js",
19
- "static/js/7.701587af.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/7.701587af.chunk.js.map",
20
- "static/js/8.4b52a96d.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/8.4b52a96d.chunk.js",
21
- "static/js/8.4b52a96d.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/8.4b52a96d.chunk.js.map",
22
- "static/js/9.6262e0c5.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/9.6262e0c5.chunk.js",
23
- "static/js/9.6262e0c5.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/9.6262e0c5.chunk.js.map",
24
- "static/js/10.0c4b966e.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/10.0c4b966e.chunk.js",
25
- "static/js/10.0c4b966e.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/10.0c4b966e.chunk.js.map",
3
+ "static/js/0.86df5972.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/0.86df5972.chunk.js",
4
+ "static/js/0.86df5972.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/0.86df5972.chunk.js.map",
5
+ "static/js/1.b67e3571.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/1.b67e3571.chunk.js",
6
+ "static/js/1.b67e3571.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/1.b67e3571.chunk.js.map",
7
+ "main.js": "/.blocklet/proxy/blocklet-service/static/js/main.d9f162f2.chunk.js",
8
+ "main.js.map": "/.blocklet/proxy/blocklet-service/static/js/main.d9f162f2.chunk.js.map",
9
+ "runtime-main.js": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.c57b91d0.js",
10
+ "runtime-main.js.map": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.c57b91d0.js.map",
11
+ "static/css/4.6e1172e8.chunk.css": "/.blocklet/proxy/blocklet-service/static/css/4.6e1172e8.chunk.css",
12
+ "static/js/4.6313a12f.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/4.6313a12f.chunk.js",
13
+ "static/js/4.6313a12f.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/4.6313a12f.chunk.js.map",
14
+ "static/js/5.4fa6174b.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/5.4fa6174b.chunk.js",
15
+ "static/js/5.4fa6174b.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/5.4fa6174b.chunk.js.map",
16
+ "static/js/6.84afc8e0.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/6.84afc8e0.chunk.js",
17
+ "static/js/6.84afc8e0.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/6.84afc8e0.chunk.js.map",
18
+ "static/js/7.33ef0515.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/7.33ef0515.chunk.js",
19
+ "static/js/7.33ef0515.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/7.33ef0515.chunk.js.map",
20
+ "static/js/8.6684f959.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/8.6684f959.chunk.js",
21
+ "static/js/8.6684f959.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/8.6684f959.chunk.js.map",
22
+ "static/js/9.d7a1d6be.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/9.d7a1d6be.chunk.js",
23
+ "static/js/9.d7a1d6be.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/9.d7a1d6be.chunk.js.map",
24
+ "static/js/10.6f840670.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/10.6f840670.chunk.js",
25
+ "static/js/10.6f840670.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/10.6f840670.chunk.js.map",
26
26
  "index.html": "/.blocklet/proxy/blocklet-service/index.html",
27
- "precache-manifest.6d3980942db17d0030ae86fe37ac56e9.js": "/.blocklet/proxy/blocklet-service/precache-manifest.6d3980942db17d0030ae86fe37ac56e9.js",
27
+ "precache-manifest.5f319c29c408a50466b0d034dc444e5f.js": "/.blocklet/proxy/blocklet-service/precache-manifest.5f319c29c408a50466b0d034dc444e5f.js",
28
28
  "service-worker.js": "/.blocklet/proxy/blocklet-service/service-worker.js",
29
- "static/css/4.634341e0.chunk.css.map": "/.blocklet/proxy/blocklet-service/static/css/4.634341e0.chunk.css.map",
30
- "static/js/0.b63c03e9.chunk.js.LICENSE.txt": "/.blocklet/proxy/blocklet-service/static/js/0.b63c03e9.chunk.js.LICENSE.txt",
31
- "static/js/4.fd2a994d.chunk.js.LICENSE.txt": "/.blocklet/proxy/blocklet-service/static/js/4.fd2a994d.chunk.js.LICENSE.txt",
29
+ "static/css/4.6e1172e8.chunk.css.map": "/.blocklet/proxy/blocklet-service/static/css/4.6e1172e8.chunk.css.map",
30
+ "static/js/0.86df5972.chunk.js.LICENSE.txt": "/.blocklet/proxy/blocklet-service/static/js/0.86df5972.chunk.js.LICENSE.txt",
31
+ "static/js/4.6313a12f.chunk.js.LICENSE.txt": "/.blocklet/proxy/blocklet-service/static/js/4.6313a12f.chunk.js.LICENSE.txt",
32
32
  "static/media/400.css": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-latin-ext-400-normal.84fa8bc1.woff2",
33
- "static/media/700.css": "/.blocklet/proxy/blocklet-service/static/media/lato-latin-ext-700-normal.a48b0f04.woff2",
34
- "static/media/500.css": "/.blocklet/proxy/blocklet-service/static/media/rubik-latin-ext-500-normal.21b63491.woff2",
35
- "static/media/600.css": "/.blocklet/proxy/blocklet-service/static/media/rubik-latin-ext-600-normal.d0d90e83.woff2"
33
+ "static/media/700.css": "/.blocklet/proxy/blocklet-service/static/media/lato-latin-ext-700-normal.a48b0f04.woff2"
36
34
  },
37
35
  "entrypoints": [
38
- "static/js/runtime-main.3b7f6300.js",
39
- "static/css/4.634341e0.chunk.css",
40
- "static/js/4.fd2a994d.chunk.js",
41
- "static/js/main.4ae86267.chunk.js"
36
+ "static/js/runtime-main.c57b91d0.js",
37
+ "static/css/4.6e1172e8.chunk.css",
38
+ "static/js/4.6313a12f.chunk.js",
39
+ "static/js/main.d9f162f2.chunk.js"
42
40
  ]
43
41
  }
package/build/index.html CHANGED
@@ -1 +1 @@
1
- <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/.well-known/service/static/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><link href="/.blocklet/proxy/blocklet-service/static/css/4.634341e0.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,a,i=t[0],l=t[1],f=t[2],s=t[3]||[],d=0,h=[];d<i.length;d++)a=i[d],Object.prototype.hasOwnProperty.call(o,a)&&o[a]&&h.push(o[a][0]),o[a]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(p&&p(t),u.push.apply(u,s);h.length;)h.shift()();return c.push.apply(c,f||[]),r()}function r(){for(var e,t=0;t<c.length;t++){for(var r=c[t],n=!0,l=1;l<r.length;l++){var f=r[l];0!==o[f]&&(n=!1)}n&&(c.splice(t--,1),e=i(i.s=r[0]))}return 0===c.length&&(u.forEach((function(e){if(void 0===o[e]){o[e]=null;var t=document.createElement("link");i.nc&&t.setAttribute("nonce",i.nc),t.rel="prefetch",t.as="script",t.href=a(e),document.head.appendChild(t)}})),u.length=0),e}var n={},o={3:0},c=[],u=[];function a(e){return i.p+"static/js/"+({}[e]||e)+"."+{0:"b63c03e9",1:"20e8fca4",5:"574360ce",6:"5f3e2cbf",7:"701587af",8:"4b52a96d",9:"6262e0c5",10:"0c4b966e"}[e]+".chunk.js"}function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var c,u=document.createElement("script");u.charset="utf-8",u.timeout=120,i.nc&&u.setAttribute("nonce",i.nc),u.src=a(e);var l=new Error;c=function(t){u.onerror=u.onload=null,clearTimeout(f);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),c=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+c+")",l.name="ChunkLoadError",l.type=n,l.request=c,r[1](l)}o[e]=void 0}};var f=setTimeout((function(){c({type:"timeout",target:u})}),12e4);u.onerror=u.onload=c,document.head.appendChild(u)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/.blocklet/proxy/blocklet-service/",i.oe=function(e){throw console.error(e),e};var l=this["webpackJsonp@abtnode/blocklet-services"]=this["webpackJsonp@abtnode/blocklet-services"]||[],f=l.push.bind(l);l.push=t,l=l.slice();for(var s=0;s<l.length;s++)t(l[s]);var p=f;r()}([])</script><script src="/.blocklet/proxy/blocklet-service/static/js/4.fd2a994d.chunk.js"></script><script src="/.blocklet/proxy/blocklet-service/static/js/main.4ae86267.chunk.js"></script></body></html>
1
+ <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/.well-known/service/static/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><link href="/.blocklet/proxy/blocklet-service/static/css/4.6e1172e8.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function t(t){for(var n,c,i=t[0],l=t[1],f=t[2],s=t[3]||[],d=0,h=[];d<i.length;d++)c=i[d],Object.prototype.hasOwnProperty.call(o,c)&&o[c]&&h.push(o[c][0]),o[c]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(p&&p(t),a.push.apply(a,s);h.length;)h.shift()();return u.push.apply(u,f||[]),r()}function r(){for(var e,t=0;t<u.length;t++){for(var r=u[t],n=!0,l=1;l<r.length;l++){var f=r[l];0!==o[f]&&(n=!1)}n&&(u.splice(t--,1),e=i(i.s=r[0]))}return 0===u.length&&(a.forEach((function(e){if(void 0===o[e]){o[e]=null;var t=document.createElement("link");i.nc&&t.setAttribute("nonce",i.nc),t.rel="prefetch",t.as="script",t.href=c(e),document.head.appendChild(t)}})),a.length=0),e}var n={},o={3:0},u=[],a=[];function c(e){return i.p+"static/js/"+({}[e]||e)+"."+{0:"86df5972",1:"b67e3571",5:"4fa6174b",6:"84afc8e0",7:"33ef0515",8:"6684f959",9:"d7a1d6be",10:"6f840670"}[e]+".chunk.js"}function i(t){if(n[t])return n[t].exports;var r=n[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,i),r.l=!0,r.exports}i.e=function(e){var t=[],r=o[e];if(0!==r)if(r)t.push(r[2]);else{var n=new Promise((function(t,n){r=o[e]=[t,n]}));t.push(r[2]=n);var u,a=document.createElement("script");a.charset="utf-8",a.timeout=120,i.nc&&a.setAttribute("nonce",i.nc),a.src=c(e);var l=new Error;u=function(t){a.onerror=a.onload=null,clearTimeout(f);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),u=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+u+")",l.name="ChunkLoadError",l.type=n,l.request=u,r[1](l)}o[e]=void 0}};var f=setTimeout((function(){u({type:"timeout",target:a})}),12e4);a.onerror=a.onload=u,document.head.appendChild(a)}return Promise.all(t)},i.m=e,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)i.d(r,n,function(t){return e[t]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/.blocklet/proxy/blocklet-service/",i.oe=function(e){throw console.error(e),e};var l=this["webpackJsonp@abtnode/blocklet-services"]=this["webpackJsonp@abtnode/blocklet-services"]||[],f=l.push.bind(l);l.push=t,l=l.slice();for(var s=0;s<l.length;s++)t(l[s]);var p=f;r()}([])</script><script src="/.blocklet/proxy/blocklet-service/static/js/4.6313a12f.chunk.js"></script><script src="/.blocklet/proxy/blocklet-service/static/js/main.d9f162f2.chunk.js"></script></body></html>
@@ -0,0 +1,114 @@
1
+ self.__precacheManifest = (self.__precacheManifest || []).concat([
2
+ {
3
+ "revision": "a19ce0c70af4a07b116d8fbc248a51f1",
4
+ "url": "/.blocklet/proxy/blocklet-service/index.html"
5
+ },
6
+ {
7
+ "revision": "437987ff0517271c0a92",
8
+ "url": "/.blocklet/proxy/blocklet-service/static/css/4.6e1172e8.chunk.css"
9
+ },
10
+ {
11
+ "revision": "04a91ad2d8c36747964e",
12
+ "url": "/.blocklet/proxy/blocklet-service/static/js/0.86df5972.chunk.js"
13
+ },
14
+ {
15
+ "revision": "327dea51c54983f5708f4242bceacaed",
16
+ "url": "/.blocklet/proxy/blocklet-service/static/js/0.86df5972.chunk.js.LICENSE.txt"
17
+ },
18
+ {
19
+ "revision": "3dbd88e527885e6e42e7",
20
+ "url": "/.blocklet/proxy/blocklet-service/static/js/1.b67e3571.chunk.js"
21
+ },
22
+ {
23
+ "revision": "ca7f50172626e083f46a",
24
+ "url": "/.blocklet/proxy/blocklet-service/static/js/10.6f840670.chunk.js"
25
+ },
26
+ {
27
+ "revision": "437987ff0517271c0a92",
28
+ "url": "/.blocklet/proxy/blocklet-service/static/js/4.6313a12f.chunk.js"
29
+ },
30
+ {
31
+ "revision": "ff58a668e6d753fa035087a671c28199",
32
+ "url": "/.blocklet/proxy/blocklet-service/static/js/4.6313a12f.chunk.js.LICENSE.txt"
33
+ },
34
+ {
35
+ "revision": "efd27043ddbc260f1d27",
36
+ "url": "/.blocklet/proxy/blocklet-service/static/js/5.4fa6174b.chunk.js"
37
+ },
38
+ {
39
+ "revision": "bc7b85b88539c8eb1f09",
40
+ "url": "/.blocklet/proxy/blocklet-service/static/js/6.84afc8e0.chunk.js"
41
+ },
42
+ {
43
+ "revision": "f36b4fc1fa5b0347902e",
44
+ "url": "/.blocklet/proxy/blocklet-service/static/js/7.33ef0515.chunk.js"
45
+ },
46
+ {
47
+ "revision": "a003004d1f7bc219318a",
48
+ "url": "/.blocklet/proxy/blocklet-service/static/js/8.6684f959.chunk.js"
49
+ },
50
+ {
51
+ "revision": "f48329058818843822c8",
52
+ "url": "/.blocklet/proxy/blocklet-service/static/js/9.d7a1d6be.chunk.js"
53
+ },
54
+ {
55
+ "revision": "3ebe70c165bd34bebb61",
56
+ "url": "/.blocklet/proxy/blocklet-service/static/js/main.d9f162f2.chunk.js"
57
+ },
58
+ {
59
+ "revision": "9ece040f628293537d19",
60
+ "url": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.c57b91d0.js"
61
+ },
62
+ {
63
+ "revision": "a82dcb33d52ed6fa529e5ae8d5fda7f3",
64
+ "url": "/.blocklet/proxy/blocklet-service/static/media/lato-all-400-normal.a82dcb33.woff"
65
+ },
66
+ {
67
+ "revision": "8190ee0ec407348bfdc1daad2c035281",
68
+ "url": "/.blocklet/proxy/blocklet-service/static/media/lato-all-700-normal.8190ee0e.woff"
69
+ },
70
+ {
71
+ "revision": "e1b3b5908c9cf23dfb2b9c52b9a023ab",
72
+ "url": "/.blocklet/proxy/blocklet-service/static/media/lato-latin-400-normal.e1b3b590.woff2"
73
+ },
74
+ {
75
+ "revision": "de69cf9e514df447d1b0bb16f49d2457",
76
+ "url": "/.blocklet/proxy/blocklet-service/static/media/lato-latin-700-normal.de69cf9e.woff2"
77
+ },
78
+ {
79
+ "revision": "4bde07f991ba6af69a1e009fd7ce9d1a",
80
+ "url": "/.blocklet/proxy/blocklet-service/static/media/lato-latin-ext-400-normal.4bde07f9.woff2"
81
+ },
82
+ {
83
+ "revision": "a48b0f049358d7503c497abb4dcbc4d6",
84
+ "url": "/.blocklet/proxy/blocklet-service/static/media/lato-latin-ext-700-normal.a48b0f04.woff2"
85
+ },
86
+ {
87
+ "revision": "50636a553bb564fe4fe8dc664d85b298",
88
+ "url": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-all-400-normal.50636a55.woff"
89
+ },
90
+ {
91
+ "revision": "d8183030e0fe9f809fdf84cb488fca64",
92
+ "url": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-cyrillic-400-normal.d8183030.woff2"
93
+ },
94
+ {
95
+ "revision": "918b4f73b73f6a405af57abf5a9de9f2",
96
+ "url": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-cyrillic-ext-400-normal.918b4f73.woff2"
97
+ },
98
+ {
99
+ "revision": "5334a11ece16a5954e0635afa7668b08",
100
+ "url": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-greek-400-normal.5334a11e.woff2"
101
+ },
102
+ {
103
+ "revision": "df389c9932278468b5b0bcdbc9864163",
104
+ "url": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-greek-ext-400-normal.df389c99.woff2"
105
+ },
106
+ {
107
+ "revision": "8d1b929856b2ef150dc86f2f38a5dc5b",
108
+ "url": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-latin-400-normal.8d1b9298.woff2"
109
+ },
110
+ {
111
+ "revision": "84fa8bc12ba88bbb2144273fa45b508b",
112
+ "url": "/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-latin-ext-400-normal.84fa8bc1.woff2"
113
+ }
114
+ ]);
@@ -14,7 +14,7 @@
14
14
  importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
15
15
 
16
16
  importScripts(
17
- "/.blocklet/proxy/blocklet-service/precache-manifest.6d3980942db17d0030ae86fe37ac56e9.js"
17
+ "/.blocklet/proxy/blocklet-service/precache-manifest.5f319c29c408a50466b0d034dc444e5f.js"
18
18
  );
19
19
 
20
20
  self.addEventListener('message', (event) => {
@@ -0,0 +1,2 @@
1
+ @font-face{font-family:"Lato";font-style:normal;font-display:swap;font-weight:400;src:url(/.blocklet/proxy/blocklet-service/static/media/lato-latin-ext-400-normal.4bde07f9.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/lato-all-400-normal.a82dcb33.woff) format("woff");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:"Lato";font-style:normal;font-display:swap;font-weight:400;src:url(/.blocklet/proxy/blocklet-service/static/media/lato-latin-400-normal.e1b3b590.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/lato-all-400-normal.a82dcb33.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:"Lato";font-style:normal;font-display:swap;font-weight:700;src:url(/.blocklet/proxy/blocklet-service/static/media/lato-latin-ext-700-normal.a48b0f04.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/lato-all-700-normal.8190ee0e.woff) format("woff");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:"Lato";font-style:normal;font-display:swap;font-weight:700;src:url(/.blocklet/proxy/blocklet-service/static/media/lato-latin-700-normal.de69cf9e.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/lato-all-700-normal.8190ee0e.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}@font-face{font-family:"Ubuntu Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-cyrillic-ext-400-normal.918b4f73.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-all-400-normal.50636a55.woff) format("woff");unicode-range:U+0460-052f,U+1c80-1c88,U+20b4,U+2de0-2dff,U+a640-a69f,U+fe2e-fe2f}@font-face{font-family:"Ubuntu Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-cyrillic-400-normal.d8183030.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-all-400-normal.50636a55.woff) format("woff");unicode-range:U+0400-045f,U+0490-0491,U+04b0-04b1,U+2116}@font-face{font-family:"Ubuntu Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-greek-ext-400-normal.df389c99.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-all-400-normal.50636a55.woff) format("woff");unicode-range:U+1f??}@font-face{font-family:"Ubuntu Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-greek-400-normal.5334a11e.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-all-400-normal.50636a55.woff) format("woff");unicode-range:U+0370-03ff}@font-face{font-family:"Ubuntu Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-latin-ext-400-normal.84fa8bc1.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-all-400-normal.50636a55.woff) format("woff");unicode-range:U+0100-024f,U+0259,U+1e??,U+2020,U+20a0-20ab,U+20ad-20cf,U+2113,U+2c60-2c7f,U+a720-a7ff}@font-face{font-family:"Ubuntu Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-latin-400-normal.8d1b9298.woff2) format("woff2"),url(/.blocklet/proxy/blocklet-service/static/media/ubuntu-mono-all-400-normal.50636a55.woff) format("woff");unicode-range:U+00??,U+0131,U+0152-0153,U+02bb-02bc,U+02c6,U+02da,U+02dc,U+2000-206f,U+2074,U+20ac,U+2122,U+2191,U+2193,U+2212,U+2215,U+feff,U+fffd}
2
+ /*# sourceMappingURL=4.6e1172e8.chunk.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["400.css","700.css"],"names":[],"mappings":"AACA,WACE,kBAAmB,CACnB,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,qNAA2H,CAC3H,qGACF,CAEA,WACE,kBAAmB,CACnB,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,iNAAuH,CACvH,mJACF,CChBA,WACE,kBAAmB,CACnB,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,qNAA2H,CAC3H,qGACF,CAEA,WACE,kBAAmB,CACnB,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,iNAAuH,CACvH,mJACF,CDhBA,WACE,yBAA0B,CAC1B,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,sOAA4I,CAC5I,gFACF,CAEA,WACE,yBAA0B,CAC1B,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,kOAAwI,CACxI,wDACF,CAEA,WACE,yBAA0B,CAC1B,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,mOAAyI,CACzI,oBACF,CAEA,WACE,yBAA0B,CAC1B,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,+NAAqI,CACrI,yBACF,CAEA,WACE,yBAA0B,CAC1B,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,mOAAyI,CACzI,qGACF,CAEA,WACE,yBAA0B,CAC1B,iBAAkB,CAClB,iBAAkB,CAClB,eAAgB,CAChB,+NAAqI,CACrI,mJACF","file":"4.6e1172e8.chunk.css","sourcesContent":["/* ubuntu-mono-cyrillic-ext-400-normal*/\n@font-face {\n font-family: 'Ubuntu Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url('./files/ubuntu-mono-cyrillic-ext-400-normal.woff2') format('woff2'), url('./files/ubuntu-mono-all-400-normal.woff') format('woff');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;\n}\n/* ubuntu-mono-cyrillic-400-normal*/\n@font-face {\n font-family: 'Ubuntu Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url('./files/ubuntu-mono-cyrillic-400-normal.woff2') format('woff2'), url('./files/ubuntu-mono-all-400-normal.woff') format('woff');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n/* ubuntu-mono-greek-ext-400-normal*/\n@font-face {\n font-family: 'Ubuntu Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url('./files/ubuntu-mono-greek-ext-400-normal.woff2') format('woff2'), url('./files/ubuntu-mono-all-400-normal.woff') format('woff');\n unicode-range: U+1F00-1FFF;\n}\n/* ubuntu-mono-greek-400-normal*/\n@font-face {\n font-family: 'Ubuntu Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url('./files/ubuntu-mono-greek-400-normal.woff2') format('woff2'), url('./files/ubuntu-mono-all-400-normal.woff') format('woff');\n unicode-range: U+0370-03FF;\n}\n/* ubuntu-mono-latin-ext-400-normal*/\n@font-face {\n font-family: 'Ubuntu Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url('./files/ubuntu-mono-latin-ext-400-normal.woff2') format('woff2'), url('./files/ubuntu-mono-all-400-normal.woff') format('woff');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* ubuntu-mono-latin-400-normal*/\n@font-face {\n font-family: 'Ubuntu Mono';\n font-style: normal;\n font-display: swap;\n font-weight: 400;\n src: url('./files/ubuntu-mono-latin-400-normal.woff2') format('woff2'), url('./files/ubuntu-mono-all-400-normal.woff') format('woff');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n","/* lato-latin-ext-700-normal*/\n@font-face {\n font-family: 'Lato';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: url('./files/lato-latin-ext-700-normal.woff2') format('woff2'), url('./files/lato-all-700-normal.woff') format('woff');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* lato-latin-700-normal*/\n@font-face {\n font-family: 'Lato';\n font-style: normal;\n font-display: swap;\n font-weight: 700;\n src: url('./files/lato-latin-700-normal.woff2') format('woff2'), url('./files/lato-all-700-normal.woff') format('woff');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n"]}