@abtnode/constant 1.17.8-beta-20260119-102944-6ba93a16 → 1.17.8-beta-20260125-093329-64b43854
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/dist/index.cjs +1028 -0
- package/dist/index.mjs +848 -0
- package/package.json +20 -7
- package/index.js +0 -951
package/index.js
DELETED
|
@@ -1,951 +0,0 @@
|
|
|
1
|
-
const NODE_SERVICES = Object.freeze({
|
|
2
|
-
AUTH: 'auth',
|
|
3
|
-
});
|
|
4
|
-
|
|
5
|
-
const ROLES = Object.freeze({
|
|
6
|
-
OWNER: 'owner',
|
|
7
|
-
ADMIN: 'admin',
|
|
8
|
-
MEMBER: 'member',
|
|
9
|
-
GUEST: 'guest',
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
const SERVER_ROLES = Object.freeze({
|
|
13
|
-
...ROLES,
|
|
14
|
-
CI: 'ci',
|
|
15
|
-
CERTIFICATE: 'certificate',
|
|
16
|
-
|
|
17
|
-
// blocklet user or sdk. must start with 'blocklet-
|
|
18
|
-
BLOCKLET_OWNER: 'blocklet-owner',
|
|
19
|
-
BLOCKLET_ADMIN: 'blocklet-admin',
|
|
20
|
-
BLOCKLET_MEMBER: 'blocklet-member',
|
|
21
|
-
BLOCKLET_SDK: 'blocklet-sdk',
|
|
22
|
-
|
|
23
|
-
// external user
|
|
24
|
-
EXTERNAL_BLOCKLET_CONTROLLER: 'external-blocklet-controller',
|
|
25
|
-
EXTERNAL_BLOCKLETS_MANAGER: 'external-blocklets-manager',
|
|
26
|
-
});
|
|
27
|
-
|
|
28
|
-
const SERVICES_ROLES = Object.freeze({
|
|
29
|
-
BLOCKLET_GUEST: 'blocklet-guest',
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
const BLOCKLET_ROLES = [
|
|
33
|
-
SERVER_ROLES.BLOCKLET_OWNER,
|
|
34
|
-
SERVER_ROLES.BLOCKLET_ADMIN,
|
|
35
|
-
SERVER_ROLES.BLOCKLET_MEMBER,
|
|
36
|
-
SERVER_ROLES.BLOCKLET_SDK,
|
|
37
|
-
];
|
|
38
|
-
|
|
39
|
-
const isBlockletRole = (role) => role && BLOCKLET_ROLES.includes(role);
|
|
40
|
-
const isSystemRole = (role) => role && ROLES[(role || '').toUpperCase()];
|
|
41
|
-
|
|
42
|
-
const BLOCKLET_MULTIPLE_TENANT_ROLES = [
|
|
43
|
-
SERVER_ROLES.BLOCKLET_OWNER,
|
|
44
|
-
SERVER_ROLES.BLOCKLET_ADMIN,
|
|
45
|
-
SERVER_ROLES.BLOCKLET_MEMBER,
|
|
46
|
-
SERVER_ROLES.BLOCKLET_SDK,
|
|
47
|
-
SERVICES_ROLES.BLOCKLET_GUEST,
|
|
48
|
-
];
|
|
49
|
-
|
|
50
|
-
const isBlockletMultipleTenantRole = (role) => role && BLOCKLET_MULTIPLE_TENANT_ROLES.includes(role);
|
|
51
|
-
|
|
52
|
-
const AUTH_CERT_TYPE = {
|
|
53
|
-
USER: 'user',
|
|
54
|
-
OWNERSHIP_NFT: 'ownership_nft',
|
|
55
|
-
BLOCKLET_USER: 'blocklet_user',
|
|
56
|
-
BLOCKLET_CONTROLLER: 'blocklet_controller',
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
const RBAC_CONFIG = {
|
|
60
|
-
roles: Object.freeze([
|
|
61
|
-
{
|
|
62
|
-
name: SERVER_ROLES.OWNER,
|
|
63
|
-
title: 'Owner',
|
|
64
|
-
description: 'Has full administrative access to the Blocklet Server',
|
|
65
|
-
passport: true,
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
name: SERVER_ROLES.ADMIN,
|
|
69
|
-
title: 'Admin',
|
|
70
|
-
description:
|
|
71
|
-
'Has full permissions to manage blocklet and Blocklet Server such as install/remove/start/stop blocklet, manage blocklet URL mapping and certificates, manage blocklet team, manage node integrations and access keys, upgrade node to a new version',
|
|
72
|
-
passport: true,
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
name: SERVER_ROLES.MEMBER,
|
|
76
|
-
title: 'Member',
|
|
77
|
-
description:
|
|
78
|
-
'Has permissions to manage blocklets, such as install/remove/start/stop blocklet, manage blocklet URL mapping and certificates',
|
|
79
|
-
passport: true,
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
name: SERVER_ROLES.GUEST,
|
|
83
|
-
title: 'Guest',
|
|
84
|
-
description: 'Has all read permissions on Blocklet Server',
|
|
85
|
-
passport: true,
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
name: SERVER_ROLES.CI,
|
|
89
|
-
title: 'CI',
|
|
90
|
-
description: 'Deploy blocklet to Blocklet Server',
|
|
91
|
-
passport: true,
|
|
92
|
-
noHuman: true,
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
name: SERVER_ROLES.CERTIFICATE,
|
|
96
|
-
title: 'Certificate',
|
|
97
|
-
description: 'Manage https certificates for blocklets on the Blocklet Server',
|
|
98
|
-
noHuman: true,
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
name: SERVER_ROLES.BLOCKLET_OWNER,
|
|
102
|
-
title: 'Blocklet Owner',
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
name: SERVER_ROLES.BLOCKLET_ADMIN,
|
|
106
|
-
title: 'Blocklet Admin',
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
name: SERVER_ROLES.BLOCKLET_MEMBER,
|
|
110
|
-
title: 'Blocklet Member',
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
name: SERVER_ROLES.BLOCKLET_SDK,
|
|
114
|
-
title: 'Blocklet SDK',
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
name: SERVER_ROLES.EXTERNAL_BLOCKLET_CONTROLLER,
|
|
118
|
-
title: 'External Blocklet Controller',
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
name: SERVER_ROLES.EXTERNAL_BLOCKLETS_MANAGER,
|
|
122
|
-
title: 'External Blocklets Manager',
|
|
123
|
-
description: 'Manage external blocklets in the Blocklet Server',
|
|
124
|
-
noHuman: true,
|
|
125
|
-
},
|
|
126
|
-
]),
|
|
127
|
-
permissions: Object.freeze([
|
|
128
|
-
{
|
|
129
|
-
name: 'query_node',
|
|
130
|
-
description:
|
|
131
|
-
'View node data, include dashboard and node settings, log stream for both Blocklet Server and blocklets',
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
name: 'mutate_node',
|
|
135
|
-
description: 'Change node settings, upgrade node to a new version',
|
|
136
|
-
},
|
|
137
|
-
{
|
|
138
|
-
name: 'query_session',
|
|
139
|
-
description: 'Get data from a long running session',
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
name: 'mutate_session',
|
|
143
|
-
description: 'Start/update/end a long running session',
|
|
144
|
-
},
|
|
145
|
-
{
|
|
146
|
-
name: 'query_accessKey',
|
|
147
|
-
description: 'View access keys for Blocklet Server',
|
|
148
|
-
},
|
|
149
|
-
{
|
|
150
|
-
name: 'mutate_accessKey',
|
|
151
|
-
description: 'Manage access keys for server and blocklets, such as create/update/delete',
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
name: 'query_team',
|
|
155
|
-
description: 'View team data(members/roles/permissions) for Blocklet Server and blocklets',
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
name: 'mutate_team',
|
|
159
|
-
description: 'Manage team data(members/roles/permissions) for Blocklet Server and blocklets',
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
name: 'query_blocklets',
|
|
163
|
-
description: 'View store and installed blocklets, including blocklet runtime configuration, domains and urls',
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
name: 'mutate_blocklets',
|
|
167
|
-
description: 'Perform state changing actions on blocklets, such as install/upgrade/config/start/stop/remove',
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
name: 'query_router',
|
|
171
|
-
description: 'View sites, URL mapping and certificates in service gateway',
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
name: 'mutate_router',
|
|
175
|
-
description: 'Manage sites, URL mapping and certificates in service gateway',
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
name: 'query_certificate',
|
|
179
|
-
description: 'View certificates in service gateway',
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
name: 'mutate_certificate',
|
|
183
|
-
description: 'Manage certificates in service gateway',
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
name: 'query_notification',
|
|
187
|
-
description: 'View notifications',
|
|
188
|
-
},
|
|
189
|
-
{
|
|
190
|
-
name: 'mutate_notification',
|
|
191
|
-
description: 'Manage notifications, such as mark notifications as read',
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
name: 'query_webhook',
|
|
195
|
-
description: 'View integrations',
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
name: 'mutate_webhook',
|
|
199
|
-
description: 'Manage integrations',
|
|
200
|
-
},
|
|
201
|
-
// query_blocklet, mutate_blocklet are only for blocklet members
|
|
202
|
-
{
|
|
203
|
-
name: 'query_blocklet',
|
|
204
|
-
description: 'View a blocklet, including blocklet runtime configuration, domains and urls',
|
|
205
|
-
},
|
|
206
|
-
{
|
|
207
|
-
name: 'mutate_blocklet',
|
|
208
|
-
description: 'Perform state changing actions on a blocklet, such as upgrade/config/start/stop',
|
|
209
|
-
},
|
|
210
|
-
]),
|
|
211
|
-
grants: Object.freeze({
|
|
212
|
-
[SERVER_ROLES.GUEST]: [
|
|
213
|
-
'query_blocklets',
|
|
214
|
-
'query_router',
|
|
215
|
-
'query_webhook',
|
|
216
|
-
'query_notification',
|
|
217
|
-
'query_team',
|
|
218
|
-
'query_accessKey',
|
|
219
|
-
'query_node',
|
|
220
|
-
'query_session',
|
|
221
|
-
],
|
|
222
|
-
[SERVER_ROLES.MEMBER]: [
|
|
223
|
-
SERVER_ROLES.GUEST,
|
|
224
|
-
'mutate_blocklets',
|
|
225
|
-
'mutate_router',
|
|
226
|
-
'mutate_notification',
|
|
227
|
-
'mutate_session',
|
|
228
|
-
],
|
|
229
|
-
[SERVER_ROLES.ADMIN]: [
|
|
230
|
-
SERVER_ROLES.MEMBER,
|
|
231
|
-
'mutate_team',
|
|
232
|
-
'mutate_webhook',
|
|
233
|
-
'mutate_accessKey',
|
|
234
|
-
'mutate_node',
|
|
235
|
-
'mutate_certificate',
|
|
236
|
-
],
|
|
237
|
-
[SERVER_ROLES.OWNER]: [ROLES.ADMIN],
|
|
238
|
-
[SERVER_ROLES.CI]: ['query_blocklets', 'mutate_blocklets'],
|
|
239
|
-
[SERVER_ROLES.CERTIFICATE]: ['query_certificate', 'mutate_certificate'],
|
|
240
|
-
|
|
241
|
-
// blocklet app or blocklet user
|
|
242
|
-
[SERVER_ROLES.BLOCKLET_SDK]: ['query_team', 'mutate_team', 'query_blocklet', 'query_accessKey', 'mutate_accessKey'],
|
|
243
|
-
[SERVER_ROLES.BLOCKLET_OWNER]: [SERVER_ROLES.BLOCKLET_ADMIN],
|
|
244
|
-
[SERVER_ROLES.BLOCKLET_ADMIN]: [
|
|
245
|
-
SERVER_ROLES.BLOCKLET_MEMBER,
|
|
246
|
-
'mutate_team',
|
|
247
|
-
'mutate_accessKey',
|
|
248
|
-
'mutate_blocklet',
|
|
249
|
-
'mutate_notification',
|
|
250
|
-
],
|
|
251
|
-
[SERVER_ROLES.BLOCKLET_MEMBER]: ['query_team', 'query_blocklet', 'query_notification', 'query_accessKey'],
|
|
252
|
-
|
|
253
|
-
// external user
|
|
254
|
-
[SERVER_ROLES.EXTERNAL_BLOCKLET_CONTROLLER]: ['query_blocklets', 'mutate_blocklets'],
|
|
255
|
-
[SERVER_ROLES.EXTERNAL_BLOCKLETS_MANAGER]: ['query_blocklets', 'mutate_blocklets', 'query_node'],
|
|
256
|
-
}),
|
|
257
|
-
};
|
|
258
|
-
|
|
259
|
-
const DAY_IN_MS = 24 * 60 * 60 * 1000;
|
|
260
|
-
|
|
261
|
-
const EVENTS = {
|
|
262
|
-
NOTIFICATION_CREATE: 'notification.create',
|
|
263
|
-
NOTIFICATION_READ: 'notification.read',
|
|
264
|
-
NOTIFICATION_BLOCKLET_READ: 'blocklet.notification.read',
|
|
265
|
-
NOTIFICATION_BLOCKLET_CREATE: 'notification.blockletCreate',
|
|
266
|
-
NOTIFICATION_BLOCKLET_UPDATE: 'notification.blockletUpdate',
|
|
267
|
-
ROUTING_UPDATED: 'routing.updated',
|
|
268
|
-
NODE_UPDATED: 'node.updated',
|
|
269
|
-
NODE_MAINTAIN_PROGRESS: 'node.upgrade.progress',
|
|
270
|
-
NODE_STARTED: 'node.started',
|
|
271
|
-
NODE_STOPPED: 'node.stopped',
|
|
272
|
-
NODE_ADDED_OWNER: 'node.addedOwner',
|
|
273
|
-
NODE_RUNTIME_INFO: 'node.runtimeInfo',
|
|
274
|
-
BLOCKLETS_RUNTIME_INFO: 'node.blockletsRuntimeInfo',
|
|
275
|
-
DOMAIN_STATUS: 'domain.status',
|
|
276
|
-
CERT_ADDED: 'cert.added',
|
|
277
|
-
CERT_ISSUED: 'cert.issued',
|
|
278
|
-
CERT_UPDATED: 'cert.updated',
|
|
279
|
-
CERT_REMOVED: 'cert.removed',
|
|
280
|
-
CERT_ERROR: 'cert.error',
|
|
281
|
-
RELOAD_GATEWAY: 'gateway.reload',
|
|
282
|
-
NOTIFICATION_CREATE_QUEUED: 'notification.create.queued',
|
|
283
|
-
UPDATE_DOMAIN_ALIAS: 'router.domain.alias.updated',
|
|
284
|
-
|
|
285
|
-
WEBHOOK_ATTEMPT: 'webhook.attempt',
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
const WHO_CAN_ACCESS = Object.freeze({
|
|
289
|
-
OWNER: 'owner',
|
|
290
|
-
ADMIN: 'admin',
|
|
291
|
-
INVITED: 'invited',
|
|
292
|
-
ALL: 'all',
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
const TEST_STORE_URL = 'https://test.store.blocklet.dev';
|
|
296
|
-
const BLOCKLET_STORE_URL = 'https://store.blocklet.dev';
|
|
297
|
-
const BLOCKLET_STORE_URL_DEV = 'https://dev.store.blocklet.dev';
|
|
298
|
-
const MAIN_CHAIN_ENDPOINT = 'https://main.abtnetwork.io/api/';
|
|
299
|
-
|
|
300
|
-
const USER_TYPE = Object.freeze({
|
|
301
|
-
DERIVED: 'derived',
|
|
302
|
-
WALLET: 'wallet',
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
const BACKUPS = {
|
|
306
|
-
STATUS: {
|
|
307
|
-
PROGRESS: null,
|
|
308
|
-
SUCCEEDED: 0,
|
|
309
|
-
FAILED: 1,
|
|
310
|
-
},
|
|
311
|
-
// 备份的超时时间是 6 小时
|
|
312
|
-
TIMEOUT_HOURS: 6,
|
|
313
|
-
// 备份策略
|
|
314
|
-
STRATEGY: {
|
|
315
|
-
// 自动备份
|
|
316
|
-
AUTO: 0,
|
|
317
|
-
// 手动备份
|
|
318
|
-
MANUAL: 1,
|
|
319
|
-
},
|
|
320
|
-
JOB: {
|
|
321
|
-
// 自动备份的时间间隔,单位为 s,目前是间隔2个小时
|
|
322
|
-
INTERVAL: 2 * 60 * 60,
|
|
323
|
-
},
|
|
324
|
-
};
|
|
325
|
-
|
|
326
|
-
const CHECK_UPDATE = {
|
|
327
|
-
STATUS: {
|
|
328
|
-
PROGRESS: null,
|
|
329
|
-
SUCCEEDED: 0,
|
|
330
|
-
FAILED: 1,
|
|
331
|
-
},
|
|
332
|
-
// 备份的超时时间是 6 小时
|
|
333
|
-
TIMEOUT_HOURS: 6,
|
|
334
|
-
// 备份策略
|
|
335
|
-
STRATEGY: {
|
|
336
|
-
// 自动备份
|
|
337
|
-
AUTO: 0,
|
|
338
|
-
// 手动备份
|
|
339
|
-
MANUAL: 1,
|
|
340
|
-
},
|
|
341
|
-
JOB: {
|
|
342
|
-
// 自动备份的时间间隔,单位为 s,目前是间隔2个小时
|
|
343
|
-
INTERVAL: 2 * 60 * 60,
|
|
344
|
-
// 1 天
|
|
345
|
-
DAY_INTERVAL: 24 * 60 * 60,
|
|
346
|
-
},
|
|
347
|
-
};
|
|
348
|
-
|
|
349
|
-
// 10s 上报统计一次
|
|
350
|
-
const MONITOR_RECORD_INTERVAL_SEC = 20;
|
|
351
|
-
|
|
352
|
-
// 保存当天数据, 每天上报 8640 次
|
|
353
|
-
const MONITOR_HISTORY_LENGTH = 86400 / MONITOR_RECORD_INTERVAL_SEC;
|
|
354
|
-
|
|
355
|
-
const FEDERATED = {
|
|
356
|
-
SYNC_LIMIT: 30,
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
const ROUTING_RESPONSE_TYPES = [
|
|
360
|
-
{
|
|
361
|
-
text: 'Plain Text',
|
|
362
|
-
value: 'text/plain',
|
|
363
|
-
},
|
|
364
|
-
{
|
|
365
|
-
text: 'JSON',
|
|
366
|
-
value: 'application/json',
|
|
367
|
-
},
|
|
368
|
-
{
|
|
369
|
-
text: 'XML',
|
|
370
|
-
value: 'application/xml',
|
|
371
|
-
},
|
|
372
|
-
{
|
|
373
|
-
text: 'HTML Document',
|
|
374
|
-
value: 'text/html',
|
|
375
|
-
},
|
|
376
|
-
{
|
|
377
|
-
text: 'YAML',
|
|
378
|
-
value: 'application/x-yaml',
|
|
379
|
-
},
|
|
380
|
-
{
|
|
381
|
-
text: 'TOML',
|
|
382
|
-
value: 'application/toml',
|
|
383
|
-
},
|
|
384
|
-
{
|
|
385
|
-
text: 'CSS',
|
|
386
|
-
value: 'text/css',
|
|
387
|
-
},
|
|
388
|
-
{
|
|
389
|
-
text: 'JavaScript',
|
|
390
|
-
value: 'application/javascript',
|
|
391
|
-
},
|
|
392
|
-
{
|
|
393
|
-
text: 'CSV',
|
|
394
|
-
value: 'text/csv',
|
|
395
|
-
},
|
|
396
|
-
{
|
|
397
|
-
text: 'Markdown',
|
|
398
|
-
value: 'text/markdown',
|
|
399
|
-
},
|
|
400
|
-
{
|
|
401
|
-
text: 'SVG',
|
|
402
|
-
value: 'image/svg+xml',
|
|
403
|
-
},
|
|
404
|
-
];
|
|
405
|
-
|
|
406
|
-
const SERVERLESS_BLOCKLET_DATA_RETENTION_DAYS = 30;
|
|
407
|
-
|
|
408
|
-
const LAUNCH_SESSION_STATUS = Object.freeze({
|
|
409
|
-
created: 0,
|
|
410
|
-
selected: 10,
|
|
411
|
-
connected: 20,
|
|
412
|
-
timeout: 25,
|
|
413
|
-
paid: 30,
|
|
414
|
-
nftMinted: 35,
|
|
415
|
-
allocated: 40,
|
|
416
|
-
consuming: 46,
|
|
417
|
-
installed: 50,
|
|
418
|
-
overdue: 60,
|
|
419
|
-
canceled: 65,
|
|
420
|
-
terminated: 70,
|
|
421
|
-
transferred: 90,
|
|
422
|
-
});
|
|
423
|
-
|
|
424
|
-
// security rule relates
|
|
425
|
-
const SECURITY_RULE_DEFAULT_ID = 'default';
|
|
426
|
-
const ACCESS_POLICY_PUBLIC = 'public';
|
|
427
|
-
const ACCESS_POLICY_INVITED_ONLY = 'invited-only';
|
|
428
|
-
const ACCESS_POLICY_OWNER_ONLY = 'owner-only';
|
|
429
|
-
const ACCESS_POLICY_ADMIN_ONLY = 'admin-only';
|
|
430
|
-
const RESPONSE_HEADER_POLICY_SIMPLE_CORS = 'simple-cors';
|
|
431
|
-
const RESPONSE_HEADER_POLICY_SECURITY_HEADER = 'security-header';
|
|
432
|
-
const RESPONSE_HEADER_POLICY_SIMPLE_CORS_AND_SECURITY_HEADER = 'simple-cors-and-security-header';
|
|
433
|
-
|
|
434
|
-
const EVENT_BUS_EVENT = 'event-bus';
|
|
435
|
-
|
|
436
|
-
const NAVIGATION_I18N_FIELDS = Object.freeze(['title', 'description', 'link']);
|
|
437
|
-
|
|
438
|
-
// NOTICE: keep sync with @blocklet/constant
|
|
439
|
-
const USER_SESSION_STATUS = {
|
|
440
|
-
ONLINE: 'online',
|
|
441
|
-
OFFLINE: 'offline',
|
|
442
|
-
EXPIRED: 'expired',
|
|
443
|
-
};
|
|
444
|
-
|
|
445
|
-
module.exports = Object.freeze({
|
|
446
|
-
// Blocklet Server
|
|
447
|
-
NODE_MODES: Object.freeze({
|
|
448
|
-
PRODUCTION: 'production',
|
|
449
|
-
DEBUG: 'debug',
|
|
450
|
-
MAINTENANCE: 'maintenance',
|
|
451
|
-
SERVERLESS: 'serverless',
|
|
452
|
-
}),
|
|
453
|
-
|
|
454
|
-
DEFAULT_DESCRIPTION: 'Web Interface to manage your Blocklet Server',
|
|
455
|
-
|
|
456
|
-
NODE_MAINTAIN_PROGRESS: Object.freeze({
|
|
457
|
-
SETUP: 'setup', // backup
|
|
458
|
-
INSTALLING: 'installing',
|
|
459
|
-
VERIFYING: 'verifying',
|
|
460
|
-
RESTARTING: 'restarting',
|
|
461
|
-
CLEANUP: 'cleanup',
|
|
462
|
-
COMPLETE: 'complete',
|
|
463
|
-
ROLLBACK: 'rollback',
|
|
464
|
-
}),
|
|
465
|
-
|
|
466
|
-
VC_TYPE_BLOCKLET_PURCHASE: 'BlockletPurchaseCredential',
|
|
467
|
-
VC_TYPE_NODE_PASSPORT: 'ABTNodePassport',
|
|
468
|
-
VC_TYPE_GENERAL_PASSPORT: 'NFTPassport',
|
|
469
|
-
|
|
470
|
-
NFT_TYPE_SERVER_OWNERSHIP: 'BlockletServerOwnershipNFT',
|
|
471
|
-
NFT_TYPE_SERVERLESS: 'BlockletServerServerlessNFT',
|
|
472
|
-
|
|
473
|
-
NODE_PACKAGE_NAME: '@abtnode/cli', // deprecated in 1.6.0
|
|
474
|
-
NODE_COMMAND_NAME: 'abtnode', // deprecated in 1.6.0
|
|
475
|
-
NODE_DATA_DIR_NAME: '_abtnode',
|
|
476
|
-
USER_AVATAR_DIR: '/.assets/avatar',
|
|
477
|
-
USER_AVATAR_URL_PREFIX: 'bn://avatar',
|
|
478
|
-
USER_AVATAR_PATH_PREFIX: '/user/avatar',
|
|
479
|
-
USER_MAX_INVITE_DEPTH: 8,
|
|
480
|
-
|
|
481
|
-
PROCESS_NAME_DAEMON: 'abt-node-daemon',
|
|
482
|
-
PROCESS_NAME_PROXY: 'abt-node-db-hub',
|
|
483
|
-
PROCESS_NAME_UPDATER: 'abt-node-updater',
|
|
484
|
-
PROCESS_NAME_SERVICE: 'abt-node-service',
|
|
485
|
-
PROCESS_NAME_ROUTER: 'abt-node-router',
|
|
486
|
-
PROCESS_NAME_LOG_ROTATE: 'abt-node-log-rotate',
|
|
487
|
-
PROCESS_NAME_EVENT_HUB: 'abt-node-event-hub',
|
|
488
|
-
PROCESS_NAME_PM2_EVENT_HUB: 'abt-node-pm2-event-hub',
|
|
489
|
-
PROCESS_NAME_ORPHAN_CLEANUP: 'abt-node-orphan-cleanup',
|
|
490
|
-
|
|
491
|
-
// Process script paths for orphan detection
|
|
492
|
-
DAEMON_SCRIPT_PATH: 'cli/lib/process/daemon.js',
|
|
493
|
-
SERVICE_SCRIPT_PATH: 'cli/lib/process/service.js',
|
|
494
|
-
|
|
495
|
-
// Orphan process cleanup settings
|
|
496
|
-
ORPHAN_CHECK_DELAY: 60 * 1000, // 60 seconds - delay before checking for orphan processes
|
|
497
|
-
ORPHAN_MIN_UPTIME: 60, // 60 seconds - minimum process uptime to be considered orphan
|
|
498
|
-
|
|
499
|
-
BLOCKLET_LAUNCHER_URL: 'https://launcher.arcblock.io/',
|
|
500
|
-
WEB_WALLET_URL: 'https://web.abtwallet.io',
|
|
501
|
-
TEST_STORE_URL,
|
|
502
|
-
BLOCKLET_STORE_URL,
|
|
503
|
-
BLOCKLET_STORE_URL_DEV,
|
|
504
|
-
BLOCKLET_STORE_DID: 'z8ia29UsENBg6tLZUKi2HABj38Cw1LmHZocbQ',
|
|
505
|
-
BLOCKLET_STORE_API_PREFIX: '/api',
|
|
506
|
-
BLOCKLET_STORE_API_BLOCKLET_PREFIX: '/api/blocklets',
|
|
507
|
-
BLOCKLET_STORE_META_PATH: '/api/store.json',
|
|
508
|
-
BLOCKLET_STORE: {
|
|
509
|
-
id: 'zNKqX7D8ZAYa77HgzpoFfnV3BFbcmSRrE9aT',
|
|
510
|
-
name: 'Official Store',
|
|
511
|
-
description: 'ArcBlock official store for production ready blocklets',
|
|
512
|
-
url: BLOCKLET_STORE_URL,
|
|
513
|
-
logoUrl: '/logo.png',
|
|
514
|
-
maintainer: 'arcblock',
|
|
515
|
-
},
|
|
516
|
-
BLOCKLET_STORE_DEV: {
|
|
517
|
-
id: 'zNKmfUatDhzfMVACfr3u97eqndj8f1yXXw3m',
|
|
518
|
-
name: 'Dev Store',
|
|
519
|
-
description: 'ArcBlock official store for demo and example blocklets',
|
|
520
|
-
url: BLOCKLET_STORE_URL_DEV,
|
|
521
|
-
maintainer: 'arcblock',
|
|
522
|
-
logoUrl: '/logo.png',
|
|
523
|
-
},
|
|
524
|
-
BLOCKLET_TEST_STORE: {
|
|
525
|
-
id: 'zNKirQVRx4xbyTPMkvH3kguRfofTJana8WBK',
|
|
526
|
-
name: 'Test Store',
|
|
527
|
-
description: 'ArcBlock official store for non-production ready blocklets',
|
|
528
|
-
url: TEST_STORE_URL,
|
|
529
|
-
maintainer: 'arcblock',
|
|
530
|
-
logoUrl: '/logo.png',
|
|
531
|
-
},
|
|
532
|
-
|
|
533
|
-
// application is a container, components have no hierarchy and are tiled in application
|
|
534
|
-
APP_STRUCT_VERSION: '2',
|
|
535
|
-
|
|
536
|
-
DEFAULT_DID_REGISTRY: 'https://registry.abtnet.io',
|
|
537
|
-
DEFAULT_SLP_DOMAIN: 'slp.abtnet.io',
|
|
538
|
-
DEFAULT_DID_DOMAIN: 'did.abtnet.io',
|
|
539
|
-
DEFAULT_IP_DOMAIN: '*.ip.abtnet.io',
|
|
540
|
-
DEFAULT_IP_DOMAIN_SUFFIX: 'ip.abtnet.io',
|
|
541
|
-
DEFAULT_WILDCARD_CERT_HOST: 'https://releases.arcblock.io/',
|
|
542
|
-
DEFAULT_NFT_DOMAIN_URL: 'https://domain.didlabs.org/',
|
|
543
|
-
|
|
544
|
-
DEFAULT_CERTIFICATE_EMAIL: 'certs@arcblock.io',
|
|
545
|
-
|
|
546
|
-
CONFIG_FILENAME: 'config.yml',
|
|
547
|
-
CONFIG_FILENAME_OLD: 'abtnode.yml',
|
|
548
|
-
CONFIG_FOLDER_NAME: '.blocklet-server',
|
|
549
|
-
CONFIG_FOLDER_NAME_OLD: '.abtnode',
|
|
550
|
-
EXPORTED_FOLDER_NAME: 'exported_blocklet_server',
|
|
551
|
-
|
|
552
|
-
DEFAULT_WELLKNOWN_PORT: 8088,
|
|
553
|
-
|
|
554
|
-
StatusCode: Object.freeze({
|
|
555
|
-
ok: 0,
|
|
556
|
-
|
|
557
|
-
blocklet_not_found: 1,
|
|
558
|
-
blocklet_not_purchased: 2,
|
|
559
|
-
|
|
560
|
-
forbidden: 403,
|
|
561
|
-
internal: 500,
|
|
562
|
-
timeout: 504,
|
|
563
|
-
}),
|
|
564
|
-
|
|
565
|
-
// Service Gateway
|
|
566
|
-
// eslint-disable-next-line prefer-regex-literals
|
|
567
|
-
IP: new RegExp('-(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\-(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}'),
|
|
568
|
-
DOMAIN_FOR_IP_SITE: '',
|
|
569
|
-
DOMAIN_FOR_IP_SITE_REGEXP: `~^\\d+.\\d+.\\d+.\\d+$`, // eslint-disable-line
|
|
570
|
-
DOMAIN_FOR_DEFAULT_SITE: '*',
|
|
571
|
-
DOMAIN_FOR_INTERNAL_SITE: '127.0.0.1',
|
|
572
|
-
NAME_FOR_WELLKNOWN_SITE: 'wellknown',
|
|
573
|
-
WELLKNOWN_PATH_PREFIX: '/.well-known',
|
|
574
|
-
WELLKNOWN_ACME_CHALLENGE_PREFIX: '/.well-known/acme-challenge',
|
|
575
|
-
WELLKNOWN_DID_RESOLVER_PREFIX: '/.well-known/did.json', // server wellknown endpoint
|
|
576
|
-
WELLKNOWN_OAUTH_SERVER: '/.well-known/oauth-authorization-server',
|
|
577
|
-
WELLKNOWN_OPENID_SERVER: '/.well-known/openid-configuration',
|
|
578
|
-
WELLKNOWN_BLACKLIST_PREFIX: '/.well-known/blacklist',
|
|
579
|
-
WELLKNOWN_PING_PREFIX: '/.well-known/ping',
|
|
580
|
-
WELLKNOWN_ANALYTICS_PREFIX: '/.well-known/analytics',
|
|
581
|
-
WELLKNOWN_SERVICE_PATH_PREFIX: '/.well-known/service',
|
|
582
|
-
WELLKNOWN_BLOCKLET_ADMIN_PATH: '/.well-known/service/admin',
|
|
583
|
-
WELLKNOWN_BLOCKLET_USER_PATH: '/.well-known/service/user',
|
|
584
|
-
WELLKNOWN_BLOCKLET_HEALTH_PATH: '/.well-known/service/health',
|
|
585
|
-
WELLKNOWN_BLOCKLET_LOGO_PATH: '/.well-known/service/blocklet/logo',
|
|
586
|
-
SLOT_FOR_IP_DNS_SITE: '888-888-888-888',
|
|
587
|
-
|
|
588
|
-
DEFAULT_ADMIN_PATH: '/admin',
|
|
589
|
-
WELLKNOWN_SERVER_ADMIN_PATH: '/.well-known/server/admin',
|
|
590
|
-
DEFAULT_HTTP_PORT: 80,
|
|
591
|
-
DEFAULT_HTTPS_PORT: 443,
|
|
592
|
-
MAX_UPLOAD_FILE_SIZE: 100, // unit: MB
|
|
593
|
-
DEFAULT_DAEMON_PORT: 8089,
|
|
594
|
-
MAX_NGINX_WORKER_CONNECTIONS: 10240,
|
|
595
|
-
|
|
596
|
-
BLOCKLET_PROXY_PATH_PREFIX: '/.blocklet/proxy',
|
|
597
|
-
BLOCKLET_SITE_GROUP_SUFFIX: '.blocklet-domain-group',
|
|
598
|
-
|
|
599
|
-
// Time and dates
|
|
600
|
-
DAY_IN_MS,
|
|
601
|
-
DAEMON_MAX_MEM_LIMIT_IN_MB: 800,
|
|
602
|
-
BLOCKLET_MAX_MEM_LIMIT_IN_MB: 800,
|
|
603
|
-
CERTIFICATE_EXPIRES_OFFSET: 10 * DAY_IN_MS,
|
|
604
|
-
ROUTING_RESPONSE_TYPES,
|
|
605
|
-
ROUTING_RULE_TYPES: Object.freeze({
|
|
606
|
-
NONE: 'none',
|
|
607
|
-
DAEMON: 'daemon',
|
|
608
|
-
SERVICE: 'service',
|
|
609
|
-
BLOCKLET: 'blocklet',
|
|
610
|
-
REDIRECT: 'redirect',
|
|
611
|
-
GENERAL_REWRITE: 'rewrite',
|
|
612
|
-
GENERAL_PROXY: 'general_proxy',
|
|
613
|
-
DIRECT_RESPONSE: 'direct_response',
|
|
614
|
-
COMPONENT: 'component',
|
|
615
|
-
}),
|
|
616
|
-
|
|
617
|
-
// Team
|
|
618
|
-
ROLES,
|
|
619
|
-
SERVER_ROLES,
|
|
620
|
-
BLOCKLET_ROLES,
|
|
621
|
-
isBlockletRole,
|
|
622
|
-
isSystemRole,
|
|
623
|
-
isBlockletMultipleTenantRole,
|
|
624
|
-
AUTH_CERT_TYPE,
|
|
625
|
-
RBAC_CONFIG,
|
|
626
|
-
genPermissionName: (resource, action = 'access') => `${action}_${resource.replace('_', '-')}`, // resource cannot include '_'
|
|
627
|
-
|
|
628
|
-
PASSPORT_STATUS: {
|
|
629
|
-
VALID: 'valid',
|
|
630
|
-
REVOKED: 'revoked',
|
|
631
|
-
EXPIRED: 'expired',
|
|
632
|
-
},
|
|
633
|
-
|
|
634
|
-
// Service
|
|
635
|
-
NODE_SERVICES,
|
|
636
|
-
|
|
637
|
-
DISK_ALERT_THRESHOLD_PERCENT: 80,
|
|
638
|
-
|
|
639
|
-
// EVENTS
|
|
640
|
-
EVENTS,
|
|
641
|
-
|
|
642
|
-
WHO_CAN_ACCESS,
|
|
643
|
-
WHO_CAN_ACCESS_PREFIX_ROLES: 'roles:',
|
|
644
|
-
|
|
645
|
-
GATEWAY_RATE_LIMIT: { min: 5, max: 500 },
|
|
646
|
-
GATEWAY_RATE_LIMIT_BURST_FACTOR: { min: 1, max: 10 },
|
|
647
|
-
GATEWAY_RATE_LIMIT_GLOBAL: { min: 100, max: 5000 },
|
|
648
|
-
GATEWAY_RATE_LIMIT_METHODS: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'HEAD'],
|
|
649
|
-
|
|
650
|
-
// Store
|
|
651
|
-
STORE_DETAIL_PAGE_PATH_PREFIX: '/blocklets',
|
|
652
|
-
|
|
653
|
-
MAX_USER_PAGE_SIZE: 100,
|
|
654
|
-
// 默认最大 page size
|
|
655
|
-
MAX_PAGE_SIZE: 100,
|
|
656
|
-
|
|
657
|
-
SERVER_STATUS: {
|
|
658
|
-
RUNNING: 1,
|
|
659
|
-
STOPPED: 2,
|
|
660
|
-
START_FROM_CRASH: 3,
|
|
661
|
-
},
|
|
662
|
-
|
|
663
|
-
LOG_RETAIN_IN_DAYS: 60,
|
|
664
|
-
|
|
665
|
-
BLOCKLET_INSTALL_TYPE: {
|
|
666
|
-
STORE: 'store',
|
|
667
|
-
URL: 'url',
|
|
668
|
-
DEV: 'dev',
|
|
669
|
-
CREATE: 'create',
|
|
670
|
-
RESTORE: 'restore',
|
|
671
|
-
},
|
|
672
|
-
|
|
673
|
-
// @link https://docs.nginx.com/nginx/admin-guide/content-cache/content-caching/
|
|
674
|
-
// @link https://www.sheshbabu.com/posts/nginx-caching-proxy/
|
|
675
|
-
// @link https://www.nginx.com/blog/nginx-caching-guide/
|
|
676
|
-
ROUTER_CACHE_GROUPS: {
|
|
677
|
-
blockletProxy: {
|
|
678
|
-
minSize: '10m',
|
|
679
|
-
maxSize: '10g',
|
|
680
|
-
period: '30d',
|
|
681
|
-
},
|
|
682
|
-
// TODO: disabled because we can not bust nginx cache effectively for now
|
|
683
|
-
// blockletJs: {
|
|
684
|
-
// minSize: '1m',
|
|
685
|
-
// maxSize: '64m',
|
|
686
|
-
// period: '5m',
|
|
687
|
-
// },
|
|
688
|
-
},
|
|
689
|
-
|
|
690
|
-
MAIN_CHAIN_ENDPOINT,
|
|
691
|
-
USER_TYPE,
|
|
692
|
-
SERVER_CACHE_TTL: 300 * 1000, // 5 minutes
|
|
693
|
-
RBAC_CACHE_TTL: 300 * 1000, // 5 minutes
|
|
694
|
-
BLOCKLET_CACHE_TTL: 300 * 1000, // 5 minutes
|
|
695
|
-
SESSION_CACHE_TTL: 3600, // 1h: unit seconds
|
|
696
|
-
SESSION_TTL: 7 * 86400, // 7d: unit seconds
|
|
697
|
-
|
|
698
|
-
BACKUPS,
|
|
699
|
-
|
|
700
|
-
CHECK_UPDATE,
|
|
701
|
-
|
|
702
|
-
MONITOR_HISTORY_LENGTH,
|
|
703
|
-
MONITOR_RECORD_INTERVAL_SEC,
|
|
704
|
-
|
|
705
|
-
INSTALL_ACTIONS: {
|
|
706
|
-
INSTALL: 'install',
|
|
707
|
-
INSTALL_COMPONENT: 'installComponent',
|
|
708
|
-
UPGRADE_COMPONENT: 'upgradeComponent',
|
|
709
|
-
},
|
|
710
|
-
|
|
711
|
-
COPYRIGHT_OWNER: 'ArcBlock',
|
|
712
|
-
FEDERATED,
|
|
713
|
-
SESSION_TOKEN_STORAGE_KEY: 'login_token',
|
|
714
|
-
REFRESH_TOKEN_STORAGE_KEY: 'refresh_token',
|
|
715
|
-
SERVERLESS_BLOCKLET_DATA_RETENTION_DAYS,
|
|
716
|
-
LAUNCH_SESSION_STATUS,
|
|
717
|
-
UNOWNED_DID: 'z'.repeat(35),
|
|
718
|
-
|
|
719
|
-
STUDIO_CONNECTED_STORE: 'studio_connected_store',
|
|
720
|
-
STUDIO_CONNECTED_AND_DEVELOPED: 'studio_connected_and_developed',
|
|
721
|
-
|
|
722
|
-
VERIFY_CODE_LENGTH: 6,
|
|
723
|
-
VERIFY_CODE_TTL: 30 * 60 * 1000,
|
|
724
|
-
VERIFY_SEND_TTL: 1 * 60 * 1000,
|
|
725
|
-
|
|
726
|
-
SECURITY_RULE_DEFAULT_ID,
|
|
727
|
-
ACCESS_POLICY_PUBLIC,
|
|
728
|
-
ACCESS_POLICY_INVITED_ONLY,
|
|
729
|
-
ACCESS_POLICY_OWNER_ONLY,
|
|
730
|
-
ACCESS_POLICY_ADMIN_ONLY,
|
|
731
|
-
RESPONSE_HEADER_POLICY_SIMPLE_CORS,
|
|
732
|
-
RESPONSE_HEADER_POLICY_SECURITY_HEADER,
|
|
733
|
-
RESPONSE_HEADER_POLICY_SIMPLE_CORS_AND_SECURITY_HEADER,
|
|
734
|
-
|
|
735
|
-
// 无论如何都需要二次验证的接口
|
|
736
|
-
MFA_PROTECTED_METHODS: [
|
|
737
|
-
'deleteBlocklet',
|
|
738
|
-
'deleteComponent',
|
|
739
|
-
'rotateSessionKey',
|
|
740
|
-
'upgradeNodeVersion',
|
|
741
|
-
'removeUser',
|
|
742
|
-
'updateUserApproval',
|
|
743
|
-
'deleteRoutingRule',
|
|
744
|
-
'deleteDomainAlias',
|
|
745
|
-
'deleteCertificate',
|
|
746
|
-
'deleteAccessKey',
|
|
747
|
-
'deleteWebHook',
|
|
748
|
-
'deleteBlockletSecurityRule',
|
|
749
|
-
'deleteBlockletResponseHeaderPolicy',
|
|
750
|
-
'deleteBlockletAccessPolicy',
|
|
751
|
-
'configVault',
|
|
752
|
-
'removeOrgMember',
|
|
753
|
-
'deleteOrg',
|
|
754
|
-
],
|
|
755
|
-
|
|
756
|
-
// 如果是 multiple tenant 的情况下, 这些白名单不会验证 RBAC
|
|
757
|
-
STUDIO_ALLOWED_METHODS: {
|
|
758
|
-
getBlocklet: true,
|
|
759
|
-
createProject: true,
|
|
760
|
-
getProjects: true,
|
|
761
|
-
getProject: true,
|
|
762
|
-
updateProject: true,
|
|
763
|
-
deleteProject: true,
|
|
764
|
-
getReleases: true,
|
|
765
|
-
getRelease: true,
|
|
766
|
-
createRelease: true,
|
|
767
|
-
deleteRelease: true,
|
|
768
|
-
addBlockletStore: true,
|
|
769
|
-
deleteBlockletStore: true,
|
|
770
|
-
publishToStore: true,
|
|
771
|
-
connectToStore: true,
|
|
772
|
-
connectByStudio: true,
|
|
773
|
-
disconnectFromStore: true,
|
|
774
|
-
getSelectedResources: true,
|
|
775
|
-
updateSelectedResources: true,
|
|
776
|
-
// FIXME: 梁柱, 下面两个 get 接口, 可以不开放但是前端需要根据情况取消获取这两个接口的调用
|
|
777
|
-
getBlockletRuntimeHistory: true,
|
|
778
|
-
checkDomains: true,
|
|
779
|
-
isDidDomain: true,
|
|
780
|
-
},
|
|
781
|
-
SDK_ALLOWED_METHODS: {
|
|
782
|
-
configBlocklet: true,
|
|
783
|
-
configNavigations: true,
|
|
784
|
-
addRoutingRule: true,
|
|
785
|
-
updateRoutingRule: true,
|
|
786
|
-
deleteRoutingRule: true,
|
|
787
|
-
},
|
|
788
|
-
// 这些接口可以跳过 ACCESS VERIFY
|
|
789
|
-
SKIP_ACCESS_VERIFY_METHODS: {
|
|
790
|
-
makeAllNotificationsAsRead: true,
|
|
791
|
-
readNotifications: true,
|
|
792
|
-
unreadNotifications: true,
|
|
793
|
-
launchBlockletByLauncher: true,
|
|
794
|
-
launchBlockletWithoutWallet: true,
|
|
795
|
-
backupBlocklet: true,
|
|
796
|
-
destroySelf: true,
|
|
797
|
-
connectToAigne: true,
|
|
798
|
-
disconnectToAigne: true,
|
|
799
|
-
verifyAigneConnection: true,
|
|
800
|
-
connectToEndpoint: true,
|
|
801
|
-
disconnectFromEndpoint: true,
|
|
802
|
-
},
|
|
803
|
-
NOTIFICATION_SEND_STATUS: {
|
|
804
|
-
PENDING: 0, // 待发送
|
|
805
|
-
SENT: 1, // 已发送
|
|
806
|
-
FAILED: 2, // 发送失败
|
|
807
|
-
},
|
|
808
|
-
NOTIFICATION_SEND_FAILED_REASON: {
|
|
809
|
-
USER_DISABLED: 'user_disabled', // 用户未开启渠道
|
|
810
|
-
CHANNEL_UNAVAILABLE: 'channel_unavailable', // 未开启服务
|
|
811
|
-
CHANNEL_DISABLED: 'channel_disabled', // 开发者未选择此渠道
|
|
812
|
-
NOT_ONLINE: 'not_online', // 用户未上线 - 只针对于wallet
|
|
813
|
-
},
|
|
814
|
-
NOTIFICATION_SEND_CHANNEL: {
|
|
815
|
-
WALLET: 'app',
|
|
816
|
-
EMAIL: 'email',
|
|
817
|
-
PUSH: 'push',
|
|
818
|
-
WEBHOOK: 'webhook',
|
|
819
|
-
},
|
|
820
|
-
|
|
821
|
-
BLACKLIST_SCOPE: {
|
|
822
|
-
ROUTER: 'router',
|
|
823
|
-
},
|
|
824
|
-
|
|
825
|
-
EVENT_BUS_EVENT,
|
|
826
|
-
|
|
827
|
-
NAVIGATION_I18N_FIELDS,
|
|
828
|
-
|
|
829
|
-
PASSPORT_SOURCE: {
|
|
830
|
-
INVITE: 'invite',
|
|
831
|
-
ISSUE: 'issue',
|
|
832
|
-
RECOVER: 'recover',
|
|
833
|
-
TRUSTED: 'trusted',
|
|
834
|
-
},
|
|
835
|
-
|
|
836
|
-
PASSPORT_LOG_ACTION: {
|
|
837
|
-
ISSUE: 'issue',
|
|
838
|
-
REVOKE: 'revoke',
|
|
839
|
-
APPROVE: 'approve',
|
|
840
|
-
RECOVER: 'recover',
|
|
841
|
-
LOGIN: 'login',
|
|
842
|
-
EXPIRED: 'expired',
|
|
843
|
-
USED: 'used',
|
|
844
|
-
},
|
|
845
|
-
|
|
846
|
-
PASSPORT_ISSUE_ACTION: {
|
|
847
|
-
ISSUE_ON_INVITE: 'issueOnInvite',
|
|
848
|
-
ISSUE_ON_LAUNCH: 'issueOnLaunch',
|
|
849
|
-
ISSUE_ON_KYC: 'issueOnKyc',
|
|
850
|
-
ISSUE_ON_RECOVER: 'issueOnRecover',
|
|
851
|
-
ISSUE_ON_ROTATE_KEY_PAIR: 'issueOnRotateKeyPair',
|
|
852
|
-
ISSUE_ON_TRANSFER: 'issueOnTransferPassportForBindWallet',
|
|
853
|
-
ISSUE_ON_BLOCKLET_START: 'issueOnBlockletStart',
|
|
854
|
-
ISSUE_ON_RECEIVE_TRANSFER_APP_OWNER: 'receiveTransferAppOwner',
|
|
855
|
-
ISSUE_ON_AUTH0: 'issueOnAuth0',
|
|
856
|
-
ISSUE_ON_SETUP_APP_OWNER: 'issueOnLaunchSetupAppOwner',
|
|
857
|
-
ISSUE_ON_EXCHANGE_PASSPORT: 'issueOnExchangePassport',
|
|
858
|
-
ISSUE_ON_TRUST_PASSPORT: 'issueOnTrustPassport',
|
|
859
|
-
},
|
|
860
|
-
|
|
861
|
-
OAUTH_ENDPOINTS: {
|
|
862
|
-
AUTHORIZATION: '/authorize',
|
|
863
|
-
TOKEN: '/token',
|
|
864
|
-
REGISTRATION: '/register',
|
|
865
|
-
REVOCATION: '/revoke',
|
|
866
|
-
USERINFO: '/userinfo',
|
|
867
|
-
JWKS: '/jwks',
|
|
868
|
-
LOGOUT: '/logout',
|
|
869
|
-
},
|
|
870
|
-
OAUTH_CODE_TTL: 10 * 60, // 10 minutes
|
|
871
|
-
OAUTH_ACCESS_TOKEN_TTL: 24 * 60 * 60, // 1 day
|
|
872
|
-
OAUTH_REFRESH_TOKEN_TTL: 30 * 24 * 60 * 60, // 30 days
|
|
873
|
-
OAUTH_CLIENT_SECRET_TTL: 30 * 24 * 60 * 60, // 90 days
|
|
874
|
-
OAUTH_SCOPES: {
|
|
875
|
-
// User scopes
|
|
876
|
-
'profile:read': 'Read your profile (name, email, avatar)',
|
|
877
|
-
|
|
878
|
-
// Blocklet related scopes
|
|
879
|
-
'blocklet:read': 'Read blocklet information and database',
|
|
880
|
-
'blocklet:write': 'Manage blocklet components and configuration',
|
|
881
|
-
},
|
|
882
|
-
AIGNE_CONFIG_ENCRYPT_SALT: 'AIGNE_CONFIG_ENCRYPT_SALT',
|
|
883
|
-
ASSET_CDN_HOST: 'https://cdn.blocklet.io',
|
|
884
|
-
CSP_OFFICIAL_SOURCES: [
|
|
885
|
-
'https://*.arcblock.io',
|
|
886
|
-
'https://*.didnames.io',
|
|
887
|
-
'https://*.didwallet.io',
|
|
888
|
-
'https://*.abtnetwork.io',
|
|
889
|
-
'https://*.didspaces.com',
|
|
890
|
-
'https://*.blocklet.dev',
|
|
891
|
-
'https://domain.didlabs.org',
|
|
892
|
-
'https://cdn.blocklet.io',
|
|
893
|
-
],
|
|
894
|
-
CSP_SYSTEM_SOURCES: [
|
|
895
|
-
'https://*.did.abtnet.io',
|
|
896
|
-
'https://*.ip.abtnet.io',
|
|
897
|
-
'https://*.slp.abtnet.io',
|
|
898
|
-
'https://*.did.life',
|
|
899
|
-
'https://*.did.rocks',
|
|
900
|
-
],
|
|
901
|
-
CSP_THIRD_PARTY_SOURCES: [
|
|
902
|
-
'https://cdnjs.cloudflare.com',
|
|
903
|
-
'https://js.stripe.com',
|
|
904
|
-
'https://ipapi.co',
|
|
905
|
-
'https://unpkg.com',
|
|
906
|
-
],
|
|
907
|
-
CSP_ICONIFY_SOURCES: ['https://*.simplesvg.com', 'https://*.iconify.design', 'https://*.unisvg.com'],
|
|
908
|
-
|
|
909
|
-
USER_PROFILE_SYNC_FIELDS: [
|
|
910
|
-
'action', // 表示对该 user 的操作
|
|
911
|
-
'did',
|
|
912
|
-
'pk',
|
|
913
|
-
'avatar',
|
|
914
|
-
'fullName',
|
|
915
|
-
'locale',
|
|
916
|
-
'email',
|
|
917
|
-
'connectedAccount',
|
|
918
|
-
'disconnectedAccount',
|
|
919
|
-
'sourceAppPid',
|
|
920
|
-
'inviter',
|
|
921
|
-
'generation',
|
|
922
|
-
'emailVerified',
|
|
923
|
-
'phoneVerified',
|
|
924
|
-
'metadata',
|
|
925
|
-
'address',
|
|
926
|
-
'extra',
|
|
927
|
-
],
|
|
928
|
-
|
|
929
|
-
SITE_SYNC_FIELDS: [
|
|
930
|
-
'action',
|
|
931
|
-
'appId',
|
|
932
|
-
'appPid',
|
|
933
|
-
'aliasDid',
|
|
934
|
-
'appName',
|
|
935
|
-
'appDescription',
|
|
936
|
-
'appUrl',
|
|
937
|
-
'aliasDomain',
|
|
938
|
-
'appLogo',
|
|
939
|
-
'appLogoRect',
|
|
940
|
-
'appliedAt',
|
|
941
|
-
'did',
|
|
942
|
-
'pk',
|
|
943
|
-
'serverId',
|
|
944
|
-
'serverVersion',
|
|
945
|
-
'version',
|
|
946
|
-
'isMaster',
|
|
947
|
-
'status',
|
|
948
|
-
],
|
|
949
|
-
USER_SESSION_STATUS,
|
|
950
|
-
WEBHOOK_CONSECUTIVE_FAILURES_THRESHOLD: 50,
|
|
951
|
-
});
|