nhanh-pure-function 1.3.12 → 1.3.14

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/Index.d.ts CHANGED
@@ -1,8 +1,3 @@
1
1
  export * from "./Utility/Utility";
2
2
  export * from "./User/User";
3
3
  export * from "./Math/Math";
4
-
5
- /** 提取单个函数的参数类型 */
6
- export type ExtractParameters<T> = T extends (...args: infer P) => any
7
- ? P
8
- : never;
@@ -184,9 +184,9 @@ export class _LocalDrag {
184
184
  }
185
185
 
186
186
  /** 进入全屏模式 */
187
- export function _EnterFullscreen(content: HTMLElement): void;
187
+ export function _EnterFullscreen(content: HTMLElement): Promise<void>;
188
188
  /** 退出全屏模式 */
189
- export function _ExitFullscreen(): void;
189
+ export function _ExitFullscreen(): Promise<void>;
190
190
  /** 判断是否处于全屏模式 */
191
191
  export function _IsFullscreen(): HTMLElement | undefined;
192
192
 
package/lib/User/User.js CHANGED
@@ -485,33 +485,34 @@ export class _LocalDrag {
485
485
 
486
486
  /** 进入全屏模式 */
487
487
  export function _EnterFullscreen(content) {
488
- if (!content) return console.error("No DOM: ", content);
489
- if (content.requestFullscreen) {
490
- content.requestFullscreen();
488
+ if (!content) {
489
+ return Promise.reject("No DOM: ", content);
490
+ } else if (content.requestFullscreen) {
491
+ return content.requestFullscreen();
491
492
  } else if (content.mozRequestFullScreen) {
492
493
  // Firefox
493
- content.mozRequestFullScreen();
494
+ return content.mozRequestFullScreen();
494
495
  } else if (content.webkitRequestFullscreen) {
495
496
  // Chrome, Safari and Opera
496
- content.webkitRequestFullscreen();
497
+ return content.webkitRequestFullscreen();
497
498
  } else if (content.msRequestFullscreen) {
498
499
  // IE/Edge
499
- content.msRequestFullscreen();
500
+ return content.msRequestFullscreen();
500
501
  }
501
502
  }
502
503
  /** 退出全屏模式 */
503
504
  export function _ExitFullscreen() {
504
505
  if (document.exitFullscreen) {
505
- document.exitFullscreen();
506
+ return document.exitFullscreen();
506
507
  } else if (document.mozCancelFullScreen) {
507
508
  // Firefox
508
- document.mozCancelFullScreen();
509
+ return document.mozCancelFullScreen();
509
510
  } else if (document.webkitExitFullscreen) {
510
511
  // Chrome, Safari and Opera
511
- document.webkitExitFullscreen();
512
+ return document.webkitExitFullscreen();
512
513
  } else if (document.msExitFullscreen) {
513
514
  // IE/Edge
514
- document.msExitFullscreen();
515
+ return document.msExitFullscreen();
515
516
  }
516
517
  }
517
518
  /** 判断是否处于全屏模式 */
@@ -1,5 +1,3 @@
1
- import { ExtractParameters } from "../Index";
2
-
3
1
  /**
4
2
  * 非null | undefined判断
5
3
  * @param value any
@@ -62,12 +60,12 @@ export function _MergeObjects<T, T1>(A: T, B: T1): T & T1;
62
60
  /**
63
61
  * 时间戳转换字符串
64
62
  * @param {Number | Date} time 时间戳或Date对象
65
- * @param {String} template 完整模板 --> yyyy MM DD hh mm ss ms
63
+ * @param {String} template 完整模板 --> YYYY MM DD hh mm ss ms
66
64
  * @param {Boolean} pad 补0
67
65
  */
68
66
  export function _TimeTransition(
69
67
  time: number | Date,
70
- template: string,
68
+ template?: string,
71
69
  pad?: boolean
72
70
  ): string;
73
71
 
@@ -93,7 +91,7 @@ export function _GetHrefName(href: string, defaultName = "file"): string;
93
91
  * @param {string} href 文件路径
94
92
  * @param {string} fileName 导出文件名
95
93
  */
96
- export function _DownloadFile(href: string, fileName?: string): void;
94
+ export function _DownloadFile(href: string, fileName?: string): Promise<void>;
97
95
 
98
96
  /**
99
97
  * 获取帧率
@@ -160,7 +158,7 @@ export function _GenerateUUID(prefix?: string): string;
160
158
  export function _Debounce<T extends Function>(
161
159
  fn: T,
162
160
  delay: number
163
- ): (...args: ExtractParameters<T>) => void;
161
+ ): (...args: Parameters<T>) => void;
164
162
 
165
163
  /**
166
164
  * 节流
@@ -171,7 +169,7 @@ export function _Debounce<T extends Function>(
171
169
  export function _Throttle<T extends Function>(
172
170
  fn: T,
173
171
  delay: number
174
- ): (...args: ExtractParameters<T>) => void;
172
+ ): (...args: Parameters<T>) => void;
175
173
 
176
174
  /**
177
175
  * 数据类型
@@ -86,44 +86,61 @@ export function _CapitalizeFirstLetter(string) {
86
86
  * @param {Object | Array} B
87
87
  * @returns A&B || B
88
88
  */
89
- export function _MergeObjects(A, B, visitedObjects = []) {
89
+ export function _MergeObjects(
90
+ A,
91
+ B,
92
+ visitedObjects = [],
93
+ outTime = +new Date()
94
+ ) {
95
+ /** 疑似死循环 */
96
+ if (outTime < +new Date() - 2000) {
97
+ console.error("_MergeObjects 合并异常:疑似死循环");
98
+ return null;
99
+ }
100
+
90
101
  const getType = (v) => (Array.isArray(v) ? "array" : typeof v);
91
102
  const TA = getType(A);
92
103
  const TB = getType(B);
93
104
 
94
105
  if (TA != TB) return B;
95
- if (visitedObjects.some((item) => item == B)) return B;
96
-
97
- if (TA == "object") {
98
- visitedObjects.push(A, B);
99
- for (const key in B) {
100
- if (Object.prototype.hasOwnProperty.call(B, key)) {
101
- const BC = B[key];
102
- const AC = A[key];
103
- const fianlValue = _MergeObjects(AC, BC, visitedObjects);
104
- A[key] = fianlValue;
106
+
107
+ if (TA == "object" || TA == "array") {
108
+ if (visitedObjects.some(([a, b]) => a == A && b == B)) return A;
109
+ visitedObjects.push([A, B]);
110
+
111
+ if (TA == "object") {
112
+ for (const key in B) {
113
+ if (Object.prototype.hasOwnProperty.call(B, key)) {
114
+ const BC = B[key];
115
+ const AC = A[key];
116
+ const fianlValue = _MergeObjects(AC, BC, visitedObjects, outTime);
117
+ A[key] = fianlValue;
118
+ }
105
119
  }
120
+ return A;
121
+ } else if (TA == "array") {
122
+ B.forEach((item, index) => {
123
+ const BC = item;
124
+ const AC = A[index];
125
+ const fianlValue = _MergeObjects(AC, BC, visitedObjects, outTime);
126
+ A[index] = fianlValue;
127
+ });
128
+ return A;
106
129
  }
107
- return A;
108
- } else if (TA == "array") {
109
- visitedObjects.push(A, B);
110
- B.forEach((item, index) => {
111
- const BC = item;
112
- const AC = A[index];
113
- const fianlValue = _MergeObjects(AC, BC, visitedObjects);
114
- A[index] = fianlValue;
115
- });
116
- return A;
117
130
  } else return B;
118
131
  }
119
132
 
120
133
  /**
121
134
  * 时间戳转换字符串
122
135
  * @param {Number | Date} time 时间戳或Date对象
123
- * @param {String} template 完整模板 --> yyyy MM DD hh mm ss ms
136
+ * @param {String} template 完整模板 --> YYYY MM DD hh mm ss ms
124
137
  * @param {Boolean} pad 补0
125
138
  */
126
- export function _TimeTransition(time, template, pad = true) {
139
+ export function _TimeTransition(
140
+ time,
141
+ template = "YYYY-MM-DD hh:mm:ss",
142
+ pad = true
143
+ ) {
127
144
  try {
128
145
  time = new Date(time);
129
146
  } catch (error) {
@@ -131,7 +148,7 @@ export function _TimeTransition(time, template, pad = true) {
131
148
  return "";
132
149
  }
133
150
  const dictionary = {
134
- yyyy: "getFullYear",
151
+ YYYY: "getFullYear",
135
152
  MM: "getMonth",
136
153
  DD: "getDate",
137
154
  hh: "getHours",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nhanh-pure-function",
3
- "version": "1.3.12",
3
+ "version": "1.3.14",
4
4
  "description": "纯函数工具",
5
5
  "main": "lib/Index.js",
6
6
  "scripts": {