@allahjs/utils 0.0.1

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.
Files changed (160) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +244 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/browser/cookieUtils/index.cjs +100 -0
  5. package/dist/browser/cookieUtils/index.cjs.map +1 -0
  6. package/dist/browser/cookieUtils/index.d.ts +55 -0
  7. package/dist/browser/domUtils/index.cjs +237 -0
  8. package/dist/browser/domUtils/index.cjs.map +1 -0
  9. package/dist/browser/domUtils/index.d.ts +116 -0
  10. package/dist/browser/index.cjs +12 -0
  11. package/dist/browser/index.cjs.map +1 -0
  12. package/dist/browser/index.d.ts +3 -0
  13. package/dist/browser/urlUtils/index.cjs +262 -0
  14. package/dist/browser/urlUtils/index.cjs.map +1 -0
  15. package/dist/browser/urlUtils/index.d.ts +72 -0
  16. package/dist/core/arrayUtils/index.cjs +109 -0
  17. package/dist/core/arrayUtils/index.cjs.map +1 -0
  18. package/dist/core/arrayUtils/index.d.ts +67 -0
  19. package/dist/core/asyncUtils/index.cjs +180 -0
  20. package/dist/core/asyncUtils/index.cjs.map +1 -0
  21. package/dist/core/asyncUtils/index.d.ts +80 -0
  22. package/dist/core/colorUtils/index.cjs +38 -0
  23. package/dist/core/colorUtils/index.cjs.map +1 -0
  24. package/dist/core/colorUtils/index.d.ts +10 -0
  25. package/dist/core/cryptoUtils/index.cjs +428 -0
  26. package/dist/core/cryptoUtils/index.cjs.map +1 -0
  27. package/dist/core/cryptoUtils/index.d.ts +132 -0
  28. package/dist/core/dateUtils/index.cjs +245 -0
  29. package/dist/core/dateUtils/index.cjs.map +1 -0
  30. package/dist/core/dateUtils/index.d.ts +117 -0
  31. package/dist/core/index.cjs +34 -0
  32. package/dist/core/index.cjs.map +1 -0
  33. package/dist/core/index.d.ts +118 -0
  34. package/dist/core/numberUtils/index.cjs +126 -0
  35. package/dist/core/numberUtils/index.cjs.map +1 -0
  36. package/dist/core/numberUtils/index.d.ts +91 -0
  37. package/dist/core/objectUtils/index.cjs +249 -0
  38. package/dist/core/objectUtils/index.cjs.map +1 -0
  39. package/dist/core/objectUtils/index.d.ts +91 -0
  40. package/dist/core/pageUtils/index.cjs +74 -0
  41. package/dist/core/pageUtils/index.cjs.map +1 -0
  42. package/dist/core/pageUtils/index.d.ts +52 -0
  43. package/dist/core/stringUtils/index.cjs +163 -0
  44. package/dist/core/stringUtils/index.cjs.map +1 -0
  45. package/dist/core/stringUtils/index.d.ts +69 -0
  46. package/dist/core/validationUtils/index.cjs +154 -0
  47. package/dist/core/validationUtils/index.cjs.map +1 -0
  48. package/dist/core/validationUtils/index.d.ts +87 -0
  49. package/dist/esm/browser/cookieUtils/index.d.ts +55 -0
  50. package/dist/esm/browser/cookieUtils/index.js +96 -0
  51. package/dist/esm/browser/cookieUtils/index.js.map +1 -0
  52. package/dist/esm/browser/domUtils/index.d.ts +116 -0
  53. package/dist/esm/browser/domUtils/index.js +233 -0
  54. package/dist/esm/browser/domUtils/index.js.map +1 -0
  55. package/dist/esm/browser/index.d.ts +3 -0
  56. package/dist/esm/browser/index.js +4 -0
  57. package/dist/esm/browser/index.js.map +1 -0
  58. package/dist/esm/browser/urlUtils/index.d.ts +72 -0
  59. package/dist/esm/browser/urlUtils/index.js +248 -0
  60. package/dist/esm/browser/urlUtils/index.js.map +1 -0
  61. package/dist/esm/core/arrayUtils/index.d.ts +67 -0
  62. package/dist/esm/core/arrayUtils/index.js +105 -0
  63. package/dist/esm/core/arrayUtils/index.js.map +1 -0
  64. package/dist/esm/core/asyncUtils/index.d.ts +80 -0
  65. package/dist/esm/core/asyncUtils/index.js +175 -0
  66. package/dist/esm/core/asyncUtils/index.js.map +1 -0
  67. package/dist/esm/core/colorUtils/index.d.ts +10 -0
  68. package/dist/esm/core/colorUtils/index.js +34 -0
  69. package/dist/esm/core/colorUtils/index.js.map +1 -0
  70. package/dist/esm/core/cryptoUtils/index.d.ts +132 -0
  71. package/dist/esm/core/cryptoUtils/index.js +424 -0
  72. package/dist/esm/core/cryptoUtils/index.js.map +1 -0
  73. package/dist/esm/core/dateUtils/index.d.ts +117 -0
  74. package/dist/esm/core/dateUtils/index.js +241 -0
  75. package/dist/esm/core/dateUtils/index.js.map +1 -0
  76. package/dist/esm/core/index.d.ts +118 -0
  77. package/dist/esm/core/index.js +30 -0
  78. package/dist/esm/core/index.js.map +1 -0
  79. package/dist/esm/core/numberUtils/index.d.ts +91 -0
  80. package/dist/esm/core/numberUtils/index.js +122 -0
  81. package/dist/esm/core/numberUtils/index.js.map +1 -0
  82. package/dist/esm/core/objectUtils/index.d.ts +91 -0
  83. package/dist/esm/core/objectUtils/index.js +245 -0
  84. package/dist/esm/core/objectUtils/index.js.map +1 -0
  85. package/dist/esm/core/pageUtils/index.d.ts +52 -0
  86. package/dist/esm/core/pageUtils/index.js +66 -0
  87. package/dist/esm/core/pageUtils/index.js.map +1 -0
  88. package/dist/esm/core/stringUtils/index.d.ts +69 -0
  89. package/dist/esm/core/stringUtils/index.js +159 -0
  90. package/dist/esm/core/stringUtils/index.js.map +1 -0
  91. package/dist/esm/core/validationUtils/index.d.ts +87 -0
  92. package/dist/esm/core/validationUtils/index.js +150 -0
  93. package/dist/esm/core/validationUtils/index.js.map +1 -0
  94. package/dist/esm/index.d.ts +22 -0
  95. package/dist/esm/index.js +26 -0
  96. package/dist/esm/index.js.map +1 -0
  97. package/dist/esm/request/ReqQueue/index.js +59 -0
  98. package/dist/esm/request/ReqQueue/index.js.map +1 -0
  99. package/dist/esm/request/httpCode/index.js +49 -0
  100. package/dist/esm/request/httpCode/index.js.map +1 -0
  101. package/dist/esm/request/httpUtils/index.js +359 -0
  102. package/dist/esm/request/httpUtils/index.js.map +1 -0
  103. package/dist/esm/request/index.d.ts +15 -0
  104. package/dist/esm/request/index.js +166 -0
  105. package/dist/esm/request/index.js.map +1 -0
  106. package/dist/esm/request/typings/index.d.ts +184 -0
  107. package/dist/esm/request/uniRequest/index.js +62 -0
  108. package/dist/esm/request/uniRequest/index.js.map +1 -0
  109. package/dist/esm/types/data/index.d.ts +188 -0
  110. package/dist/esm/types/data/index.js +13 -0
  111. package/dist/esm/types/data/index.js.map +1 -0
  112. package/dist/esm/types/index.d.ts +1 -0
  113. package/dist/esm/types/index.js +2 -0
  114. package/dist/esm/types/index.js.map +1 -0
  115. package/dist/esm/uniapp/Tips/index.d.ts +295 -0
  116. package/dist/esm/uniapp/Tips/index.js +498 -0
  117. package/dist/esm/uniapp/Tips/index.js.map +1 -0
  118. package/dist/esm/uniapp/cloudUtils/index.d.ts +56 -0
  119. package/dist/esm/uniapp/cloudUtils/index.js +90 -0
  120. package/dist/esm/uniapp/cloudUtils/index.js.map +1 -0
  121. package/dist/esm/uniapp/index.d.ts +3 -0
  122. package/dist/esm/uniapp/index.js +4 -0
  123. package/dist/esm/uniapp/index.js.map +1 -0
  124. package/dist/esm/uniapp/uniUtils/index.d.ts +113 -0
  125. package/dist/esm/uniapp/uniUtils/index.js +199 -0
  126. package/dist/esm/uniapp/uniUtils/index.js.map +1 -0
  127. package/dist/index.cjs +88 -0
  128. package/dist/index.cjs.map +1 -0
  129. package/dist/index.d.ts +22 -0
  130. package/dist/request/ReqQueue/index.cjs +63 -0
  131. package/dist/request/ReqQueue/index.cjs.map +1 -0
  132. package/dist/request/httpCode/index.cjs +52 -0
  133. package/dist/request/httpCode/index.cjs.map +1 -0
  134. package/dist/request/httpUtils/index.cjs +365 -0
  135. package/dist/request/httpUtils/index.cjs.map +1 -0
  136. package/dist/request/index.cjs +170 -0
  137. package/dist/request/index.cjs.map +1 -0
  138. package/dist/request/index.d.ts +15 -0
  139. package/dist/request/typings/index.d.ts +184 -0
  140. package/dist/request/uniRequest/index.cjs +66 -0
  141. package/dist/request/uniRequest/index.cjs.map +1 -0
  142. package/dist/types/data/index.cjs +15 -0
  143. package/dist/types/data/index.cjs.map +1 -0
  144. package/dist/types/data/index.d.ts +188 -0
  145. package/dist/types/index.cjs +8 -0
  146. package/dist/types/index.cjs.map +1 -0
  147. package/dist/types/index.d.ts +1 -0
  148. package/dist/uniapp/Tips/index.cjs +521 -0
  149. package/dist/uniapp/Tips/index.cjs.map +1 -0
  150. package/dist/uniapp/Tips/index.d.ts +295 -0
  151. package/dist/uniapp/cloudUtils/index.cjs +92 -0
  152. package/dist/uniapp/cloudUtils/index.cjs.map +1 -0
  153. package/dist/uniapp/cloudUtils/index.d.ts +56 -0
  154. package/dist/uniapp/index.cjs +53 -0
  155. package/dist/uniapp/index.cjs.map +1 -0
  156. package/dist/uniapp/index.d.ts +3 -0
  157. package/dist/uniapp/uniUtils/index.cjs +213 -0
  158. package/dist/uniapp/uniUtils/index.cjs.map +1 -0
  159. package/dist/uniapp/uniUtils/index.d.ts +113 -0
  160. package/package.json +129 -0
