umt 1.4.0 → 1.4.2

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 (104) hide show
  1. package/module/Array/compareFunctionDefault.d.ts +1 -0
  2. package/module/Array/compareFunctionDefault.js +2 -0
  3. package/module/Array/compareFunctionDefault.js.map +1 -0
  4. package/module/Array/index.d.ts +3 -0
  5. package/module/Array/index.js +3 -0
  6. package/module/Array/index.js.map +1 -1
  7. package/module/Array/insertionSort.d.ts +22 -0
  8. package/module/Array/insertionSort.js +35 -0
  9. package/module/Array/insertionSort.js.map +1 -0
  10. package/module/Array/mergeSort.d.ts +8 -0
  11. package/module/Array/mergeSort.js +39 -0
  12. package/module/Array/mergeSort.js.map +1 -0
  13. package/module/Array/quickSort.d.ts +1 -2
  14. package/module/Array/quickSort.js +32 -14
  15. package/module/Array/quickSort.js.map +1 -1
  16. package/module/Array/timSort.d.ts +13 -0
  17. package/module/Array/timSort.js +79 -0
  18. package/module/Array/timSort.js.map +1 -0
  19. package/module/Simple/Array/quickSortSimple.js +2 -1
  20. package/module/Simple/Array/quickSortSimple.js.map +1 -1
  21. package/module/Validate/array/core.d.ts +2 -0
  22. package/module/Validate/array/core.js +31 -0
  23. package/module/Validate/array/core.js.map +1 -0
  24. package/module/Validate/array/index.d.ts +1 -0
  25. package/module/Validate/array/index.js +2 -0
  26. package/module/Validate/array/index.js.map +1 -0
  27. package/module/Validate/core/index.d.ts +1 -1
  28. package/module/Validate/core/index.js +1 -1
  29. package/module/Validate/core/index.js.map +1 -1
  30. package/module/Validate/index.d.ts +1 -0
  31. package/module/Validate/index.js +1 -0
  32. package/module/Validate/index.js.map +1 -1
  33. package/module/Validate/number/core.d.ts +1 -1
  34. package/module/Validate/number/core.js.map +1 -1
  35. package/module/Validate/object/core.d.ts +2 -2
  36. package/module/Validate/object/core.js +1 -1
  37. package/module/Validate/object/core.js.map +1 -1
  38. package/module/Validate/string/core.d.ts +1 -1
  39. package/module/Validate/string/core.js.map +1 -1
  40. package/module/Validate/string/index.d.ts +1 -0
  41. package/module/Validate/string/index.js +1 -0
  42. package/module/Validate/string/index.js.map +1 -1
  43. package/module/Validate/string/regexMatch.d.ts +2 -0
  44. package/module/Validate/string/regexMatch.js +8 -0
  45. package/module/Validate/string/regexMatch.js.map +1 -0
  46. package/module/Validate/type.d.ts +2 -2
  47. package/package.json +3 -2
  48. package/module/Array/ArrayWrapper.d.ts +0 -7
  49. package/module/Array/ArrayWrapper.js +0 -21
  50. package/module/Array/ArrayWrapper.js.map +0 -1
  51. package/module/Array/arrayMap.d.ts +0 -1
  52. package/module/Array/arrayMap.js +0 -8
  53. package/module/Array/arrayMap.js.map +0 -1
  54. package/module/Async/Array/quickSortAsync.d.ts +0 -10
  55. package/module/Async/Array/quickSortAsync.js +0 -25
  56. package/module/Async/Array/quickSortAsync.js.map +0 -1
  57. package/module/Async/Math/isPrimeNumberAsync.d.ts +0 -7
  58. package/module/Async/Math/isPrimeNumberAsync.js +0 -22
  59. package/module/Async/Math/isPrimeNumberAsync.js.map +0 -1
  60. package/module/Math/calculator/exchange.d.ts +0 -1
  61. package/module/Math/calculator/exchange.js +0 -33
  62. package/module/Math/calculator/exchange.js.map +0 -1
  63. package/module/Math/isDouble.d.ts +0 -12
  64. package/module/Math/isDouble.js +0 -22
  65. package/module/Math/isDouble.js.map +0 -1
  66. package/module/Math/isNumber.d.ts +0 -11
  67. package/module/Math/isNumber.js +0 -17
  68. package/module/Math/isNumber.js.map +0 -1
  69. package/module/Math/isPrimeNumber.d.ts +0 -7
  70. package/module/Math/isPrimeNumber.js +0 -18
  71. package/module/Math/isPrimeNumber.js.map +0 -1
  72. package/module/Simple/Date/now.d.ts +0 -8
  73. package/module/Simple/Date/now.js +0 -18
  74. package/module/Simple/Date/now.js.map +0 -1
  75. package/module/Simple/Tool/birthday.d.ts +0 -21
  76. package/module/Simple/Tool/birthday.js +0 -31
  77. package/module/Simple/Tool/birthday.js.map +0 -1
  78. package/module/Tool/isArr.d.ts +0 -1
  79. package/module/Tool/isArr.js +0 -4
  80. package/module/Tool/isArr.js.map +0 -1
  81. package/module/Tool/isArray.d.ts +0 -8
  82. package/module/Tool/isArray.js +0 -11
  83. package/module/Tool/isArray.js.map +0 -1
  84. package/module/Tool/isBrowser.d.ts +0 -4
  85. package/module/Tool/isBrowser.js +0 -5
  86. package/module/Tool/isBrowser.js.map +0 -1
  87. package/module/Tool/isNode.d.ts +0 -4
  88. package/module/Tool/isNode.js +0 -5
  89. package/module/Tool/isNode.js.map +0 -1
  90. package/module/Tool/isNodeWebkit.d.ts +0 -4
  91. package/module/Tool/isNodeWebkit.js +0 -7
  92. package/module/Tool/isNodeWebkit.js.map +0 -1
  93. package/module/Tool/isNotEmpty.d.ts +0 -8
  94. package/module/Tool/isNotEmpty.js +0 -12
  95. package/module/Tool/isNotEmpty.js.map +0 -1
  96. package/module/Tool/isObj.d.ts +0 -3
  97. package/module/Tool/isObj.js +0 -4
  98. package/module/Tool/isObj.js.map +0 -1
  99. package/module/Tool/isObject.d.ts +0 -10
  100. package/module/Tool/isObject.js +0 -11
  101. package/module/Tool/isObject.js.map +0 -1
  102. package/module/Tool/pipeFunction.d.ts +0 -5
  103. package/module/Tool/pipeFunction.js +0 -6
  104. package/module/Tool/pipeFunction.js.map +0 -1
