mazey 1.4.39 → 2.0.0
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/README.md +264 -122
- package/README_CN.md +335 -0
- package/lib/example.d.ts +2 -0
- package/lib/example.d.ts.map +1 -0
- package/lib/index.cjs.js +195 -457
- package/lib/index.d.ts +78 -134
- package/lib/index.d.ts.map +1 -1
- package/lib/index.esm.js +194 -449
- package/package.json +4 -3
- package/src/example.html +21 -0
- package/src/example.ts +49 -0
- package/src/index.ts +146 -428
- package/lib/test.d.ts +0 -2
- package/lib/test.d.ts.map +0 -1
- package/src/js/data-structure/MSet.js +0 -89
- package/src/js/polyfill.js +0 -63
- package/src/js/service/common.js +0 -4
- package/src/scss/extend/index.scss +0 -149
- package/src/scss/index.scss +0 -5
- package/src/scss/mixin/index.scss +0 -41
- package/src/scss/variate/index.scss +0 -28
- package/src/test.html +0 -33
- package/src/test.ts +0 -52
package/README.md
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
English | [简体中文](./README_CN.md)
|
|
2
|
+
|
|
1
3
|
# Mazey
|
|
2
4
|
|
|
3
5
|
[![NPM version][npm-image]][npm-url]
|
|
@@ -20,111 +22,197 @@ npm install mazey --save
|
|
|
20
22
|
|
|
21
23
|
## Usage
|
|
22
24
|
|
|
23
|
-
###
|
|
25
|
+
### Load Resource
|
|
24
26
|
|
|
25
|
-
|
|
27
|
+
#### Load JavaScript
|
|
26
28
|
|
|
27
29
|
```
|
|
28
30
|
import { loadScript } from 'mazey';
|
|
29
31
|
|
|
30
32
|
loadScript({
|
|
31
|
-
url: 'http://
|
|
32
|
-
id: 'iamid', //
|
|
33
|
-
timeout: 5000, //
|
|
34
|
-
isDefer: false, //
|
|
33
|
+
url: 'http://example.com/js/plugin/jquery/jquery-2.1.1.min.js',
|
|
34
|
+
id: 'iamid', // Optional, script ID, default none
|
|
35
|
+
timeout: 5000, // Optional, timeout, default `5000`
|
|
36
|
+
isDefer: false, // Optional, defer, default `false`
|
|
35
37
|
})
|
|
36
38
|
.then(
|
|
37
39
|
res => {
|
|
38
|
-
console.log(
|
|
40
|
+
console.log(`Load JavaScript Success: ${res}`);
|
|
39
41
|
}
|
|
40
42
|
)
|
|
41
43
|
.catch(
|
|
42
44
|
err => {
|
|
43
|
-
console.error(
|
|
45
|
+
console.error(`Load JavaScript Fail: ${err}`)
|
|
44
46
|
}
|
|
45
47
|
);
|
|
46
48
|
```
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
#### Load CSS
|
|
49
51
|
|
|
50
52
|
```
|
|
51
53
|
import { loadCSS } from 'mazey';
|
|
52
54
|
|
|
53
55
|
loadCSS({
|
|
54
|
-
url: 'http://
|
|
55
|
-
id: 'iamid', //
|
|
56
|
+
url: 'http://example.com/css/mazey-base.css',
|
|
57
|
+
id: 'iamid', // Optional, link ID, default none
|
|
56
58
|
})
|
|
57
59
|
.then(
|
|
58
60
|
res => {
|
|
59
|
-
console.log(
|
|
61
|
+
console.log(`Load CSS Success: ${res}`);
|
|
60
62
|
}
|
|
61
63
|
)
|
|
62
64
|
.catch(
|
|
63
65
|
err => {
|
|
64
|
-
console.error(
|
|
66
|
+
console.error(`Load CSS Fail: ${err}`)
|
|
65
67
|
}
|
|
66
68
|
);
|
|
67
69
|
```
|
|
68
70
|
|
|
69
|
-
|
|
71
|
+
#### Check Load
|
|
72
|
+
|
|
73
|
+
Check whether the page is loaded successfully (Keepe the compatibility in case that browser's `load` event has been triggered).
|
|
70
74
|
|
|
71
75
|
```
|
|
72
|
-
import {
|
|
76
|
+
import { windowLoaded } from 'mazey';
|
|
73
77
|
|
|
74
|
-
windowLoaded({ timeout: 30 })
|
|
78
|
+
windowLoaded({ timeout: 30 }) // second
|
|
75
79
|
.then(res => {
|
|
76
|
-
console.log(
|
|
80
|
+
console.log(`Load Success: ${res}`); // Load Success: load
|
|
77
81
|
})
|
|
78
82
|
.catch(err => {
|
|
79
|
-
console.log(
|
|
83
|
+
console.log(`Load Timeout or Fail: ${err}`);
|
|
80
84
|
});
|
|
81
85
|
```
|
|
86
|
+
### Function
|
|
82
87
|
|
|
83
|
-
|
|
88
|
+
#### Debounce
|
|
84
89
|
|
|
85
|
-
|
|
90
|
+
```
|
|
91
|
+
import { debounce } from 'mazey';
|
|
86
92
|
|
|
93
|
+
const foo = debounce(() => {
|
|
94
|
+
console.log('The debounced function will only be invoked in 1000 milliseconds, the other invoking will disappear during the wait time.');
|
|
95
|
+
}, 1000, { leading: true })
|
|
87
96
|
```
|
|
88
|
-
import { setSessionStorage, getSessionStorage, setLocalStorage, getLocalStorage } from 'mazey';
|
|
89
97
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
98
|
+
#### Throttle
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
import { throttle } from 'mazey';
|
|
102
|
+
|
|
103
|
+
const foo = throttle(() => {
|
|
104
|
+
console.log('The function will be invoked at most once per every wait 1000 milliseconds.');
|
|
105
|
+
}, 1000, { leading: true })
|
|
94
106
|
```
|
|
95
107
|
|
|
96
|
-
|
|
108
|
+
#### Check Number
|
|
109
|
+
|
|
110
|
+
Check whether it is a right number.
|
|
97
111
|
|
|
98
112
|
```
|
|
99
|
-
import {
|
|
113
|
+
import { isNumber } from 'mazey';
|
|
100
114
|
|
|
101
|
-
|
|
102
|
-
|
|
115
|
+
isNumber(123); // true
|
|
116
|
+
isNumber('123'); // false
|
|
117
|
+
// Default: NaN, Infinity is not Number
|
|
118
|
+
isNumber(Infinity); // false
|
|
119
|
+
isNumber(Infinity, { isUnFiniteAsNumber: true }); true
|
|
120
|
+
isNumber(NaN); // false
|
|
121
|
+
isNumber(NaN, { isNaNAsNumber: true, isUnFiniteAsNumber: true }); // true
|
|
103
122
|
```
|
|
104
123
|
|
|
105
|
-
|
|
124
|
+
#### Camel Case
|
|
125
|
+
|
|
126
|
+
Transfer CamelCase to KebabCase.
|
|
106
127
|
|
|
107
|
-
|
|
128
|
+
```
|
|
129
|
+
import { camelCaseToKebabCase } from 'mazey';
|
|
130
|
+
|
|
131
|
+
camelCaseToKebabCase('ABC'); // a-b-c
|
|
132
|
+
camelCaseToKebabCase('aBC'); // a-b-c
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Transfer CamelCase to Underscore.
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
import { camelCase2Underscore } from 'mazey';
|
|
139
|
+
|
|
140
|
+
camelCase2Underscore('ABC'); // a-b-c
|
|
141
|
+
camelCase2Underscore('aBC'); // a-b-c
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
#### Trim
|
|
145
|
+
|
|
146
|
+
Remove leading and trailing whitespace or specified characters from string.
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
import { mTrim } from 'mazey';
|
|
150
|
+
|
|
151
|
+
mTrim(' 1 2 3 '); // '1 2 3'
|
|
152
|
+
mTrim('abc '); // 'abc'
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
#### Deep Clone
|
|
156
|
+
|
|
157
|
+
Clone Object deeply.
|
|
158
|
+
|
|
159
|
+
```
|
|
160
|
+
import { deepCopyObject } from 'mazey';
|
|
161
|
+
|
|
162
|
+
deepCopyObject(['a', 'b', 'c']); // ['a', 'b', 'c']
|
|
163
|
+
deepCopyObject('abc'); // 'abc'
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
#### JSON
|
|
167
|
+
|
|
168
|
+
Check whether it is a valid JSON string.
|
|
169
|
+
|
|
170
|
+
```
|
|
171
|
+
import { isJsonString } from 'mazey';
|
|
172
|
+
|
|
173
|
+
isJsonString(`['a', 'b', 'c']`); // false
|
|
174
|
+
isJsonString(`["a", "b", "c"]`); // true
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
#### Random
|
|
178
|
+
|
|
179
|
+
Produce a random string of number, `generateRndNum(7)` => '7658495'.
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
import { generateRndNum } from 'mazey';
|
|
183
|
+
|
|
184
|
+
generateRndNum(4); // '9730'
|
|
185
|
+
generateRndNum(7); // '2262490'
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### DOM
|
|
189
|
+
|
|
190
|
+
#### Class
|
|
191
|
+
|
|
192
|
+
Modify `class`.
|
|
108
193
|
|
|
109
194
|
```
|
|
110
195
|
import { hasClass, addClass, removeClass } from 'mazey';
|
|
111
196
|
|
|
112
197
|
const dom = document.querySelector('#box');
|
|
113
198
|
|
|
114
|
-
//
|
|
199
|
+
// Determine `class`
|
|
115
200
|
hasClass(dom, 'test');
|
|
116
|
-
//
|
|
201
|
+
// Add `class`
|
|
117
202
|
addClass(dom, 'test');
|
|
118
|
-
//
|
|
203
|
+
// Remove `class`
|
|
119
204
|
removeClass(dom, 'test');
|
|
120
205
|
```
|
|
121
206
|
|
|
122
|
-
|
|
207
|
+
#### Style
|
|
208
|
+
|
|
209
|
+
Add inline-style.
|
|
210
|
+
|
|
211
|
+
Case 1: Add the inline style with `id`, and repeated invoking will update the content instead of adding a new one.
|
|
123
212
|
|
|
124
213
|
```
|
|
125
214
|
import { addInlineStyle } from 'mazey';
|
|
126
215
|
|
|
127
|
-
// 添加有 id 的内联样式,重复添加会更新内联样式而不是新增
|
|
128
216
|
addInlineStyle({
|
|
129
217
|
inlineStyle: `
|
|
130
218
|
body {
|
|
@@ -138,8 +226,13 @@ addInlineStyle({
|
|
|
138
226
|
// background-color: #333;
|
|
139
227
|
// }
|
|
140
228
|
// </style>
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Case 2: Add the inline style without `id`, and repeated invoking will adding a new one.
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
import { addInlineStyle } from 'mazey';
|
|
141
235
|
|
|
142
|
-
// 添加无 id 的内联样式,重复添加会新增内联样式
|
|
143
236
|
addInlineStyle({
|
|
144
237
|
inlineStyle: `
|
|
145
238
|
body {
|
|
@@ -154,100 +247,124 @@ addInlineStyle({
|
|
|
154
247
|
// </style>
|
|
155
248
|
```
|
|
156
249
|
|
|
157
|
-
|
|
250
|
+
#### Newline
|
|
251
|
+
|
|
252
|
+
Make a newline of HTML.
|
|
158
253
|
|
|
159
254
|
```
|
|
160
|
-
import {
|
|
255
|
+
import { newLine } from 'mazey';
|
|
161
256
|
|
|
162
|
-
//
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
imgBoxClassName: 'i-am-img-father-i-can-transform',
|
|
166
|
-
imgClassName: 'i-am-img',
|
|
167
|
-
});
|
|
257
|
+
newLine('a\nb\nc'); // 'a<br />b<br />c'
|
|
258
|
+
newLine('a\n\nbc'); // 'a<br /><br />bc'
|
|
259
|
+
```
|
|
168
260
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
});
|
|
261
|
+
### URL
|
|
262
|
+
|
|
263
|
+
#### Query Param
|
|
264
|
+
|
|
265
|
+
Get the query param's value of the current Web URL(`location.search`).
|
|
175
266
|
|
|
176
|
-
// 按需直接隐藏滚动条
|
|
177
|
-
customScrollBarForTransformEle({
|
|
178
|
-
containerClassName: 'i-am-container',
|
|
179
|
-
action: 'hide',
|
|
180
|
-
});
|
|
181
267
|
```
|
|
268
|
+
import { getQueryParam } from 'mazey';
|
|
182
269
|
|
|
183
|
-
|
|
270
|
+
// http://example.com/?t1=1&t2=2&t3=3&t4=4#2333
|
|
271
|
+
// ?t1=1&t2=2&t3=3&t4=4
|
|
272
|
+
getQueryParam('t3'); // 3
|
|
273
|
+
getQueryParam('t4'); // 4
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Get the query param's value of the input URL.
|
|
184
277
|
|
|
185
278
|
```
|
|
186
|
-
import {
|
|
279
|
+
import { getUrlParam } from 'mazey';
|
|
187
280
|
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
// {"targetImageWidth":375,"targetImageHeight":375,"top":218.5,"wPer":1.25}
|
|
281
|
+
getUrlParam('http://example.com/?t1=1&t2=2&t3=3&t4=4', 't3'); // 3
|
|
282
|
+
getUrlParam('http://example.com/?t1=1&t2=2&t3=3&t4=4', 't4'); // 4
|
|
191
283
|
```
|
|
192
284
|
|
|
193
|
-
|
|
285
|
+
#### Update Param
|
|
194
286
|
|
|
195
|
-
|
|
287
|
+
Update the query param's value of the input URL.
|
|
196
288
|
|
|
197
289
|
```
|
|
198
|
-
import {
|
|
290
|
+
import { updateQueryParam } from 'mazey';
|
|
199
291
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
.then(res => {
|
|
203
|
-
console.log(JSON.stringify(res));
|
|
204
|
-
// {"deviceType":"pc","network":"3g","unloadTime":0,"redirectTime":0,"dnsTime":0,"tcpTime":0,"responseTime":65,"downloadTime":1,"domreadyTime":369,"onloadTime":441,"whiteTime":94,"renderTime":441,"decodedBodySize":210,"encodedBodySize":210}
|
|
205
|
-
})
|
|
206
|
-
.catch(console.error);
|
|
292
|
+
updateQueryParam('http://example.com/?t1=1&t2=2&t3=3&t4=4', 't3', 'three'); // http://example.com/?t1=1&t2=2&t3=three&t4=4
|
|
293
|
+
updateQueryParam('http://example.com/?t1=1&t2=2&t3=3&t4=4', 't4', 'four'); // http://example.com/?t1=1&t2=2&t3=3&t4=four
|
|
207
294
|
```
|
|
208
295
|
|
|
209
|
-
|
|
210
|
-
| --- | --- | --- |
|
|
211
|
-
| * DNS 查询时间 | dns_time | domainLookupEnd - domainLookupStart |
|
|
212
|
-
| * 服务器连接时间 | tcp_time | connectEnd - connectStart |
|
|
213
|
-
| * 服务器响应时间 | response_time | responseStart - requestStart |
|
|
214
|
-
| * ⽩屏时间 | white_time | responseStart - navigationStart |
|
|
215
|
-
| * DomReady 总时间 | domready_time | domContentLoadedEventStart - navigationStart |
|
|
216
|
-
| * 页面加载时间 | onload_time | loadEventStart - navigationStart |
|
|
217
|
-
| * EventEnd 总时间 | render_time | loadEventEnd -navigationStart |
|
|
218
|
-
| 上个⽂档卸载时间 | unload_time | unloadEventEnd - unloadEventStart |
|
|
219
|
-
| 重定向时间 | redirect_time | redirectEnd - redirectStart |
|
|
220
|
-
| 客户端⽩屏时间 | custom_white_time | renderTiming - navigationStart |
|
|
221
|
-
| SSL连接时间 | ssl_time | connectEnd - secureConnectionStart |
|
|
222
|
-
| ⽹⻚下载时间 | download_time | responseEnd - responseStart |
|
|
223
|
-
| FCP | first_contentful_paint_time | firstPaintTime |
|
|
296
|
+
#### Hash Param
|
|
224
297
|
|
|
225
|
-
|
|
298
|
+
Get the hash query param's value of the current Web URL(`location.hash`).
|
|
226
299
|
|
|
227
|
-
|
|
300
|
+
```
|
|
301
|
+
import { getHashQueryParam } from 'mazey';
|
|
228
302
|
|
|
303
|
+
// http://example.com/?#2333?t1=1&t2=2&t3=3&t4=4
|
|
304
|
+
// #2333?t1=1&t2=2&t3=3&t4=4
|
|
305
|
+
getHashQueryParam('t3'); // 3
|
|
306
|
+
getHashQueryParam('t4'); // 4
|
|
229
307
|
```
|
|
230
|
-
import { calLongestCommonSubstring } from 'mazey';
|
|
231
308
|
|
|
232
|
-
|
|
309
|
+
#### Domain
|
|
310
|
+
|
|
311
|
+
Get the domain of URL, and other params.
|
|
312
|
+
|
|
233
313
|
```
|
|
314
|
+
import { getDomain } from 'mazey';
|
|
234
315
|
|
|
235
|
-
|
|
316
|
+
getDomain('http://example.com/?t1=1&t2=2&t3=3&t4=4'); // example.com
|
|
317
|
+
getDomain('http://example.com/test/thanks?t1=1&t2=2&t3=3&t4=4', ['hostname', 'pathname']); // example.com/test/thanks
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### Cache Data
|
|
321
|
+
|
|
322
|
+
#### Storage
|
|
323
|
+
|
|
324
|
+
Handle Storage (Keep fit for JSON, it can tansfer format automatically).
|
|
236
325
|
|
|
237
326
|
```
|
|
238
|
-
import {
|
|
327
|
+
import { setSessionStorage, getSessionStorage, setLocalStorage, getLocalStorage } from 'mazey';
|
|
239
328
|
|
|
240
|
-
|
|
329
|
+
setSessionStorage('test', '123');
|
|
330
|
+
getSessionStorage('test'); // 123
|
|
331
|
+
setLocalStorage('test', '123');
|
|
332
|
+
getLocalStorage('test'); // 123
|
|
333
|
+
|
|
334
|
+
// or package in usage
|
|
335
|
+
const projectName = 'mazey';
|
|
336
|
+
function mSetLocalStorage (key, value) {
|
|
337
|
+
return setLocalStorage(`${projectName}_${key}`, value);
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
function mGetLocalStorage (key) {
|
|
341
|
+
return getLocalStorage(`${projectName}_${key}`);
|
|
342
|
+
}
|
|
241
343
|
```
|
|
242
344
|
|
|
243
|
-
|
|
345
|
+
#### Cookie
|
|
346
|
+
|
|
347
|
+
Handle Cookie.
|
|
348
|
+
|
|
349
|
+
```
|
|
350
|
+
import { setCookie, getCookie } from 'mazey';
|
|
351
|
+
|
|
352
|
+
setCookie('test', '123', 30, 'example.com'); // key value day domain
|
|
353
|
+
getCookie('test'); // 123
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### Calculate&Formula
|
|
357
|
+
|
|
358
|
+
#### Rate
|
|
359
|
+
|
|
360
|
+
Hit probability (1% ~ 100%).
|
|
244
361
|
|
|
245
362
|
```
|
|
246
363
|
import { inRate } from 'mazey';
|
|
247
364
|
|
|
248
365
|
inRate(0.5); // 0.01 ~ 1 true / false
|
|
249
366
|
|
|
250
|
-
//
|
|
367
|
+
// Test
|
|
251
368
|
let trueCount = 0;
|
|
252
369
|
let falseCount = 0;
|
|
253
370
|
new Array(1000000).fill(0).forEach(() => {
|
|
@@ -260,54 +377,79 @@ new Array(1000000).fill(0).forEach(() => {
|
|
|
260
377
|
console.log(trueCount, falseCount); // 499994 500006
|
|
261
378
|
```
|
|
262
379
|
|
|
263
|
-
|
|
380
|
+
#### Algorithm
|
|
381
|
+
|
|
382
|
+
Computes the longest common substring of two strings.
|
|
264
383
|
|
|
265
384
|
```
|
|
266
|
-
import {
|
|
385
|
+
import { calLongestCommonSubstring } from 'mazey';
|
|
267
386
|
|
|
268
|
-
|
|
269
|
-
// 外壳和外壳版本 { shell: 'wechat', shellVs: '20' } shell: wechat qq uc 360 2345 sougou liebao maxthon
|
|
387
|
+
calLongestCommonSubstring('fish', 'finish'); // 3
|
|
270
388
|
```
|
|
271
389
|
|
|
272
|
-
|
|
390
|
+
Computes the longest common subsequence of two strings.
|
|
273
391
|
|
|
274
|
-
|
|
392
|
+
```
|
|
393
|
+
import { calLongestCommonSubsequence } from 'mazey';
|
|
275
394
|
|
|
395
|
+
calLongestCommonSubsequence('fish', 'finish'); // 4
|
|
276
396
|
```
|
|
277
|
-
import { isSafePWAEnv } from 'mazey';
|
|
278
397
|
|
|
279
|
-
|
|
398
|
+
### Browser Information
|
|
399
|
+
|
|
280
400
|
```
|
|
401
|
+
import { getBrowserType } from 'mazey';
|
|
281
402
|
|
|
282
|
-
|
|
403
|
+
getBrowserType(); // {"engine":"webkit","engineVs":"537.36","platform":"desktop","supporter":"chrome","supporterVs":"85.0.4183.121","system":"windows","systemVs":"10"}
|
|
404
|
+
// Shell and shell version { shell: 'wechat', shellVs: '20' } shell: wechat qq uc 360 2345 sougou liebao maxthon
|
|
405
|
+
```
|
|
283
406
|
|
|
284
|
-
|
|
407
|
+
### Web Performance
|
|
408
|
+
|
|
409
|
+
Get page load time(PerformanceTiming).
|
|
285
410
|
|
|
286
411
|
```
|
|
287
|
-
import {
|
|
412
|
+
import { getPerformance } from 'mazey';
|
|
288
413
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
414
|
+
// `camelCase:true`(Default) Return hump data.
|
|
415
|
+
// `camelCase:false` Return underline data.
|
|
416
|
+
getPerformance({ camelCase: true })
|
|
417
|
+
.then(res => {
|
|
418
|
+
console.log(JSON.stringify(res));
|
|
419
|
+
// {"deviceType":"pc","network":"3g","unloadTime":0,"redirectTime":0,"dnsTime":0,"tcpTime":0,"responseTime":65,"downloadTime":1,"domreadyTime":369,"onloadTime":441,"whiteTime":94,"renderTime":441,"decodedBodySize":210,"encodedBodySize":210}
|
|
420
|
+
})
|
|
421
|
+
.catch(console.error);
|
|
292
422
|
```
|
|
293
423
|
|
|
294
|
-
|
|
424
|
+
| Index | Field | Calculation |
|
|
425
|
+
| --- | --- | --- |
|
|
426
|
+
| * DNS lookup | dns_time | domainLookupEnd - domainLookupStart |
|
|
427
|
+
| * Connection negotiation | tcp_time | connectEnd - connectStart |
|
|
428
|
+
| * Requests and responses | response_time | responseStart - requestStart |
|
|
429
|
+
| * White screen | white_time | responseStart - navigationStart |
|
|
430
|
+
| * DomReady | domready_time | domContentLoadedEventStart - navigationStart |
|
|
431
|
+
| * Onload | onload_time | loadEventStart - navigationStart |
|
|
432
|
+
| * EventEnd | render_time | loadEventEnd -navigationStart |
|
|
433
|
+
| Unload | unload_time | unloadEventEnd - unloadEventStart |
|
|
434
|
+
| Redirect | redirect_time | redirectEnd - redirectStart |
|
|
435
|
+
| SSL | ssl_time | connectEnd - secureConnectionStart |
|
|
436
|
+
| Download | download_time | responseEnd - responseStart |
|
|
437
|
+
|
|
438
|
+
### Margin of Safety
|
|
439
|
+
|
|
440
|
+
Determine if it is a secure PWA environment that it can run.
|
|
295
441
|
|
|
296
442
|
```
|
|
297
|
-
import {
|
|
443
|
+
import { isSafePWAEnv } from 'mazey';
|
|
298
444
|
|
|
299
|
-
|
|
300
|
-
isNumber('123'); // false
|
|
301
|
-
// 默认情况下 NaN、Infinity 不算有效数字
|
|
302
|
-
isNumber(Infinity); // false
|
|
303
|
-
isNumber(Infinity, { isUnFiniteAsNumber: true }); true
|
|
304
|
-
isNumber(NaN); // false
|
|
305
|
-
isNumber(NaN, { isNaNAsNumber: true, isUnFiniteAsNumber: true }); // true
|
|
445
|
+
isSafePWAEnv(); // true
|
|
306
446
|
```
|
|
307
447
|
|
|
308
|
-
###
|
|
448
|
+
### Debug
|
|
309
449
|
|
|
310
|
-
|
|
450
|
+
#### Print
|
|
451
|
+
|
|
452
|
+
Custom console printing (`console`).
|
|
311
453
|
|
|
312
454
|
```
|
|
313
455
|
import { genCustomConsole } from 'mazey';
|
|
@@ -319,7 +461,7 @@ myConsole.info('I am number.', 123, 456); // MazeyLog: I am number. 123 456
|
|
|
319
461
|
myConsole.info('I am object.', { a: 123, b: 456}); // MazeyLog: I am object. {a: 123, b: 456}
|
|
320
462
|
```
|
|
321
463
|
|
|
322
|
-
[
|
|
464
|
+
[More API>>](https://mazey.cn/docs/mazey/modules/_index_.html)
|
|
323
465
|
|
|
324
466
|
## Develop
|
|
325
467
|
|
|
@@ -332,4 +474,4 @@ npm run build
|
|
|
332
474
|
|
|
333
475
|
# documentation
|
|
334
476
|
npm run docs
|
|
335
|
-
```
|
|
477
|
+
```
|