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.
- package/module/Array/compareFunctionDefault.d.ts +1 -0
- package/module/Array/compareFunctionDefault.js +2 -0
- package/module/Array/compareFunctionDefault.js.map +1 -0
- package/module/Array/index.d.ts +3 -0
- package/module/Array/index.js +3 -0
- package/module/Array/index.js.map +1 -1
- package/module/Array/insertionSort.d.ts +22 -0
- package/module/Array/insertionSort.js +35 -0
- package/module/Array/insertionSort.js.map +1 -0
- package/module/Array/mergeSort.d.ts +8 -0
- package/module/Array/mergeSort.js +39 -0
- package/module/Array/mergeSort.js.map +1 -0
- package/module/Array/quickSort.d.ts +1 -2
- package/module/Array/quickSort.js +32 -14
- package/module/Array/quickSort.js.map +1 -1
- package/module/Array/timSort.d.ts +13 -0
- package/module/Array/timSort.js +79 -0
- package/module/Array/timSort.js.map +1 -0
- package/module/Simple/Array/quickSortSimple.js +2 -1
- package/module/Simple/Array/quickSortSimple.js.map +1 -1
- package/module/Validate/array/core.d.ts +2 -0
- package/module/Validate/array/core.js +31 -0
- package/module/Validate/array/core.js.map +1 -0
- package/module/Validate/array/index.d.ts +1 -0
- package/module/Validate/array/index.js +2 -0
- package/module/Validate/array/index.js.map +1 -0
- package/module/Validate/core/index.d.ts +1 -1
- package/module/Validate/core/index.js +1 -1
- package/module/Validate/core/index.js.map +1 -1
- package/module/Validate/index.d.ts +1 -0
- package/module/Validate/index.js +1 -0
- package/module/Validate/index.js.map +1 -1
- package/module/Validate/number/core.d.ts +1 -1
- package/module/Validate/number/core.js.map +1 -1
- package/module/Validate/object/core.d.ts +2 -2
- package/module/Validate/object/core.js +1 -1
- package/module/Validate/object/core.js.map +1 -1
- package/module/Validate/string/core.d.ts +1 -1
- package/module/Validate/string/core.js.map +1 -1
- package/module/Validate/string/index.d.ts +1 -0
- package/module/Validate/string/index.js +1 -0
- package/module/Validate/string/index.js.map +1 -1
- package/module/Validate/string/regexMatch.d.ts +2 -0
- package/module/Validate/string/regexMatch.js +8 -0
- package/module/Validate/string/regexMatch.js.map +1 -0
- package/module/Validate/type.d.ts +2 -2
- package/package.json +3 -2
- package/module/Array/ArrayWrapper.d.ts +0 -7
- package/module/Array/ArrayWrapper.js +0 -21
- package/module/Array/ArrayWrapper.js.map +0 -1
- package/module/Array/arrayMap.d.ts +0 -1
- package/module/Array/arrayMap.js +0 -8
- package/module/Array/arrayMap.js.map +0 -1
- package/module/Async/Array/quickSortAsync.d.ts +0 -10
- package/module/Async/Array/quickSortAsync.js +0 -25
- package/module/Async/Array/quickSortAsync.js.map +0 -1
- package/module/Async/Math/isPrimeNumberAsync.d.ts +0 -7
- package/module/Async/Math/isPrimeNumberAsync.js +0 -22
- package/module/Async/Math/isPrimeNumberAsync.js.map +0 -1
- package/module/Math/calculator/exchange.d.ts +0 -1
- package/module/Math/calculator/exchange.js +0 -33
- package/module/Math/calculator/exchange.js.map +0 -1
- package/module/Math/isDouble.d.ts +0 -12
- package/module/Math/isDouble.js +0 -22
- package/module/Math/isDouble.js.map +0 -1
- package/module/Math/isNumber.d.ts +0 -11
- package/module/Math/isNumber.js +0 -17
- package/module/Math/isNumber.js.map +0 -1
- package/module/Math/isPrimeNumber.d.ts +0 -7
- package/module/Math/isPrimeNumber.js +0 -18
- package/module/Math/isPrimeNumber.js.map +0 -1
- package/module/Simple/Date/now.d.ts +0 -8
- package/module/Simple/Date/now.js +0 -18
- package/module/Simple/Date/now.js.map +0 -1
- package/module/Simple/Tool/birthday.d.ts +0 -21
- package/module/Simple/Tool/birthday.js +0 -31
- package/module/Simple/Tool/birthday.js.map +0 -1
- package/module/Tool/isArr.d.ts +0 -1
- package/module/Tool/isArr.js +0 -4
- package/module/Tool/isArr.js.map +0 -1
- package/module/Tool/isArray.d.ts +0 -8
- package/module/Tool/isArray.js +0 -11
- package/module/Tool/isArray.js.map +0 -1
- package/module/Tool/isBrowser.d.ts +0 -4
- package/module/Tool/isBrowser.js +0 -5
- package/module/Tool/isBrowser.js.map +0 -1
- package/module/Tool/isNode.d.ts +0 -4
- package/module/Tool/isNode.js +0 -5
- package/module/Tool/isNode.js.map +0 -1
- package/module/Tool/isNodeWebkit.d.ts +0 -4
- package/module/Tool/isNodeWebkit.js +0 -7
- package/module/Tool/isNodeWebkit.js.map +0 -1
- package/module/Tool/isNotEmpty.d.ts +0 -8
- package/module/Tool/isNotEmpty.js +0 -12
- package/module/Tool/isNotEmpty.js.map +0 -1
- package/module/Tool/isObj.d.ts +0 -3
- package/module/Tool/isObj.js +0 -4
- package/module/Tool/isObj.js.map +0 -1
- package/module/Tool/isObject.d.ts +0 -10
- package/module/Tool/isObject.js +0 -11
- package/module/Tool/isObject.js.map +0 -1
- package/module/Tool/pipeFunction.d.ts +0 -5
- package/module/Tool/pipeFunction.js +0 -6
- 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 @@
|
|
|
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"}
|
package/module/Array/index.d.ts
CHANGED
|
@@ -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";
|
package/module/Array/index.js
CHANGED
|
@@ -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
|
-
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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 <
|
|
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
|
|
63
|
+
sort(low, pi);
|
|
46
64
|
low = pi + 1;
|
|
47
65
|
}
|
|
48
66
|
else {
|
|
49
67
|
sort(pi + 1, high);
|
|
50
|
-
high = pi
|
|
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":"AAAA,MAAM,CAAC,MAAM,
|
|
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 +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;
|
|
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 @@
|
|
|
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
|
|
2
|
+
export declare const core: <T>(type: Types<T>) => <O extends ValidateReturnType<T>[]>(value: T, option?: O, message?: string) => ValidateCoreReturnType<T>;
|
|
@@ -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,
|
|
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"}
|
package/module/Validate/index.js
CHANGED
|
@@ -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
|
|
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,
|
|
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
|
|
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: { [
|
|
7
|
+
type: { [key_1 in keyof T]: ValidateType<ReturnType<T[key_1]>["type"]>; };
|
|
8
8
|
};
|
|
@@ -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,
|
|
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
|
|
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,
|
|
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"}
|
|
@@ -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 @@
|
|
|
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
|
|
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
|
|
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.
|
|
58
|
-
}
|
|
58
|
+
"version": "1.4.2"
|
|
59
|
+
}
|