@@ -0,0 +1 @@
1
+ export declare const compareFunctionDefault: <T>(a: T, b: T) => number;
@@ -0,0 +1,2 @@
1
+ export const compareFunctionDefault = (a, b) => a > b ? 1 : a < b ? -1 : 0;
2
+ //# sourceMappingURL=compareFunctionDefault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compareFunctionDefault.js","sourceRoot":"","sources":["../../src/Array/compareFunctionDefault.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAI,CAAI,EAAE,CAAI,EAAU,EAAE,CAC9D,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC"}
@@ -3,8 +3,11 @@ export * from "./checkFlagAlignment";
3
3
  export * from "./chunk";
4
4
  export * from "./getArraysCommon";
5
5
  export * from "./getArraysDiff";
6
+ export * from "./insertionSort";
7
+ export * from "./mergeSort";
6
8
  export * from "./quickSort";
7
9
  export * from "./range";
8
10
  export * from "./shuffle";
9
11
  export * from "./shuffle2DArray";
10
12
  export * from "./sum";
13
+ export * from "./timSort";
@@ -3,9 +3,12 @@ export * from "./checkFlagAlignment";
3
3
  export * from "./chunk";
4
4
  export * from "./getArraysCommon";
5
5
  export * from "./getArraysDiff";
6
+ export * from "./insertionSort";
7
+ export * from "./mergeSort";
6
8
  export * from "./quickSort";
7
9
  export * from "./range";
8
10
  export * from "./shuffle";
9
11
  export * from "./shuffle2DArray";
10
12
  export * from "./sum";
