@vope/utils 1.4.2 → 1.4.4

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 (58) hide show
  1. package/README.md +0 -20
  2. package/cjs/index.js +583 -56
  3. package/lib/clamp.js +4 -2
  4. package/lib/classnames.js +8 -5
  5. package/lib/compare/version.js +4 -2
  6. package/lib/compare/weak-equal.js +4 -2
  7. package/lib/convert/json.js +4 -2
  8. package/lib/convert/object.js +4 -2
  9. package/lib/convert/strings.js +4 -2
  10. package/lib/encoding.js +4 -2
  11. package/lib/index.js +50 -24
  12. package/lib/input-regex.js +4 -2
  13. package/lib/is/class.js +4 -2
  14. package/lib/is/empty.js +4 -2
  15. package/lib/is/null.js +4 -2
  16. package/lib/memory/basic.js +4 -2
  17. package/lib/memory/list.js +4 -2
  18. package/lib/memory/power.js +4 -2
  19. package/lib/memory/type.d.js +0 -1
  20. package/lib/once.js +4 -2
  21. package/lib/power/decon.js +4 -2
  22. package/lib/rotate/angle.js +4 -2
  23. package/lib/rotate/rad.js +4 -2
  24. package/lib/table/flex.js +101 -0
  25. package/lib/union.js +4 -2
  26. package/lib/url/join.js +4 -2
  27. package/lib/url/params.js +4 -2
  28. package/lib/wait.js +4 -2
  29. package/package.json +24 -30
  30. package/types/classnames.d.ts +1 -1
  31. package/types/index.d.ts +1 -0
  32. package/types/rotate/angle.d.ts +1 -1
  33. package/types/rotate/rad.d.ts +1 -1
  34. package/types/table/flex.d.ts +43 -0
  35. package/cjs/clamp.js +0 -31
  36. package/cjs/classnames.js +0 -36
  37. package/cjs/compare/version.js +0 -38
  38. package/cjs/compare/weak-equal.js +0 -54
  39. package/cjs/convert/json.js +0 -28
  40. package/cjs/convert/object.js +0 -28
  41. package/cjs/convert/strings.js +0 -28
  42. package/cjs/encoding.js +0 -77
  43. package/cjs/input-regex.js +0 -29
  44. package/cjs/is/class.js +0 -49
  45. package/cjs/is/empty.js +0 -36
  46. package/cjs/is/null.js +0 -25
  47. package/cjs/memory/basic.js +0 -168
  48. package/cjs/memory/list.js +0 -42
  49. package/cjs/memory/power.js +0 -43
  50. package/cjs/memory/type.d.js +0 -16
  51. package/cjs/once.js +0 -28
  52. package/cjs/power/decon.js +0 -43
  53. package/cjs/rotate/angle.js +0 -36
  54. package/cjs/rotate/rad.js +0 -32
  55. package/cjs/union.js +0 -44
  56. package/cjs/url/join.js +0 -31
  57. package/cjs/url/params.js +0 -45
  58. package/cjs/wait.js +0 -24
package/README.md CHANGED
@@ -3,26 +3,6 @@
3
3
  发布构建
4
4
  ```
5
5
 
6
- ### cjs
7
- ```
8
- 构建cjs版本
9
- ```
10
-
11
- ### esm
12
- ```
13
- 构建esm版本
14
- ```
15
-
16
- ### trove
17
- ```
18
- 构建统一导出入口(即生成src/index.ts文件)
19
- ```
20
-
21
- ### devs
22
- ```
23
- 构建开发环境工具代码
24
- ```
25
-
26
6
  ### test
27
7
  ```
28
8
  运行测试用例
package/cjs/index.js CHANGED
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,62 +15,591 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
29
21
  var src_exports = {};
