util-helpers 4.16.1 → 4.17.0

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 (260) hide show
  1. package/README.md +3 -1
  2. package/dist/util-helpers.js +1542 -4040
  3. package/dist/util-helpers.js.map +1 -1
  4. package/dist/util-helpers.min.js +1 -1
  5. package/dist/util-helpers.min.js.map +1 -1
  6. package/esm/ajax.js +50 -146
  7. package/esm/blobToDataURL.js +4 -34
  8. package/esm/bytesToSize.js +12 -37
  9. package/esm/calculateCursorPosition.js +30 -52
  10. package/esm/dataURLToBlob.js +14 -28
  11. package/esm/divide.js +24 -48
  12. package/esm/download.js +83 -164
  13. package/esm/fileReader.js +18 -64
  14. package/esm/filterTree.js +25 -57
  15. package/esm/findTreeNode.js +39 -69
  16. package/esm/findTreeNodes.js +35 -68
  17. package/esm/findTreeSelect.js +38 -76
  18. package/esm/formatBankCard.js +13 -43
  19. package/esm/formatMobile.js +17 -43
  20. package/esm/formatMoney.js +59 -139
  21. package/esm/index.js +55 -130
  22. package/esm/isBankCard.js +22 -57
  23. package/esm/isBusinessLicense.js +32 -78
  24. package/esm/isChinese.js +23 -66
  25. package/esm/isEmail.js +6 -21
  26. package/esm/isHMCard.js +5 -28
  27. package/esm/isIPv4.js +5 -22
  28. package/esm/isIPv6.js +5 -36
  29. package/esm/isIdCard.js +27 -66
  30. package/esm/isMobile.js +5 -20
  31. package/esm/isPassport.js +5 -22
  32. package/esm/isPassword.js +7 -48
  33. package/esm/isPostcode.js +5 -20
  34. package/esm/isPromiseLike.js +3 -18
  35. package/esm/isQQ.js +5 -20
  36. package/esm/isSocialCreditCode.js +28 -83
  37. package/esm/isSwiftCode.js +6 -25
  38. package/esm/isTWCard.js +11 -37
  39. package/esm/isTelephone.js +6 -27
  40. package/esm/isUrl.js +5 -44
  41. package/esm/isVehicle.js +5 -28
  42. package/esm/isWX.js +5 -20
  43. package/esm/listToTree.js +51 -122
  44. package/esm/minus.js +21 -39
  45. package/esm/normalizeString.js +8 -29
  46. package/esm/numberToChinese.js +96 -215
  47. package/esm/padZero.js +14 -36
  48. package/esm/parseIdCard.js +64 -132
  49. package/esm/plus.js +21 -39
  50. package/esm/randomString.js +13 -45
  51. package/esm/replaceChar.js +27 -77
  52. package/esm/round.js +14 -31
  53. package/esm/safeDate.js +12 -55
  54. package/esm/setDataURLPrefix.js +6 -29
  55. package/esm/strlen.js +14 -30
  56. package/esm/times.js +24 -42
  57. package/esm/transformFieldNames.js +37 -95
  58. package/esm/treeToList.js +25 -86
  59. package/esm/utils/config.js +4 -14
  60. package/esm/utils/constants.js +4 -4
  61. package/esm/utils/convertToString.js +4 -9
  62. package/esm/utils/devWarn.js +11 -11
  63. package/esm/utils/math.util.js +95 -181
  64. package/esm/utils/type/isBlob.js +4 -24
  65. package/esm/utils/type/isNaN.js +4 -19
  66. package/esm/utils/type/isNil.js +5 -13
  67. package/esm/utils/type/isNull.js +3 -18
  68. package/esm/utils/type/isNumber.js +4 -28
  69. package/esm/utils/type/isObject.js +4 -23
  70. package/esm/utils/type/isString.js +4 -19
  71. package/esm/utils/type/isSymbol.js +4 -19
  72. package/esm/utils/type/isType.js +3 -12
  73. package/esm/utils/type/isUndefined.js +3 -21
  74. package/esm/validatePassword.js +86 -237
  75. package/esm/waitTime.js +7 -26
  76. package/lib/ajax.js +51 -152
  77. package/lib/blobToDataURL.js +5 -40
  78. package/lib/bytesToSize.js +13 -43
  79. package/lib/calculateCursorPosition.js +31 -58
  80. package/lib/dataURLToBlob.js +15 -34
  81. package/lib/divide.js +26 -60
  82. package/lib/download.js +85 -169
  83. package/lib/fileReader.js +19 -70
  84. package/lib/filterTree.js +27 -66
  85. package/lib/findTreeNode.js +40 -77
  86. package/lib/findTreeNodes.js +36 -76
  87. package/lib/findTreeSelect.js +40 -82
  88. package/lib/formatBankCard.js +15 -50
  89. package/lib/formatMobile.js +19 -50
  90. package/lib/formatMoney.js +60 -150
  91. package/lib/index.js +117 -395
  92. package/lib/isBankCard.js +24 -64
  93. package/lib/isBusinessLicense.js +34 -85
  94. package/lib/isChinese.js +24 -73
  95. package/lib/isEmail.js +7 -27
  96. package/lib/isHMCard.js +7 -35
  97. package/lib/isIPv4.js +7 -29
  98. package/lib/isIPv6.js +7 -43
  99. package/lib/isIdCard.js +29 -73
  100. package/lib/isMobile.js +7 -27
  101. package/lib/isPassport.js +7 -29
  102. package/lib/isPassword.js +9 -55
  103. package/lib/isPostcode.js +7 -27
  104. package/lib/isPromiseLike.js +4 -24
  105. package/lib/isQQ.js +7 -27
  106. package/lib/isSocialCreditCode.js +30 -90
  107. package/lib/isSwiftCode.js +7 -32
  108. package/lib/isTWCard.js +13 -44
  109. package/lib/isTelephone.js +7 -33
  110. package/lib/isUrl.js +6 -50
  111. package/lib/isVehicle.js +7 -35
  112. package/lib/isWX.js +7 -27
  113. package/lib/listToTree.js +53 -131
  114. package/lib/minus.js +23 -51
  115. package/lib/normalizeString.js +10 -36
  116. package/lib/numberToChinese.js +98 -222
  117. package/lib/padZero.js +16 -43
  118. package/lib/parseIdCard.js +65 -138
  119. package/lib/plus.js +23 -51
  120. package/lib/randomString.js +14 -51
  121. package/lib/replaceChar.js +28 -83
  122. package/lib/round.js +15 -37
  123. package/lib/safeDate.js +13 -63
  124. package/lib/setDataURLPrefix.js +7 -35
  125. package/lib/strlen.js +16 -37
  126. package/lib/times.js +26 -53
  127. package/lib/transformFieldNames.js +38 -101
  128. package/lib/treeToList.js +27 -94
  129. package/lib/utils/config.js +6 -23
  130. package/lib/utils/constants.js +3 -11
  131. package/lib/utils/convertToString.js +6 -16
  132. package/lib/utils/devWarn.js +13 -17
  133. package/lib/utils/math.util.js +95 -185
  134. package/lib/utils/type/isBlob.js +6 -31
  135. package/lib/utils/type/isNaN.js +6 -26
  136. package/lib/utils/type/isNil.js +7 -20
  137. package/lib/utils/type/isNull.js +4 -24
  138. package/lib/utils/type/isNumber.js +6 -35
  139. package/lib/utils/type/isObject.js +5 -29
  140. package/lib/utils/type/isString.js +6 -26
  141. package/lib/utils/type/isSymbol.js +6 -26
  142. package/lib/utils/type/isType.js +4 -18
  143. package/lib/utils/type/isUndefined.js +4 -27
  144. package/lib/validatePassword.js +87 -244
  145. package/lib/waitTime.js +8 -32
  146. package/package.json +30 -34
  147. package/types/ajax.d.ts +38 -95
  148. package/types/blobToDataURL.d.ts +2 -2
  149. package/types/bytesToSize.d.ts +7 -6
  150. package/types/calculateCursorPosition.d.ts +10 -9
  151. package/types/dataURLToBlob.d.ts +5 -5
  152. package/types/divide.d.ts +2 -2
  153. package/types/download.d.ts +22 -38
  154. package/types/fileReader.d.ts +35 -2
  155. package/types/filterTree.d.ts +6 -7
  156. package/types/findTreeNode.d.ts +5 -7
  157. package/types/findTreeNodes.d.ts +5 -7
  158. package/types/findTreeSelect.d.ts +5 -7
  159. package/types/formatBankCard.d.ts +8 -5
  160. package/types/formatMobile.d.ts +7 -4
  161. package/types/formatMoney.d.ts +8 -7
  162. package/types/index.d.ts +125 -55
  163. package/types/isBankCard.d.ts +9 -8
  164. package/types/isBusinessLicense.d.ts +8 -5
  165. package/types/isChinese.d.ts +9 -8
  166. package/types/isEmail.d.ts +1 -1
  167. package/types/isHMCard.d.ts +2 -2
  168. package/types/isIPv4.d.ts +1 -1
  169. package/types/isIPv6.d.ts +1 -1
  170. package/types/isIdCard.d.ts +8 -7
  171. package/types/isMobile.d.ts +1 -1
  172. package/types/isPassport.d.ts +2 -2
  173. package/types/isPassword.d.ts +4 -7
  174. package/types/isPostcode.d.ts +1 -1
  175. package/types/isPromiseLike.d.ts +1 -1
  176. package/types/isQQ.d.ts +1 -1
  177. package/types/isSocialCreditCode.d.ts +8 -5
  178. package/types/isSwiftCode.d.ts +2 -2
  179. package/types/isTWCard.d.ts +6 -5
  180. package/types/isTelephone.d.ts +1 -1
  181. package/types/isUrl.d.ts +2 -2
  182. package/types/isVehicle.d.ts +2 -2
  183. package/types/isWX.d.ts +1 -1
  184. package/types/listToTree.d.ts +12 -12
  185. package/types/minus.d.ts +3 -2
  186. package/types/normalizeString.d.ts +2 -2
  187. package/types/numberToChinese.d.ts +13 -12
  188. package/types/padZero.d.ts +2 -2
  189. package/types/parseIdCard.d.ts +17 -56
  190. package/types/plus.d.ts +3 -2
  191. package/types/randomString.d.ts +2 -2
  192. package/types/replaceChar.d.ts +15 -11
  193. package/types/round.d.ts +2 -2
  194. package/types/safeDate.d.ts +24 -2
  195. package/types/setDataURLPrefix.d.ts +5 -5
  196. package/types/strlen.d.ts +1 -1
  197. package/types/times.d.ts +3 -2
  198. package/types/transformFieldNames.d.ts +12 -10
  199. package/types/treeToList.d.ts +1 -1
  200. package/types/utils/config.d.ts +6 -5
  201. package/types/utils/constants.d.ts +2 -2
  202. package/types/utils/convertToString.d.ts +1 -1
  203. package/types/utils/devWarn.d.ts +1 -1
  204. package/types/utils/math.util.d.ts +15 -9
  205. package/types/utils/type/index.d.ts +7 -0
  206. package/types/utils/type/isArguments.d.ts +1 -1
  207. package/types/utils/type/isArray.d.ts +1 -1
  208. package/types/utils/type/isArrayBuffer.d.ts +1 -1
  209. package/types/utils/type/isBlob.d.ts +1 -1
  210. package/types/utils/type/isBoolean.d.ts +1 -1
  211. package/types/utils/type/isDate.d.ts +1 -1
  212. package/types/utils/type/isError.d.ts +1 -1
  213. package/types/utils/type/isFunction.d.ts +1 -1
  214. package/types/utils/type/isMap.d.ts +1 -1
  215. package/types/utils/type/isNaN.d.ts +1 -1
  216. package/types/utils/type/isNil.d.ts +1 -1
  217. package/types/utils/type/isNull.d.ts +1 -1
  218. package/types/utils/type/isNumber.d.ts +1 -1
  219. package/types/utils/type/isObject.d.ts +1 -1
  220. package/types/utils/type/isRegExp.d.ts +1 -1
  221. package/types/utils/type/isSet.d.ts +1 -1
  222. package/types/utils/type/isString.d.ts +1 -1
  223. package/types/utils/type/isSymbol.d.ts +1 -1
  224. package/types/utils/type/isType.d.ts +1 -1
  225. package/types/utils/type/isUndefined.d.ts +1 -1
  226. package/types/utils/type/isWeakMap.d.ts +1 -1
  227. package/types/utils/type/isWeakSet.d.ts +1 -1
  228. package/types/validatePassword.d.ts +17 -48
  229. package/types/waitTime.d.ts +2 -2
  230. package/esm/interface.doc.js +0 -125
  231. package/esm/interface.type.js +0 -17
  232. package/esm/utils/type/index.js +0 -29
  233. package/esm/utils/type/isArguments.js +0 -22
  234. package/esm/utils/type/isArray.js +0 -22
  235. package/esm/utils/type/isArrayBuffer.js +0 -25
  236. package/esm/utils/type/isBoolean.js +0 -22
  237. package/esm/utils/type/isDate.js +0 -22
  238. package/esm/utils/type/isError.js +0 -22
  239. package/esm/utils/type/isFunction.js +0 -22
  240. package/esm/utils/type/isMap.js +0 -22
  241. package/esm/utils/type/isRegExp.js +0 -22
  242. package/esm/utils/type/isSet.js +0 -22
  243. package/esm/utils/type/isWeakMap.js +0 -22
  244. package/esm/utils/type/isWeakSet.js +0 -22
  245. package/lib/interface.doc.js +0 -127
  246. package/lib/interface.type.js +0 -5
  247. package/lib/utils/type/index.js +0 -146
  248. package/lib/utils/type/isArguments.js +0 -29
  249. package/lib/utils/type/isArray.js +0 -29
  250. package/lib/utils/type/isArrayBuffer.js +0 -32
  251. package/lib/utils/type/isBoolean.js +0 -29
  252. package/lib/utils/type/isDate.js +0 -29
  253. package/lib/utils/type/isError.js +0 -29
  254. package/lib/utils/type/isFunction.js +0 -29
  255. package/lib/utils/type/isMap.js +0 -29
  256. package/lib/utils/type/isRegExp.js +0 -29
  257. package/lib/utils/type/isSet.js +0 -29
  258. package/lib/utils/type/isWeakMap.js +0 -29
  259. package/lib/utils/type/isWeakSet.js +0 -29
  260. package/types/interface.type.d.ts +0 -2