13
+ export * from "./timSort";
11
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Array/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Array/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * 挿入ソートを使用して配列をソート
3
+ *
4
+ * @param array ソートする配列
5
+ * @param compareFunction 比較関数
6
+ * @param start ソートを開始する配列のインデックス
7
+ * @param end ソートを終了する配列のインデックス
8
+ * @returns ソートされた配列
9
+ *
10
+ * @example
11
+ * const numbers = [4, 2, 7, 1, 3];
12
+ * insertionSort(numbers); // [1, 2, 3, 4, 7]
13
+ *
14
+ * @example
15
+ * const numbers = [4, 2, 7, 1, 3];
16
+ * insertionSort(numbers, (a, b) => a - b); // [1, 2, 3, 4, 7]
17
+ *
18
+ * @example
19
+ * const numbers = [4, 2, 7, 1, 3];
20
+ * insertionSort(numbers, undefined, 1, 3); // [4, 1, 2, 7, 3]
21
+ */
22
+ export declare const insertionSort: <T>(array: T[], compareFunction?: (a: T, b: T) => number, start?: number, end?: number) => T[];
@@ -0,0 +1,35 @@
1
+ import { compareFunctionDefault } from "./compareFunctionDefault";
2
+ /**
3
+ * 挿入ソートを使用して配列をソート
4
+ *
5
+ * @param array ソートする配列
6
+ * @param compareFunction 比較関数
7
+ * @param start ソートを開始する配列のインデックス
8
+ * @param end ソートを終了する配列のインデックス
9
+ * @returns ソートされた配列
10
+ *
11
+ * @example
12
+ * const numbers = [4, 2, 7, 1, 3];
13
+ * insertionSort(numbers); // [1, 2, 3, 4, 7]
14
+ *
15
+ * @example
16
+ * const numbers = [4, 2, 7, 1, 3];
17
+ * insertionSort(numbers, (a, b) => a - b); // [1, 2, 3, 4, 7]
18
+ *
19
+ * @example
20
+ * const numbers = [4, 2, 7, 1, 3];
21
+ * insertionSort(numbers, undefined, 1, 3); // [4, 1, 2, 7, 3]
22
+ */
23
+ export const insertionSort = (array, compareFunction = (compareFunctionDefault), start = 0, end = array.length - 1) => {
24
+ for (let index = start + 1; index <= end; index++) {
25
+ let index_ = index;
26
+ const target = array[index];
27
+ while (index_ > start && compareFunction(array[index_ - 1], target) > 0) {
28
+ array[index_] = array[index_ - 1];
29
+ index_--;
30
+ }
31
+ array[index_] = target;
32
+ }
33
+ return array;
34
+ };
35
+ //# sourceMappingURL=insertionSort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insertionSort.js","sourceRoot":"","sources":["../../src/Array/insertionSort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,KAAU,EACV,kBAA0C,CAAA,sBAAyB,CAAA,EACnE,KAAK,GAAG,CAAC,EACT,MAAc,KAAK,CAAC,MAAM,GAAG,CAAC,EACzB,EAAE;IACP,KAAK,IAAI,KAAK,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,MAAM,GAAG,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACxE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAClC,MAAM,EAAE,CAAC;QACX,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * マージソート
3
+ * @param {T[]} array 配列
4
+ * @param {(a: T, b: T) => number} compareFunction 比較関数
5
+ * @returns T[]
6
+ * @example mergeSort([1, 3, 2, 4, 5], (a, b) => a - b); // [1, 2, 3, 4, 5]
7
+ */
8
+ export declare function mergeSort<T>(array: T[], compareFunction?: (a: T, b: T) => number): T[];
@@ -0,0 +1,39 @@
1
+ import { compareFunctionDefault } from "./compareFunctionDefault";
2
+ /**
3
+ * マージソート
4
+ * @param {T[]} array 配列
5
+ * @param {(a: T, b: T) => number} compareFunction 比較関数
6
+ * @returns T[]
7
+ * @example mergeSort([1, 3, 2, 4, 5], (a, b) => a - b); // [1, 2, 3, 4, 5]
8
+ */
9
+ export function mergeSort(array, compareFunction = compareFunctionDefault) {
10
+ if (array.length <= 1) {
11
+ return array;
12
+ }
13
+ const middle = Math.floor(array.length / 2);
14
+ const left = array.slice(0, middle);
15
+ const right = array.slice(middle);
16
+ return merge(mergeSort(left, compareFunction), mergeSort(right, compareFunction), compareFunction);
17
+ }
18
+ /**
19
+ * 2つの配列をマージする関数
20
+ * @param left - マージする左の配列
21
+ * @param right - マージする右の配列
22
+ * @param compareFunction - 比較関数
23
+ * @returns マージされた新しい配列
24
+ */
25
+ function merge(left, right, compareFunction) {
26
+ const array = [];
27
+ let lIndex = 0;
28
+ let rIndex = 0;
29
+ while (lIndex < left.length && rIndex < right.length) {
30
+ if (compareFunction(left[lIndex], right[rIndex]) <= 0) {
31
+ array.push(left[lIndex++]);
32
+ }
33
+ else {
34
+ array.push(right[rIndex++]);
35
+ }
36
+ }
37
+ return array.concat(left.slice(lIndex)).concat(right.slice(rIndex));
38
+ }
39
+ //# sourceMappingURL=mergeSort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mergeSort.js","sourceRoot":"","sources":["../../src/Array/mergeSort.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CACvB,KAAU,EACV,kBAA0C,sBAAsB;IAEhE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAElC,OAAO,KAAK,CACV,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,EAChC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC,EACjC,eAAe,CAChB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,KAAK,CACZ,IAAS,EACT,KAAU,EACV,eAAuC;IAEvC,MAAM,KAAK,GAAQ,EAAE,CAAC;IACtB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACrD,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -1,4 +1,3 @@
1
- export declare const compareFunctionDefault: <T>(a: T, b: T) => number;
2
1
  /**
3
2
  * 配列を高速にソート
4
3
  * @param {T[]} array 配列
@@ -8,4 +7,4 @@ export declare const compareFunctionDefault: <T>(a: T, b: T) => number;
8
7
  * @returns T[]
9
8
  * @example quickSort([1, 3, 2, 4, 5], (a, b) => a - b); // [1, 2, 3, 4, 5]
10
9
  */