@@ -0,0 +1,116 @@
1
+ /**
2
+ * DOM工具函数(仅在浏览器环境中可用)
3
+ */
4
+ declare const domUtils: {
5
+ /**
6
+ * 检查是否在浏览器环境
7
+ * @returns 是否在浏览器环境
8
+ */
9
+ isBrowser(): boolean;
10
+ /**
11
+ * 查询元素
12
+ * @param selector 选择器
13
+ * @param parent 父元素,默认为document
14
+ * @returns 元素或null
15
+ */
16
+ $(selector: string, parent?: Document | Element): Element | null;
17
+ /**
18
+ * 查询所有元素
19
+ * @param selector 选择器
20
+ * @param parent 父元素,默认为document
21
+ * @returns 元素数组
22
+ */
23
+ $$(selector: string, parent?: Document | Element): Element[];
24
+ /**
25
+ * 添加CSS类
26
+ * @param element 元素
27
+ * @param className 类名
28
+ */
29
+ addClass(element: Element, className: string): void;
30
+ /**
31
+ * 移除CSS类
32
+ * @param element 元素
33
+ * @param className 类名
34
+ */
35
+ removeClass(element: Element, className: string): void;
36
+ /**
37
+ * 切换CSS类
38
+ * @param element 元素
39
+ * @param className 类名
40
+ * @returns 是否添加了类
41
+ */
42
+ toggleClass(element: Element, className: string): boolean;
43
+ /**
44
+ * 检查是否包含CSS类
45
+ * @param element 元素
46
+ * @param className 类名
47
+ * @returns 是否包含类
48
+ */
49
+ hasClass(element: Element, className: string): boolean;
50
+ /**
51
+ * 设置元素样式
52
+ * @param element 元素
53
+ * @param styles 样式对象
54
+ */
55
+ setStyle(element: HTMLElement, styles: Partial<CSSStyleDeclaration>): void;
56
+ /**
57
+ * 获取元素样式
58
+ * @param element 元素
59
+ * @param property 样式属性
60
+ * @returns 样式值
61
+ */
62
+ getStyle(element: Element, property: string): string;
63
+ /**
64
+ * 创建元素
65
+ * @param tagName 标签名
66
+ * @param attributes 属性对象
67
+ * @param children 子元素或文本
68
+ * @returns 创建的元素
69
+ */
70
+ createElement(tagName: string, attributes?: Record<string, string>, children?: (Element | string)[]): HTMLElement | null;
71
+ /**
72
+ * 获取元素位置信息
73
+ * @param element 元素
74
+ * @returns 位置信息
75
+ */
76
+ getElementPosition(element: Element): {
77
+ top: number;
78
+ left: number;
79
+ width: number;
80
+ height: number;
81
+ };
82
+ /**
83
+ * 检查元素是否在视口中
84
+ * @param element 元素
85
+ * @param threshold 阈值(0-1),默认为0
86
+ * @returns 是否在视口中
87
+ */
88
+ isInViewport(element: Element, threshold?: number): boolean;
89
+ /**
90
+ * 平滑滚动到元素
91
+ * @param element 目标元素
92
+ * @param options 滚动选项
93
+ */
94
+ scrollToElement(element: Element, options?: ScrollIntoViewOptions): void;
95
+ /**
96
+ * 复制文本到剪贴板
97
+ * @param text 要复制的文本
98
+ * @returns 是否复制成功
99
+ */
100
+ copyToClipboard(text: string): Promise<boolean>;
101
+ /**
102
+ * 监听元素大小变化
103
+ * @param element 元素
104
+ * @param callback 回调函数
105
+ * @returns 取消监听的函数
106
+ */
107
+ observeResize(element: Element, callback: (entry: ResizeObserverEntry) => void): () => void;
108
+ /**
109
+ * 导入cdn的方法
110
+ * @param url 需要导入的文件
111
+ * @param name 名称
112
+ */
113
+ importCDN(url: string, name: keyof Window): void;
114
+ };
115
+
116
+ export { domUtils as default };
@@ -0,0 +1,233 @@
1
+ /**
2
+ * DOM工具函数(仅在浏览器环境中可用)
3
+ */
4
+ const domUtils = {
5
+ /**
6
+ * 检查是否在浏览器环境
7
+ * @returns 是否在浏览器环境
8
+ */
9
+ isBrowser() {
10
+ return typeof window !== 'undefined' && typeof document !== 'undefined';
11
+ },
12
+ /**
13
+ * 查询元素
14
+ * @param selector 选择器
15
+ * @param parent 父元素,默认为document
16
+ * @returns 元素或null
17
+ */
18
+ $(selector, parent = document) {
19
+ if (!this.isBrowser())
20
+ return null;
21
+ return parent.querySelector(selector);
22
+ },
23
+ /**
24
+ * 查询所有元素
25
+ * @param selector 选择器
26
+ * @param parent 父元素,默认为document
27
+ * @returns 元素数组
28
+ */
29
+ $$(selector, parent = document) {
30
+ if (!this.isBrowser())
31
+ return [];
32
+ return Array.from(parent.querySelectorAll(selector));
33
+ },
34
+ /**
35
+ * 添加CSS类
36
+ * @param element 元素
37
+ * @param className 类名
38
+ */
39
+ addClass(element, className) {
40
+ if (!this.isBrowser())
41
+ return;
42
+ element.classList.add(className);
43
+ },
44
+ /**
45
+ * 移除CSS类
46
+ * @param element 元素
47
+ * @param className 类名
48
+ */
49
+ removeClass(element, className) {
50
+ if (!this.isBrowser())
51
+ return;
52
+ element.classList.remove(className);
53
+ },
54
+ /**
55
+ * 切换CSS类
56
+ * @param element 元素
57
+ * @param className 类名
58
+ * @returns 是否添加了类
59
+ */
60
+ toggleClass(element, className) {
61
+ if (!this.isBrowser())
62
+ return false;
63
+ return element.classList.toggle(className);
64
+ },
65
+ /**
66
+ * 检查是否包含CSS类
67
+ * @param element 元素
68
+ * @param className 类名
69
+ * @returns 是否包含类
70
+ */
71
+ hasClass(element, className) {
72
+ if (!this.isBrowser())
73
+ return false;
74
+ return element.classList.contains(className);
75
+ },
76
+ /**
77
+ * 设置元素样式
78
+ * @param element 元素
79
+ * @param styles 样式对象
80
+ */
81
+ setStyle(element, styles) {
82
+ if (!this.isBrowser())
83
+ return;
84
+ Object.assign(element.style, styles);
85
+ },
86
+ /**
87
+ * 获取元素样式
88
+ * @param element 元素
89
+ * @param property 样式属性
90
+ * @returns 样式值
91
+ */
92
+ getStyle(element, property) {
93
+ if (!this.isBrowser())
94
+ return '';
95
+ return window.getComputedStyle(element).getPropertyValue(property);
96
+ },
97
+ /**
98
+ * 创建元素
99
+ * @param tagName 标签名
100
+ * @param attributes 属性对象
101
+ * @param children 子元素或文本
102
+ * @returns 创建的元素
103
+ */
104
+ createElement(tagName, attributes = {}, children = []) {
105
+ if (!this.isBrowser())
106
+ return null;
107
+ const element = document.createElement(tagName);
108
+ // 设置属性
109
+ Object.entries(attributes).forEach(([key, value]) => {
110
+ element.setAttribute(key, value);
111
+ });
112
+ // 添加子元素
113
+ children.forEach(child => {
114
+ if (typeof child === 'string') {
115
+ element.appendChild(document.createTextNode(child));
116
+ }
117
+ else {
118
+ element.appendChild(child);
119
+ }
120
+ });
121
+ return element;
122
+ },
123
+ /**
124
+ * 获取元素位置信息
125
+ * @param element 元素
126
+ * @returns 位置信息
127
+ */
128
+ getElementPosition(element) {
129
+ if (!this.isBrowser())
130
+ return { top: 0, left: 0, width: 0, height: 0 };
131
+ const rect = element.getBoundingClientRect();
132
+ return {
133
+ top: rect.top + window.scrollY,
134
+ left: rect.left + window.scrollX,
135
+ width: rect.width,
136
+ height: rect.height
137
+ };
138
+ },
139
+ /**
140
+ * 检查元素是否在视口中
141
+ * @param element 元素
142
+ * @param threshold 阈值(0-1),默认为0
143
+ * @returns 是否在视口中
144
+ */
145
+ isInViewport(element, threshold = 0) {
146
+ if (!this.isBrowser())
147
+ return false;
148
+ const rect = element.getBoundingClientRect();
149
+ const windowHeight = window.innerHeight;
150
+ const windowWidth = window.innerWidth;
151
+ const verticalThreshold = windowHeight * threshold;
152
+ const horizontalThreshold = windowWidth * threshold;
153
+ return (rect.top >= -verticalThreshold &&
154
+ rect.left >= -horizontalThreshold &&
155
+ rect.bottom <= windowHeight + verticalThreshold &&
156
+ rect.right <= windowWidth + horizontalThreshold);
157
+ },
158
+ /**
159
+ * 平滑滚动到元素
160
+ * @param element 目标元素
161
+ * @param options 滚动选项
162
+ */
163
+ scrollToElement(element, options = { behavior: 'smooth', block: 'start' }) {
164
+ if (!this.isBrowser())
165
+ return;
166
+ element.scrollIntoView(options);
167
+ },
168
+ /**
169
+ * 复制文本到剪贴板
170
+ * @param text 要复制的文本
171
+ * @returns 是否复制成功
172
+ */
173
+ async copyToClipboard(text) {
174
+ if (!this.isBrowser())
175
+ return false;
176
+ try {
177
+ if (navigator.clipboard) {
178
+ await navigator.clipboard.writeText(text);
179
+ return true;
180
+ }
181
+ // 降级方案
182
+ const textArea = document.createElement('textarea');
183
+ textArea.value = text;
184
+ textArea.style.position = 'fixed';
185
+ textArea.style.opacity = '0';
186
+ document.body.appendChild(textArea);
187
+ textArea.select();
188
+ const success = document.execCommand('copy');
189
+ document.body.removeChild(textArea);
190
+ return success;
191
+ }
192
+ catch {
193
+ return false;
194
+ }
195
+ },
196
+ /**
197
+ * 监听元素大小变化
198
+ * @param element 元素
199
+ * @param callback 回调函数
200
+ * @returns 取消监听的函数
201
+ */
202
+ observeResize(element, callback) {
203
+ if (!this.isBrowser() || !window.ResizeObserver) {
204
+ return () => { };
205
+ }
206
+ const observer = new ResizeObserver(entries => {
207
+ entries.forEach(callback);
208
+ });
209
+ observer.observe(element);
210
+ return () => observer.disconnect();
211
+ },
212
+ /**
213
+ * 导入cdn的方法
214
+ * @param url 需要导入的文件
215
+ * @param name 名称
216
+ */
217
+ importCDN(url, name) {
218
+ new Promise(resolve => {
219
+ const dom = document.createElement('script');
220
+ dom.src = url;
221
+ dom.type = 'text/javascript';
222
+ dom.onload = () => {
223
+ resolve(window[name]);
224
+ };
225
+ if (document.head !== null) {
226
+ document.head.appendChild(dom);
227
+ }
228
+ });
229
+ }
230
+ };
231
+
232
+ export { domUtils as default };
233
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/browser/domUtils/index.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { default as cookieUtils } from './cookieUtils/index.js';
2
+ export { default as domUtils } from './domUtils/index.js';
3
+ export { default as urlUtils } from './urlUtils/index.js';
@@ -0,0 +1,4 @@
1
+ export { default as cookieUtils } from './cookieUtils/index.js';
2
+ export { default as domUtils } from './domUtils/index.js';
3
+ export { default as urlUtils } from './urlUtils/index.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * URL工具函数
3
+ */
4
+ /**
5
+ * 获取url的参数
6
+ * @param url - URL字符串,默认为当前页面URL
7
+ * @returns 参数对象
8
+ */
9
+ declare function getUrlParams<T = any>(url?: string): T;
10
+ /**
11
+ * 刷新url的状态
12
+ * @param data - 需要更新的参数对象
13
+ */
14
+ declare function refreshUrlState(data: Record<string, string>): void;
15
+ type TSetUrlParams = {
16
+ pathname: string;
17
+ query: Record<string, any>;
18
+ };
19
+ /**
20
+ * 设置URL参数
21
+ * @param params - 包含路径和查询参数的对象
22
+ * @returns 完整的URL字符串
23
+ */
24
+ declare function setUrlParams(params: TSetUrlParams): string;
25
+ /**
26
+ * 构建查询参数字符串
27
+ * 该函数接收一个对象,将对象中的键值对转换为URL编码格式的查询参数字符串。
28
+ * 对于对象中的数组值,采用`repeat`模式,即数组中的每个元素都会单独形成一个键值对。
29
+ * @param params - 包含查询参数的对象,键为字符串类型,值可以是基本类型(如string、number、boolean等)或数组类型
30
+ * @returns 拼接好的URL查询参数字符串
31
+ */
32
+ declare function buildQueryParams(params: any): string;
33
+ /**
34
+ * 获取页面URL中的查询参数
35
+ * 该函数通过解析当前页面URL中 `?` 符号后的部分,提取出所有的查询参数,并以对象形式返回。
36
+ * 如果URL中不存在查询参数部分,则返回一个空对象。
37
+ * @param queryString - 查询字符串
38
+ * @returns 解析后的查询参数对象,键为参数名,值为对应的参数值,重复的参数名将被合并到一个数组中
39
+ */
40
+ declare function getPageQueryParams(queryString: string): any;
41
+ /**
42
+ * 更新URL中的参数 -> 得到新的url
43
+ * @param href - 原始URL
44
+ * @param params - 需要更新的参数
45
+ * @returns 新的URL
46
+ */
47
+ declare function getUpdateUrl(href: string, params: Record<string, string>): string;
48
+ /**
49
+ * 将对象转换为URL参数字符串
50
+ * @param param - 将要转为URL参数字符串的对象
51
+ * @param prefix - URL参数字符串的前缀
52
+ * @param encode - 是否进行URL编码,默认为true
53
+ * @returns URL参数字符串
54
+ */
55
+ declare function urlEncode(param: any, prefix?: string, encode?: boolean): string;
56
+ /**
57
+ * URL工具对象
58
+ */
59
+ declare const urlUtils: {
60
+ getUrlParams: typeof getUrlParams;
61
+ getLocalPath: (url: string, index?: number) => string;
62
+ getWebLocalPath: (index?: number) => string;
63
+ refreshUrlState: typeof refreshUrlState;
64
+ setUrlParams: typeof setUrlParams;
65
+ buildQueryParams: typeof buildQueryParams;
66
+ getPageQueryParams: typeof getPageQueryParams;
67
+ getUpdateUrl: typeof getUpdateUrl;
68
+ urlEncode: typeof urlEncode;
69
+ urlToList: (url?: string) => string[];
70
+ };
71
+
72
+ export { buildQueryParams, urlUtils as default, getPageQueryParams, getUpdateUrl, getUrlParams, refreshUrlState, setUrlParams, urlEncode };
@@ -0,0 +1,248 @@
1
+ /**
2
+ * URL工具函数
3
+ */
4
+ /**
5
+ * 获取url的参数
6
+ * @param url - URL字符串,默认为当前页面URL
7
+ * @returns 参数对象
8
+ */
9
+ function getUrlParams(url) {
10
+ if (!url && typeof window !== 'undefined') {
11
+ url = window.location.href;
12
+ }
13
+ const theRequest = {};
14
+ if (!url) {
15
+ console.error('无效的url');
16
+ return theRequest;
17
+ }
18
+ const queryIndex = url.indexOf('?');
19
+ if (queryIndex !== -1) {
20
+ const str = url.slice(queryIndex + 1);
21
+ const pairs = str.split('&');
22
+ for (const pair of pairs) {
23
+ const [key, value] = pair.split('=');
24
+ if (key) {
25
+ theRequest[decodeURIComponent(key)] = decodeURIComponent(value || '');
26
+ }
27
+ }
28
+ }
29
+ return theRequest;
30
+ }
31
+ /**
32
+ * 从url中获取指定位置的路径字符串
33
+ * @param url - 需要获取的url
34
+ * @param index - 如果是-1则是最后一个,如果是0则是第一个
35
+ * @returns 路径字符串
36
+ */
37
+ const getLocalPath = (url, index = -1) => {
38
+ // url要去掉开头的//和后面的参数。然后用剩下的。如果它有的话
39
+ if (url.startsWith('http')) {
40
+ // 说明是完整的url。现在只需要pathname
41
+ url = new URL(url).pathname;
42
+ }
43
+ // 去掉开头的/
44
+ url = url.replace(/^\//, '');
45
+ // 拆成数组
46
+ const urlArr = url.split('/');
47
+ // 如果是-1则返回最后一个
48
+ if (index === -1) {
49
+ return urlArr[urlArr.length - 1];
50
+ }
51
+ return urlArr[index];
52
+ };
53
+ /**
54
+ * 从当前页面URL中获取指定位置的路径字符串
55
+ * @param index - 如果是-1则是最后一个,如果是0则是第一个,默认是最后一个
56
+ * @returns 路径字符串
57
+ */
58
+ const getWebLocalPath = (index = -1) => {
59
+ if (!window) {
60
+ return '';
61
+ }
62
+ return getLocalPath(window.location.pathname, index);
63
+ };
64
+ /**
65
+ * 刷新url的状态
66
+ * @param data - 需要更新的参数对象
67
+ */
68
+ function refreshUrlState(data) {
69
+ if (!window) {
70
+ return;
71
+ }
72
+ const searchStr = window.location.href;
73
+ // 问号前面的
74
+ const url = searchStr.substring(0, searchStr.indexOf('?'));
75
+ const newUrl = setUrlParams({ pathname: url, query: data });
76
+ window.history.replaceState(null, '', newUrl);
77
+ }
78
+ /**
79
+ * 设置URL参数
80
+ * @param params - 包含路径和查询参数的对象
81
+ * @returns 完整的URL字符串
82
+ */
83
+ function setUrlParams(params) {
84
+ const { query } = params;
85
+ let { pathname } = params;
86
+ if (typeof query === 'object') {
87
+ // 开始拼接
88
+ Object.keys(query).forEach((key, index) => {
89
+ // 判断数据是否存在
90
+ if (query[key] !== undefined && query[key] !== null && query[key] !== '') {
91
+ if (index === 0) {
92
+ pathname = `${pathname}?${key}=${query[key]}`;
93
+ }
94
+ else {
95
+ pathname = `${pathname}&${key}=${query[key]}`;
96
+ }
97
+ }
98
+ });
99
+ }
100
+ return pathname;
101
+ }
102
+ /**
103
+ * 构建查询参数字符串
104
+ * 该函数接收一个对象,将对象中的键值对转换为URL编码格式的查询参数字符串。
105
+ * 对于对象中的数组值,采用`repeat`模式,即数组中的每个元素都会单独形成一个键值对。
106
+ * @param params - 包含查询参数的对象,键为字符串类型,值可以是基本类型(如string、number、boolean等)或数组类型
107
+ * @returns 拼接好的URL查询参数字符串
108
+ */
109
+ function buildQueryParams(params) {
110
+ const paramPairs = [];
111
+ for (const key in params) {
112
+ const value = params[key];
113
+ if (Array.isArray(value)) {
114
+ value.forEach(v => {
115
+ paramPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(v)}`);
116
+ });
117
+ }
118
+ else {
119
+ paramPairs.push(`${encodeURIComponent(key)}=${encodeURIComponent(value)}`);
120
+ }
121
+ }
122
+ return paramPairs.join('&');
123
+ }
124
+ /**
125
+ * 获取页面URL中的查询参数
126
+ * 该函数通过解析当前页面URL中 `?` 符号后的部分,提取出所有的查询参数,并以对象形式返回。
127
+ * 如果URL中不存在查询参数部分,则返回一个空对象。
128
+ * @param queryString - 查询字符串
129
+ * @returns 解析后的查询参数对象,键为参数名,值为对应的参数值,重复的参数名将被合并到一个数组中
130
+ */
131
+ function getPageQueryParams(queryString) {
132
+ // 如果没有查询字符串,说明没有查询参数,直接返回一个空对象
133
+ if (!queryString) {
134
+ return {};
135
+ }
136
+ const queryParams = {};
137
+ // 将查询字符串按 '&' 分割成多个键值对
138
+ const pairs = queryString.split('&');
139
+ pairs.forEach(pair => {
140
+ // 对每一个键值对按 '=' 分开,分别得到键和值
141
+ const [key, value] = pair.split('=');
142
+ // 对键和值进行URL解码
143
+ const decodedKey = decodeURIComponent(key);
144
+ const decodedValue = decodeURIComponent(value);
145
+ // 处理重复参数:如果某个键已经存在于 queryParams 中
146
+ if (queryParams[decodedKey]) {
147
+ // 检查它是不是数组
148
+ if (Array.isArray(queryParams[decodedKey])) {
149
+ // 如果是数组,直接把新值 push 进去
150
+ queryParams[decodedKey].push(decodedValue);
151
+ }
152
+ else {
153
+ // 如果不是数组,把它变成数组,再把新值 push 进去
154
+ queryParams[decodedKey] = [queryParams[decodedKey], decodedValue];
155
+ }
156
+ }
157
+ else {
158
+ // 如果是新键,直接赋值
159
+ queryParams[decodedKey] = decodedValue;
160
+ }
161
+ });
162
+ return queryParams;
163
+ }
164
+ /**
165
+ * 更新URL中的参数 -> 得到新的url
166
+ * @param href - 原始URL
167
+ * @param params - 需要更新的参数
168
+ * @returns 新的URL
169
+ */
170
+ function getUpdateUrl(href, params) {
171
+ if (!window) {
172
+ return '';
173
+ }
174
+ const searchStr = href || window.location.href;
175
+ const oldParams = getUrlParams(searchStr);
176
+ const newParams = { ...oldParams, ...params };
177
+ // 问号前面的
178
+ const url = searchStr.substring(0, searchStr.indexOf('?'));
179
+ return setUrlParams({ pathname: url, query: newParams });
180
+ }
181
+ /**
182
+ * 将对象转换为URL参数字符串
183
+ * @param param - 将要转为URL参数字符串的对象
184
+ * @param prefix - URL参数字符串的前缀
185
+ * @param encode - 是否进行URL编码,默认为true
186
+ * @returns URL参数字符串
187
+ */
188
+ function urlEncode(param, prefix, encode = true) {
189
+ if (param === null)
190
+ return '';
191
+ let paramStr = '';
192
+ const t = typeof param;
193
+ if (t === 'string' || t === 'number' || t === 'boolean') {
194
+ paramStr += `&${prefix}=${encode ? encodeURIComponent(param) : param}`;
195
+ }
196
+ else {
197
+ Object.keys(param).forEach(key => {
198
+ key = prefix === null ? key : prefix + (param instanceof Array ? `[${key}]` : `.${key}`);
199
+ paramStr += urlEncode(param[key], key, encode);
200
+ });
201
+ }
202
+ return paramStr;
203
+ }
204
+ /**
205
+ * URL转换为路径列表
206
+ * @param url - URL字符串
207
+ * @returns 路径数组
208
+ */
209
+ const urlToList = (url) => {
210
+ if (!url || url === '/') {
211
+ return ['/'];
212
+ }
213
+ // 去掉协议、域名、查询串和 hash,只保留 pathname
214
+ let pathname = url;
215
+ try {
216
+ // 如果是完整 URL,用 URL 对象解析
217
+ if (url.startsWith('http://') || url.startsWith('https://')) {
218
+ pathname = new URL(url).pathname;
219
+ }
220
+ }
221
+ catch {
222
+ // 如果解析失败,继续用原字符串
223
+ }
224
+ // 去掉开头的 /
225
+ pathname = pathname.replace(/^\/+/, '');
226
+ // 拆成数组并过滤空串
227
+ const urlList = pathname.split('/').filter(Boolean);
228
+ // 逐级拼接返回
229
+ return urlList.map((_, index) => `/${urlList.slice(0, index + 1).join('/')}`);
230
+ };
231
+ /**
232
+ * URL工具对象
233
+ */
234
+ const urlUtils = {
235
+ getUrlParams,
236
+ getLocalPath,
237
+ getWebLocalPath,
238
+ refreshUrlState,
239
+ setUrlParams,
240
+ buildQueryParams,
241
+ getPageQueryParams,
242
+ getUpdateUrl,
243
+ urlEncode,
244
+ urlToList
245
+ };
246
+
247
+ export { buildQueryParams, urlUtils as default, getLocalPath, getPageQueryParams, getUpdateUrl, getUrlParams, getWebLocalPath, refreshUrlState, setUrlParams, urlEncode, urlToList };
248
+ //# sourceMappingURL=index.js.map