30
22
  __export(src_exports, {
31
- MemoryBasic: () => import_basic.default,
32
- MemoryList: () => import_list.default,
33
- MemoryPower: () => import_power.default,
34
- Union: () => import_union.default,
35
- clamp: () => import_clamp.default,
36
- classnames: () => import_classnames.default,
37
- compareVersion: () => import_version.default,
38
- connectURLParams: () => import_params.default,
39
- deconPowersSum: () => import_decon.default,
40
- deepWeakEqual: () => import_weak_equal.default,
41
- getEncoding: () => import_encoding.default,
42
- hash8json: () => import_json.default,
43
- hash8object: () => import_object.default,
44
- hash8strings: () => import_strings.default,
45
- inputRegex: () => import_input_regex.default,
46
- isClass: () => import_class.default,
47
- isEmpty: () => import_empty.default,
48
- isNull: () => import_null.default,
49
- joinPaths: () => import_join.default,
50
- once: () => import_once.default,
51
- rotateAngle: () => import_angle.default,
52
- rotateRad: () => import_rad.default,
53
- wait: () => import_wait.default
23
+ FlexTable: () => FlexTable,
24
+ MemoryBasic: () => MemoryBasic,
25
+ MemoryList: () => MemoryList,
26
+ MemoryPower: () => MemoryPower,
27
+ Union: () => Union,
28
+ clamp: () => clamp_default,
29
+ classnames: () => classnames_default,
30
+ compareVersion: () => version_default,
31
+ connectURLParams: () => params_default,
32
+ deconPowersSum: () => decon_default,
33
+ deepWeakEqual: () => weak_equal_default,
34
+ getEncoding: () => encoding_default,
35
+ hash8json: () => json_default,
36
+ hash8object: () => object_default,
37
+ hash8strings: () => strings_default,
38
+ inputRegex: () => input_regex_default,
39
+ isClass: () => class_default,
40
+ isEmpty: () => empty_default,
41
+ isNull: () => null_default,
42
+ joinPaths: () => join_default,
43
+ once: () => once_default,
44
+ rotateAngle: () => angle_default,
45
+ rotateRad: () => rad_default,
46
+ wait: () => wait_default
54
47
  });
55
48
  module.exports = __toCommonJS(src_exports);
