Skip to content

Commit

Permalink
chore: add eslint specification and pre-commit check (MrXujiang#34)
Browse files Browse the repository at this point in the history
* chore: add eslint specification and pre-commit check

* chore: update .commitlintrc
  • Loading branch information
ayangweb authored Apr 24, 2023
1 parent 2824ed3 commit 494691f
Show file tree
Hide file tree
Showing 48 changed files with 445 additions and 309 deletions.
3 changes: 3 additions & 0 deletions .commitlintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
extends: "@commitlint/config-conventional"
}
25 changes: 25 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:prettier/recommended"
],
"overrides": [],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["@typescript-eslint", "prettier"],
"rules": {
"semi": "off",
"@typescript-eslint/no-explicit-any": "off",
"no-console": "error",
"@typescript-eslint/no-this-alias": "off"
},
"ignorePatterns": ["**/*.test.js"]
}
4 changes: 4 additions & 0 deletions .husky/commit-msg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no-install commitlint -e
4 changes: 4 additions & 0 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx lint-staged
4 changes: 4 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
"singleQuote": true,
"trailingComma": "all",
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"semi": true,
"bracketSpacing": true,
"overrides": [
{
"files": ".prettierrc",
Expand Down
27 changes: 17 additions & 10 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@
"release": "npm run build && npm publish --access public",
"prettier": "prettier --write \"**/*.{js,jsx,tsx,ts,less,md,json}\"",
"test": "umi-test",
"test:coverage": "umi-test --coverage"
"test:coverage": "umi-test --coverage",
"lint": "eslint . --ext .ts --fix",
"prepare": "husky install"
},
"main": "dist/index.js",
"module": "dist/index.esm.js",
Expand All @@ -35,30 +37,35 @@
"pre-commit": "yarn test"
},
"lint-staged": {
"*.{js,jsx,less,md,json}": [
"prettier --write"
],
"*.ts?(x)": [
"prettier --parser=typescript --write"
"*.{ts}": [
"npm run lint"
]
},
"dependencies": {
"@babel/runtime": "^7.18.9",
"lodash.clonedeep": "^4.5.0",
"lodash.difference": "^4.5.0",
"nanoid": "^3.1.30",
"qs": "^6.10.1",
"@babel/runtime": "^7.18.9"
"qs": "^6.10.1"
},
"devDependencies": {
"@commitlint/cli": "^17.6.1",
"@commitlint/config-conventional": "^17.6.1",
"@types/lodash.clonedeep": "^4.5.6",
"@types/lodash.difference": "^4.5.7",
"@types/qs": "^6.9.7",
"@typescript-eslint/eslint-plugin": "^5.59.0",
"@typescript-eslint/parser": "^5.59.0",
"@umijs/test": "^3.0.5",
"dumi": "^1.0.17",
"eslint": "^8.39.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-prettier": "^4.2.1",
"father-build": "^1.17.2",
"gh-pages": "^3.0.0",
"lint-staged": "^10.0.7",
"prettier": "^2.2.1",
"husky": "^8.0.3",
"lint-staged": "^13.2.1",
"prettier": "^2.8.8",
"yorkie": "^2.0.0"
},
"publishConfig": {
Expand Down
6 changes: 3 additions & 3 deletions src/arrayToListNode/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,19 @@ interface ListNode<T> {
}

const arrayToListNode = <T>(arr: Array<T>): ListNode<T> | undefined => {
let len = arr.length;
const len = arr.length;
if (!len) {
return undefined;
}
let node: ListNode<T> = {
data: arr[len - 1],
}
};
for (let i = len - 2; i >= 0; i--) {
node = {
data: arr[i],
next: node,
};
}
return node;
}
};
export default arrayToListNode;
2 changes: 1 addition & 1 deletion src/base64/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ const base64 = {
e = e.replace(/rn/g, 'n');
let t = '';
for (let n = 0; n < e.length; n++) {
let r = e.charCodeAt(n);
const r = e.charCodeAt(n);
if (r < 128) {
t += String.fromCharCode(r);
} else if (r > 127 && r < 2048) {
Expand Down
72 changes: 37 additions & 35 deletions src/bubbleSort/index.ts
Original file line number Diff line number Diff line change
@@ -1,45 +1,47 @@
import isArray from '../isArray';
import isArray from '../isArray';
/**
* 对象数组、普通数组冒泡排序
* @param obj
* @param arrKey
* @param obj
* @param arrKey
* @param orderby
* @returns
* @returns
* 对象数组使用 bubbleSort(arr,key,orderby)
* 普通数组使用 bubbleSort(arr) bubbleSort(arr,'',orderby)
*/
function bubbleSort(obj: (object | string | number) [], arrKey: string, orderby: 'asc' | 'desc' = 'asc') {
let result : any[] = obj;
let temp = null;
if (isArray(obj)) {
if (obj.length > 1) {
for (let i = 0; i < result.length; i++) {
for (let j = 0; j < i; j++) {
let resultfiled_i = result[i][arrKey]
? result[i][arrKey]
: result[i],
resultfiled_j = result[j][arrKey]
? result[j][arrKey]
: result[j];
// 降序
if (orderby === 'desc') {
if (parseInt(resultfiled_i) > parseInt(resultfiled_j)) {
temp = result[j];
result[j] = result[i];
result[i] = temp;
}
// 升序
} else {
if (parseInt(resultfiled_i) < parseInt(resultfiled_j)) {
temp = result[j];
result[j] = result[i];
result[i] = temp;
}
}
}
function bubbleSort(
obj: (object | string | number)[],
arrKey: string,
orderby: 'asc' | 'desc' = 'asc',
) {
const result: any[] = obj;
let temp = null;
if (isArray(obj)) {
if (obj.length > 1) {
for (let i = 0; i < result.length; i++) {
for (let j = 0; j < i; j++) {
const resultfiled_i = result[i][arrKey]
? result[i][arrKey]
: result[i],
resultfiled_j = result[j][arrKey] ? result[j][arrKey] : result[j];
// 降序
if (orderby === 'desc') {
if (parseInt(resultfiled_i) > parseInt(resultfiled_j)) {
temp = result[j];
result[j] = result[i];
result[i] = temp;
}
// 升序
} else {
if (parseInt(resultfiled_i) < parseInt(resultfiled_j)) {
temp = result[j];
result[j] = result[i];
result[i] = temp;
}
}
}
return result;
}else throw Error('数据格式错误');
}
}
return result;
} else throw Error('数据格式错误');
}
export default bubbleSort;
4 changes: 2 additions & 2 deletions src/compressImg/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@ function compressImg(
type: string,
mx: number,
mh: number,
quality: number = 1,
quality = 1,
) {
return new Promise((resolve, reject) => {
return new Promise((resolve) => {
const canvas = document.createElement('canvas');
const context = canvas.getContext('2d');
const { width: originWidth, height: originHeight } = img;
Expand Down
3 changes: 2 additions & 1 deletion src/coordinatesInCircle/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

function coordinatesInCircle(
center: [number, number],
r: number = 1,
r = 1,
): [number, number] {
if (center && Array.isArray(center) && center.length === 2) {
const [xAxis, yAxis]: [number, number] = center,
Expand All @@ -15,6 +15,7 @@ function coordinatesInCircle(

let pointX: number, pointY: number;

// eslint-disable-next-line no-constant-condition
while (true) {
// 生成大于等于 xValueRange[0],小于等于 xValueRange[1] 的 x 坐标
pointX =
Expand Down
32 changes: 22 additions & 10 deletions src/dateCalculate/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
import {formatDate} from "../index";
import { formatDate } from '../index';

type DateType = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'milliseconds';
type DateType =
| 'year'
| 'month'
| 'day'
| 'hour'
| 'minute'
| 'second'
| 'milliseconds';

const dateTypeMap = {
year: (date: Date, num: number) => {
return date.setFullYear(date.getFullYear() + num)
return date.setFullYear(date.getFullYear() + num);
},
month: (date: Date, num: number) => {
return date.setMonth(date.getMonth() + num);
Expand All @@ -24,7 +31,7 @@ const dateTypeMap = {
milliseconds: (date: Date, num: number) => {
return date.setMilliseconds(date.getMilliseconds() + num);
},
}
};

/**
* 对日期进行计算,比如计算前一天,前一个月,后一天,后一个月等等
Expand All @@ -33,14 +40,19 @@ const dateTypeMap = {
* @param flag:对 年月日时分秒 那个进行计算
* @param format:对 计算后的日期进行格式化的格式,默认使用 YY-MM-DD hh:mm:ss。比如:2020-01-02 08:00:00
*/
const dateCalculate = (dateStr: string | Date, num: number, flag: DateType, format?: string): string => {
const dateCalculate = (
dateStr: string | Date,
num: number,
flag: DateType,
format?: string,
): string => {
if (dateTypeMap[flag]) {
let date = new Date(dateStr)
let result = dateTypeMap[flag](date, num);
return formatDate(result, format)
const date = new Date(dateStr);
const result = dateTypeMap[flag](date, num);
return formatDate(result, format);
} else {
throw Error("请输入正确的计算参数(仅支持 年、月、日、时、分、秒、毫秒)");
throw Error('请输入正确的计算参数(仅支持 年、月、日、时、分、秒、毫秒)');
}
}
};

export default dateCalculate;
23 changes: 11 additions & 12 deletions src/debounce/index.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
type Timeout = ReturnType<typeof setTimeout> | null;

/**
*
* @param fn
* @param wait
* @param fn 回调函数
* @param wait 延迟时间
* @returns
*/
// @ts-nocheck
function debounce(fn: Function, wait: number) {
let timer: any = null;
return function () {
let context = this;
let args = arguments;
if (timer !== null) {
clearTimeout(timer);
}
function debounce(fn: (...args: any[]) => void, wait = 300) {
let timer: Timeout = null;

return function (this: any, ...args: any[]) {
if (timer) clearTimeout(timer);

timer = setTimeout(() => {
fn.apply(context, args);
fn.apply(this, args);
}, wait);
};
}
Expand Down
2 changes: 1 addition & 1 deletion src/downloadFileWithUrl/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
* @param url 下载链接
* @param fileName 文件名
*/
function downloadFileWithUrl(url: string, fileName: string = '') {
function downloadFileWithUrl(url: string, fileName = '') {
if (!fileName) {
const urlArr: string[] = url.split('/');
fileName = urlArr[urlArr.length - 1];
Expand Down
8 changes: 4 additions & 4 deletions src/fibonacci/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ function fibonacci(n: number) {
if (n === 0) return 0;
if (n === 1) return 1;

let n2: number = 0,
n1: number = 1,
res: number = 0;
let n2 = 0,
n1 = 1,
res = 0;

for (let i: number = 2; i <= n; i++) {
for (let i = 2; i <= n; i++) {
res = n1 + n2;
n2 = n1;
n1 = res;
Expand Down
5 changes: 3 additions & 2 deletions src/formatDate/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* @param format
* @returns
*/
function formatDate(time: number, format: string = 'YY-MM-DD hh:mm:ss') {
function formatDate(time: number, format = 'YY-MM-DD hh:mm:ss') {
const date = new Date(time);

const year = date.getFullYear(),
Expand All @@ -13,7 +13,8 @@ function formatDate(time: number, format: string = 'YY-MM-DD hh:mm:ss') {
hour = date.getHours(),
min = date.getMinutes(),
sec = date.getSeconds();
const preArr = Array.apply(null, Array(10)).map(function (elem, index) {

const preArr = [...Array(10)].map(function (elem, index) {
return '0' + index;
});

Expand Down
2 changes: 1 addition & 1 deletion src/formatPercent/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const judgeIsNumber = (value: any) =>
* @param value 任何值
* @param precision 小数位
*/
function formatPercent(value: any, precision: number = 2): string {
function formatPercent(value: any, precision = 2): string {
let result = '0';
if (judgeIsNumber(value) && value !== 0) {
result =
Expand Down
Loading

0 comments on commit 494691f

Please sign in to comment.