@abtnode/blocklet-services 1.7.14 → 1.7.17
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 +6 -3
- package/api/middlewares/check-blocklet.js +14 -0
- package/api/services/auth/connect/invite.js +1 -0
- package/api/services/auth/connect/issue-passport.js +2 -1
- package/api/services/auth/connect/login.js +30 -5
- package/api/services/auth/connect/switch-passport.js +10 -0
- package/api/services/auth/connect/switch-profile.js +11 -1
- package/api/util/index.js +45 -6
- package/build/asset-manifest.json +28 -28
- package/build/index.html +1 -1
- package/build/{precache-manifest.62677c47082207508be287829a517379.js → precache-manifest.c82f233909194dca95a9f73ae18caf89.js} +27 -27
- package/build/service-worker.js +1 -1
- package/build/static/js/0.65d89c48.chunk.js +3 -0
- package/build/static/js/{0.d567f606.chunk.js.LICENSE.txt → 0.65d89c48.chunk.js.LICENSE.txt} +0 -0
- package/build/static/js/0.65d89c48.chunk.js.map +1 -0
- package/build/static/js/1.45d34a8d.chunk.js +2 -0
- package/build/static/js/1.45d34a8d.chunk.js.map +1 -0
- package/build/static/js/10.d8b82f8d.chunk.js +2 -0
- package/build/static/js/10.d8b82f8d.chunk.js.map +1 -0
- package/build/static/js/4.7a36b2ba.chunk.js +3 -0
- package/build/static/js/{4.ec5cc748.chunk.js.LICENSE.txt → 4.7a36b2ba.chunk.js.LICENSE.txt} +31 -43
- package/build/static/js/4.7a36b2ba.chunk.js.map +1 -0
- package/build/static/js/5.3334eaed.chunk.js +2 -0
- package/build/static/js/5.3334eaed.chunk.js.map +1 -0
- package/build/static/js/6.fa05fa72.chunk.js +2 -0
- package/build/static/js/6.fa05fa72.chunk.js.map +1 -0
- package/build/static/js/7.f7f97288.chunk.js +2 -0
- package/build/static/js/7.f7f97288.chunk.js.map +1 -0
- package/build/static/js/8.018740e7.chunk.js +2 -0
- package/build/static/js/8.018740e7.chunk.js.map +1 -0
- package/build/static/js/9.bedec3ae.chunk.js +2 -0
- package/build/static/js/9.bedec3ae.chunk.js.map +1 -0
- package/build/static/js/main.e3089af8.chunk.js +2 -0
- package/build/static/js/main.e3089af8.chunk.js.map +1 -0
- package/build/static/js/{runtime-main.49dce7d3.js → runtime-main.fca72100.js} +2 -2
- package/build/static/js/{runtime-main.49dce7d3.js.map → runtime-main.fca72100.js.map} +1 -1
- package/package.json +32 -29
- package/build/static/js/0.d567f606.chunk.js +0 -3
- package/build/static/js/0.d567f606.chunk.js.map +0 -1
- package/build/static/js/1.ab9dcdd2.chunk.js +0 -2
- package/build/static/js/1.ab9dcdd2.chunk.js.map +0 -1
- package/build/static/js/10.605a889f.chunk.js +0 -2
- package/build/static/js/10.605a889f.chunk.js.map +0 -1
- package/build/static/js/4.ec5cc748.chunk.js +0 -3
- package/build/static/js/4.ec5cc748.chunk.js.map +0 -1
- package/build/static/js/5.20ba603f.chunk.js +0 -2
- package/build/static/js/5.20ba603f.chunk.js.map +0 -1
- package/build/static/js/6.f3503586.chunk.js +0 -2
- package/build/static/js/6.f3503586.chunk.js.map +0 -1
- package/build/static/js/7.9310535b.chunk.js +0 -2
- package/build/static/js/7.9310535b.chunk.js.map +0 -1
- package/build/static/js/8.ec34ae8e.chunk.js +0 -2
- package/build/static/js/8.ec34ae8e.chunk.js.map +0 -1
- package/build/static/js/9.0c82bd91.chunk.js +0 -2
- package/build/static/js/9.0c82bd91.chunk.js.map +0 -1
- package/build/static/js/main.f3a4f0ac.chunk.js +0 -2
- package/build/static/js/main.f3a4f0ac.chunk.js.map +0 -1
package/api/index.js
CHANGED
|
@@ -32,6 +32,7 @@ const createBlockletRoutes = require('./routes/blocklet');
|
|
|
32
32
|
const createDnsResolver = require('./routes/dns-resolver');
|
|
33
33
|
const checkRunning = require('./middlewares/check-running');
|
|
34
34
|
const checkAdminPermission = require('./middlewares/check-admin-permission');
|
|
35
|
+
const checkBlocklet = require('./middlewares/check-blocklet');
|
|
35
36
|
const proxyToDaemon = require('./middlewares/proxy-to-daemon');
|
|
36
37
|
const attachSharedUtils = require('./util/attach-shared-utils');
|
|
37
38
|
|
|
@@ -202,6 +203,8 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
202
203
|
res.sendWebPage();
|
|
203
204
|
});
|
|
204
205
|
|
|
206
|
+
server.use(checkBlocklet);
|
|
207
|
+
|
|
205
208
|
// Middleware: check running
|
|
206
209
|
// Request would not arrive here before blocklet is installed, because there is no config in router provider(nginx)
|
|
207
210
|
server.use(checkRunning);
|
|
@@ -220,8 +223,8 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
220
223
|
});
|
|
221
224
|
|
|
222
225
|
// After all service middleware, we can now safely pass all traffic to blocklets
|
|
223
|
-
server.use((req, res, next) => {
|
|
224
|
-
const { target } = ensureProxyUrl(req);
|
|
226
|
+
server.use(async (req, res, next) => {
|
|
227
|
+
const { target } = await ensureProxyUrl(req);
|
|
225
228
|
|
|
226
229
|
if (target) {
|
|
227
230
|
proxy.safeWeb(req, res, {
|
|
@@ -287,7 +290,7 @@ module.exports = function createServer(node, serverOptions = {}) {
|
|
|
287
290
|
|
|
288
291
|
// Final: directly proxy all websocket request to target blocklet
|
|
289
292
|
wsRouter.use('**', async (req, socket, head) => {
|
|
290
|
-
const { target } = ensureProxyUrl(req);
|
|
293
|
+
const { target } = await ensureProxyUrl(req);
|
|
291
294
|
if (target) {
|
|
292
295
|
let isOpen = false;
|
|
293
296
|
let timer;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const logger = require('@abtnode/logger')(require('../../package.json').name);
|
|
2
|
+
|
|
3
|
+
module.exports = async (req, res, next) => {
|
|
4
|
+
const blocklet = await req.getBlocklet?.();
|
|
5
|
+
|
|
6
|
+
if (!blocklet) {
|
|
7
|
+
logger.error('blocklet not found', { url: req.url, method: req.method, headers: req.headers });
|
|
8
|
+
res.status(500).send('blocklet not found');
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
req.blocklet = blocklet;
|
|
13
|
+
next();
|
|
14
|
+
};
|
|
@@ -74,6 +74,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
74
74
|
// Generate new session token that client can save to localStorage
|
|
75
75
|
const sessionToken = await createSessionToken(userDid, { passport, role });
|
|
76
76
|
await updateSession({ sessionToken }, true);
|
|
77
|
+
await updateSession({ passportId: response.data.id });
|
|
77
78
|
logger.info('invite.success', { userDid });
|
|
78
79
|
|
|
79
80
|
return response;
|
|
@@ -38,7 +38,7 @@ module.exports = function createRoutes(node) {
|
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
40
|
|
|
41
|
-
onAuth: async ({ userDid, userPk, claims, extraParams, req, baseUrl }) => {
|
|
41
|
+
onAuth: async ({ userDid, userPk, claims, extraParams, updateSession, req, baseUrl }) => {
|
|
42
42
|
const { locale, id } = extraParams;
|
|
43
43
|
const nodeInfo = await node.getNodeInfo();
|
|
44
44
|
const teamDid = req.headers['x-blocklet-did'];
|
|
@@ -56,6 +56,7 @@ module.exports = function createRoutes(node) {
|
|
|
56
56
|
locale,
|
|
57
57
|
claims,
|
|
58
58
|
statusEndpointBaseUrl,
|
|
59
|
+
updateSession,
|
|
59
60
|
endpoint,
|
|
60
61
|
});
|
|
61
62
|
},
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable arrow-parens */
|
|
2
2
|
const get = require('lodash/get');
|
|
3
3
|
const joinUrl = require('url-join');
|
|
4
|
+
const formatContext = require('@abtnode/util/lib/format-context');
|
|
4
5
|
const {
|
|
5
6
|
messages,
|
|
6
7
|
getVCFromClaims,
|
|
@@ -75,7 +76,7 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
75
76
|
};
|
|
76
77
|
},
|
|
77
78
|
|
|
78
|
-
verifiableCredential: async ({ context, extraParams: { locale } }) => {
|
|
79
|
+
verifiableCredential: async ({ context, extraParams: { locale, passportId = '' } }) => {
|
|
79
80
|
const { request, didwallet } = context;
|
|
80
81
|
const { wallet, did: teamDid } = await request.getBlockletInfo();
|
|
81
82
|
|
|
@@ -87,12 +88,17 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
87
88
|
const config = (await request.getServiceConfig(NODE_SERVICES.AUTH)) || {};
|
|
88
89
|
const [invitedUserOnly] = await isInvitedUserOnly(config, node, teamDid);
|
|
89
90
|
|
|
90
|
-
|
|
91
|
+
const claim = {
|
|
91
92
|
description: messages.requestPassport[locale],
|
|
92
93
|
item: vcTypes,
|
|
93
94
|
trustedIssuers,
|
|
94
95
|
optional: !invitedUserOnly,
|
|
95
96
|
};
|
|
97
|
+
if (passportId) {
|
|
98
|
+
claim.target = passportId;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return claim;
|
|
96
102
|
},
|
|
97
103
|
};
|
|
98
104
|
|
|
@@ -207,22 +213,32 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
207
213
|
|
|
208
214
|
// Update profile
|
|
209
215
|
try {
|
|
216
|
+
const passportForLog = passport || { name: 'Guest', role: 'guest' };
|
|
210
217
|
if (user) {
|
|
211
218
|
// Update user
|
|
212
|
-
await node.updateUser({
|
|
219
|
+
const doc = await node.updateUser({
|
|
213
220
|
teamDid,
|
|
214
221
|
user: {
|
|
215
222
|
did: userDid,
|
|
216
223
|
pk: userPk,
|
|
217
224
|
locale,
|
|
218
|
-
passports: upsertToPassports(user.passports || [], passport),
|
|
225
|
+
passports: upsertToPassports(user.passports || [], passport).filter(Boolean),
|
|
219
226
|
lastLoginAt: new Date().toISOString(),
|
|
220
227
|
},
|
|
221
228
|
});
|
|
229
|
+
await node.createAuditLog(
|
|
230
|
+
{
|
|
231
|
+
action: 'login',
|
|
232
|
+
args: { teamDid, userDid, passport: passportForLog },
|
|
233
|
+
context: formatContext(Object.assign(req, { user: doc })),
|
|
234
|
+
result: doc,
|
|
235
|
+
},
|
|
236
|
+
node
|
|
237
|
+
);
|
|
222
238
|
} else {
|
|
223
239
|
// Create user
|
|
224
240
|
const profile = claims.find((x) => x.type === 'profile');
|
|
225
|
-
await node.addUser({
|
|
241
|
+
const doc = await node.addUser({
|
|
226
242
|
teamDid,
|
|
227
243
|
user: {
|
|
228
244
|
...profile,
|
|
@@ -235,6 +251,15 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
235
251
|
lastLoginAt: new Date().toISOString(),
|
|
236
252
|
},
|
|
237
253
|
});
|
|
254
|
+
await node.createAuditLog(
|
|
255
|
+
{
|
|
256
|
+
action: 'addUser',
|
|
257
|
+
args: { teamDid, userDid, reason: `first login as ${passportForLog.role}` },
|
|
258
|
+
context: formatContext(Object.assign(req, { user: doc })),
|
|
259
|
+
result: doc,
|
|
260
|
+
},
|
|
261
|
+
node
|
|
262
|
+
);
|
|
238
263
|
}
|
|
239
264
|
|
|
240
265
|
// Generate new session token that client can save to localStorage
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const get = require('lodash/get');
|
|
2
|
+
const formatContext = require('@abtnode/util/lib/format-context');
|
|
2
3
|
const { messages, getVCFromClaims, getUser, validatePassportStatus } = require('@abtnode/auth/lib/auth');
|
|
3
4
|
const { ROLES, VC_TYPE_GENERAL_PASSPORT, VC_TYPE_NODE_PASSPORT } = require('@abtnode/constant');
|
|
4
5
|
const {
|
|
@@ -98,6 +99,15 @@ module.exports = function createRoutes(node, authenticator, createSessionToken)
|
|
|
98
99
|
|
|
99
100
|
// Recreate passport with correct role
|
|
100
101
|
passport = createUserPassport(vc, { role });
|
|
102
|
+
await node.createAuditLog(
|
|
103
|
+
{
|
|
104
|
+
action: 'switchPassport',
|
|
105
|
+
args: { teamDid, userDid, passport },
|
|
106
|
+
context: formatContext(Object.assign(req, { user })),
|
|
107
|
+
result: {},
|
|
108
|
+
},
|
|
109
|
+
node
|
|
110
|
+
);
|
|
101
111
|
|
|
102
112
|
// Generate new session token that client can save to localStorage
|
|
103
113
|
const sessionToken = await createSessionToken(userDid, { passport, role });
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const get = require('lodash/get');
|
|
2
|
+
const formatContext = require('@abtnode/util/lib/format-context');
|
|
2
3
|
const { messages, getUser } = require('@abtnode/auth/lib/auth');
|
|
3
4
|
const { NODE_SERVICES } = require('@abtnode/constant');
|
|
4
5
|
|
|
@@ -47,7 +48,7 @@ module.exports = function createRoutes(node) {
|
|
|
47
48
|
|
|
48
49
|
// Update user
|
|
49
50
|
const profile = claims.find((x) => x.type === 'profile');
|
|
50
|
-
await node.updateUser({
|
|
51
|
+
const doc = await node.updateUser({
|
|
51
52
|
teamDid,
|
|
52
53
|
user: {
|
|
53
54
|
...user,
|
|
@@ -55,6 +56,15 @@ module.exports = function createRoutes(node) {
|
|
|
55
56
|
locale,
|
|
56
57
|
},
|
|
57
58
|
});
|
|
59
|
+
await node.createAuditLog(
|
|
60
|
+
{
|
|
61
|
+
action: 'switchProfile',
|
|
62
|
+
args: { teamDid, userDid, profile },
|
|
63
|
+
context: formatContext(Object.assign(req, { user })),
|
|
64
|
+
result: doc,
|
|
65
|
+
},
|
|
66
|
+
node
|
|
67
|
+
);
|
|
58
68
|
},
|
|
59
69
|
};
|
|
60
70
|
};
|
package/api/util/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
const joinUrl = require('url-join');
|
|
2
2
|
const get = require('lodash/get');
|
|
3
3
|
const { ROLES } = require('@abtnode/constant');
|
|
4
|
-
const { BlockletSource, BLOCKLET_MODES } = require('@blocklet/meta/lib/constants');
|
|
4
|
+
const { BlockletSource, BLOCKLET_MODES, BlockletGroup } = require('@blocklet/meta/lib/constants');
|
|
5
|
+
const { findWebInterface } = require('@blocklet/meta/lib/util');
|
|
5
6
|
const { WELLKNOWN_SERVICE_PATH_PREFIX } = require('@abtnode/constant');
|
|
6
7
|
|
|
7
|
-
const
|
|
8
|
+
const getGroupPrefix = (req) => {
|
|
8
9
|
if (req.headers['x-group-path-prefix']) {
|
|
9
10
|
return `/${req.headers['x-group-path-prefix']}/`.replace(/\/+/g, '/');
|
|
10
11
|
}
|
|
@@ -12,6 +13,14 @@ const getBaseUrl = (req) => {
|
|
|
12
13
|
return '/';
|
|
13
14
|
};
|
|
14
15
|
|
|
16
|
+
const getComponentPrefix = (req) => {
|
|
17
|
+
if (req.headers['x-path-prefix']) {
|
|
18
|
+
return `/${req.headers['x-path-prefix']}/`.replace(/\/+/g, '/');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return '/';
|
|
22
|
+
};
|
|
23
|
+
|
|
15
24
|
const getLogoFromLogoUrl = (blocklet, version) => {
|
|
16
25
|
try {
|
|
17
26
|
if (!blocklet.meta.logoUrl) {
|
|
@@ -61,7 +70,33 @@ const shouldGotoStartPage = (req, blocklet) => {
|
|
|
61
70
|
return false;
|
|
62
71
|
};
|
|
63
72
|
|
|
64
|
-
const
|
|
73
|
+
const findRootWebPort = (blocklet) => {
|
|
74
|
+
if (!blocklet) {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
if (blocklet.group !== BlockletGroup.gateway) {
|
|
79
|
+
// FIXME blocklet web port should be forced to BLOCKLET_PORT? (convention over configuration)
|
|
80
|
+
const webInterface = findWebInterface(blocklet);
|
|
81
|
+
return blocklet.ports[webInterface?.port || 'BLOCKLET_PORT'];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return findRootWebPort(blocklet.children[0]);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
const ensureProxyUrl = async (req) => {
|
|
88
|
+
if (req.url.startsWith('/favicon')) {
|
|
89
|
+
// convert all faviconXXX to favicon to ensure file exists in root blocklet
|
|
90
|
+
req.url = '/favicon.ico';
|
|
91
|
+
|
|
92
|
+
const port = findRootWebPort(await req.getBlocklet());
|
|
93
|
+
if (port) {
|
|
94
|
+
return { target: `http://127.0.0.1:${port}` };
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return { target: null };
|
|
98
|
+
}
|
|
99
|
+
|
|
65
100
|
const target = req.headers['x-blocklet-url'];
|
|
66
101
|
|
|
67
102
|
if (target) {
|
|
@@ -76,15 +111,18 @@ const ensureProxyUrl = (req) => {
|
|
|
76
111
|
};
|
|
77
112
|
|
|
78
113
|
const getRedirectUrl = ({ req, pagePath }) => {
|
|
79
|
-
const
|
|
114
|
+
const groupPrefix = getGroupPrefix(req);
|
|
115
|
+
const componentPrefix = getComponentPrefix(req);
|
|
116
|
+
const redirectPrefix = groupPrefix === componentPrefix ? groupPrefix : componentPrefix;
|
|
117
|
+
|
|
80
118
|
const redirectUrlObj = new URL(`http://localhost${req.url}`);
|
|
81
119
|
// 重定向时考虑 serverUrl 查询参数的处理
|
|
82
120
|
const serverUrl = redirectUrlObj.searchParams.get('serverUrl');
|
|
83
121
|
redirectUrlObj.searchParams.delete('__start__');
|
|
84
122
|
redirectUrlObj.searchParams.delete('serverUrl');
|
|
85
|
-
const redirectUrl = `${
|
|
123
|
+
const redirectUrl = `${redirectPrefix.replace(/\/+$/, '')}${redirectUrlObj.pathname}${redirectUrlObj.search}`;
|
|
86
124
|
|
|
87
|
-
const url = new URL(`http://localhost${joinUrl(
|
|
125
|
+
const url = new URL(`http://localhost${joinUrl(groupPrefix, WELLKNOWN_SERVICE_PATH_PREFIX, pagePath || '/')}`);
|
|
88
126
|
url.searchParams.set('redirect', redirectUrl);
|
|
89
127
|
|
|
90
128
|
const locale = new URL(`http://localhost${req.url}`).searchParams.get('locale');
|
|
@@ -104,4 +142,5 @@ module.exports = {
|
|
|
104
142
|
shouldGotoStartPage,
|
|
105
143
|
ensureProxyUrl,
|
|
106
144
|
getRedirectUrl,
|
|
145
|
+
findRootWebPort,
|
|
107
146
|
};
|
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
{
|
|
2
2
|
"files": {
|
|
3
|
-
"static/js/0.
|
|
4
|
-
"static/js/0.
|
|
5
|
-
"static/js/1.
|
|
6
|
-
"static/js/1.
|
|
7
|
-
"main.js": "/.blocklet/proxy/blocklet-service/static/js/main.
|
|
8
|
-
"main.js.map": "/.blocklet/proxy/blocklet-service/static/js/main.
|
|
9
|
-
"runtime-main.js": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.
|
|
10
|
-
"runtime-main.js.map": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.
|
|
3
|
+
"static/js/0.65d89c48.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/0.65d89c48.chunk.js",
|
|
4
|
+
"static/js/0.65d89c48.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/0.65d89c48.chunk.js.map",
|
|
5
|
+
"static/js/1.45d34a8d.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/1.45d34a8d.chunk.js",
|
|
6
|
+
"static/js/1.45d34a8d.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/1.45d34a8d.chunk.js.map",
|
|
7
|
+
"main.js": "/.blocklet/proxy/blocklet-service/static/js/main.e3089af8.chunk.js",
|
|
8
|
+
"main.js.map": "/.blocklet/proxy/blocklet-service/static/js/main.e3089af8.chunk.js.map",
|
|
9
|
+
"runtime-main.js": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.fca72100.js",
|
|
10
|
+
"runtime-main.js.map": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.fca72100.js.map",
|
|
11
11
|
"static/css/4.6e1172e8.chunk.css": "/.blocklet/proxy/blocklet-service/static/css/4.6e1172e8.chunk.css",
|
|
12
|
-
"static/js/4.
|
|
13
|
-
"static/js/4.
|
|
14
|
-
"static/js/5.
|
|
15
|
-
"static/js/5.
|
|
16
|
-
"static/js/6.
|
|
17
|
-
"static/js/6.
|
|
18
|
-
"static/js/7.
|
|
19
|
-
"static/js/7.
|
|
20
|
-
"static/js/8.
|
|
21
|
-
"static/js/8.
|
|
22
|
-
"static/js/9.
|
|
23
|
-
"static/js/9.
|
|
24
|
-
"static/js/10.
|
|
25
|
-
"static/js/10.
|
|
12
|
+
"static/js/4.7a36b2ba.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/4.7a36b2ba.chunk.js",
|
|
13
|
+
"static/js/4.7a36b2ba.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/4.7a36b2ba.chunk.js.map",
|
|
14
|
+
"static/js/5.3334eaed.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/5.3334eaed.chunk.js",
|
|
15
|
+
"static/js/5.3334eaed.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/5.3334eaed.chunk.js.map",
|
|
16
|
+
"static/js/6.fa05fa72.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/6.fa05fa72.chunk.js",
|
|
17
|
+
"static/js/6.fa05fa72.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/6.fa05fa72.chunk.js.map",
|
|
18
|
+
"static/js/7.f7f97288.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/7.f7f97288.chunk.js",
|
|
19
|
+
"static/js/7.f7f97288.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/7.f7f97288.chunk.js.map",
|
|
20
|
+
"static/js/8.018740e7.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/8.018740e7.chunk.js",
|
|
21
|
+
"static/js/8.018740e7.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/8.018740e7.chunk.js.map",
|
|
22
|
+
"static/js/9.bedec3ae.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/9.bedec3ae.chunk.js",
|
|
23
|
+
"static/js/9.bedec3ae.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/9.bedec3ae.chunk.js.map",
|
|
24
|
+
"static/js/10.d8b82f8d.chunk.js": "/.blocklet/proxy/blocklet-service/static/js/10.d8b82f8d.chunk.js",
|
|
25
|
+
"static/js/10.d8b82f8d.chunk.js.map": "/.blocklet/proxy/blocklet-service/static/js/10.d8b82f8d.chunk.js.map",
|
|
26
26
|
"index.html": "/.blocklet/proxy/blocklet-service/index.html",
|
|
27
|
-
"precache-manifest.
|
|
27
|
+
"precache-manifest.c82f233909194dca95a9f73ae18caf89.js": "/.blocklet/proxy/blocklet-service/precache-manifest.c82f233909194dca95a9f73ae18caf89.js",
|
|
28
28
|
"service-worker.js": "/.blocklet/proxy/blocklet-service/service-worker.js",
|
|
29
29
|
"static/css/4.6e1172e8.chunk.css.map": "/.blocklet/proxy/blocklet-service/static/css/4.6e1172e8.chunk.css.map",
|
|
30
|
-
"static/js/0.
|
|
31
|
-
"static/js/4.
|
|
30
|
+
"static/js/0.65d89c48.chunk.js.LICENSE.txt": "/.blocklet/proxy/blocklet-service/static/js/0.65d89c48.chunk.js.LICENSE.txt",
|
|
31
|
+
"static/js/4.7a36b2ba.chunk.js.LICENSE.txt": "/.blocklet/proxy/blocklet-service/static/js/4.7a36b2ba.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
33
|
"static/media/700.css": "/.blocklet/proxy/blocklet-service/static/media/lato-latin-ext-700-normal.a48b0f04.woff2"
|
|
34
34
|
},
|
|
35
35
|
"entrypoints": [
|
|
36
|
-
"static/js/runtime-main.
|
|
36
|
+
"static/js/runtime-main.fca72100.js",
|
|
37
37
|
"static/css/4.6e1172e8.chunk.css",
|
|
38
|
-
"static/js/4.
|
|
39
|
-
"static/js/main.
|
|
38
|
+
"static/js/4.7a36b2ba.chunk.js",
|
|
39
|
+
"static/js/main.e3089af8.chunk.js"
|
|
40
40
|
]
|
|
41
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="
|
|
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,u,i=t[0],l=t[1],f=t[2],s=t[3]||[],d=0,h=[];d<i.length;d++)u=i[d],Object.prototype.hasOwnProperty.call(o,u)&&o[u]&&h.push(o[u][0]),o[u]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(p&&p(t),c.push.apply(c,s);h.length;)h.shift()();return a.push.apply(a,f||[]),r()}function r(){for(var e,t=0;t<a.length;t++){for(var r=a[t],n=!0,l=1;l<r.length;l++){var f=r[l];0!==o[f]&&(n=!1)}n&&(a.splice(t--,1),e=i(i.s=r[0]))}return 0===a.length&&(c.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=u(e),document.head.appendChild(t)}})),c.length=0),e}var n={},o={3:0},a=[],c=[];function u(e){return i.p+"static/js/"+({}[e]||e)+"."+{0:"65d89c48",1:"45d34a8d",5:"3334eaed",6:"fa05fa72",7:"f7f97288",8:"018740e7",9:"bedec3ae",10:"d8b82f8d"}[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 a,c=document.createElement("script");c.charset="utf-8",c.timeout=120,i.nc&&c.setAttribute("nonce",i.nc),c.src=u(e);var l=new Error;a=function(t){c.onerror=c.onload=null,clearTimeout(f);var r=o[e];if(0!==r){if(r){var n=t&&("load"===t.type?"missing":t.type),a=t&&t.target&&t.target.src;l.message="Loading chunk "+e+" failed.\n("+n+": "+a+")",l.name="ChunkLoadError",l.type=n,l.request=a,r[1](l)}o[e]=void 0}};var f=setTimeout((function(){a({type:"timeout",target:c})}),12e4);c.onerror=c.onload=a,document.head.appendChild(c)}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.7a36b2ba.chunk.js"></script><script src="/.blocklet/proxy/blocklet-service/static/js/main.e3089af8.chunk.js"></script></body></html>
|
|
@@ -1,63 +1,63 @@
|
|
|
1
1
|
self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|
2
2
|
{
|
|
3
|
-
"revision": "
|
|
3
|
+
"revision": "470af1f4ff7f79f931f8f58bd41dabb7",
|
|
4
4
|
"url": "/.blocklet/proxy/blocklet-service/index.html"
|
|
5
5
|
},
|
|
6
6
|
{
|
|
7
|
-
"revision": "
|
|
7
|
+
"revision": "f9bb2bcad88c5191a52f",
|
|
8
8
|
"url": "/.blocklet/proxy/blocklet-service/static/css/4.6e1172e8.chunk.css"
|
|
9
9
|
},
|
|
10
10
|
{
|
|
11
|
-
"revision": "
|
|
12
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/0.
|
|
11
|
+
"revision": "7d787db97e7cd423df8f",
|
|
12
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/0.65d89c48.chunk.js"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"revision": "327dea51c54983f5708f4242bceacaed",
|
|
16
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/0.
|
|
16
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/0.65d89c48.chunk.js.LICENSE.txt"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
|
-
"revision": "
|
|
20
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/1.
|
|
19
|
+
"revision": "94e5489b380d0968dafb",
|
|
20
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/1.45d34a8d.chunk.js"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
|
-
"revision": "
|
|
24
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/10.
|
|
23
|
+
"revision": "ec269872ca0eaffeb570",
|
|
24
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/10.d8b82f8d.chunk.js"
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
|
-
"revision": "
|
|
28
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/4.
|
|
27
|
+
"revision": "f9bb2bcad88c5191a52f",
|
|
28
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/4.7a36b2ba.chunk.js"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"revision": "
|
|
32
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/4.
|
|
31
|
+
"revision": "f101b2fce3f1d0e331470363e3a5af12",
|
|
32
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/4.7a36b2ba.chunk.js.LICENSE.txt"
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
|
-
"revision": "
|
|
36
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/5.
|
|
35
|
+
"revision": "0b8622027516fe4a4665",
|
|
36
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/5.3334eaed.chunk.js"
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
|
-
"revision": "
|
|
40
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/6.
|
|
39
|
+
"revision": "e1466d0e7b1f55119a40",
|
|
40
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/6.fa05fa72.chunk.js"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
|
-
"revision": "
|
|
44
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/7.
|
|
43
|
+
"revision": "11b983e64ce100eeee85",
|
|
44
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/7.f7f97288.chunk.js"
|
|
45
45
|
},
|
|
46
46
|
{
|
|
47
|
-
"revision": "
|
|
48
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/8.
|
|
47
|
+
"revision": "5d86fb9a66b6962461df",
|
|
48
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/8.018740e7.chunk.js"
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
|
-
"revision": "
|
|
52
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/9.
|
|
51
|
+
"revision": "7dd70563a52a7082ad33",
|
|
52
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/9.bedec3ae.chunk.js"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
|
-
"revision": "
|
|
56
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/main.
|
|
55
|
+
"revision": "458e863e4281fe8bcf58",
|
|
56
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/main.e3089af8.chunk.js"
|
|
57
57
|
},
|
|
58
58
|
{
|
|
59
|
-
"revision": "
|
|
60
|
-
"url": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.
|
|
59
|
+
"revision": "d74f5278b2f1e82441f2",
|
|
60
|
+
"url": "/.blocklet/proxy/blocklet-service/static/js/runtime-main.fca72100.js"
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"revision": "a82dcb33d52ed6fa529e5ae8d5fda7f3",
|
package/build/service-worker.js
CHANGED
|
@@ -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.
|
|
17
|
+
"/.blocklet/proxy/blocklet-service/precache-manifest.c82f233909194dca95a9f73ae18caf89.js"
|
|
18
18
|
);
|
|
19
19
|
|
|
20
20
|
self.addEventListener('message', (event) => {
|