56
- var import_clamp = __toESM(require("./clamp"), 1);
57
- var import_classnames = __toESM(require("./classnames"), 1);
58
- var import_version = __toESM(require("./compare/version"), 1);
59
- var import_weak_equal = __toESM(require("./compare/weak-equal"), 1);
60
- var import_json = __toESM(require("./convert/json"), 1);
61
- var import_object = __toESM(require("./convert/object"), 1);
62
- var import_strings = __toESM(require("./convert/strings"), 1);
63
- var import_encoding = __toESM(require("./encoding"), 1);
64
- var import_input_regex = __toESM(require("./input-regex"), 1);
65
- var import_class = __toESM(require("./is/class"), 1);
66
- var import_empty = __toESM(require("./is/empty"), 1);
67
- var import_null = __toESM(require("./is/null"), 1);
68
- var import_basic = __toESM(require("./memory/basic"), 1);
69
- var import_list = __toESM(require("./memory/list"), 1);
70
- var import_power = __toESM(require("./memory/power"), 1);
71
- var import_once = __toESM(require("./once"), 1);
72
- var import_decon = __toESM(require("./power/decon"), 1);
73
- var import_angle = __toESM(require("./rotate/angle"), 1);
74
- var import_rad = __toESM(require("./rotate/rad"), 1);
75
- var import_union = __toESM(require("./union"), 1);
76
- var import_join = __toESM(require("./url/join"), 1);
77
- var import_params = __toESM(require("./url/params"), 1);
78
- var import_wait = __toESM(require("./wait"), 1);
49
+
50
+ // src/clamp.ts
51
+ var clamp_default = (value, min, max) => {
52
+ if (min > max) {
53
+ const swap = max;
54
+ max = min;
55
+ min = swap;
56
+ }
57
+ return Math.min(max, Math.max(min, value));
58
+ };
59
+
60
+ // src/classnames.ts
61
+ var import_lodash_es = require("lodash-es");
62
+ var add = (a, b) => a ? a + " " + b : b;
63
+ var classnames_default = (...list) => list.reduce((caches, data) => {
64
+ if ((0, import_lodash_es.isString)(data)) {
65
+ data && (caches = add(caches, data));
66
+ } else if (Array.isArray(data)) {
67
+ data.forEach((value) => value && (0, import_lodash_es.isString)(value) && (caches = add(caches, value)));
68
+ } else if (!(0, import_lodash_es.isBoolean)(data)) {
69
+ for (const key in data) {
70
+ key && data[key] && (caches = add(caches, key));
71
+ }
72
+ }
73
+ return caches;
74
+ }, "");
75
+
76
+ // src/compare/version.ts
77
+ var CHAR = ".";
78
+ var compareVersion = (from, to) => {
79
+ const froms = from.split(CHAR);
80
+ const tos = to.split(CHAR);
81
+ for (let i = 0, max = Math.max(froms.length, tos.length); i < max; i++) {
82
+ const fromV = +froms[i] || 0;
83
+ const toV = +tos[i] || 0;
84
+ if (fromV > toV)
85
+ return -1;
86
+ if (fromV < toV)
87
+ return 1;
88
+ }
89
+ return 0;
90
+ };
91
+ var version_default = compareVersion;
92
+
93
+ // src/compare/weak-equal.ts
94
+ var deepWeakEqual = (from, to) => {
95
+ if (typeof from !== "object" || from === null || typeof to !== "object" || to === null)
96
+ return from === to;
97
+ if (Array.isArray(from) && Array.isArray(to)) {
98
+ if (from.length !== to.length)
99
+ return false;
100
+ return !from.some((t1, index) => {
101
+ if (!deepWeakEqual(t1, to[index])) {
102
+ return true;
103
+ }
104
+ });
105
+ } else {
106
+ const caches = {};
107
+ for (const key in from) {
108
+ if (!deepWeakEqual(from[key], to[key])) {
109
+ return false;
110
+ } else {
111
+ caches[key] = key;
112
+ }
113
+ }
114
+ for (const key in to) {
115
+ if (key in caches)
116
+ continue;
117
+ if (!deepWeakEqual(from[key], to[key])) {
118
+ return false;
119
+ }
120
+ }
121
+ }
122
+ return true;
123
+ };
124
+ var weak_equal_default = deepWeakEqual;
125
+
126
+ // src/convert/json.ts
127
+ var hash8json = (list, key) => list.reduce((caches, data) => {
128
+ caches[data[key]] = data;
129
+ return caches;
130
+ }, {});
131
+ var json_default = hash8json;
132
+
133
+ // src/convert/object.ts
134
+ var hash8object = (list, key) => list.reduce((caches, data) => {
135
+ caches.set(data[key], data);
136
+ return caches;
137
+ }, /* @__PURE__ */ new Map());
138
+ var object_default = hash8object;
139
+
140
+ // src/convert/strings.ts
141
+ var hash8strings = (list) => list.reduce((caches, data, index) => {
142
+ caches[data] = index;
143
+ return caches;
144
+ }, {});
145
+ var strings_default = hash8strings;
146
+
147
+ // src/encoding.ts
148
+ var utf8_first_prefix = /^1{2,}/g;
149
+ var utf8_other_prefix = /^10/;
150
+ var Encodes = {
151
+ UTF_8: "utf-8",
152
+ UTF_16LE: "utf-16le",
153
+ UTF_16BE: "utf-16be",
154
+ GBK: "gbk"
155
+ };
156
+ var defaults = {
157
+ utf8: [239, 187, 191]
158
+ };
159
+ var equal = (uint, list) => {
160
+ if (uint.length !== list.length)
161
+ return false;
162
+ return !uint.some((value, index) => value !== list[index]);
163
+ };
164
+ var getEncoding = (uint, limit = 1024) => {
165
+ let encoding;
166
+ let offset = 0;
167
+ if (equal(uint.slice(0, 3), defaults.utf8)) {
168
+ offset = defaults.utf8.length;
169
+ encoding = Encodes.UTF_8;
170
+ } else if (equal(uint.slice(0, 2), [255, 254])) {
171
+ encoding = Encodes.UTF_16LE;
172
+ } else if (equal(uint.slice(0, 2), [254, 255])) {
173
+ encoding = Encodes.UTF_16BE;
174
+ } else {
175
+ let isBreak = false;
176
+ top:
177
+ for (let i = 0; i < Math.min(uint.length, limit); i++) {
178
+ const data = uint[i];
179
+ if (data < 128)
180
+ continue;
181
+ const match = data.toString(2).match(utf8_first_prefix);
182
+ if (match) {
183
+ for (let m = 0; m < match[0].length - 1; m++) {
184
+ const target = uint[++i];
185
+ if (target == void 0 || !utf8_other_prefix.test(target.toString(2))) {
186
+ encoding = Encodes.GBK;
187
+ isBreak = true;
188
+ break top;
189
+ }
190
+ }
191
+ } else {
192
+ encoding = Encodes.GBK;
193
+ isBreak = true;
194
+ break;
195
+ }
196
+ }
197
+ isBreak || (encoding = Encodes.UTF_8);
198
+ }
199
+ return { encoding, offset };
200
+ };
201
+ var encoding_default = getEncoding;
202
+
203
+ // src/input-regex.ts
204
+ var RE_REGEX = /[$()*+.[?\\^{|]/g;
205
+ var RE_STRING = /[$()*+.[?\\^{|-]/g;
206
+ function inputRegex(text, flags) {
207
+ return flags === false ? text.replace(RE_STRING, ($0) => "\\" + $0) : new RegExp(text.replace(RE_REGEX, ($0) => "\\" + $0), flags);
208
+ }
209
+ var input_regex_default = inputRegex;
210
+
211
+ // src/is/class.ts
212
+ var re_anonymous = /^function\s+\(|^function\s+anonymous\(/;
213
+ var re_function = /^function\s+[A-Z]/;
214
+ var re_this = /\b\(this\b|\bthis[\.\[]\b/;
215
+ var re_check = /classCallCheck\(this/;
216
+ var re_default = /^function\sdefault_\d+\s*\(/;
217
+ var isClass = (value, strict = true) => {
218
+ if (typeof value !== "function")
219
+ return false;
220
+ const proto = value.prototype;
221
+ if (!proto || proto.constructor !== value)
222
+ return false;
223
+ const str = value.toString();
224
+ if (str.slice(0, 5) === "class" || Object.getOwnPropertyNames(proto).length >= 2)
225
+ return true;
226
+ if (re_anonymous.test(str))
227
+ return false;
228
+ if (strict && re_function.test(str))
229
+ return true;
230
+ if (re_this.test(str)) {
231
+ if (!strict || re_check.test(str))
232
+ return true;
233
+ return re_default.test(str);
234
+ }
235
+ return false;
236
+ };
237
+ var class_default = isClass;
238
+
239
+ // src/is/null.ts
240
+ var isNull = (value) => value === void 0 || value === null;
241
+ var null_default = isNull;
242
+
243
+ // src/is/empty.ts
244
+ var isEmpty = (value) => null_default(value) || value === "";
245
+ var empty_default = isEmpty;
246
+
247
+ // src/memory/basic.ts
248
+ var MemoryBasic = class {
249
+ /**
250
+ * @param key 用于对数据进行分类的key
251
+ * @param config
252
+ */
253
+ constructor(key, config) {
254
+ this.key = key;
255
+ this.#mount = config.mount;
256
+ this.#reflex = config.reflex;
257
+ }
258
+ #mount;
259
+ #reflex;
260
+ list = [];
261
+ memorys = /* @__PURE__ */ new Map();
262
+ /**
263
+ * 返回存储长度
264
+ */
265
+ get size() {
266
+ return this.list.length;
267
+ }
268
+ getType(data) {
269
+ const { key } = this;
270
+ return typeof key === "function" ? key(data) : data[key];
271
+ }
272
+ push(...list) {
273
+ const { memorys } = this;
274
+ list.forEach((data) => {
275
+ const type = this.getType(data);
276
+ const memory = memorys.get(type);
277
+ const index = this.list.push(data) - 1;
278
+ const result = this.#mount(index, memory);
279
+ memory === result || memorys.set(type, result);
280
+ });
281
+ return this;
282
+ }
283
+ /**
284
+ * 遍历所有存储数据(按入栈顺序)
285
+ */
286
+ forEach(callback) {
287
+ this.list.forEach(callback);
288
+ return this;
289
+ }
290
+ /**
291
+ * 遍历所有存储类型
292
+ */
293
+ forType(callback) {
294
+ const { memorys, list } = this;
295
+ for (const [type, memory] of memorys) {
296
+ const caches = this.#reflex(memory).map((index) => list[index]);
297
+ callback(caches, type);
298
+ }
299
+ return this;
300
+ }
301
+ /**
302
+ * 检测存储是否包含某种类型
303
+ */
304
+ includes(type) {
305
+ return this.memorys.has(type);
306
+ }
307
+ /**
308
+ * 获取指定类型存储数据
309
+ */
310
+ get(type) {
311
+ const memory = this.memorys.get(type);
312
+ return memory === void 0 ? null : this.#reflex(memory).map((count) => this.list[count]);
313
+ }
314
+ /**
315
+ * 删除指定存储数据
316
+ */
317
+ delete(data) {
318
+ const { memorys, list } = this;
319
+ let index = -1;
320
+ if (!list.some((value, i) => {
321
+ if (data === value) {
322
+ index = i;
323
+ list.splice(index, 1);
324
+ const type = this.getType(value);
325
+ const memory = this.#reflex(memorys.get(type));
326
+ if (memory.length === 1) {
327
+ memorys.delete(type);
328
+ } else {
329
+ memory.some((count, j) => {
330
+ if (count === i) {
331
+ memory.splice(j, 1);
332
+ return true;
333
+ }
334
+ });
335
+ }
336
+ return true;
337
+ }
338
+ }))
339
+ return this;
340
+ for (const [type, target] of memorys) {
341
+ const memory = this.#reflex(target);
342
+ memory.forEach((value, index2) => {
343
+ if (value >= index2) {
344
+ memory[index2] = value - 1;
345
+ }
346
+ });
347
+ if (memory !== target) {
348
+ let reactor;
349
+ memory.forEach((count) => {
350
+ reactor = this.#mount(count, reactor);
351
+ });
352
+ memorys.set(type, reactor);
353
+ }
354
+ }
355
+ return this;
356
+ }
357
+ /**
358
+ * 删除指定类型存储数据
359
+ */
360
+ deleteType(type) {
361
+ const { memorys, list } = this;
362
+ if (!memorys.has(type))
363
+ return this;
364
+ const local = strings_default(this.#reflex(memorys.get(type)));
365
+ const Memory = this.constructor;
366
+ const imitator = new Memory(this.key);
367
+ list.forEach((data, index) => {
368
+ index in local || imitator.push(data);
369
+ });
370
+ this.list = imitator.list;
371
+ this.memorys = imitator.memorys;
372
+ return this;
373
+ }
374
+ /**
375
+ * 清理存储
376
+ */
377
+ clear() {
378
+ this.list = [];
379
+ this.memorys.clear();
380
+ }
381
+ };
382
+
383
+ // src/memory/list.ts
384
+ var MemoryList = class extends MemoryBasic {
385
+ constructor(key) {
386
+ super(key, {
387
+ mount: (index, reactor) => reactor ? (reactor.push(index), reactor) : [index],
388
+ reflex: (reactor) => reactor
389
+ });
390
+ }
391
+ };
392
+
393
+ // src/power/decon.ts
394
+ var ERROR_MESSAGE = {
395
+ INT: "\u53C2\u6570\u5FC5\u987B\u662F\u6574\u6570",
396
+ MIN: "\u591A\u4E2A2\u7684\u6B63\u6574\u6570\u5E42(\u4E24\u4E24\u4E0D\u76F8\u7B49)\u4E4B\u548C\u5FC5\u5B9A\u5927\u4E8E\u7B49\u4E8E1"
397
+ };
398
+ var deconPowersSum = (sum, sort) => {
399
+ if (sum < 1) {
400
+ throw new Error(ERROR_MESSAGE.MIN);
401
+ } else if (sum !== Math.floor(sum)) {
402
+ throw new Error(ERROR_MESSAGE.INT);
403
+ }
404
+ const list = [];
405
+ let cache = sum;
406
+ while (cache) {
407
+ const power = Math.log2(cache) ^ 0;
408
+ list.push(power);
409
+ cache -= Math.pow(2, power);
410
+ }
411
+ return sort === "asc" ? list.reverse() : list;
412
+ };
413
+ var decon_default = deconPowersSum;
414
+
415
+ // src/memory/power.ts
416
+ var MemoryPower = class extends MemoryBasic {
417
+ constructor(key) {
418
+ super(key, {
419
+ mount: (index, reactor) => (reactor || 0) + 2 ** index,
420
+ reflex: (reactor) => decon_default(reactor, "asc")
421
+ });
422
+ }
423
+ };
424
+
425
+ // src/once.ts
426
+ var once_default = (func, thisArg) => {
427
+ let local;
428
+ let inited = false;
429
+ return (...list) => inited ? local : (inited = true, local = func.apply(thisArg, list));
430
+ };
431
+
432
+ // src/rotate/rad.ts
433
+ var rotateRad = (from, rad, visit = [0, 0]) => {
434
+ const x = from[0] - visit[0];
435
+ const y = from[1] - visit[1];
436
+ return [
437
+ x * Math.cos(rad) + y * Math.sin(rad) + visit[0],
438
+ y * Math.cos(rad) - x * Math.sin(rad) + visit[1]
439
+ ];
440
+ };
441
+ var rad_default = rotateRad;
442
+
443
+ // src/rotate/angle.ts
444
+ var rotateAngle = (from, angle, visit) => rad_default(from, angle / 180 * Math.PI, visit);
445
+ var angle_default = rotateAngle;
446
+
447
+ // src/table/flex.ts
448
+ var FlexTable = class {
449
+ #data = [];
450
+ /**
451
+ * 行数
452
+ */
453
+ get rowspan() {
454
+ return this.#data.length;
455
+ }
456
+ /**
457
+ * 总数据长度
458
+ */
459
+ get length() {
460
+ return this.#data.reduce((length, list) => length + list.length, 0);
461
+ }
462
+ constructor() {
463
+ this.newline();
464
+ }
465
+ /**
466
+ * 创建新行
467
+ */
468
+ newline() {
469
+ this.#data.push([]);
470
+ return this;
471
+ }
472
+ push(value) {
473
+ const rowspan = this.#data.length;
474
+ rowspan || this.newline();
475
+ this.#data[rowspan - 1].push(value);
476
+ return this;
477
+ }
478
+ /**
479
+ * 替换指定位置的数据
480
+ * @description 指定位置必需为有效位置
481
+ */
482
+ replace(rowspan, colspan, value) {
483
+ const list = this.#data[rowspan];
484
+ list && colspan in list && (list[colspan] = value);
485
+ return this;
486
+ }
487
+ /**
488
+ * 从指定位置开始移除或者替换/添加元素
489
+ * @description 指定位置必需为有效位置
490
+ */
491
+ splice(rowspan, colspan, deleteCount, ...values) {
492
+ const list = this.#data[rowspan];
493
+ list && colspan in list && list.splice(colspan, deleteCount, ...values);
494
+ return this;
495
+ }
496
+ pop() {
497
+ const data = this.#data;
498
+ const rowspan = data.length;
499
+ if (!rowspan)
500
+ return null;
501
+ const list = data[rowspan - 1];
502
+ if (list.length) {
503
+ return list.pop();
504
+ } else {
505
+ data.pop();
506
+ return this.pop();
507
+ }
508
+ }
509
+ /**
510
+ * 遍历数据
511
+ */
512
+ each(callback) {
513
+ const data = this.#data;
514
+ outloop:
515
+ for (let i = 0; i < data.length; i++) {
516
+ const list = data[i];
517
+ for (let j = 0; j < list.length; j++) {
518
+ if (callback(list[j], i, j) === false)
519
+ break outloop;
520
+ }
521
+ }
522
+ }
523
+ /**
524
+ * 反序遍历数据
525
+ */
526
+ reverseEach(callback) {
527
+ const data = this.#data;
528
+ outloop:
529
+ for (let i = data.length; i; ) {
530
+ const list = data[--i];
531
+ for (let j = list.length; j; ) {
532
+ if (callback(list[--j], i, j) === false)
533
+ break outloop;
534
+ }
535
+ }
536
+ }
537
+ /**
538
+ * 清空数据
539
+ */
540
+ clear() {
541
+ if (this.#data.length) {
542
+ this.#data = [];
543
+ }
544
+ }
545
+ };
546
+
547
+ // src/union.ts
548
+ var Union = class {
549
+ constructor(key, formatter) {
550
+ this.key = key;
551
+ this.formatter = formatter;
552
+ }
553
+ #data = {};
554
+ #options = {};
555
+ get data() {
556
+ return this.#data;
557
+ }
558
+ get options() {
559
+ return this.#options;
560
+ }
561
+ add(data) {
562
+ const key = data[this.key];
563
+ const result = this.formatter(data);
564
+ this.#data[key] = result.data;
565
+ this.#options[key] = result.option;
566
+ return this;
567
+ }
568
+ };
569
+
570
+ // src/url/join.ts
571
+ var re = /([^:])\/{2,}/g;
572
+ var joinPaths = (...list) => {
573
+ const { length } = list;
574
+ if (length === 0)
575
+ return "";
576
+ return length === 1 ? list[0] : list.join("/").replace(re, ($0, $1) => `${$1}/`);
577
+ };
578
+ var join_default = joinPaths;
579
+
580
+ // src/url/params.ts
581
+ var connectURLParams = (url, params, isOpenType) => {
582
+ if (!params)
583
+ return url;
584
+ const list = [];
585
+ for (const key in params) {
586
+ const value = params[key];
587
+ if (value === void 0) {
588
+ list.push(key);
589
+ } else if (Array.isArray(value)) {
590
+ list.push(
591
+ key + "=" + (isOpenType ? JSON.stringify(value).slice(1, -1) : value.join(","))
592
+ );
593
+ } else {
594
+ list.push(key + "=" + (isOpenType ? JSON.stringify(value) : value.toString()));
595
+ }
596
+ }
597
+ if (!list.length)
598
+ return url;
599
+ const caches = list.join("&");
600
+ return url.includes("?") ? url + "&" + caches : url + "?" + caches;
601
+ };
602
+ var params_default = connectURLParams;
603
+
604
+ // src/wait.ts
605
+ var wait_default = (delay = 0) => new Promise((resolve) => setTimeout(resolve, delay));
package/lib/clamp.js CHANGED
@@ -1,5 +1,4 @@
1
- "use strict";
2
- export default (value, min, max) => {
1
+ var clamp_default = (value, min, max) => {
3
2
  if (min > max) {
4
3
  const swap = max;
5
4
  max = min;
@@ -7,3 +6,6 @@ export default (value, min, max) => {
7
6
  }
8
7
  return Math.min(max, Math.max(min, value));
9
8
  };
9
+ export {
10
+ clamp_default as default
11
+ };