@abtnode/ux 1.16.13-beta-d17a7de4 → 1.16.13-beta-90ded76f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/blocklet/component/index.js +27 -7
- package/lib/blocklet/overview.js +3 -2
- package/lib/blocklet/runtime-info.js +4 -6
- package/lib/blocklet/storage/backups.js +18 -30
- package/lib/blocklet/storage/connected.js +8 -0
- package/lib/blocklet/storage/disconnect.js +29 -15
- package/lib/blocklet/transfer-owner.js +2 -4
- package/lib/certificate.js +4 -3
- package/lib/{monitor → insights}/card.js +8 -11
- package/lib/{monitor/cpu.js → insights/chart.js} +43 -44
- package/lib/insights/cpu.js +44 -0
- package/lib/insights/memory.js +80 -0
- package/lib/{blocklet/monitor.js → insights/runtime.js} +20 -22
- package/lib/insights/traffic.js +204 -0
- package/lib/invitation/invitation-receive.js +1 -1
- package/lib/locales/en.js +20 -1
- package/lib/locales/zh.js +20 -1
- package/lib/logs/download.js +1 -1
- package/lib/relative-time.js +2 -2
- package/lib/subscription.js +1 -1
- package/lib/team/members/invite-member.js +3 -2
- package/lib/team/members/member.js +4 -3
- package/lib/team/members/passport-issuances.js +3 -2
- package/lib/team/members/transfer-node.js +2 -4
- package/lib/util/index.js +12 -40
- package/package.json +9 -9
- package/lib/monitor/memory.js +0 -144
- /package/lib/{monitor → insights}/disk.js +0 -0
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default =
|
|
7
|
-
var _react = require("react");
|
|
6
|
+
exports.default = RuntimeInsight;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
9
9
|
var _filesize = _interopRequireDefault(require("filesize"));
|
|
10
10
|
var _prettyMsI18n = _interopRequireDefault(require("pretty-ms-i18n"));
|
|
@@ -15,14 +15,15 @@ var _util = require("@blocklet/meta/lib/util");
|
|
|
15
15
|
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
16
16
|
var _blocklet = require("../contexts/blocklet");
|
|
17
17
|
var _util2 = require("../util");
|
|
18
|
-
var _runtimeInfo = _interopRequireDefault(require("
|
|
19
|
-
var
|
|
20
|
-
var _bundleAvatar = _interopRequireDefault(require("./bundle-avatar"));
|
|
18
|
+
var _runtimeInfo = _interopRequireDefault(require("../blocklet/runtime-info"));
|
|
19
|
+
var _bundleAvatar = _interopRequireDefault(require("../blocklet/bundle-avatar"));
|
|
21
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
22
21
|
var _templateObject;
|
|
23
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
24
25
|
function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
|
|
25
|
-
function
|
|
26
|
+
function RuntimeInsight() {
|
|
26
27
|
const {
|
|
27
28
|
t,
|
|
28
29
|
locale
|
|
@@ -140,14 +141,16 @@ function BlockletMonitor() {
|
|
|
140
141
|
}];
|
|
141
142
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(Div, {
|
|
142
143
|
component: "div",
|
|
143
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
144
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
|
|
145
|
+
component: "h3",
|
|
146
|
+
variant: "h5",
|
|
147
|
+
color: "textPrimary",
|
|
148
|
+
style: {
|
|
149
|
+
fontSize: 18,
|
|
150
|
+
fontWeight: 'bold'
|
|
151
|
+
},
|
|
152
|
+
mb: 2,
|
|
153
|
+
children: t('insights.trend')
|
|
151
154
|
}), blocklet.status === 'running' ? [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
152
155
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_runtimeInfo.default, {
|
|
153
156
|
blocklet: blocklet,
|
|
@@ -157,11 +160,11 @@ function BlockletMonitor() {
|
|
|
157
160
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
158
161
|
mt: 3,
|
|
159
162
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Datatable.default, {
|
|
163
|
+
title: t('insights.detail'),
|
|
160
164
|
className: "monitor-table",
|
|
161
165
|
locale: locale,
|
|
162
166
|
data: monitList,
|
|
163
167
|
columns: monitorColumns,
|
|
164
|
-
title: "",
|
|
165
168
|
options: {
|
|
166
169
|
search: false,
|
|
167
170
|
download: false,
|
|
@@ -174,13 +177,8 @@ function BlockletMonitor() {
|
|
|
174
177
|
})
|
|
175
178
|
})] : /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
|
|
176
179
|
children: t('blocklet.runtimeInfo.noRunning')
|
|
177
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
178
|
-
className: "title",
|
|
179
|
-
children: t('common.dataStorage')
|
|
180
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_diskInfo.default, {
|
|
181
|
-
blocklet: blocklet
|
|
182
180
|
})]
|
|
183
181
|
});
|
|
184
182
|
}
|
|
185
|
-
|
|
186
|
-
const Div = (0, _styled.default)(_Typography.default)(_templateObject || (_templateObject = _taggedTemplateLiteral(["
|
|
183
|
+
RuntimeInsight.propTypes = {};
|
|
184
|
+
const Div = (0, _styled.default)(_Typography.default)(_templateObject || (_templateObject = _taggedTemplateLiteral([""])));
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = TrafficInsights;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
|
|
9
|
+
var _nthArg = _interopRequireDefault(require("lodash/nthArg"));
|
|
10
|
+
var _urlJoin = _interopRequireDefault(require("url-join"));
|
|
11
|
+
var _filesize = _interopRequireDefault(require("filesize"));
|
|
12
|
+
var _useAsyncRetry = _interopRequireDefault(require("react-use/lib/useAsyncRetry"));
|
|
13
|
+
var _reactIframe = _interopRequireDefault(require("react-iframe"));
|
|
14
|
+
var _Alert = _interopRequireDefault(require("@mui/material/Alert"));
|
|
15
|
+
var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
|
|
16
|
+
var _Grid = _interopRequireDefault(require("@mui/material/Grid"));
|
|
17
|
+
var _Typography = _interopRequireDefault(require("@mui/material/Typography"));
|
|
18
|
+
var _Button = _interopRequireDefault(require("@mui/material/Button"));
|
|
19
|
+
var _Popover = _interopRequireDefault(require("@mui/material/Popover"));
|
|
20
|
+
var _muiDaterangePicker = require("mui-daterange-picker");
|
|
21
|
+
var _xDatePickers = require("@mui/x-date-pickers");
|
|
22
|
+
var _AdapterDayjs = require("@mui/x-date-pickers/AdapterDayjs");
|
|
23
|
+
var _LocalizationProvider = require("@mui/x-date-pickers/LocalizationProvider");
|
|
24
|
+
var _context = require("@arcblock/ux/lib/Locale/context");
|
|
25
|
+
var _constant = require("@abtnode/constant");
|
|
26
|
+
var _util = require("../util");
|
|
27
|
+
var _node = require("../contexts/node");
|
|
28
|
+
var _chart = _interopRequireDefault(require("./chart"));
|
|
29
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
30
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
32
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
33
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
34
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
35
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } /* eslint-disable react/prop-types */ /* eslint-disable react-hooks/exhaustive-deps */
|
|
36
|
+
const noop = (0, _nthArg.default)(0);
|
|
37
|
+
function TrafficInsights(_ref) {
|
|
38
|
+
let {
|
|
39
|
+
client,
|
|
40
|
+
did
|
|
41
|
+
} = _ref;
|
|
42
|
+
const maxDate = (0, _dayjs.default)().subtract(1, 'day').toDate();
|
|
43
|
+
const {
|
|
44
|
+
info,
|
|
45
|
+
inService
|
|
46
|
+
} = (0, _node.useNodeContext)();
|
|
47
|
+
const {
|
|
48
|
+
t,
|
|
49
|
+
locale
|
|
50
|
+
} = (0, _context.useLocaleContext)();
|
|
51
|
+
const [anchorEl, setAnchorEl] = (0, _react.useState)(null);
|
|
52
|
+
const [date, setDate] = (0, _react.useState)(maxDate);
|
|
53
|
+
const [dateRange, setDateRange] = (0, _react.useState)({
|
|
54
|
+
startDate: (0, _dayjs.default)().subtract(30, 'day').toDate(),
|
|
55
|
+
endDate: maxDate
|
|
56
|
+
});
|
|
57
|
+
const data = (0, _useAsyncRetry.default)(async () => {
|
|
58
|
+
const result = await client.getTrafficInsights({
|
|
59
|
+
input: {
|
|
60
|
+
did,
|
|
61
|
+
startDate: (0, _dayjs.default)(dateRange.startDate).format('YYYY-MM-DD'),
|
|
62
|
+
endDate: (0, _dayjs.default)(dateRange.endDate).format('YYYY-MM-DD')
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
return result.list;
|
|
66
|
+
});
|
|
67
|
+
(0, _react.useEffect)(() => {
|
|
68
|
+
if (data.loading) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (dateRange.startDate && dateRange.endDate) {
|
|
72
|
+
data.retry();
|
|
73
|
+
}
|
|
74
|
+
}, [dateRange]);
|
|
75
|
+
const onTriggerClick = e => {
|
|
76
|
+
if (anchorEl) {
|
|
77
|
+
setAnchorEl(null);
|
|
78
|
+
} else {
|
|
79
|
+
setAnchorEl(e.currentTarget);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const list = data.value || [];
|
|
83
|
+
const {
|
|
84
|
+
loading,
|
|
85
|
+
error
|
|
86
|
+
} = data;
|
|
87
|
+
if (!list.length && loading) {
|
|
88
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_CircularProgress.default, {});
|
|
89
|
+
}
|
|
90
|
+
if (error) {
|
|
91
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Alert.default, {
|
|
92
|
+
severity: "error",
|
|
93
|
+
children: (0, _util.formatError)(error)
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
const metrics = {
|
|
97
|
+
totalRequests: noop,
|
|
98
|
+
validRequests: noop,
|
|
99
|
+
failedRequests: noop,
|
|
100
|
+
uniqueVisitors: noop,
|
|
101
|
+
uniqueFiles: noop,
|
|
102
|
+
uniqueReferrers: noop,
|
|
103
|
+
uniqueNotFound: noop,
|
|
104
|
+
uniqueStaticFiles: noop,
|
|
105
|
+
logSize: _filesize.default,
|
|
106
|
+
bandwidth: _filesize.default
|
|
107
|
+
};
|
|
108
|
+
const charts = Object.keys(metrics).map(key => ({
|
|
109
|
+
id: "".concat(key, "_chart"),
|
|
110
|
+
title: t("insights.traffic.".concat(key)),
|
|
111
|
+
current: list.length ? metrics[key](list[0][key]) : 0,
|
|
112
|
+
data: list.map(v => ({
|
|
113
|
+
date: v.date,
|
|
114
|
+
value: v[key]
|
|
115
|
+
})).reverse(),
|
|
116
|
+
dateFn: noop,
|
|
117
|
+
valueFn: metrics[key]
|
|
118
|
+
}));
|
|
119
|
+
const open = Boolean(anchorEl);
|
|
120
|
+
const id = open ? 'date-range-picker-popover' : undefined;
|
|
121
|
+
|
|
122
|
+
// eslint-disable-next-line no-nested-ternary
|
|
123
|
+
const pathPrefix = inService ? _constant.WELLKNOWN_SERVICE_PATH_PREFIX : process.env.NODE_ENV === 'production' ? info.routing.adminPath : '';
|
|
124
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
125
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
|
|
126
|
+
component: "div",
|
|
127
|
+
variant: "h5",
|
|
128
|
+
className: "page-header",
|
|
129
|
+
color: "textPrimary",
|
|
130
|
+
style: {
|
|
131
|
+
fontSize: 18,
|
|
132
|
+
fontWeight: 'bold'
|
|
133
|
+
},
|
|
134
|
+
mb: 2,
|
|
135
|
+
children: [t('insights.trend'), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Button.default, {
|
|
136
|
+
onClick: onTriggerClick,
|
|
137
|
+
variant: "outlined",
|
|
138
|
+
size: "small",
|
|
139
|
+
color: "secondary",
|
|
140
|
+
children: [(0, _util.formatToDate)(dateRange.startDate, locale), " - ", (0, _util.formatToDate)(dateRange.endDate, locale)]
|
|
141
|
+
})]
|
|
142
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Popover.default, {
|
|
143
|
+
id: id,
|
|
144
|
+
open: open,
|
|
145
|
+
anchorEl: anchorEl,
|
|
146
|
+
onClose: onTriggerClick,
|
|
147
|
+
anchorOrigin: {
|
|
148
|
+
vertical: 'bottom',
|
|
149
|
+
horizontal: 'left'
|
|
150
|
+
},
|
|
151
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_muiDaterangePicker.DateRangePicker, {
|
|
152
|
+
open: true,
|
|
153
|
+
toggle: onTriggerClick,
|
|
154
|
+
maxDate: maxDate,
|
|
155
|
+
onChange: v => setDateRange(v)
|
|
156
|
+
})
|
|
157
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
|
|
158
|
+
container: true,
|
|
159
|
+
spacing: 4,
|
|
160
|
+
children: charts.map(x => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Grid.default, {
|
|
161
|
+
item: true,
|
|
162
|
+
lg: 3,
|
|
163
|
+
md: 6,
|
|
164
|
+
sm: 6,
|
|
165
|
+
xs: 12,
|
|
166
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_chart.default, _objectSpread({}, x))
|
|
167
|
+
}, x.id))
|
|
168
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Typography.default, {
|
|
169
|
+
component: "div",
|
|
170
|
+
variant: "h5",
|
|
171
|
+
className: "page-header",
|
|
172
|
+
color: "textPrimary",
|
|
173
|
+
style: {
|
|
174
|
+
fontSize: 18,
|
|
175
|
+
fontWeight: 'bold'
|
|
176
|
+
},
|
|
177
|
+
mt: 4,
|
|
178
|
+
mb: 1,
|
|
179
|
+
children: [t('insights.detail'), /*#__PURE__*/(0, _jsxRuntime.jsx)(_LocalizationProvider.LocalizationProvider, {
|
|
180
|
+
dateAdapter: _AdapterDayjs.AdapterDayjs,
|
|
181
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_xDatePickers.DatePicker, {
|
|
182
|
+
disableFuture: true,
|
|
183
|
+
format: "ll",
|
|
184
|
+
value: (0, _dayjs.default)(date),
|
|
185
|
+
onChange: newValue => setDate(newValue.toDate()),
|
|
186
|
+
slotProps: {
|
|
187
|
+
textField: {
|
|
188
|
+
size: 'small'
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
})
|
|
192
|
+
})]
|
|
193
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIframe.default, {
|
|
194
|
+
url: (0, _urlJoin.default)(window.location.origin, pathPrefix, "/api/insights/traffic?date=".concat((0, _dayjs.default)(date).format('YYYY-MM-DD'), "&did=").concat(did)),
|
|
195
|
+
width: "100%",
|
|
196
|
+
height: "100%",
|
|
197
|
+
frameBorder: 0,
|
|
198
|
+
styles: {
|
|
199
|
+
border: 0,
|
|
200
|
+
minHeight: '400vh'
|
|
201
|
+
}
|
|
202
|
+
})]
|
|
203
|
+
});
|
|
204
|
+
}
|
|
@@ -71,7 +71,7 @@ function InvitationReceive(_ref) {
|
|
|
71
71
|
children: t('invite.receive')
|
|
72
72
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
73
73
|
className: "invite-receive__until",
|
|
74
|
-
children: [t('invite.validUntil'), (0, _util.formatDateTime)(invitation.expireDate)]
|
|
74
|
+
children: [t('invite.validUntil'), (0, _util.formatDateTime)(invitation.expireDate, locale)]
|
|
75
75
|
})]
|
|
76
76
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Connect.default, {
|
|
77
77
|
popup: true,
|
package/lib/locales/en.js
CHANGED
|
@@ -131,7 +131,7 @@ module.exports = {
|
|
|
131
131
|
createdAt: 'Created At',
|
|
132
132
|
createdBy: 'Created By',
|
|
133
133
|
dAddress: 'Decentralized Identifiers (DID)',
|
|
134
|
-
dataStorage: '
|
|
134
|
+
dataStorage: 'Storage on Local Disk',
|
|
135
135
|
delConfirm: 'Delete',
|
|
136
136
|
delConfirmDescription: 'Confirm delete {data}?',
|
|
137
137
|
delete: 'Delete',
|
|
@@ -203,6 +203,9 @@ module.exports = {
|
|
|
203
203
|
memory: 'Memory',
|
|
204
204
|
meta: 'Meta Data',
|
|
205
205
|
monitor: 'Monitor',
|
|
206
|
+
insights: 'Insights',
|
|
207
|
+
runtime: 'Runtime',
|
|
208
|
+
traffic: 'Traffic',
|
|
206
209
|
more: 'More',
|
|
207
210
|
mountPoint: 'MountPoint',
|
|
208
211
|
name: 'Name',
|
|
@@ -1461,5 +1464,21 @@ module.exports = {
|
|
|
1461
1464
|
},
|
|
1462
1465
|
loading: 'Load subscription...',
|
|
1463
1466
|
loadFailed: 'Failed to load subscription info, please retry!'
|
|
1467
|
+
},
|
|
1468
|
+
insights: {
|
|
1469
|
+
trend: 'Trends',
|
|
1470
|
+
detail: 'Breakdown',
|
|
1471
|
+
traffic: {
|
|
1472
|
+
totalRequests: 'Total Requests',
|
|
1473
|
+
validRequests: 'Success Requests',
|
|
1474
|
+
failedRequests: 'Failed Requests',
|
|
1475
|
+
uniqueVisitors: 'Unique Visitors',
|
|
1476
|
+
uniqueFiles: 'Unique URLs',
|
|
1477
|
+
uniqueReferrers: 'Unique Referrers',
|
|
1478
|
+
uniqueNotFound: 'Unique 404',
|
|
1479
|
+
uniqueStaticFiles: 'Unique Static Files',
|
|
1480
|
+
logSize: 'Log Size',
|
|
1481
|
+
bandwidth: 'Bandwidth'
|
|
1482
|
+
}
|
|
1464
1483
|
}
|
|
1465
1484
|
};
|
package/lib/locales/zh.js
CHANGED
|
@@ -134,7 +134,7 @@ module.exports = {
|
|
|
134
134
|
createdAt: '创建时间',
|
|
135
135
|
createdBy: '创建人',
|
|
136
136
|
dAddress: '去中心化地址(DID)',
|
|
137
|
-
dataStorage: '
|
|
137
|
+
dataStorage: '本地数据存储',
|
|
138
138
|
delConfirm: '删除',
|
|
139
139
|
delConfirmDescription: '确认删除 {data}?',
|
|
140
140
|
delete: '删除',
|
|
@@ -208,6 +208,9 @@ module.exports = {
|
|
|
208
208
|
memory: '内存',
|
|
209
209
|
meta: '元数据',
|
|
210
210
|
monitor: '监控',
|
|
211
|
+
insights: '洞见',
|
|
212
|
+
runtime: '运行监控',
|
|
213
|
+
traffic: '流量分析',
|
|
211
214
|
more: '更多',
|
|
212
215
|
mountPoint: '挂载点',
|
|
213
216
|
name: '名称',
|
|
@@ -1464,5 +1467,21 @@ module.exports = {
|
|
|
1464
1467
|
},
|
|
1465
1468
|
loadFailed: '加载订阅信息失败,请重试!',
|
|
1466
1469
|
loading: '加载订阅信息...'
|
|
1470
|
+
},
|
|
1471
|
+
insights: {
|
|
1472
|
+
trend: '趋势',
|
|
1473
|
+
detail: '探究',
|
|
1474
|
+
traffic: {
|
|
1475
|
+
totalRequests: '总请求数',
|
|
1476
|
+
validRequests: '成功请求数',
|
|
1477
|
+
failedRequests: '失败请求数',
|
|
1478
|
+
uniqueVisitors: '访客数量',
|
|
1479
|
+
uniqueFiles: '网址数量',
|
|
1480
|
+
uniqueReferrers: '来源数量',
|
|
1481
|
+
uniqueNotFound: '404 数量',
|
|
1482
|
+
uniqueStaticFiles: '静态资源数量',
|
|
1483
|
+
logSize: '日志大小',
|
|
1484
|
+
bandwidth: '带宽消耗'
|
|
1485
|
+
}
|
|
1467
1486
|
}
|
|
1468
1487
|
};
|
package/lib/logs/download.js
CHANGED
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = DownloadLog;
|
|
7
7
|
var _react = require("react");
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
9
|
+
var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
|
|
10
10
|
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
11
11
|
var _Download = _interopRequireDefault(require("@mui/icons-material/Download"));
|
|
12
12
|
var _FormControl = _interopRequireDefault(require("@mui/material/FormControl"));
|
package/lib/relative-time.js
CHANGED
|
@@ -31,7 +31,7 @@ function RelativeTime(_ref) {
|
|
|
31
31
|
if (valTime > now) {
|
|
32
32
|
const time = (0, _prettyMsI18n.default)(valTime - now, prettyOption);
|
|
33
33
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
|
|
34
|
-
title: (0, _util.formatToDatetime)(value),
|
|
34
|
+
title: (0, _util.formatToDatetime)(value, locale),
|
|
35
35
|
placement: "top-end",
|
|
36
36
|
enterTouchDelay: 0,
|
|
37
37
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
@@ -43,7 +43,7 @@ function RelativeTime(_ref) {
|
|
|
43
43
|
}
|
|
44
44
|
const time = (0, _prettyMsI18n.default)(now - valTime, prettyOption);
|
|
45
45
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
|
|
46
|
-
title: (0, _util.formatToDatetime)(value),
|
|
46
|
+
title: (0, _util.formatToDatetime)(value, locale),
|
|
47
47
|
placement: "top-end",
|
|
48
48
|
enterTouchDelay: 0,
|
|
49
49
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
package/lib/subscription.js
CHANGED
|
@@ -10,7 +10,7 @@ var _Chip = _interopRequireDefault(require("@mui/material/Chip"));
|
|
|
10
10
|
var _Box = _interopRequireDefault(require("@mui/material/Box"));
|
|
11
11
|
var _Popover = _interopRequireDefault(require("@mui/material/Popover"));
|
|
12
12
|
var _CircularProgress = _interopRequireDefault(require("@mui/material/CircularProgress"));
|
|
13
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
13
|
+
var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
|
|
14
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
15
15
|
var _react = require("react");
|
|
16
16
|
var _useAsyncRetry = _interopRequireDefault(require("react-use/lib/useAsyncRetry"));
|
|
@@ -41,7 +41,8 @@ function InviteMember(_ref) {
|
|
|
41
41
|
const [loading, setLoading] = (0, _react.useState)(false);
|
|
42
42
|
const [error, setError] = (0, _react.useState)('');
|
|
43
43
|
const {
|
|
44
|
-
t
|
|
44
|
+
t,
|
|
45
|
+
locale
|
|
45
46
|
} = (0, _context.useLocaleContext)();
|
|
46
47
|
const [activeStep, setActiveStep] = (0, _react.useState)(0);
|
|
47
48
|
const [inviteInfo, setInviteInfo] = (0, _react.useState)('');
|
|
@@ -150,7 +151,7 @@ function InviteMember(_ref) {
|
|
|
150
151
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
151
152
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Bold, {
|
|
152
153
|
children: t('team.member.inviteDialog.createSuccessTip', {
|
|
153
|
-
expireDate: (0, _util.formatToDatetime)(inviteInfo.expireDate)
|
|
154
|
+
expireDate: (0, _util.formatToDatetime)(inviteInfo.expireDate, locale)
|
|
154
155
|
})
|
|
155
156
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
156
157
|
style: {
|
|
@@ -106,7 +106,8 @@ function Member(_ref3) {
|
|
|
106
106
|
enablePassportIssuance
|
|
107
107
|
} = (0, _team.useTeamContext)();
|
|
108
108
|
const {
|
|
109
|
-
t
|
|
109
|
+
t,
|
|
110
|
+
locale
|
|
110
111
|
} = (0, _context.useLocaleContext)();
|
|
111
112
|
const pageState = (0, _ahooks.useReactive)({
|
|
112
113
|
user: null,
|
|
@@ -191,13 +192,13 @@ function Member(_ref3) {
|
|
|
191
192
|
value: pageState.user.approved ? t('common.yes') : t('common.no')
|
|
192
193
|
}, {
|
|
193
194
|
name: t('team.member.lastLogin'),
|
|
194
|
-
value: (0, _util.formatToDatetime)(pageState.user.lastLoginAt)
|
|
195
|
+
value: (0, _util.formatToDatetime)(pageState.user.lastLoginAt, locale)
|
|
195
196
|
}, {
|
|
196
197
|
name: t('team.member.lastLoginIp'),
|
|
197
198
|
value: pageState.user.lastLoginIp || ''
|
|
198
199
|
}, {
|
|
199
200
|
name: t('common.createdAt'),
|
|
200
|
-
value: (0, _util.formatToDatetime)(pageState.user.createdAt)
|
|
201
|
+
value: (0, _util.formatToDatetime)(pageState.user.createdAt, locale)
|
|
201
202
|
}, {
|
|
202
203
|
name: t('common.remark'),
|
|
203
204
|
value: pageState.user.remark || '--'
|
|
@@ -33,7 +33,8 @@ function PassportIssuances(_ref) {
|
|
|
33
33
|
inService
|
|
34
34
|
} = (0, _node.useNodeContext)();
|
|
35
35
|
const {
|
|
36
|
-
t
|
|
36
|
+
t,
|
|
37
|
+
locale
|
|
37
38
|
} = (0, _react.useContext)(_context.LocaleContext);
|
|
38
39
|
const [delConfirm, setDelConfirm] = (0, _react.useState)(null);
|
|
39
40
|
const [loading, setLoading] = (0, _react.useState)(false);
|
|
@@ -113,7 +114,7 @@ function PassportIssuances(_ref) {
|
|
|
113
114
|
style: {
|
|
114
115
|
color: '#999'
|
|
115
116
|
},
|
|
116
|
-
children: [t('common.expires'), ":\xA0", (0, _util.formatToDatetime)(d.expireDate)]
|
|
117
|
+
children: [t('common.expires'), ":\xA0", (0, _util.formatToDatetime)(d.expireDate, locale)]
|
|
117
118
|
})]
|
|
118
119
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Box.default, {
|
|
119
120
|
mt: 2,
|
|
@@ -44,12 +44,10 @@ function TransferMember(_ref) {
|
|
|
44
44
|
} = (0, _react.useContext)(_session.SessionContext);
|
|
45
45
|
const [loading, setLoading] = (0, _react.useState)(false);
|
|
46
46
|
const {
|
|
47
|
+
t,
|
|
47
48
|
locale
|
|
48
49
|
} = (0, _context.useLocaleContext)();
|
|
49
50
|
const [error, setError] = (0, _react.useState)('');
|
|
50
|
-
const {
|
|
51
|
-
t
|
|
52
|
-
} = (0, _context.useLocaleContext)();
|
|
53
51
|
const [openTransferNFTAuth, setOpenTransferNFTAuth] = (0, _react.useState)(false);
|
|
54
52
|
const [activeStep, setActiveStep] = (0, _react.useState)(0);
|
|
55
53
|
const [inviteInfo, setInviteInfo] = (0, _react.useState)('');
|
|
@@ -203,7 +201,7 @@ function TransferMember(_ref) {
|
|
|
203
201
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
204
202
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Bold, {
|
|
205
203
|
children: t('team.transferNode.inviteDialog.createSuccessTip', {
|
|
206
|
-
expireDate: (0, _util.formatToDatetime)(inviteInfo.expireDate)
|
|
204
|
+
expireDate: (0, _util.formatToDatetime)(inviteInfo.expireDate, locale)
|
|
207
205
|
})
|
|
208
206
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
209
207
|
style: {
|
package/lib/util/index.js
CHANGED
|
@@ -17,8 +17,6 @@ Object.defineProperty(exports, "formatError", {
|
|
|
17
17
|
exports.formatFactoryPrice = formatFactoryPrice;
|
|
18
18
|
exports.formatRegistryScreenshotPath = exports.formatRegistryLogoPath = exports.formatPerson = exports.formatMountPoint = exports.formatLocale = void 0;
|
|
19
19
|
exports.formatTime = formatTime;
|
|
20
|
-
exports.formatTimeFromNow = formatTimeFromNow;
|
|
21
|
-
exports.formatTimestamp = formatTimestamp;
|
|
22
20
|
exports.formatToDate = formatToDate;
|
|
23
21
|
exports.formatToDatetime = formatToDatetime;
|
|
24
22
|
exports.formatUrl = void 0;
|
|
@@ -32,9 +30,7 @@ exports.getBlockletUrl = getBlockletUrl;
|
|
|
32
30
|
exports.getBlockletUrlParams = void 0;
|
|
33
31
|
exports.getBlockletUrls = getBlockletUrls;
|
|
34
32
|
exports.getExplorerLink = getExplorerLink;
|
|
35
|
-
exports.getPathPrefix = exports.getIssuePassportLink = exports.getInviteLink = void 0;
|
|
36
|
-
exports.getRelativeTime = getRelativeTime;
|
|
37
|
-
exports.getTransferAppLink = exports.getSubscriptionURL = exports.getStoreList = exports.getRenewBlockletURL = void 0;
|
|
33
|
+
exports.getTransferAppLink = exports.getSubscriptionURL = exports.getStoreList = exports.getRenewBlockletURL = exports.getPathPrefix = exports.getIssuePassportLink = exports.getInviteLink = void 0;
|
|
38
34
|
exports.getWebWalletUrl = getWebWalletUrl;
|
|
39
35
|
exports.isNewStoreUrl = exports.isInstalling = exports.isDownloading = exports.isChrome = exports.isCertificateMatch = exports.isBlockletDev = void 0;
|
|
40
36
|
exports.isProtectedRole = isProtectedRole;
|
|
@@ -46,11 +42,8 @@ exports.shouldCheckDomainStatus = void 0;
|
|
|
46
42
|
exports.sleep = sleep;
|
|
47
43
|
exports.validateDomain = exports.toSlotDomain = exports.stringSortHandlerAsc = exports.sortDomains = void 0;
|
|
48
44
|
var _constant = require("@abtnode/constant");
|
|
49
|
-
var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
50
|
-
require("moment/locale/zh-cn");
|
|
51
45
|
var _querystring = _interopRequireDefault(require("querystring"));
|
|
52
46
|
var _isUrl = _interopRequireDefault(require("is-url"));
|
|
53
|
-
var _moment = _interopRequireDefault(require("moment"));
|
|
54
47
|
var _humanizeUrl = _interopRequireDefault(require("humanize-url"));
|
|
55
48
|
var _filesize = _interopRequireDefault(require("filesize"));
|
|
56
49
|
var _urlJoin = _interopRequireDefault(require("url-join"));
|
|
@@ -64,6 +57,7 @@ var _axios = _interopRequireDefault(require("@abtnode/util/lib/axios"));
|
|
|
64
57
|
var _normalizePathPrefix = _interopRequireDefault(require("@abtnode/util/lib/normalize-path-prefix"));
|
|
65
58
|
var _urlPathFriendly = _interopRequireDefault(require("@blocklet/meta/lib/url-path-friendly"));
|
|
66
59
|
var _formatError = _interopRequireDefault(require("@abtnode/util/lib/format-error"));
|
|
60
|
+
var _dayjs = _interopRequireDefault(require("@abtnode/util/lib/dayjs"));
|
|
67
61
|
var _window$env;
|
|
68
62
|
/* eslint-disable max-len */
|
|
69
63
|
/* eslint-disable implicit-arrow-linebreak */
|
|
@@ -229,54 +223,36 @@ function patchJsxToLocale(rawStr) {
|
|
|
229
223
|
return item;
|
|
230
224
|
}).filter(Boolean);
|
|
231
225
|
}
|
|
232
|
-
function formatTimestamp(ts) {
|
|
233
|
-
if (!ts) {
|
|
234
|
-
return '-';
|
|
235
|
-
}
|
|
236
|
-
let date;
|
|
237
|
-
if (Number(ts).toString() === ts) {
|
|
238
|
-
date = new Date();
|
|
239
|
-
date.setTime(ts);
|
|
240
|
-
} else {
|
|
241
|
-
date = new Date(ts);
|
|
242
|
-
}
|
|
243
|
-
return date.toLocaleString();
|
|
244
|
-
}
|
|
245
226
|
function formatToDate(date) {
|
|
227
|
+
let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
|
|
246
228
|
if (!date) {
|
|
247
229
|
return '-';
|
|
248
230
|
}
|
|
249
|
-
return (0,
|
|
231
|
+
return (0, _dayjs.default)(date).locale(formatLocale(locale)).format('ll');
|
|
250
232
|
}
|
|
251
233
|
function formatToDatetime(date) {
|
|
234
|
+
let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
|
|
252
235
|
if (!date) {
|
|
253
236
|
return '-';
|
|
254
237
|
}
|
|
255
|
-
return (0,
|
|
256
|
-
}
|
|
257
|
-
function formatTimeFromNow(date) {
|
|
258
|
-
if (!date) {
|
|
259
|
-
return '-';
|
|
260
|
-
}
|
|
261
|
-
const startDate = (0, _moment.default)(date);
|
|
262
|
-
const endDate = (0, _moment.default)();
|
|
263
|
-
const diffDay = endDate.diff(startDate, 'day');
|
|
264
|
-
return diffDay > 3 ? formatToDate(date) : startDate.fromNow();
|
|
238
|
+
return (0, _dayjs.default)(date).locale(formatLocale(locale)).format('lll');
|
|
265
239
|
}
|
|
266
240
|
function formatTime(date) {
|
|
267
241
|
let format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'lll';
|
|
242
|
+
let locale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'en';
|
|
268
243
|
if (!date) {
|
|
269
244
|
return '-';
|
|
270
245
|
}
|
|
271
|
-
return (0,
|
|
246
|
+
return (0, _dayjs.default)(date).locale(formatLocale(locale)).format(format);
|
|
272
247
|
}
|
|
273
248
|
function formatDateTime(date) {
|
|
274
|
-
|
|
249
|
+
let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
|
|
250
|
+
return (0, _dayjs.default)(date).locale(formatLocale(locale)).format('YYYY-MM-DD HH:mm');
|
|
275
251
|
}
|
|
276
252
|
const formatLocale = function formatLocale() {
|
|
277
253
|
let locale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'en';
|
|
278
|
-
if (locale === '
|
|
279
|
-
return '
|
|
254
|
+
if (locale === 'tw') {
|
|
255
|
+
return 'zh';
|
|
280
256
|
}
|
|
281
257
|
return locale;
|
|
282
258
|
};
|
|
@@ -614,10 +590,6 @@ async function getAsset(chainHost, address) {
|
|
|
614
590
|
function getAssetExpiration(asset) {
|
|
615
591
|
return (0, _last.default)((0, _get.default)(asset, 'data.value.expirationDate', []));
|
|
616
592
|
}
|
|
617
|
-
function getRelativeTime(datetime) {
|
|
618
|
-
let locale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'en';
|
|
619
|
-
return (0, _moment.default)(datetime).locale(formatLocale(locale)).fromNow().toString();
|
|
620
|
-
}
|
|
621
593
|
|
|
622
594
|
/**
|
|
623
595
|
* 检查url是否 未添加到 store list 中
|