ph-utils 0.0.14 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
package/lib/date.d.ts CHANGED
@@ -17,3 +17,18 @@ export declare function parse(date?: Date | string | number): Date;
17
17
  * @param {Boolean} isEnd true则为 endOf
18
18
  */
19
19
  export declare function startOf(date?: Date | string | number, unit?: string, isEnd?: boolean): Date;
20
+ /**
21
+ * 日期加上指定时间后的日期
22
+ * @param date 指定的日期
23
+ * @param num 需要添加的数字, 如果这个参数传递一个小于0的数字,则就是日期减去相应的数字
24
+ * @param unit 需要添加的单位,date - 加减天数
25
+ */
26
+ export declare function add(date: Date | string | number | null, num: number, unit: string): Date;
27
+ /**
28
+ * 日期加上指定时间后的日期
29
+ * @param date 指定的日期, 传递为 null ,则表示为当前日期
30
+ * @param num 需要添加的数字, 如果这个参数传递一个小于0的数字,则就是日期减去相应的数字
31
+ * @param unit 需要添加的单位,date - 加减天数
32
+ * @param fmt 如果传递了格式化的单位,则返回格式化后的日期, 格式化字符串 yyyy - 年, mm - 月, dd - 日, HH - 小时, MM - 分钟, ss - 秒
33
+ */
34
+ export declare function add(date: Date | string | number | null, num: number, unit: string, fmt: string): string;
package/lib/date.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.startOf = exports.parse = exports.format = void 0;
3
+ exports.add = exports.startOf = exports.parse = exports.format = void 0;
4
4
  /**
5
5
  * node 和 web 端日期处理工具类
6
6
  */
@@ -21,6 +21,9 @@ function p(s, l = 2) {
21
21
  */
22
22
  return ('000' + s).slice(l * -1);
23
23
  }
24
+ function getUnit(unit) {
25
+ return unit.substring(0, 1).toUpperCase() + unit.substring(1);
26
+ }
24
27
  /**
25
28
  * 将日期格式化为指定形式的字符串
26
29
  * @param date 日期
@@ -88,9 +91,36 @@ function startOf(date, unit, isEnd = false) {
88
91
  const argumentStart = [0, 0, 0, 0];
89
92
  const argumentEnd = [23, 59, 59, 999];
90
93
  date = parse(date);
91
- let fn = 'set' + unit || 'Hours';
94
+ let u = getUnit(unit || 'Hours');
95
+ let fn = 'set' + u;
92
96
  let args = isEnd === true ? argumentEnd : argumentStart;
93
97
  Date.prototype[fn].apply(date, args);
94
98
  return date;
95
99
  }
96
100
  exports.startOf = startOf;
101
+ /**
102
+ * 日期加上指定时间后的日期
103
+ * @param date {Date | number | string | null} 指定的日期
104
+ * @param num {number} 需要添加的数字, 如果这个参数传递一个小于0的数字,则就是日期减去相应的数字
105
+ * @param unit {string} 需要添加的单位,date - 加减天数
106
+ * @param fmt {string} 可选参数,如果传递了格式化的单位,则返回格式化后的日期, 格式化字符串 yyyy - 年, mm - 月, dd - 日, HH - 小时, MM - 分钟, ss - 秒
107
+ * @returns {Date | string} 如果传递了 fmt 参数,则返回 string,否则返回 Date
108
+ */
109
+ function add(date, num, unit, fmt) {
110
+ let sdate = new Date();
111
+ if (date != null) {
112
+ sdate = parse(date);
113
+ }
114
+ unit = getUnit(unit);
115
+ let fn = 'set' + unit;
116
+ let gn = 'get' + unit;
117
+ let oldValue = Date.prototype[gn].apply(sdate);
118
+ Date.prototype[fn].apply(sdate, [oldValue + num]);
119
+ if (typeof fmt === 'string') {
120
+ return format(sdate, fmt);
121
+ }
122
+ else {
123
+ return sdate;
124
+ }
125
+ }
126
+ exports.add = add;
package/lib/date_m.d.ts CHANGED
@@ -17,3 +17,18 @@ export declare function parse(date?: Date | string | number): Date;
17
17
  * @param {Boolean} isEnd true则为 endOf
18
18
  */
19
19
  export declare function startOf(date?: Date | string | number, unit?: string, isEnd?: boolean): Date;