11
- export declare const quickSort: <T>(array: T[], compareFunction?: (a: T, b: T) => number, startID?: number, endID?: number) => T[];
10
+ export declare const quickSort: <T>(array: T[], compareFunction?: (a: T, b: T) => number, startID?: number, endID?: number, insertionSortThreshold?: number) => T[];
@@ -1,4 +1,19 @@
1
- export const compareFunctionDefault = (a, b) => a > b ? 1 : a < b ? -1 : 0;
1
+ import { compareFunctionDefault } from "./compareFunctionDefault";
2
+ const medianOfThree = (array, a, b, c, compareFunction) => {
3
+ const ab = compareFunction(array[a], array[b]);
4
+ const ac = compareFunction(array[a], array[c]);
5
+ const bc = compareFunction(array[b], array[c]);
6
+ if (ab < 0) {
7
+ if (bc < 0) {
8
+ return array[b];
9
+ }
10
+ return ac < 0 ? array[c] : array[a];
11
+ }
12
+ if (ac < 0) {
13
+ return array[a];
14
+ }
15
+ return bc < 0 ? array[c] : array[b];
16
+ };
2
17
  /**
3
18
  * 配列を高速にソート
4
19
  * @param {T[]} array 配列
@@ -8,20 +23,23 @@ export const compareFunctionDefault = (a, b) => a > b ? 1 : a < b ? -1 : 0;
8
23
  * @returns T[]
9
24
  * @example quickSort([1, 3, 2, 4, 5], (a, b) => a - b); // [1, 2, 3, 4, 5]
10
25
  */
