mazey 1.4.25 → 1.4.29

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 CHANGED
@@ -62,6 +62,20 @@ loadCSS({
62
62
  );
63
63
  ```
64
64
 
65
+ 判断页面是否加载完成(兼容浏览器 `load` 事件已经触发过的情况)
66
+
67
+ ```
68
+ import { loadCSS } from 'mazey';
69
+
70
+ windowLoaded({ timeout: 30 })
71
+ .then(res => {
72
+ console.log(`加载完成:${res}`); // 加载完成:load
73
+ })
74
+ .catch(err => {
75
+ console.log(`加载超时或失败:${err}`);
76
+ });
77
+ ```
78
+
65
79
  ### 存储数据
66
80
 
67
81
  Storage
@@ -190,6 +204,18 @@ import { isSafePWAEnv } from 'mazey';
190
204
  isSafePWAEnv(); // true
191
205
  ```
192
206
 
207
+ ### 函数
208
+
209
+ 防抖
210
+
211
+ ```
212
+ import { debounce } from 'mazey';
213
+
214
+ const foo = debounce(() => {
215
+ console.log('执行 1 秒内再次执行无反应');
216
+ }, 1000, { leading: true })
217
+ ```
218
+
193
219
  [更多接口>>](https://mazey.cn/docs/mazey/modules/_index_.html)
194
220
 
195
221
  ## Develop
package/lib/index.cjs.js CHANGED
@@ -3901,6 +3901,7 @@ function loadCSS(_a) {
3901
3901
  * @param {String} id -- DOM ID
3902
3902
  * @param {Function} callback -- 加载后回调函数
3903
3903
  * @param {Number} timeout -- 超时时长
3904
+ * @param {Boolean} isDefer -- 是否添加 defer 标签
3904
3905
  * @return {Promise<Boolean>} -- true 成功
3905
3906
  */
3906
3907
 
@@ -3913,7 +3914,9 @@ function loadScript(_a) {
3913
3914
  _e = _b.callback,
3914
3915
  callback = _e === void 0 ? function () {} : _e,
3915
3916
  _f = _b.timeout,
3916
- timeout = _f === void 0 ? 5000 : _f;
3917
+ timeout = _f === void 0 ? 5000 : _f,
3918
+ _g = _b.isDefer,
3919
+ isDefer = _g === void 0 ? false : _g;
3917
3920
 
3918
3921
  var success = null;
3919
3922
  var fail = null;
@@ -3922,6 +3925,10 @@ function loadScript(_a) {
3922
3925
  var firstScript = document.getElementsByTagName('script')[0];
3923
3926
  script.type = 'text/javascript';
3924
3927
 
3928
+ if (isDefer) {
3929
+ script.defer = 'defer';
3930
+ }
3931
+
3925
3932
  if (id) {
3926
3933
  script.id = id;
3927
3934
  }
@@ -4590,6 +4597,44 @@ function cutCHSString(str, len, hasDot) {
4590
4597
  return newStr;
4591
4598
  }
4592
4599
  }
4600
+ /**
4601
+ * @method windowLoaded
4602
+ * @description 页面加载完成
4603
+ * @param {number} timeout 超时时间 / 单位:秒
4604
+ * @return {Promise<string>} document is loaded? 'complete' 'load' / 'timeout'
4605
+ */
4606
+
4607
+ function windowLoaded(_a) {
4608
+ var _b = (_a === void 0 ? {} : _a).timeout,
4609
+ timeout = _b === void 0 ? 90 : _b;
4610
+
4611
+ var loaded = function loaded() {
4612
+ return undefined;
4613
+ };
4614
+
4615
+ var loadFail = function loadFail() {
4616
+ return undefined;
4617
+ };
4618
+
4619
+ var status = new Promise(function (resolve, reject) {
4620
+ loaded = resolve;
4621
+ loadFail = reject;
4622
+ });
4623
+
4624
+ if (document.readyState === 'complete') {
4625
+ loaded('complete');
4626
+ } else {
4627
+ window.addEventListener('load', function () {
4628
+ return loaded('load');
4629
+ });
4630
+ } // 超过 timeout 秒后加载失败
4631
+
4632
+
4633
+ setTimeout(function () {
4634
+ return loadFail('timeout');
4635
+ }, timeout * 1000);
4636
+ return status;
4637
+ }
4593
4638
 
4594
4639
  exports.addClass = addClass;
4595
4640
  exports.calLongestCommonSubsequence = calLongestCommonSubsequence;
@@ -4637,3 +4682,4 @@ exports.setSessionStorage = setSessionStorage;
4637
4682
  exports.throttle = throttle;
4638
4683
  exports.trim = trim$1;
4639
4684
  exports.updateQueryStringParameter = updateQueryStringParameter;
4685
+ exports.windowLoaded = windowLoaded;
package/lib/index.d.ts CHANGED
@@ -238,14 +238,16 @@ export declare function loadCSS({ url, id }?: {
238
238
  * @param {String} id -- DOM ID
239
239
  * @param {Function} callback -- 加载后回调函数
240
240
  * @param {Number} timeout -- 超时时长
241
+ * @param {Boolean} isDefer -- 是否添加 defer 标签
241
242
  * @return {Promise<Boolean>} -- true 成功
242
243
  */
243
- export declare function loadScript({ url, id, callback, timeout }?: {
244
+ export declare function loadScript({ url, id, callback, timeout, isDefer }?: {
244
245
  url?: string | undefined;
245
246
  id?: string | undefined;
246
247
  callback?: (() => void) | undefined;
247
248
  timeout?: number | undefined;
248
- }): Promise<unknown>;
249
+ isDefer?: boolean | undefined;
250
+ }): any;
249
251
  /**
250
252
  * @method mNow
251
253
  * @description 获取时间戳
@@ -305,4 +307,13 @@ export declare function clearHtml(string?: string): string;
305
307
  * @returns {String} 返回截取后的字符串
306
308
  */
307
309
  export declare function cutCHSString(str?: string, len?: number, hasDot?: boolean): string;
310
+ /**
311
+ * @method windowLoaded
312
+ * @description 页面加载完成
313
+ * @param {number} timeout 超时时间 / 单位:秒
314
+ * @return {Promise<string>} document is loaded? 'complete' 'load' / 'timeout'
315
+ */
316
+ export declare function windowLoaded({ timeout }?: {
317
+ timeout?: number | undefined;
318
+ }): Promise<string>;
308
319
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"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"}
package/lib/index.esm.js CHANGED
@@ -3897,6 +3897,7 @@ function loadCSS(_a) {
3897
3897
  * @param {String} id -- DOM ID
3898
3898
  * @param {Function} callback -- 加载后回调函数
3899
3899
  * @param {Number} timeout -- 超时时长
3900
+ * @param {Boolean} isDefer -- 是否添加 defer 标签
3900
3901
  * @return {Promise<Boolean>} -- true 成功
3901
3902
  */
3902
3903
 
@@ -3909,7 +3910,9 @@ function loadScript(_a) {
3909
3910
  _e = _b.callback,
3910
3911
  callback = _e === void 0 ? function () {} : _e,
3911
3912
  _f = _b.timeout,
3912
- timeout = _f === void 0 ? 5000 : _f;
3913
+ timeout = _f === void 0 ? 5000 : _f,
3914
+ _g = _b.isDefer,
3915
+ isDefer = _g === void 0 ? false : _g;
3913
3916
 
3914
3917
  var success = null;
3915
3918
  var fail = null;
@@ -3918,6 +3921,10 @@ function loadScript(_a) {
3918
3921
  var firstScript = document.getElementsByTagName('script')[0];
3919
3922
  script.type = 'text/javascript';
3920
3923
 
3924
+ if (isDefer) {
3925
+ script.defer = 'defer';
3926
+ }
3927
+
3921
3928
  if (id) {
3922
3929
  script.id = id;
3923
3930
  }
@@ -4586,5 +4593,43 @@ function cutCHSString(str, len, hasDot) {
4586
4593
  return newStr;
4587
4594
  }
4588
4595
  }
4596
+ /**
4597
+ * @method windowLoaded
4598
+ * @description 页面加载完成
4599
+ * @param {number} timeout 超时时间 / 单位:秒
4600
+ * @return {Promise<string>} document is loaded? 'complete' 'load' / 'timeout'
4601
+ */
4602
+
4603
+ function windowLoaded(_a) {
4604
+ var _b = (_a === void 0 ? {} : _a).timeout,
4605
+ timeout = _b === void 0 ? 90 : _b;
4606
+
4607
+ var loaded = function loaded() {
4608
+ return undefined;
4609
+ };
4610
+
4611
+ var loadFail = function loadFail() {
4612
+ return undefined;
4613
+ };
4614
+
4615
+ var status = new Promise(function (resolve, reject) {
4616
+ loaded = resolve;
4617
+ loadFail = reject;
4618
+ });
4619
+
4620
+ if (document.readyState === 'complete') {
4621
+ loaded('complete');
4622
+ } else {
4623
+ window.addEventListener('load', function () {
4624
+ return loaded('load');
4625
+ });
4626
+ } // 超过 timeout 秒后加载失败
4627
+
4628
+
4629
+ setTimeout(function () {
4630
+ return loadFail('timeout');
4631
+ }, timeout * 1000);
4632
+ return status;
4633
+ }
4589
4634
 
4590
- export { addClass, calLongestCommonSubsequence, calLongestCommonSubstring, camelCase2Underscore, camelCaseToKebabCase, cancelBubble, clearHtml, compatibleExist, cutCHSString, debounce, deepCopyObject, doFn, floatFixed, floatToPercent, friendlyInterval, generateRndNum, generateUniqueNum, getBrowserType, getCookie, getDomain, getHashQueryParam, getLocalStorage, getPerformance, getQueryParam, getSearchQueryParam, getSessionStorage, getUrlParam, hasClass, inRate, isJsonString, isNumber, isSafePWAEnv, join, loadCSS, loadScript, mNow, newLine, removeClass, renderTable, resetForm, setCookie, setLocalStorage, setSessionStorage, throttle, trim$1 as trim, updateQueryStringParameter };
4635
+ export { addClass, calLongestCommonSubsequence, calLongestCommonSubstring, camelCase2Underscore, camelCaseToKebabCase, cancelBubble, clearHtml, compatibleExist, cutCHSString, debounce, deepCopyObject, doFn, floatFixed, floatToPercent, friendlyInterval, generateRndNum, generateUniqueNum, getBrowserType, getCookie, getDomain, getHashQueryParam, getLocalStorage, getPerformance, getQueryParam, getSearchQueryParam, getSessionStorage, getUrlParam, hasClass, inRate, isJsonString, isNumber, isSafePWAEnv, join, loadCSS, loadScript, mNow, newLine, removeClass, renderTable, resetForm, setCookie, setLocalStorage, setSessionStorage, throttle, trim$1 as trim, updateQueryStringParameter, windowLoaded };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mazey",
3
- "version": "1.4.25",
3
+ "version": "1.4.29",
4
4
  "description": "Mazey's library for front end.",
5
5
  "main": "lib/index.cjs.js",
6
6
  "module": "lib/index.esm.js",
@@ -13,7 +13,7 @@
13
13
  "test": "echo \"Error: no test specified\" && exit 1",
14
14
  "dev": "webpack-dev-server --open",
15
15
  "build": "npx rollup -c",
16
- "doc": "npx jsdoc -c ./jsdoc.config.json -d ./doc",
16
+ "[已废弃]doc": "npx jsdoc -c ./jsdoc.config.json -d ./doc",
17
17
  "docs": "npx typedoc --out docs/ src/",
18
18
  "release": "npm run build && npm publish",
19
19
  "lint-and-fix": "eslint ./src/index.ts --ext 'ts,tsx' --fix"
package/src/index.ts CHANGED
@@ -747,15 +747,19 @@ export function loadCSS({ url = '', id = '' } = {}) {
747
747
  * @param {String} id -- DOM ID
748
748
  * @param {Function} callback -- 加载后回调函数
749
749
  * @param {Number} timeout -- 超时时长
750
+ * @param {Boolean} isDefer -- 是否添加 defer 标签
750
751
  * @return {Promise<Boolean>} -- true 成功
751
752
  */
752
- export function loadScript({ url = '', id = '', callback = function () { /* pass */ }, timeout = 5000 } = {}) {
753
+ export function loadScript({ url = '', id = '', callback = function () { /* pass */ }, timeout = 5000, isDefer = false } = {}): any {
753
754
  let success: any = null;
754
755
  let fail: any = null;
755
756
  const script: any = document.createElement('script');
756
757
  // 如果没有 script 标签,那么代码就不会运行。可以利用这一事实,在页面的第一个 script 标签上使用 insertBefore()。
757
758
  const firstScript: any = document.getElementsByTagName('script')[0];
758
759
  script.type = 'text/javascript';
760
+ if (isDefer) {
761
+ script.defer = 'defer';
762
+ }
759
763
  if (id) {
760
764
  script.id = id;
761
765
  }
@@ -1326,3 +1330,26 @@ export function cutCHSString(str = '', len = str.length, hasDot = false): string
1326
1330
  return newStr;
1327
1331
  }
1328
1332
  }
1333
+
1334
+ /**
1335
+ * @method windowLoaded
1336
+ * @description 页面加载完成
1337
+ * @param {number} timeout 超时时间 / 单位:秒
1338
+ * @return {Promise<string>} document is loaded? 'complete' 'load' / 'timeout'
1339
+ */
1340
+ export function windowLoaded({ timeout = 90 } = {}): Promise<string> {
1341
+ let loaded: (value: string) => void = () => undefined;
1342
+ let loadFail: (value: string) => void = () => undefined;
1343
+ const status = new Promise((resolve: (value: string) => void, reject: (value: string) => void) => {
1344
+ loaded = resolve;
1345
+ loadFail = reject;
1346
+ });
1347
+ if (document.readyState === 'complete') {
1348
+ loaded('complete');
1349
+ } else {
1350
+ window.addEventListener('load', () => loaded('load'));
1351
+ }
1352
+ // 超过 timeout 秒后加载失败
1353
+ setTimeout(() => loadFail('timeout'), timeout * 1000);
1354
+ return status;
1355
+ }
package/src/test.ts CHANGED
@@ -10,6 +10,8 @@ import {
10
10
  loadScript,
11
11
  isSafePWAEnv,
12
12
  getBrowserType,
13
+ debounce,
14
+ windowLoaded,
13
15
  // getPerformance,
14
16
  } from './index';
15
17
 
@@ -23,12 +25,31 @@ import {
23
25
  // console.log(getUrlParam(url, 'bsource'))
24
26
  // console.log(getUrlParam(url, 'topic'))
25
27
 
26
- // loadScript({
27
- // url: 'https://www.bilibili.com/bangumi/play/ss28296?bsource=douban&topic=blog.mazey.net',
28
- // id: 'abbb',
29
- // })
28
+ loadScript({
29
+ url: 'https://www.bilibili.com/bangumi/play/ss28296?bsource=douban&topic=blog.mazey.net',
30
+ id: 'abbb',
31
+ isDefer: true,
32
+ });
30
33
 
31
34
  console.log('isSafePWAEnv', isSafePWAEnv());
32
35
  console.log('getBrowserType', JSON.stringify(getBrowserType()));
33
36
  console.log('getPerformance', getPerformance());
34
- getPerformance().then(console.log);
37
+ getPerformance().then(console.log);
38
+
39
+ const foo = debounce(() => {
40
+ console.log('执行 1 秒内再次执行无反应');
41
+ }, 1000, { leading: true });
42
+
43
+ foo();
44
+
45
+ setTimeout(foo, 500);
46
+
47
+ setTimeout(foo, 2500);
48
+
49
+ windowLoaded({ timeout: 30 })
50
+ .then(res => {
51
+ console.log(`加载完成:${res}`);
52
+ })
53
+ .catch(err => {
54
+ console.log(`加载超时:${err}`);
55
+ });
package/.eslintrc DELETED
@@ -1,15 +0,0 @@
1
- {
2
- "root": true,
3
- "parser": "@typescript-eslint/parser",
4
- "plugins": [
5
- "@typescript-eslint"
6
- ],
7
- "extends": [
8
- "eslint:recommended",
9
- "plugin:@typescript-eslint/eslint-recommended",
10
- "plugin:@typescript-eslint/recommended"
11
- ],
12
- "rules": {
13
- "semi": ["error", "always"]
14
- }
15
- }