@semi-kit/utils 1.1.18 → 1.2.1

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.
@@ -0,0 +1,3 @@
1
+ type LocaleMessages = Record<string, Record<string, string>>;
2
+ declare function useLocal(): (key: string, params?: Record<string, string | number>) => string;
3
+ export { LocaleMessages, useLocal };
@@ -0,0 +1 @@
1
+ import{getAppProvider}from"@semi-kit/component";let globalMessages={"zh-CN":{pleaseSelect:`请选择`,pleaseInput:`请输入`,ipRule:`IP 地址格式错误`,officePhoneRule:`办公电话格式错误`,mobilePhoneRule:`手机号码格式错误`,emailRule:`邮箱格式错误`,onlyNumbersRule:`只能包含数字`,onlyLetterRule:`只能包含字母`,onlyLowercaseRule:`只能包含小写字母`,onlyUppercaseRule:`只能包含大写字母`,onlyIntRule:`只能包含整数`,onlyPositiveIntRule:`只能包含正整数`,onlyPositiveIntZeroRule:`只能包含 0 及正整数`,onlyNegativeIntRule:`只能包含负整数`,onlyChineseRule:`只能包含中文字符`,onlyNotChineseRule:`只能包含非中文字符`,lengthRule:`长度在 {min} 到 {max} 位字符`,onlyMinLengthRule:`长度最少 {min} 位字符`,onlyMaxLengthRule:`长度最多 {max} 位字符`,sizeRule:`数值需在 {min} 到 {max} 之间`,onlyMinSizeRule:`最小值不得小于 {min}`,onlyMaxSizeRule:`最大值不得超过 {max}`,decimalPlaceRule:`小数位数不得超过 {place} 位`},en:{pleaseSelect:`Please Select `,pleaseInput:`Please Input `,ipRule:`IP address format error`,officePhoneRule:`Office phone format error`,mobilePhoneRule:`Mobile phone format error`,emailRule:`Email format error`,onlyNumbersRule:`Only numbers allowed`,onlyLetterRule:`Only letters allowed`,onlyLowercaseRule:`Only lowercase letters allowed`,onlyUppercaseRule:`Only uppercase letters allowed`,onlyIntRule:`Only integers allowed`,onlyPositiveIntRule:`Only positive integers allowed`,onlyPositiveIntZeroRule:`Only positive integers or zero allowed`,onlyNegativeIntRule:`Only negative integers allowed`,onlyChineseRule:`Only Chinese characters allowed`,onlyNotChineseRule:`Chinese characters not allowed`,lengthRule:`The length ranges from {min} to {max} characters`,onlyMinLengthRule:`The minimum length {min} characters`,onlyMaxLengthRule:`The maximum length {max} characters`,sizeRule:`The values range from {min} to {max}`,onlyMinSizeRule:`The minimum value shall not be less than {min}`,onlyMaxSizeRule:`The maximum value shall not be exceeded {max}`,decimalPlaceRule:`Decimal places must not exceed {place} digits`}};function useLocal(){let n=getAppProvider();return(e,r)=>{let i=globalMessages[n.locale?.value]?.[e]||e;return r&&Object.keys(r).forEach(e=>{i=i.replace(RegExp(`\\{${e}\\}`,`g`),String(r[e]))}),i}}export{useLocal};
package/lib/index.d.mts CHANGED
@@ -5,4 +5,5 @@ import { isAndroidMobile, isAppleMobile, isMobile, isQQBrowser, isWeChatBrowser
5
5
  import { __, useOmitExtraParams } from "./extra.mjs";
6
6
  import { clearLocalStorage, getLocalStorage, removeLocalStorage, setLocalStorage } from "./localstorage.mjs";
7
7
  import { formatNumberWithCommas, formatPhoneNumber, getRandomNum, isEven, maskedPhoneNumber } from "./number.mjs";
8
- export { FormatDateRangeParamsType, __, clearLocalStorage, formatNumberWithCommas, formatPhoneNumber, getDayOfYear, getLocalStorage, getRandomNum, hexToRgb, isAndroidMobile, isAppleMobile, isEven, isMobile, isQQBrowser, isWeChatBrowser, isWeekday, maskedPhoneNumber, randomHex, removeLocalStorage, rgbToHex, setLocalStorage, useFormatDate, useFormatDateRange, useFormatDateTimeParams, useFormatTime, useOmitExtraParams, useOmitNilRequestParams, useParamsSerializer };
8
+ import { PrefixType, PresetRules, ValidationTrigger, useRuleDecimalPlace, useRuleNumberLength, useRuleNumberSize, useRuleStringLength, useRules } from "./rules.mjs";
9
+ export { FormatDateRangeParamsType, PrefixType, PresetRules, ValidationTrigger, __, clearLocalStorage, formatNumberWithCommas, formatPhoneNumber, getDayOfYear, getLocalStorage, getRandomNum, hexToRgb, isAndroidMobile, isAppleMobile, isEven, isMobile, isQQBrowser, isWeChatBrowser, isWeekday, maskedPhoneNumber, randomHex, removeLocalStorage, rgbToHex, setLocalStorage, useFormatDate, useFormatDateRange, useFormatDateTimeParams, useFormatTime, useOmitExtraParams, useOmitNilRequestParams, useParamsSerializer, useRuleDecimalPlace, useRuleNumberLength, useRuleNumberSize, useRuleStringLength, useRules };
package/lib/index.mjs CHANGED
@@ -1 +1 @@
1
- import{useOmitNilRequestParams,useParamsSerializer}from"./axios.mjs";import{hexToRgb,randomHex,rgbToHex}from"./color.mjs";import{getDayOfYear,isWeekday,useFormatDate,useFormatDateRange,useFormatDateTimeParams,useFormatTime}from"./datetime.mjs";import{isAndroidMobile,isAppleMobile,isMobile,isQQBrowser,isWeChatBrowser}from"./device.mjs";import{__,useOmitExtraParams}from"./extra.mjs";import{clearLocalStorage,getLocalStorage,removeLocalStorage,setLocalStorage}from"./localstorage.mjs";import{formatNumberWithCommas,formatPhoneNumber,getRandomNum,isEven,maskedPhoneNumber}from"./number.mjs";export{__,clearLocalStorage,formatNumberWithCommas,formatPhoneNumber,getDayOfYear,getLocalStorage,getRandomNum,hexToRgb,isAndroidMobile,isAppleMobile,isEven,isMobile,isQQBrowser,isWeChatBrowser,isWeekday,maskedPhoneNumber,randomHex,removeLocalStorage,rgbToHex,setLocalStorage,useFormatDate,useFormatDateRange,useFormatDateTimeParams,useFormatTime,useOmitExtraParams,useOmitNilRequestParams,useParamsSerializer};
1
+ import{useOmitNilRequestParams,useParamsSerializer}from"./axios.mjs";import{hexToRgb,randomHex,rgbToHex}from"./color.mjs";import{getDayOfYear,isWeekday,useFormatDate,useFormatDateRange,useFormatDateTimeParams,useFormatTime}from"./datetime.mjs";import{isAndroidMobile,isAppleMobile,isMobile,isQQBrowser,isWeChatBrowser}from"./device.mjs";import{__,useOmitExtraParams}from"./extra.mjs";import{clearLocalStorage,getLocalStorage,removeLocalStorage,setLocalStorage}from"./localstorage.mjs";import{formatNumberWithCommas,formatPhoneNumber,getRandomNum,isEven,maskedPhoneNumber}from"./number.mjs";import{useRuleDecimalPlace,useRuleNumberLength,useRuleNumberSize,useRuleStringLength,useRules}from"./rules.mjs";export{__,clearLocalStorage,formatNumberWithCommas,formatPhoneNumber,getDayOfYear,getLocalStorage,getRandomNum,hexToRgb,isAndroidMobile,isAppleMobile,isEven,isMobile,isQQBrowser,isWeChatBrowser,isWeekday,maskedPhoneNumber,randomHex,removeLocalStorage,rgbToHex,setLocalStorage,useFormatDate,useFormatDateRange,useFormatDateTimeParams,useFormatTime,useOmitExtraParams,useOmitNilRequestParams,useParamsSerializer,useRuleDecimalPlace,useRuleNumberLength,useRuleNumberSize,useRuleStringLength,useRules};
@@ -0,0 +1,42 @@
1
+ import { FormItemRule } from "naive-ui";
2
+ type PresetRules = 'onlyNotChineseRule' | 'onlyChineseRule' | 'onlyNegativeIntRule' | 'onlyPositiveIntRule' | 'onlyPositiveIntZeroRule' | 'officePhoneRule' | 'mobilePhoneRule' | 'emailRule' | 'onlyNumbersRule' | 'onlyLetterRule' | 'onlyLowercaseRule' | 'onlyUppercaseRule' | 'ipRule' | 'onlyIntRule';
3
+ type ValidationTrigger = 'input' | 'change' | 'input-number';
4
+ type PrefixType = { [K in ValidationTrigger]: string };
5
+ interface RuleOptionsType {
6
+ required?: boolean;
7
+ message?: string;
8
+ }
9
+ declare function useRules(trigger: ValidationTrigger, message: string, options?: RuleOptionsType): FormItemRule;
10
+ declare function useRules(trigger: ValidationTrigger, message: PresetRules, options?: RuleOptionsType): FormItemRule;
11
+ /**
12
+ * 字符串输入长度限制规则
13
+ * @param {number} [min=0] - 最小长度,默认为 0
14
+ * @param {number} [max] - 最大长度,未指定时使用 AppProvider 中的 stringLength 配置
15
+ * @param {string} [message] - 自定义错误消息
16
+ * @returns {FormItemRule} 表单验证规则对象
17
+ */
18
+ declare const useRuleStringLength: (min?: number, max?: number, message?: string) => FormItemRule;
19
+ /**
20
+ * 数字输入长度限制规则(基于位数)
21
+ * @param {number} [min=0] - 最小位数,默认为 0
22
+ * @param {number} [max] - 最大位数,未指定时使用 AppProvider 中的 numberLength 配置
23
+ * @param {string} [message] - 自定义错误消息
24
+ * @returns {FormItemRule} 表单验证规则对象
25
+ */
26
+ declare const useRuleNumberLength: (min?: number, max?: number, message?: string) => FormItemRule;
27
+ /**
28
+ * 数字输入大小限制规则(基于数值范围)
29
+ * @param {number} [min=0] - 最小值,默认为 0
30
+ * @param {number} [max] - 最大值的指数(10 的 max 次方 -1),未指定时使用 AppProvider 中的 numberSize 配置
31
+ * @param {string} [message] - 自定义错误消息
32
+ * @returns {FormItemRule} 表单验证规则对象
33
+ */
34
+ declare const useRuleNumberSize: (min?: number, max?: number, message?: string) => FormItemRule;
35
+ /**
36
+ * 小数位数限制规则
37
+ * @param {number} [place=2] - 允许的最大小数位数,未指定时使用 AppProvider 中的 decimalPlace 配置
38
+ * @param {string} [message] - 自定义错误消息
39
+ * @returns {FormItemRule} 表单验证规则对象
40
+ */
41
+ declare const useRuleDecimalPlace: (place?: number, message?: string) => FormItemRule;
42
+ export { PrefixType, PresetRules, ValidationTrigger, useRuleDecimalPlace, useRuleNumberLength, useRuleNumberSize, useRuleStringLength, useRules };
package/lib/rules.mjs ADDED
@@ -0,0 +1 @@
1
+ import{useLocal}from"./_utils/local.mjs";import{isRegExp}from"es-toolkit";import{getAppProvider}from"@semi-kit/component";const prefix={input:`pleaseInput`,"input-number":`pleaseInput`,change:`pleaseSelect`},presetRulePatterns={officePhoneRule:/^(0\d{2,3}-?)?\d+$/,mobilePhoneRule:/^(?:(?:\+|00)86)?1\d{10}$/,emailRule:/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])|(([a-z\-0-9]+\.)+[a-z]{2,}))$/i,onlyNumbersRule:/^\d+$/,onlyLetterRule:/^[a-z]+$/i,onlyLowercaseRule:/^[a-z]+$/,onlyUppercaseRule:/^[A-Z]+$/,onlyIntRule:/^(?:0|-?[1-9]\d*)$/,onlyPositiveIntRule:/^\+?[1-9]\d*$/,onlyPositiveIntZeroRule:/^\+?\d+$/,onlyNegativeIntRule:/^-\d+$/,ipRule:/^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])(?::(?:\d|[1-9]\d{1,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5]))?$/,onlyChineseRule:/[\u4e00-\u9fa5]+$/,onlyNotChineseRule:/[^\u4e00-\u9fa5|\u3002\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5]$/};function useRules(n,a,o={}){let s=useLocal(),{required:c=!0}=o,l={trigger:[`blur`,n===`input-number`?`change`:n]};return c&&(l.required=c),n===`input-number`&&(l.type=`number`),a in presetRulePatterns?l.validator=(e,n)=>{let{message:c,required:l=!0}=o;if(!l&&!n)return!0;let u=presetRulePatterns[a];return isRegExp(u)?l&&(typeof n==`number`?n==null:!n)?Error(s(prefix.input)+(c||``)):u.test(n)?!0:Error(s(a)):(console.error(`Rule 验证`,Error(`非 RegExp 表达式`)),!0)}:l.message=s(prefix[n])+`dada`+a,l}const useRuleStringLength=(t=0,r,i)=>{let a=useLocal(),o=getAppProvider();console.log(222,o,o.ruleConfig,o.ruleConfig?.value);let s=r||o.ruleConfig?.value?.stringLength||0;return{trigger:[`blur`,`input`],min:t,max:s,message:i||(t===0?a(`onlyMaxLengthRule`,{max:s}):r===0?a(`onlyMinLengthRule`,{min:t}):a(`lengthRule`,{min:t,max:s}))}},useRuleNumberLength=(t=0,r,i)=>{let a=useLocal(),o=getAppProvider(),s=10**(r||o.ruleConfig?.value?.numberLength||0)-1;return{type:`number`,trigger:[`blur`,`change`],min:t===0?0:10**t,max:10**s-1,message:i||(t===0?a(`onlyMaxLengthRule`,{max:s}):s===0?a(`onlyMinLengthRule`,{min:t}):a(`lengthRule`,{min:t,max:s}))}},useRuleNumberSize=(t=0,r,i)=>{let a=useLocal(),o=getAppProvider(),s=10**(r||o.ruleConfig?.value?.numberSize||0)-1;return{type:`number`,trigger:[`blur`,`change`],min:t,max:s,message:i||(t===0?a(`onlyMaxSizeRule`,{max:s}):s===0?a(`onlyMinSizeRule`,{min:t}):a(`sizeRule`,{min:t,max:s}))}},useRuleDecimalPlace=(t,r)=>{let i=useLocal(),a=getAppProvider(),o=t||a.ruleConfig?.value?.decimalPlace||2;return{type:`number`,trigger:[`blur`,`change`],validator:(e,t)=>{if(t==null||t===``)return!0;let n=String(t),a=n.indexOf(`.`);return a===-1?!0:n.substring(a+1).length>o?Error(r||i(`decimalPlaceRule`,{place:o})):!0}}};export{useRuleDecimalPlace,useRuleNumberLength,useRuleNumberSize,useRuleStringLength,useRules};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@semi-kit/utils",
3
- "version": "1.1.18",
3
+ "version": "1.2.1",
4
4
  "description": "General-purpose tool function library",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -16,6 +16,7 @@