@@ -1,241 +1,117 @@
1
- "use strict";
1
+ 'use strict';
2
+
3
+ var math_util = require('./utils/math.util.js');
4
+ var devWarn = require('./utils/devWarn.js');
2
5
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
- var _math = require("./utils/math.util");
8
- var _devWarn = _interopRequireDefault(require("./utils/devWarn"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
- // 简体
11
6
  var chnNumberChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
12
7
  var chnUnitChar = ['', '十', '百', '千'];
13
-
14
- // 繁体
15
8
  var big5NumberChar = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
16
9
  var big5UnitChar = ['', '拾', '佰', '仟'];
17
-
18
- // 数字字符、计数单位
19
-
20
- /**
21
- * @type {string[]}
22
- * @private
23
- */
24
10
  var numberChar;
25
-
26
- /**
27
- * @type {string[]}
28
- * @private
29
- */
30
11
  var unitChar;
31
-
32
- /**
33
- * @type {string[]}
34
- * @private
35
- */
36
12
  var unitSection;
37
-
38
- /**
39
- * 每个小节的内部进行转化
40
- *
41
- * @private
42
- * @param {number} section 数字
43
- * @returns {string} 转化的数字
44
- */
45
13
  function sectionToChinese(section) {
46
- var str = '';
47
- var chnstr = '';
48
- var zero = false; //zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零
49
- var unitPos = 0;
50
- while (section > 0) {
51
- // 对数字取余10,得到的数即为个位数
52
- var v = section % 10;
53
-
54
- //如果数字为零,则对字符串进行补零
55
- if (v == 0) {
56
- if (zero) {
57
- //如果遇到连续多次取余都是0,那么只需补一个零即可
58
- zero = false;
59
- chnstr = numberChar[v] + chnstr;
60
- }
61
- } else {
62
- //第一次取余之后,如果再次取余为零,则需要补零
63
- zero = true;
64
- str = numberChar[v];
65
- str += unitChar[unitPos];
66
- chnstr = str + chnstr;
14
+ var str = '';
15
+ var chnstr = '';
16
+ var zero = false;
17
+ var unitPos = 0;
18
+ while (section > 0) {
19
+ var v = section % 10;
20
+ if (v == 0) {
21
+ if (zero) {
22
+ zero = false;
23
+ chnstr = numberChar[v] + chnstr;
24
+ }
25
+ }
26
+ else {
27
+ zero = true;
28
+ str = numberChar[v];
29
+ str += unitChar[unitPos];
30
+ chnstr = str + chnstr;
31
+ }
32
+ unitPos++;
33
+ section = Math.floor(section / 10);
67
34
  }
68
- unitPos++;
69
- section = Math.floor(section / 10);
70
- }
71
- return chnstr;
35
+ return chnstr;
72
36
  }
73
-
74
- /**
75
- * 转换整数
76
- *
77
- * @private
78
- * @param {number} num 要转换的数字
79
- * @returns {string} 中文数字
80
- */
81
37
  function convertInteger(num) {
82
- var numInt = Math.floor(num);
83
- var unitPos = 0;
84
- var strIns = '';
85
- var chnStr = '';
86
- var needZero = false;
87
- if (numInt === 0) {
88
- return numberChar[0];
89
- }
90
- while (numInt > 0) {
91
- var section = numInt % 10000;
92
- if (needZero) {
93
- chnStr = numberChar[0] + chnStr;
38
+ var numInt = Math.floor(num);
39
+ var unitPos = 0;
40
+ var strIns = '';
41
+ var chnStr = '';
42
+ var needZero = false;
43
+ if (numInt === 0) {
44
+ return numberChar[0];
45
+ }
46
+ while (numInt > 0) {
47
+ var section = numInt % 10000;
48
+ if (needZero) {
49
+ chnStr = numberChar[0] + chnStr;
50
+ }
51
+ strIns = sectionToChinese(section);
52
+ strIns += section !== 0 ? unitSection[unitPos] : unitSection[0];
53
+ chnStr = strIns + chnStr;
54
+ needZero = section < 1000 && section > 0;
55
+ numInt = Math.floor(numInt / 10000);
56
+ unitPos++;
94
57
  }
95
- strIns = sectionToChinese(section);
96
- strIns += section !== 0 ? unitSection[unitPos] : unitSection[0];
97
- chnStr = strIns + chnStr;
98
- needZero = section < 1000 && section > 0;
99
- numInt = Math.floor(numInt / 10000);
100
- unitPos++;
101
- }
102
- return chnStr;
58
+ return chnStr;
103
59
  }
104
-
105
- /**
106
- * 转换小数
107
- *
108
- * @private
109
- * @param {number} num 要转换的数字
110
- */
111
60
  function convertDecimal(num) {
112
- var strNum = num + '';
113
- var index = strNum.indexOf('.');
114
- var ret = '';
115
- if (index > -1) {
116
- var decimalStr = strNum.slice(index + 1);
117
- ret = mapNumberChar(parseInt(decimalStr));
118
- }
119
- return ret;
61
+ var strNum = num + '';
62
+ var index = strNum.indexOf('.');
63
+ var ret = '';
64
+ if (index > -1) {
65
+ var decimalStr = strNum.slice(index + 1);
66
+ ret = mapNumberChar(parseInt(decimalStr));
67
+ }
68
+ return ret;
120
69
  }
121
-
122
- /**
123
- * 映射为中文数字
124
- *
125
- * @private
126
- * @param {number} num 要处理的数字
127
- * @returns {string} 返回中文数字的映射
128
- */
129
70
  function mapNumberChar(num) {
130
- var strNum = num + '';
131
- var ret = '';
132
- for (var i = 0, len = strNum.length; i < len; i++) {
133
- ret += numberChar[parseInt(strNum[i])];
134
- }
135
- return ret;
71
+ var strNum = num + '';
72
+ var ret = '';
73
+ for (var i = 0, len = strNum.length; i < len; i++) {
74
+ ret += numberChar[parseInt(strNum[i])];
75
+ }
76
+ return ret;
136
77
  }
137
-
138
- /**
139
- * 数字转中文数字<br/><br/>
140
- *
141
- * 如果数字不在安全数字 -9007199254740991~9007199254740991 范围内,处理会有异常。
142
- *
143
- * @static
144
- * @alias module:Processor.numberToChinese
145
- * @since 1.2.0
146
- * @param {number} num 数字
147
- * @param {Object} [options] 配置项
148
- * @param {boolean} [options.big5=false] 繁体
149
- * @param {boolean} [options.unit=true] 计数单位
150
- * @param {string} [options.decimal="点"] 中文小数点,繁体字为點
151
- * @param {string} [options.zero="零"] 设置0。常用配置 〇
152
- * @param {string} [options.negative="负"] 负数前面的字
153
- * @param {Object} [options.unitConfig] 节点单位配置
154
- * @param {string} [options.unitConfig.w="万"] 设置计数单位万。常用配置 萬
155
- * @param {string} [options.unitConfig.y="亿"] 设置计数单位亿。常用配置 億
156
- * @returns {string} 中文数字
157
- * @example
158
- *
159
- * numberToChinese(100); // 一百
160
- * numberToChinese(100.3); // 一百点三
161
- * numberToChinese(1234567890); // 一十二亿三千四百五十六万七千八百九十
162
- * numberToChinese(1234567890.11); // 一十二亿三千四百五十六万七千八百九十点一一
163
- *
164
- * // 繁体
165
- * numberToChinese(100, {big5: true}); // 壹佰
166
- * numberToChinese(100.3, {big5: true}); // 壹佰點叁
167
- * numberToChinese(1234567890.11, {big5: true}); // 壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾點壹壹
168
- *
169
- * // 不带计数单位
170
- * numberToChinese(1990, {unit: false}); // 一九九零
171
- *
172
- * // 不带计数单位,修改0
173
- * numberToChinese(1990, {unit: false, zero:'〇'}); // 一九九〇
174
- *
175
- */
176
- function numberToChinese(num) {
177
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
178
- var _options$big = options.big5,
179
- big5 = _options$big === void 0 ? false : _options$big,
180
- _options$unit = options.unit,
181
- unit = _options$unit === void 0 ? true : _options$unit,
182
- _options$zero = options.zero,
183
- zero = _options$zero === void 0 ? '' : _options$zero,
184
- _options$negative = options.negative,
185
- negative = _options$negative === void 0 ? '负' : _options$negative,
186
- _options$unitConfig = options.unitConfig,
187
- unitConfig = _options$unitConfig === void 0 ? {} : _options$unitConfig;
188
- var _options$decimal = options.decimal,
189
- decimal = _options$decimal === void 0 ? '' : _options$decimal;
190
-
191
- // 非数字 或 NaN 不处理
192
- if (typeof num !== 'number' || isNaN(num)) {
193
- (0, _devWarn["default"])("\u53C2\u6570\u9519\u8BEF ".concat(num, "\uFF0C\u8BF7\u4F20\u5165\u6570\u5B57"));
194
- return '';
195
- }
196
-
197
- // 超过安全数字提示
198
- (0, _math.checkBoundary)(num);
199
-
200
- // 设置数字字符和计数单位
201
- if (big5) {
202
- numberChar = big5NumberChar.slice();
203
- unitChar = big5UnitChar.slice();
204
- decimal = decimal || '點';
205
- } else {
206
- numberChar = chnNumberChar.slice();
207
- unitChar = chnUnitChar.slice();
208
- decimal = decimal || '点';
209
- }
210
-
211
- // 设置节点计数单位,万、亿、万亿
212
- var unitWan = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.w) || '万';
213
- var unitYi = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.y) || '亿';
214
- var unitWanYi = unitWan + unitYi;
215
- unitSection = ['', unitWan, unitYi, unitWanYi];
216
-
217
- // 设置0
218
- if (zero) {
219
- numberChar[0] = zero;
220
- }
221
-
222
- // 前置字符,负数处理
223
- var preStr = num < 0 ? negative : '';
224
-
225
- // 整数和小数
226
- var chnInteger, chnDecimal;
227
- var numAbs = Math.abs(num);
228
-
229
- // 处理整数
230
- if (unit) {
231
- chnInteger = convertInteger(numAbs);
232
- } else {
233
- chnInteger = mapNumberChar(Math.floor(numAbs));
234
- }
235
-
236
- // 处理小数
237
- chnDecimal = convertDecimal(numAbs);
238
- return chnDecimal ? "".concat(preStr).concat(chnInteger).concat(decimal).concat(chnDecimal) : "".concat(preStr).concat(chnInteger);
78
+ function numberToChinese(num, options) {
79
+ if (options === void 0) { options = {}; }
80
+ var _a = options.big5, big5 = _a === void 0 ? false : _a, _b = options.unit, unit = _b === void 0 ? true : _b, _c = options.zero, zero = _c === void 0 ? '' : _c, _d = options.negative, negative = _d === void 0 ? '负' : _d, _e = options.unitConfig, unitConfig = _e === void 0 ? {} : _e;
81
+ var _f = options.decimal, decimal = _f === void 0 ? '' : _f;
82
+ if (typeof num !== 'number' || isNaN(num)) {
83
+ devWarn("\u53C2\u6570\u9519\u8BEF ".concat(num, "\uFF0C\u8BF7\u4F20\u5165\u6570\u5B57"));
84
+ return '';
85
+ }
86
+ math_util.checkBoundary(num);
87
+ if (big5) {
88
+ numberChar = big5NumberChar.slice();
89
+ unitChar = big5UnitChar.slice();
90
+ decimal = decimal || '點';
91
+ }
92
+ else {
93
+ numberChar = chnNumberChar.slice();
94
+ unitChar = chnUnitChar.slice();
95
+ decimal = decimal || '点';
96
+ }
97
+ var unitWan = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.w) || '万';
98
+ var unitYi = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.y) || '亿';
99
+ var unitWanYi = unitWan + unitYi;
100
+ unitSection = ['', unitWan, unitYi, unitWanYi];
101
+ if (zero) {
102
+ numberChar[0] = zero;
103
+ }
104
+ var preStr = num < 0 ? negative : '';
105
+ var chnInteger;
106
+ var numAbs = Math.abs(num);
107
+ if (unit) {
108
+ chnInteger = convertInteger(numAbs);
109
+ }
110
+ else {
111
+ chnInteger = mapNumberChar(Math.floor(numAbs));
112
+ }
113
+ var chnDecimal = convertDecimal(numAbs);
114
+ return chnDecimal ? "".concat(preStr).concat(chnInteger).concat(decimal).concat(chnDecimal) : "".concat(preStr).concat(chnInteger);
239
115
  }
240
- var _default = numberToChinese;
241
- exports["default"] = _default;
116
+
117
+ module.exports = numberToChinese;
package/lib/padZero.js CHANGED
@@ -1,45 +1,18 @@
1
- "use strict";
1
+ 'use strict';
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports["default"] = void 0;
7
- var _normalizeString = _interopRequireDefault(require("./normalizeString"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
- /**
10
- * 前置补零
11
- *
12
- * @static
13
- * @alias module:Processor.padZero
14
- * @since 4.7.0
15
- * @param {string|number} value 要处理的值
16
- * @param {number} [size=2] 指定字符串长度
17
- * @returns {string} 用零填充数字到给定长度的字符串
18
- * @example
19
- * padZero(5); // 05
20
- * padZero('5'); // 05
21
- *
22
- * padZero(12); // 12
23
- * padZero('12'); // 12
24
- *
25
- * padZero(688); // 688
26
- * padZero('688'); // 688
27
- *
28
- * padZero(688, 5); // 00688
29
- * padZero('688', 5); // 00688
30
- *
31
- */
32
- function padZero(value) {
33
- var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
34
- var str = (0, _normalizeString["default"])(value);
35
- var len = str.length;
36
- if (typeof size !== 'number' || size < 0) {
37
- size = 0;
38
- }
39
- if (len < size) {
40
- return '0'.repeat(size - len) + str;
41
- }
42
- return str;
3
+ var normalizeString = require('./normalizeString.js');
4
+
5
+ function padZero(value, size) {
6
+ if (size === void 0) { size = 2; }
7
+ var str = normalizeString(value);
8
+ var len = str.length;
9
+ if (typeof size !== 'number' || size < 0) {
10
+ size = 0;
11
+ }
12
+ if (len < size) {
13
+ return '0'.repeat(size - len) + str;
14
+ }
15
+ return str;
43
16
  }
44
- var _default = padZero;
45
- exports["default"] = _default;
17
+
18
+ module.exports = padZero;
@@ -1,142 +1,69 @@
1
- "use strict";
1
+ 'use strict';
2
2
 
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = void 0;
8
- function _wrapRegExp() { _wrapRegExp = function _wrapRegExp(re, groups) { return new BabelRegExp(re, void 0, groups); }; var _super = RegExp.prototype, _groups = new WeakMap(); function BabelRegExp(re, flags, groups) { var _this = new RegExp(re, flags); return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype); } function buildGroups(result, re) { var g = _groups.get(re); return Object.keys(g).reduce(function (groups, name) { var i = g[name]; if ("number" == typeof i) groups[name] = result[i];else { for (var k = 0; void 0 === result[i[k]] && k + 1 < i.length;) { k++; } groups[name] = result[i[k]]; } return groups; }, Object.create(null)); } return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) { var result = _super.exec.call(this, str); if (result) { result.groups = buildGroups(result, this); var indices = result.indices; indices && (indices.groups = buildGroups(indices, this)); } return result; }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) { if ("string" == typeof substitution) { var groups = _groups.get(this); return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) { var group = groups[name]; return "$" + (Array.isArray(group) ? group.join("$") : group); })); } if ("function" == typeof substitution) { var _this = this; return _super[Symbol.replace].call(this, str, function () { var args = arguments; return "object" != _typeof(args[args.length - 1]) && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args); }); } return _super[Symbol.replace].call(this, str, substitution); }, _wrapRegExp.apply(this, arguments); }
9
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
10
- function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
11
- var regIdCard = /*#__PURE__*/_wrapRegExp(/^(\d{2})(\d{2})(\d{2})((?:\d{2})?\d{2})(\d{2})(\d{2})\d{2}(\d)(?:\d|X)?$/i, {
12
- province: 1,
13
- city: 2,
14
- area: 3,
15
- year: 4,
16
- month: 5,
17
- day: 6,
18
- gender: 7
19
- });
3
+ var regIdCard = /^(?<province>\d{2})(?<city>\d{2})(?<area>\d{2})(?<year>(?:\d{2})?\d{2})(?<month>\d{2})(?<day>\d{2})\d{2}(?<gender>\d)(?:\d|X)?$/i;
20
4
  var Provinces = [
21
- // 华北地区:北京市|110000,天津市|120000,河北省|130000,山西省|140000,内蒙古自治区|150000
22
- ['11', '北京市'], ['12', '天津市'], ['13', '河北省'], ['14', '山西省'], ['15', '内蒙古自治区'],
23
- // 东北地区: 辽宁省|210000,吉林省|220000,黑龙江省|230000
24
- ['21', '辽宁省'], ['22', '吉林省'], ['23', '黑龙江省'],
25
- // 华东地区: 上海市|310000,江苏省|320000,浙江省|330000,安徽省|340000,福建省|350000,江西省|360000,山东省|370000
26
- ['31', '上海市'], ['32', '江苏省'], ['33', '浙江省'], ['34', '安徽省'], ['35', '福建省'], ['36', '江西省'], ['37', '山东省'],
27
- // 华中地区: 河南省|410000,湖北省|420000,湖南省|430000
28
- ['41', '河南省'], ['42', '湖北省'], ['43', '湖南省'],
29
- // 华南地区:广东省|440000,广西壮族自治区|450000,海南省|460000
30
- ['44', '广东省'], ['45', '广西壮族自治区'], ['46', '海南省'],
31
- // 西南地区:重庆市|500000,四川省|510000,贵州省|520000,云南省|530000,西藏自治区|540000
32
- ['50', '重庆市'], ['51', '四川省'], ['52', '贵州省'], ['53', '云南省'], ['54', '西藏自治区'],
33
- // 西北地区: 陕西省|610000,甘肃省|620000,青海省|630000,宁夏回族自治区|640000,新疆维吾尔自治区|650000
34
- ['61', '陕西省'], ['62', '甘肃省'], ['63', '青海省'], ['64', '宁夏回族自治区'], ['65', '新疆维吾尔自治区'],
35
- // 台湾地区:台湾省|710000
36
- // 台湾居民公民身份号码地址码为830000,参考 http://www.wanweibaike.com/wiki-中华人民共和国行政区划代码_(7区)、https://zh.wikipedia.org/wiki/港澳台居民居住证
37
- ['71', '台湾省'], ['83', '台湾省'],
38
- // 港澳地区:香港特别行政区|810000,澳门特别行政区|820000
39
- ['81', '香港特别行政区'], ['82', '澳门特别行政区']];
40
-
41
- // 第一位数字是以前的大区制代码。第二位是大区所在省市编码。全国共分为8个大区:华北(1)、东北(2)、华东(3)、中南(4)、西南(5)、西北(6)、台湾(7)和港澳(8)。
42
- // const Regions = [
43
- // ['1', '华北地区'],
44
- // ['2', '东北地区'],
45
- // ['3', '华东地区'],
46
- // ['4', '中南地区'],
47
- // ['5', '西南地区'],
48
- // ['6', '西北地区'],
49
- // ['7', '台湾地区'],
50
- // ['8', '港澳地区']
51
- // ];
52
-
53
- /**
54
- * @typedef {Object} IdCardOrigin - 解析身份证原数据
55
- * @property {string} province - 省份编码
56
- * @property {string} city - 城市编码
57
- * @property {string} area - 地区编码
58
- * @property {string} year - 出生年
59
- * @property {string} month - 出生月
60
- * @property {string} day - 出生日
61
- * @property {string} gender - 性别 能整除2为女,否则为男
62
- */
63
-
64
- /**
65
- * @typedef {Object} IdCardInfo - 身份证信息
66
- * @property {string} province - 省份
67
- * @property {string} birthday - 生日
68
- * @property {string} gender - 性别
69
- * @property {IdCardOrigin} origin - 解析身份证原数据
70
- */
71
-
72
- /**
73
- * 解析身份证号码,支持15、18位身份证号码
74
- *
75
- * @static
76
- * @alias module:Processor.parseIdCard
77
- * @since 4.0.0
78
- * @see {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}
79
- * @param {string} id 身份证号码,支持15位
80
- * @returns {IdCardInfo | null} 省份、生日、性别,省/市/区/年/月/日/性别编码。如果解析失败将返回 null 。
81
- * @example
82
- *
83
- * parseIdCard('123456789123456'); // null
84
- *
85
- * // 18位身份证号码
86
- * parseIdCard('130701199310302288');
87
- * // =>
88
- * {
89
- * birthday: "1993-10-30",
90
- * gender: "女",
91
- * origin: { province: "13", city: "07", area: "01", year: "1993", month: "10", day: "30", gender: "8" },
92
- * province: "河北省"
93
- * }
94
- *
95
- * // 15位身份证号码
96
- * parseIdCard('130701931030228');
97
- * // =>
98
- * {
99
- * birthday: "93-10-30",
100
- * gender: "女",
101
- * origin: { province: "13", city: "07", area: "01", year: "93", month: "10", day: "30", gender: "8" },
102
- * province: "河北省"
103
- * }
104
- *
105
- */
5
+ ['11', '北京市'],
6
+ ['12', '天津市'],
7
+ ['13', '河北省'],
8
+ ['14', '山西省'],
9
+ ['15', '内蒙古自治区'],
10
+ ['21', '辽宁省'],
11
+ ['22', '吉林省'],
12
+ ['23', '黑龙江省'],
13
+ ['31', '上海市'],
14
+ ['32', '江苏省'],
15
+ ['33', '浙江省'],
16
+ ['34', '安徽省'],
17
+ ['35', '福建省'],
18
+ ['36', '江西省'],
19
+ ['37', '山东省'],
20
+ ['41', '河南省'],
21
+ ['42', '湖北省'],
22
+ ['43', '湖南省'],
23
+ ['44', '广东省'],
24
+ ['45', '广西壮族自治区'],
25
+ ['46', '海南省'],
26
+ ['50', '重庆市'],
27
+ ['51', '四川省'],
28
+ ['52', '贵州省'],
29
+ ['53', '云南省'],
30
+ ['54', '西藏自治区'],
31
+ ['61', '陕西省'],
32
+ ['62', '甘肃省'],
33
+ ['63', '青海省'],
34
+ ['64', '宁夏回族自治区'],
35
+ ['65', '新疆维吾尔自治区'],
36
+ ['71', '台湾省'],
37
+ ['83', '台湾省'],
38
+ ['81', '香港特别行政区'],
39
+ ['82', '澳门特别行政区']
40
+ ];
106
41
  function parseIdCard(id) {
107
- var match = regIdCard.exec(id);
108
- if (!match) {
109
- return null;
110
- }
111
-
112
- /** @type {{ province: string, city: string, area: string, year: string, month: string, day: string, gender: string }} */
113
- // @ts-ignore
114
- var origin = match.groups || {
115
- province: match[1],
116
- city: match[2],
117
- area: match[3],
118
- year: match[4],
119
- month: match[5],
120
- day: match[6],
121
- gender: match[7]
122
- };
123
- var province = Provinces.find(function (item) {
124
- return item[0] === origin.province;
125
- });
126
- if (!province) {
127
- return null;
128
- }
129
- var birthday = "".concat(origin.year, "-").concat(origin.month, "-").concat(origin.day);
130
- var gender = Number(origin.gender) % 2 === 0 ? '女' : '男';
131
- // const region = Regions.find(item => item[0] === origin.province?.substring(0, 1));
132
-
133
- return {
134
- // region,
135
- province: province[1],
136
- birthday: birthday,
137
- gender: gender,
138
- origin: origin
139
- };
42
+ var match = regIdCard.exec(id);
43
+ if (!match) {
44
+ return null;
45
+ }
46
+ var origin = match.groups || {
47
+ province: match[1],
48
+ city: match[2],
49
+ area: match[3],
50
+ year: match[4],
51
+ month: match[5],
52
+ day: match[6],
53
+ gender: match[7]
54
+ };
55
+ var province = Provinces.find(function (item) { return item[0] === origin.province; });
56
+ if (!province) {
57
+ return null;
58
+ }
59
+ var birthday = "".concat(origin.year, "-").concat(origin.month, "-").concat(origin.day);
60
+ var gender = Number(origin.gender) % 2 === 0 ? '女' : '男';
61
+ return {
62
+ province: province[1],
63
+ birthday: birthday,
64
+ gender: gender,
65
+ origin: origin
66
+ };
140
67
  }
141
- var _default = parseIdCard;
142
- exports["default"] = _default;
68
+
69
+ module.exports = parseIdCard;