11
- export const quickSort = (array, compareFunction = (compareFunctionDefault), startID = 0, endID = array.length - 1) => {
26
+ export const quickSort = (array, compareFunction = (compareFunctionDefault), startID = 0, endID = array.length - 1, insertionSortThreshold = 10) => {
12
27
  const partition = (low, high) => {
13
- const mid = Math.floor((low + high) / 2);
14
- const pivot = array[mid];
15
- [array[high], array[mid]] = [array[mid], array[high]];
16
- let index = low;
17
- for (let index_ = low; index_ < high; index_++) {
18
- if (compareFunction(array[index_], pivot) < 0) {
19
- [array[index], array[index_]] = [array[index_], array[index]];
28
+ const pivot = medianOfThree(array, low, Math.floor((low + high) / 2), high, compareFunction);
29
+ let index = low - 1;
30
+ let index_ = high + 1;
31
+ while (true) {
32
+ do {
20
33
  index++;
34
+ } while (compareFunction(array[index], pivot) < 0);
35
+ do {
36
+ index_--;
37
+ } while (compareFunction(array[index_], pivot) > 0);
38
+ if (index >= index_) {
39
+ return index_;
21
40
  }
41
+ [array[index], array[index_]] = [array[index_], array[index]];
22
42
  }
23
- [array[index], array[high]] = [array[high], array[index]];
24
- return index;
25
43
  };
26
44
  const insertionSort = (low, high) => {
27
45
  for (let index = low + 1; index <= high; index++) {
@@ -36,18 +54,18 @@ export const quickSort = (array, compareFunction = (compareFunctionDefault), sta
36
54
  };
37
55
  const sort = (low, high) => {
38
56
  while (low < high) {
39
- if (high - low < 10) {
57
+ if (high - low < insertionSortThreshold) {
40
58
  insertionSort(low, high);
41
59
  break;
42
60
  }
43
61
  const pi = partition(low, high);
44
62
  if (pi - low < high - pi) {
45
- sort(low, pi - 1);
63
+ sort(low, pi);
46
64
  low = pi + 1;
47
65
  }
48
66
  else {
49
67
  sort(pi + 1, high);
50
- high = pi - 1;
68
+ high = pi;
51
69
  }
52
70
  }
53
71
  };
@@ -1 +1 @@
1
- {"version":3,"file":"quickSort.js","sourceRoot":"","sources":["../../src/Array/quickSort.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quickSort.js","sourceRoot":"","sources":["../../src/Array/quickSort.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * TimSortアルゴリズムを実装した関数です。
3
+ * 挿入ソートとマージソートの良い特性を組み合わせたソートアルゴリズムで、
4
+ * 安定なソートを提供し、最悪のケースでもO(n log n)の時間複雑度を持ちます。
5
+ *
6
+ * @param {T[]} array - ソートする配列
7
+ * @param {(a: T, b: T) => number} [compareFunction=compareFunctionDefault<T>] -
8
+ * 要素比較のための関数
9
+ * @param {number} [start=0] - ソートを開始する配列のインデックス
10
+ * @param {number} [end=array.length - 1] - ソートを終了する配列のインデックス
11
+ * @returns {T[]} - ソートされた配列
12
+ */
13
+ export declare const timSort: <T>(array: T[], compareFunction?: (a: T, b: T) => number, start?: number, end?: number) => T[];
@@ -0,0 +1,79 @@
1
+ import { compareFunctionDefault } from "./compareFunctionDefault";
2
+ /**
3
+ * TimSortアルゴリズムを実装した関数です。
4
+ * 挿入ソートとマージソートの良い特性を組み合わせたソートアルゴリズムで、
5
+ * 安定なソートを提供し、最悪のケースでもO(n log n)の時間複雑度を持ちます。
6
+ *
7
+ * @param {T[]} array - ソートする配列
8
+ * @param {(a: T, b: T) => number} [compareFunction=compareFunctionDefault<T>] -
9
+ * 要素比較のための関数
10
+ * @param {number} [start=0] - ソートを開始する配列のインデックス
11
+ * @param {number} [end=array.length - 1] - ソートを終了する配列のインデックス
12
+ * @returns {T[]} - ソートされた配列
13
+ */
14
+ export const timSort = (array, compareFunction = (compareFunctionDefault), start = 0, end = array.length - 1) => {
15
+ const MIN_RUN = 32;
16
+ const insertionSort = (start, end) => {
17
+ for (let index = start; index <= end; index++) {
18
+ const temporary = array[index];
19
+ let index_ = index - 1;
20
+ while (index_ >= start && compareFunction(array[index_], temporary) > 0) {
21
+ array[index_ + 1] = array[index_];
22
+ index_--;
23
+ }
24
+ array[index_ + 1] = temporary;
25
+ }
26
+ };
27
+ const merge = (start, mid, end) => {
28
+ const left = array.slice(start, mid + 1);
29
+ const right = array.slice(mid + 1, end + 1);
30
+ let index = 0;
31
+ let index_ = 0;
32
+ let k = start;
33
+ while (index < left.length && index_ < right.length) {
34
+ if (compareFunction(left[index], right[index_]) <= 0) {
35
+ array[k] = left[index];
36
+ index++;
37
+ }
38
+ else {
39
+ array[k] = right[index_];
40
+ index_++;
41
+ }
42
+ k++;
43
+ }
44
+ while (index < left.length) {
45
+ array[k] = left[index];
46
+ index++;
47
+ k++;
48
+ }
49
+ while (index_ < right.length) {
50
+ array[k] = right[index_];
51
+ index_++;
52
+ k++;
53
+ }
54
+ };
55
+ const getMinRunLength = (n) => {
56
+ let r = 0;
57
+ while (n >= MIN_RUN) {
58
+ r |= n & 1;
59
+ n >>= 1;
60
+ }
61
+ return n + r;
62
+ };
63
+ const n = end - start + 1;
64
+ const minRun = getMinRunLength(n);
65
+ for (let index = start; index <= end; index += minRun) {
66
+ insertionSort(index, Math.min(index + MIN_RUN - 1, end));
67
+ }
68
+ for (let size = minRun; size < n; size *= 2) {
69
+ for (let left = start; left <= end; left += 2 * size) {
70
+ const mid = left + size - 1;
71
+ const right = Math.min(left + 2 * size - 1, end);
72
+ if (mid < right) {
73
+ merge(left, mid, right);
74
+ }
75
+ }
76
+ }
77
+ return array;
78
+ };
79
+ //# sourceMappingURL=timSort.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timSort.js","sourceRoot":"","sources":["../../src/Array/timSort.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { compareFunctionDefault, quickSort } from "../../Array/quickSort";
1
+ import { compareFunctionDefault } from "../../Array/compareFunctionDefault";
2
+ import { quickSort } from "../../Array/quickSort";
2
3
  /**
3
4
  * 配列を高速にソート
4
5
  * @param {T[]} array 配列
@@ -1 +1 @@
1
- {"version":3,"file":"quickSortSimple.js","sourceRoot":"","sources":["../../../src/Simple/Array/quickSortSimple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEtE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAAU,EACV,kBAA0C,CAAA,sBAAyB,CAAA,EACnE,OAAO,GAAG,CAAC,EACX,QAAgB,KAAK,CAAC,MAAM,GAAG,CAAC,EAC3B,EAAE;IACP,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;QAC9D,OAAO,GAAG,CAAC,CAAC;IACd,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACvC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC,CAAC"}
1
+ {"version":3,"file":"quickSortSimple.js","sourceRoot":"","sources":["../../../src/Simple/Array/quickSortSimple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAAU,EACV,kBAA0C,CAAA,sBAAyB,CAAA,EACnE,OAAO,GAAG,CAAC,EACX,QAAgB,KAAK,CAAC,MAAM,GAAG,CAAC,EAC3B,EAAE;IACP,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,GAAG,KAAK,EAAE,CAAC;QAC9D,OAAO,GAAG,CAAC,CAAC;IACd,CAAC;IACD,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACvC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Types, ValidateCoreReturnType, ValidateType } from "../../Validate/type";
2
+ export declare const array: <A extends string | number | boolean, O extends { [P in Types<A>]: (value: ValidateType<P>) => ValidateCoreReturnType<ValidateType<P>>; } = { [P_1 in Types<A>]: (value: ValidateType<P_1>) => ValidateCoreReturnType<ValidateType<P_1>>; }>(option?: O, message?: string) => (values: A[]) => ValidateCoreReturnType<A[]>;
@@ -0,0 +1,31 @@
1
+ import { isArray } from "../../Validate/isArray";
2
+ import { isNotEmpty } from "../../Validate/isNotEmpty";
3
+ export const array = (option = {}, message) => {
4
+ return (values) => {
5
+ if (!isArray(values)) {
6
+ return {
7
+ validate: false,
8
+ message: message || "",
9
+ type: values,
10
+ };
11
+ }
12
+ if (isNotEmpty(option)) {
13
+ for (const value of values) {
14
+ const validater = option[typeof value];
15
+ if (!(validater === null || validater === void 0 ? void 0 : validater(value).validate)) {
16
+ return {
17
+ validate: false,
18
+ message: (validater === null || validater === void 0 ? void 0 : validater(value).message) || "",
19
+ type: values,
20
+ };
21
+ }
22
+ }
23
+ }
24
+ return {
25
+ validate: true,
26
+ message: "",
27
+ type: values,
28
+ };
29
+ };
30
+ };
31
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/array/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGnD,MAAM,CAAC,MAAM,KAAK,GAAG,CAYnB,SAAY,EAAO,EACnB,OAAgB,EAChB,EAAE;IACF,OAAO,CAAC,MAAW,EAA+B,EAAE;QAClD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACrB,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,IAAI,EAAE,MAAM;aACb,CAAC;QACJ,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,KAAiB,CAAC,CAAC;gBACnD,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,KAAc,EAAE,QAAQ,CAAA,EAAE,CAAC;oBAC1C,OAAO;wBACL,QAAQ,EAAE,KAAK;wBACf,OAAO,EAAE,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,KAAc,EAAE,OAAO,KAAI,EAAE;wBAClD,IAAI,EAAE,MAAM;qBACb,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./core";
@@ -0,0 +1,2 @@
1
+ export * from "./core";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validate/array/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import { Types, ValidateCoreReturnType, ValidateReturnType } from "../../Validate/type";
2
- export declare const core: <T>(type: Types<T>) => <O extends ValidateReturnType<T>[]>(value: T, option: O, message?: string) => ValidateCoreReturnType<T>;
2
+ export declare const core: <T>(type: Types<T>) => <O extends ValidateReturnType<T>[]>(value: T, option?: O, message?: string) => ValidateCoreReturnType<T>;
@@ -1,4 +1,4 @@
1
- export const core = (type) => (value, option, message) => {
1
+ export const core = (type) => (value, option = [], message) => {
2
2
  // biome-ignore lint/suspicious/useValidTypeof: <explanation>
3
3
  if (typeof value !== type) {
4
4
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validate/core/index.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,IAAI,GACf,CAAI,IAAc,EAAE,EAAE,CACtB,CACE,KAAQ,EACR,MAAS,EACT,OAAgB,EACW,EAAE;IAC7B,6DAA6D;IAC7D,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,IAAI;SACL,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;gBAC/B,IAAI;aACL,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,IAAI;KACL,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validate/core/index.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,IAAI,GACf,CAAI,IAAc,EAAE,EAAE,CACtB,CACE,KAAQ,EACR,SAAY,EAAkB,EAC9B,OAAgB,EACW,EAAE;IAC7B,6DAA6D;IAC7D,IAAI,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO;YACL,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,OAAO,IAAI,EAAE;YACtB,IAAI;SACL,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,EAAE;gBAC/B,IAAI;aACL,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO;QACL,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,EAAE;QACX,IAAI;KACL,CAAC;AACJ,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ export * from "./array";
1
2
  export * from "./boolean";
2
3
  export * from "./number";
3
4
  export * from "./object";
@@ -1,4 +1,5 @@
1
1
  // Validate Function
2
+ export * from "./array";
2
3
  export * from "./boolean";
3
4
  export * from "./number";
4
5
  export * from "./object";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Validate/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AAEzB,iBAAiB;AACjB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Validate/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AAEzB,iBAAiB;AACjB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import { ValidateReturnType } from "../../Validate/type";
2
- export declare const number: <T extends ValidateReturnType<number>[]>(option: T, message?: string) => (value: number) => import("../../Validate/type").ValidateCoreReturnType<number>;
2
+ export declare const number: <T extends ValidateReturnType<number>[]>(option?: T | undefined, message?: string) => (value: number) => import("../../Validate/type").ValidateCoreReturnType<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/number/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,MAAS,EACT,OAAgB,EAChB,EAAE;IACF,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAS,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/number/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,MAAU,EACV,OAAgB,EAChB,EAAE;IACF,OAAO,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,CAAS,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3E,CAAC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { ValidateCoreReturnType, ValidateType } from "../../Validate/type";
2
2
  export declare const object: <T extends {
3
3
  [key: string]: (value: any) => ValidateCoreReturnType<any>;
4
- }>(option: T, message?: string) => (value: { [key in keyof T]: ValidateType<ReturnType<T[key]>["type"]>; }) => {
4
+ }>(option?: T, message?: string) => (value: { [key in keyof T]: ValidateType<ReturnType<T[key]>["type"]>; }) => {
5
5
  validate: boolean;
6
6
  message: string;
7
- type: { [key in keyof T]: ValidateType<ReturnType<T[key]>["type"]>; };
7
+ type: { [key_1 in keyof T]: ValidateType<ReturnType<T[key_1]>["type"]>; };
8
8
  };
@@ -1,5 +1,5 @@
1
1
  import { isObject } from "../../Validate/isObject";
2
- export const object = (option, message) => {
2
+ export const object = (option = {}, message) => {
3
3
  return (value) => {
4
4
  if (!isObject(value)) {
5
5
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/object/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,MAAM,CAAC,MAAM,MAAM,GAAG,CAMpB,MAAS,EACT,OAAgB,EAChB,EAAE;IACF,OAAO,CACL,KAEC,EACD,EAAE;QACF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,IAAI,EAAE,KAAK;aACZ,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChD,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO;oBACxC,IAAI,EAAE,KAAK;iBACZ,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/object/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAG/C,MAAM,CAAC,MAAM,MAAM,GAAG,CAMpB,SAAY,EAAO,EACnB,OAAgB,EAChB,EAAE;IACF,OAAO,CACL,KAEC,EAKD,EAAE;QACF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACrB,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,IAAI,EAAE,KAAK;aACZ,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChD,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO;oBACxC,IAAI,EAAE,KAAK;iBACZ,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
@@ -1,2 +1,2 @@
1
1
  import { ValidateReturnType } from "../../Validate/type";
2
- export declare const string: <T extends ValidateReturnType<string>[]>(option: T, message?: string) => (value: string) => import("../../Validate/type").ValidateCoreReturnType<string>;
2
+ export declare const string: <T extends ValidateReturnType<string>[]>(option?: T | undefined, message?: string) => (value: string) => import("../../Validate/type").ValidateCoreReturnType<string>;
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/string/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,MAAM,CAAC,MAAM,MAAM,GACjB,CAAyC,MAAS,EAAE,OAAgB,EAAE,EAAE,CACxE,CAAC,KAAa,EAAE,EAAE,CAChB,IAAI,CAAS,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/string/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAGvC,MAAM,CAAC,MAAM,MAAM,GACjB,CAAyC,MAAU,EAAE,OAAgB,EAAE,EAAE,CACzE,CAAC,KAAa,EAAE,EAAE,CAChB,IAAI,CAAS,QAAQ,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC"}
@@ -4,4 +4,5 @@ export * from "./length";
4
4
  export * from "./minLength";
5
5
  export * from "./maxLength";
6
6
  export * from "./numberString";
7
+ export * from "./regexMatch";
7
8
  export * from "./uuid";
@@ -4,5 +4,6 @@ export * from "./length";
4
4
  export * from "./minLength";
5
5
  export * from "./maxLength";
6
6
  export * from "./numberString";
7
+ export * from "./regexMatch";
7
8
  export * from "./uuid";
8
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validate/string/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validate/string/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ValidateReturnType } from "../../Validate/type";
2
+ export declare const regexMatch: (pattern: RegExp, message?: string) => ValidateReturnType<string>;
@@ -0,0 +1,8 @@
1
+ export const regexMatch = (pattern, message) => {
2
+ return {
3
+ type: "string",
4
+ message,
5
+ validate: (value) => pattern.test(value),
6
+ };
7
+ };
8
+ //# sourceMappingURL=regexMatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regexMatch.js","sourceRoot":"","sources":["../../../src/Validate/string/regexMatch.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,OAAe,EACf,OAAgB,EACY,EAAE;IAC9B,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,OAAO;QACP,QAAQ,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;KACjD,CAAC;AACJ,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- export type Types<T> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Array<infer _> ? "array" : T extends object ? "object" : never;
1
+ export type Types<T> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T;
2
2
  export interface ValidateCoreReturnType<T> {
3
3
  validate: boolean;
4
4
  message: string;
@@ -12,4 +12,4 @@ export interface ValidateReturnType<T> {
12
12
  export interface ValidateFunctionType<T> {
13
13
  (value: T): boolean;
14
14
  }
15
- export type ValidateType<T> = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T extends `array<${infer U}>` ? U[] : T extends `object<${infer V}>` ? V : never;
15
+ export type ValidateType<T> = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T;
package/package.json CHANGED
@@ -46,6 +46,7 @@
46
46
  },
47
47
  "scripts": {
48
48
  "build": "tsc && tsc-alias -p tsconfig.json",
49
+ "clean-build": "rm -rf module && yarn build",
49
50
  "deploy": "yarn typedoc && gh-pages -d doc",
50
51
  "test": "jest",
51
52
  "test-debug": "cd test && tsc",
@@ -54,5 +55,5 @@
54
55
  "format": "biome format . --write",
55
56
  "eslint": "eslint src"
56
57
  },
57
- "version": "1.4.0"
58
- }
58
+ "version": "1.4.2"
59
+ }
@@ -1,7 +0,0 @@
1
- export declare class ArrayWrapper {
2
- private readonly localArrayMap;
3
- private localData;
4
- constructor();
5
- map<T, U>(array: T[], callbackfn: (value: T, index: number, rowArray: typeof array) => U): this;
6
- getData(): any[];
7
- }