16
16
  "types": "./lib/index.d.mts",
17
17
  "exports": {
18
18
  ".": "./lib/index.mjs",
19
+ "./_utils/local": "./lib/_utils/local.mjs",
19
20
  "./axios": "./lib/axios.mjs",
20
21
  "./color": "./lib/color.mjs",
21
22
  "./datetime": "./lib/datetime.mjs",
@@ -23,6 +24,7 @@
23
24
  "./extra": "./lib/extra.mjs",
24
25
  "./localstorage": "./lib/localstorage.mjs",
25
26
  "./number": "./lib/number.mjs",
27
+ "./rules": "./lib/rules.mjs",
26
28
  "./package.json": "./package.json"
27
29
  },
28
30
  "scripts": {
@@ -40,7 +42,9 @@
40
42
  "@vueuse/core": "catalog:",
41
43
  "qs": "catalog:",
42
44
  "@types/qs": "catalog:",
45
+ "@semi-kit/component": "workspace:*",
43
46
  "axios": "catalog:",
47
+ "naive-ui": "catalog:",
44
48
  "es-toolkit": "catalog:"
45
49
  },
46
50
  "peerDependencies": {
@@ -48,7 +52,9 @@
48
52
  "qs": "*",
49
53
  "@types/qs": "*",
50
54
  "axios": "*",
51
- "es-toolkit": "*"
55
+ "es-toolkit": "*",
56
+ "@semi-kit/component": "*",
57
+ "naive-ui": "*"
52
58
  },
53
59
  "peerDependenciesMeta": {
54
60
  "@vueuse/core": {
@@ -65,6 +71,12 @@
65
71
  },
66
72
  "es-toolkit": {
67
73
  "optional": true
74
+ },
75
+ "@semi-kit/component": {
76
+ "optional": true
77
+ },
78
+ "naive-ui": {
79
+ "optional": true
68
80
  }
69
81
  }
70
82
  }