20
+ /**
21
+ * 日期加上指定时间后的日期
22
+ * @param date 指定的日期
23
+ * @param num 需要添加的数字, 如果这个参数传递一个小于0的数字,则就是日期减去相应的数字
24
+ * @param unit 需要添加的单位,date - 加减天数
25
+ */
26
+ export declare function add(date: Date | string | number | null, num: number, unit: string): Date;
27
+ /**
28
+ * 日期加上指定时间后的日期
29
+ * @param date 指定的日期, 传递为 null ,则表示为当前日期
30
+ * @param num 需要添加的数字, 如果这个参数传递一个小于0的数字,则就是日期减去相应的数字
31
+ * @param unit 需要添加的单位,date - 加减天数
32
+ * @param fmt 如果传递了格式化的单位,则返回格式化后的日期, 格式化字符串 yyyy - 年, mm - 月, dd - 日, HH - 小时, MM - 分钟, ss - 秒
33
+ */
34
+ export declare function add(date: Date | string | number | null, num: number, unit: string, fmt: string): string;
package/lib/date_m.js CHANGED
@@ -18,6 +18,9 @@ function p(s, l = 2) {
18
18
  */
19
19
  return ('000' + s).slice(l * -1);
20
20
  }
21
+ function getUnit(unit) {
22
+ return unit.substring(0, 1).toUpperCase() + unit.substring(1);
23
+ }
21
24
  /**
22
25
  * 将日期格式化为指定形式的字符串
23
26
  * @param date 日期
@@ -83,8 +86,34 @@ export function startOf(date, unit, isEnd = false) {
83
86
  const argumentStart = [0, 0, 0, 0];
84
87
  const argumentEnd = [23, 59, 59, 999];
85
88
  date = parse(date);
86
- let fn = 'set' + unit || 'Hours';
89
+ let u = getUnit(unit || 'Hours');
90
+ let fn = 'set' + u;
87
91
  let args = isEnd === true ? argumentEnd : argumentStart;
88
92
  Date.prototype[fn].apply(date, args);
89
93
  return date;
90
94
  }
95
+ /**
96
+ * 日期加上指定时间后的日期
97
+ * @param date 指定的日期
98
+ * @param num 需要添加的数字, 如果这个参数传递一个小于0的数字,则就是日期减去相应的数字
99
+ * @param unit 需要添加的单位,date - 加减天数
100
+ * @param fmt 可选参数,如果传递了格式化的单位,则返回格式化后的日期, 格式化字符串 yyyy - 年, mm - 月, dd - 日, HH - 小时, MM - 分钟, ss - 秒
101
+ * @returns {Date | string} 如果传递了 fmt 参数,则返回 string,否则返回 Date
102
+ */
103
+ export function add(date, num, unit, fmt) {
104
+ let sdate = new Date();
105
+ if (date != null) {
106
+ sdate = parse(date);
107
+ }
108
+ unit = getUnit(unit);
109
+ let fn = 'set' + unit;
110
+ let gn = 'get' + unit;
111
+ let oldValue = Date.prototype[gn].apply(sdate);
112
+ Date.prototype[fn].apply(sdate, [oldValue + num]);
113
+ if (typeof fmt === 'string') {
114
+ return format(sdate, fmt);
115
+ }
116
+ else {
117
+ return sdate;
118
+ }
119
+ }
package/lib/dom.d.ts CHANGED
@@ -32,6 +32,37 @@ export declare function transform(element: HTMLElement, value: string): void;
32
32
  * @param {HTMLElement} element 添加事件的节点
33
33
  * @param {string} listener 事件名称
34
34
  * @param {function} event 事件处理函数
35
- * @param {boolean} once 是否是只运行一次的处理函数
35
+ * @param {boolean} onceOrConfig 是否是只运行一次的处理函数或者配置,其中 eventFlag 为 string,如果配置该项,则表明为委托事件
36
36
  */
37
- export declare function on(element: HTMLElement, listener: string, event: (e?: Event) => void, once?: boolean): void;
37
+ export declare function on(element: HTMLElement, listener: string, fn: (e: Event, target?: HTMLElement, flag?: string) => void, once?: boolean | {
38
+ once?: boolean;
39
+ eventFlag?: string;
40
+ }): void;
41
+ /**
42
+ * 设置或获取节点的 innerHTML 属性
43
+ * @param element
44
+ * @param htmlstr 可选,如果传递该参数,则表示设置;否则表示获取
45
+ * @returns
46
+ */
47
+ export declare function html(element: HTMLElement, htmlstr?: string): string;
48
+ /**
49
+ * 设置或获取节点的 textContent 属性
50
+ * @param element
51
+ * @param textstr 可选,如果传递该参数,则表示设置;否则表示获取
52
+ * @returns
53
+ */
54
+ export declare function text(element: HTMLElement, textstr?: string): string;
55
+ /**
56
+ * 节点列表遍历
57
+ * @param elems
58
+ * @param fn 遍历到节点时的回调,回调第一个参数为遍历到的节点,第2个参数为 index;如果回调函数返回 true,则会终止遍历(break)
59
+ */
60
+ export declare function iterate(elems: NodeList, fn: (el: HTMLElement, index: number) => any): void;
61
+ /**
62
+ * 设置或获取节点 data-* 属性
63
+ * @param elem
64
+ * @param key data- 后面跟随的值
65
+ * @param value 如果传递该值表示获取;否则表示设置
66
+ * @returns
67
+ */
68
+ export declare function attr(elem: HTMLElement, key: string, value?: string): string;
package/lib/dom.js CHANGED
@@ -54,8 +54,91 @@ export function transform(element, value) {
54
54
  * @param {HTMLElement} element 添加事件的节点
55
55
  * @param {string} listener 事件名称
56
56
  * @param {function} event 事件处理函数
57
- * @param {boolean} once 是否是只运行一次的处理函数
57
+ * @param {boolean} onceOrConfig 是否是只运行一次的处理函数或者配置,其中 eventFlag 为 string,如果配置该项,则表明为委托事件
58
58
  */
59
- export function on(element, listener, event, once = false) {
60
- element.addEventListener(listener, event, { once });
59
+ export function on(element, listener, fn, once = false) {
60
+ let eventExtra = {};
61
+ if (typeof once === 'boolean') {
62
+ eventExtra.once = true;
63
+ }
64
+ else {
65
+ eventExtra = once;
66
+ }
67
+ if (eventExtra.eventFlag !== null) {
68
+ element.setAttribute(eventExtra.eventFlag, '__stop__');
69
+ element.addEventListener(listener, (e) => {
70
+ let target = e.target;
71
+ let flag = '';
72
+ do {
73
+ flag = target.getAttribute(eventExtra.eventFlag) || '';
74
+ if (flag === '') {
75
+ target = target.parentNode;
76
+ }
77
+ } while (flag === '');
78
+ if (flag !== '__stop__') {
79
+ fn(e, target, flag);
80
+ }
81
+ }, eventExtra);
82
+ }
83
+ else {
84
+ element.addEventListener(listener, fn, eventExtra);
85
+ }
86
+ }
87
+ /**
88
+ * 设置或获取节点的 innerHTML 属性
89
+ * @param element
90
+ * @param htmlstr 可选,如果传递该参数,则表示设置;否则表示获取
91
+ * @returns
92
+ */
93
+ export function html(element, htmlstr) {
94
+ if (htmlstr == null) {
95
+ return element.innerHTML;
96
+ }
97
+ else {
98
+ element.innerHTML = htmlstr;
99
+ return undefined;
100
+ }
101
+ }
102
+ /**
103
+ * 设置或获取节点的 textContent 属性
104
+ * @param element
105
+ * @param textstr 可选,如果传递该参数,则表示设置;否则表示获取
106
+ * @returns
107
+ */
108
+ export function text(element, textstr) {
109
+ if (textstr == null) {
110
+ return element.textContent;
111
+ }
112
+ else {
113
+ element.textContent = textstr;
114
+ return undefined;
115
+ }
116
+ }
117
+ /**
118
+ * 节点列表遍历
119
+ * @param elems
120
+ * @param fn 遍历到节点时的回调,回调第一个参数为遍历到的节点,第2个参数为 index;如果回调函数返回 true,则会终止遍历(break)
121
+ */
122
+ export function iterate(elems, fn) {
123
+ for (let i = 0, len = elems.length; i < len; i++) {
124
+ let r = fn(elems[i], i);
125
+ if (r === true) {
126
+ break;
127
+ }
128
+ }
129
+ }
130
+ /**
131
+ * 设置或获取节点 data-* 属性
132
+ * @param elem
133
+ * @param key data- 后面跟随的值
134
+ * @param value 如果传递该值表示获取;否则表示设置
135
+ * @returns
136
+ */
137
+ export function attr(elem, key, value) {
138
+ if (value != null) {
139
+ elem.setAttribute('data-' + key, value);
140
+ }
141
+ else {
142
+ return elem.getAttribute('data-' + key);
143
+ }
61
144
  }
package/lib/index.js CHANGED
@@ -1,23 +1,27 @@
1
+ "use strict";
1
2
  /**
2
3
  * node 和 web 通用的工具类
3
4
  */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseError = exports.isBoolean = exports.isNumeric = exports.shieldMobile = exports.isBlank = void 0;
4
7
  /**
5
8
  * 验证字符串是否为空
6
9
  * @param str 待验证的字符串
7
10
  * @param ignoreWhitespace 是否忽略空格(包括空白字符串以及[\r\t\n]之类的制表符),默认为true
8
11
  */
9
- export function isBlank(str, ignoreWhitespace = true) {
12
+ function isBlank(str, ignoreWhitespace = true) {
10
13
  if (str == null) {
11
14
  return true;
12
15
  }
13
16
  return (ignoreWhitespace ? str.trim().length : str.length) === 0;
14
17
  }
18
+ exports.isBlank = isBlank;
15
19
  /**
16
20
  * 屏蔽手机号,中间部分用 * 展示
17
21
  * @param mobile 待屏蔽的手机号
18
22
  * @returns 屏蔽后的手机号,例如:123 **** 1234
19
23
  */
20
- export function shieldMobile(mobile) {
24
+ function shieldMobile(mobile) {
21
25
  let x1 = Math.round(mobile.length / 2);
22
26
  let x2 = Math.round(x1 / 2);
23
27
  let shields = [' '];
@@ -27,6 +31,7 @@ export function shieldMobile(mobile) {
27
31
  shields.push(' ');
28
32
  return mobile.substring(0, x2) + shields.join('') + mobile.substring(x2 + x1);
29
33
  }
34
+ exports.shieldMobile = shieldMobile;
30
35
  /**
31
36
  * 验证参数是否是数字
32
37
  * @param str 待验证的字符串
@@ -35,24 +40,31 @@ export function shieldMobile(mobile) {
35
40
  * @param numericParam.isFloat 是否是小数
36
41
  * @returns true 是数字, false 不是数字
37
42
  */
38
- export function isNumeric(str, numericParam) {
43
+ function isNumeric(str, numericParam) {
39
44
  numericParam = { isPositive: false, isFloat: true, ...(numericParam || {}) };
40
45
  let symbol = numericParam.isPositive ? '[+]?' : '[+-]?';
41
46
  let main = numericParam.isFloat ? '([0-9]*[.])?[0-9]+' : '[0-9]+';
42
47
  return new RegExp('^' + symbol + main + '$').test(str);
43
48
  }
49
+ exports.isNumeric = isNumeric;
44
50
  /**
45
51
  * 验证参数是否是Boolean 类型
46
52
  * @param str 待验证的字符串
47
53
  * @returns
48
54
  */
49
- export function isBoolean(str) {
55
+ function isBoolean(str) {
50
56
  return ['true', 'false'].indexOf(str) >= 0;
51
57
  }
58
+ exports.isBoolean = isBoolean;
52
59
  /**
53
60
  * 带有错误名称标记的错误类型
54
61
  */
55
- export class BaseError extends Error {
62
+ class BaseError extends Error {
63
+ /**
64
+ * 错误名称,类似于 Java 中的不同的 Exception[NullPointerException];
65
+ * 增加 name 字段,表明不同的错误,当需要根据不同的错误执行不同的处理的时候,会很有用
66
+ */
67
+ name;
56
68
  constructor() {
57
69
  if (arguments.length === 1) {
58
70
  super(arguments[0]);
@@ -64,3 +76,4 @@ export class BaseError extends Error {
64
76
  }
65
77
  }
66
78
  }
79
+ exports.BaseError = BaseError;
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "module": "lib/index_m.js",
6
6
  "types": "lib/index.d.ts",
7
7
  "browser": "lib/index_m.js",
8
- "version": "0.0.14",
8
+ "version": "0.1.5",
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git+https//gitee.com/towardly/ph.git",
@@ -19,7 +19,7 @@
19
19
  "homepage": "https://gitee.com/towardly/ph/tree/master/packages/utils",
20
20
  "devDependencies": {
21
21
  "@types/node": "^15.0.3",
22
- "typescript": "^4.2.4"
22
+ "typescript": "^4.4.4"
23
23
  },
24
24
  "scripts": {
25
25
  "build": "node scripts/build.js"