![PyPI Now Supports iOS and Android Wheels for Mobile Python Development](https://cdn.sanity.io/images/cgdhsj6q/production/96416c872705517a6a65ad9646ce3e7caef623a0-1024x1024.webp?w=400&fit=max&auto=format)
Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Node.js parameter verification module, more simple to use, JS parameter verification module, Joi module simple encapsulation library
初衷:
由于在使用 Joi
的时候,校验时每次都要写模式规则 string.trim().required()
等等。由于参数校验是频繁且必须的,写的越来越多,代码既不好看,也不好维护,模式规则也不好记忆,并且 joi throw
的错误还需要单独去处理。所以对日常最常用的校验,封装了joi的API
,并且可以在调用的时候同时传入自定义的Error
,使用 joi
友好的报错堆栈提示信息
同时 throw
我们自定义的Error
, 无须再单独处理 joi 的 Error
。所以就有了 miniJoi
,就是简单版的joi
。
欢迎提 Issue 和 PR , 代码的测试用例在tests
目录下,写好测试用例,执行命令为:
pnpm run coverage(推荐)
npm run coverage
yarn run coverage
控制台会输出用例情况和代码覆盖率。开发者也可以对 miniJoi
进行二次开发,打造更符合自己应用模块。
const miniJoi = require('minijoi');
miniJoi.requireAndNotEmptyForStr(value , options)
options : {
error : new Error("This is an Error") //公有
pattern : /^1[3456789]\d{9}$/ // email ID URL phone name
mode : 'strict' //phone
version : 'ipv6' //IP
generation : 'first' //ID
}
友好的堆栈提示,在Joi的基础上,报错的同时把要校验的参数类型也一起告诉给开发者,开发者可以清楚的看到输入的值和类型, _original 字段的值就是输入的值,如下:
Error [ValidationError]: "value" is not allowed to be empty, But the type of the argument passed in is [String], Please check the value in the "_original" field.
at Object.exports.process (D:\data\git\minijoi\node_modules\.pnpm\joi@17.4.2\node_modules\joi\lib\errors.js:184:16)
at Object.internals.entry (D:\data\git\minijoi\node_modules\.pnpm\joi@17.4.2\node_modules\joi\lib\validator.js:150:26)
at Object.exports.entry (D:\data\git\minijoi\node_modules\.pnpm\joi@17.4.2\node_modules\joi\lib\validator.js:27:30)
at internals.Base.validate (D:\data\git\minijoi\node_modules\.pnpm\joi@17.4.2\node_modules\joi\lib\base.js:548:26)
at validate (D:\data\git\minijoi\apply.js:12:37)
at Object.requireAndNotEmptyForStr (D:\data\git\minijoi\apply.js:39:12)
at Object.<anonymous> (D:\data\git\minijoi\test.js:101:7)
at Module._compile (internal/modules/cjs/loader.js:1072:14)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1101:10)
at Module.load (internal/modules/cjs/loader.js:937:32) {
_original: '',
details: [
{
message: '"value" is not allowed to be empty, But the type of the argument passed in is [String], Please check the value in the "_original" field.',
path: [],
type: 'string.empty',
context: { label: 'value', value: '' }
}
]
}
Node.js版本要求:
支持 Node.js V10,V12, V14, V16
API如下:
开发者可自定义 Error ,调用API时传 error 参数就可以了,miniJoi 会自动抛出开发者自定义 Error,默认输出上面的错误信息。
字符串必填且非空
miniJoi.requireAndNotEmptyForStr(value)
miniJoi.requireAndNotEmptyForStr(value , {error : new Error("This is an Error")})
字符串必填可以为空
miniJoi.requireAndIsEmptyForStr(value)
miniJoi.requireAndIsEmptyForStr(value , {error : new Error("This is an Error")})
必填字符串枚举
miniJoi.requireAndEnumForStr(value , ["test"])
miniJoi.requireAndEnumForStr(value , ["test","test1"] , {error : new Error("This is an Error")})
必填字符串特定长度
miniJoi.length(value , limit)
miniJoi.length(value , limit , {error : new Error("This is an Error")})
必填字符串最大长度
miniJoi.max(value , limit)
miniJoi.max(value , limit , {error : new Error("This is an Error")})
必填字符串最小长度
miniJoi.min(value , limit)
miniJoi.min(value , limit , {error : new Error("This is an Error")})
必填字符串中文姓名
miniJoi.name(value )
miniJoi.name(value , {error : new Error("This is an Error")})
miniJoi.name(value , {pattern : xxxx})
如miniJoi提供的中文姓名校验功能不符合开发者的要求,开发者可自定义传入正则表达式
必填字符串且合法邮箱
miniJoi.requireEmail(value )
miniJoi.requireEmail(value , {error : new Error("This is an Error")})
输入pattern字段,则使用pattern
miniJoi.requireEmail(value , {
error : new Error("This is an Error"),
pattern : /^1[3456789]\d{9}$/
})
如miniJoi提供的邮箱校验功能不符合开发者的要求,开发者可自定义传入正则表达式
必填字符串且合法电话号码 mode字段参考 anyrule
miniJoi.requirePhone(value )
miniJoi.requirePhone(value , {error : new Error("This is an Error")})
输入pattern字段,则使用pattern
mode 'strict'||'loose'
strict 表示严谨
loose 表示宽松
默认为(最宽松), 只要是1开头即可
miniJoi.requirePhone(value , {
error : new Error("This is an Error"),
pattern : /^1[3456789]\d{9}$/
mode : 'strict'
})
如miniJoi提供的电话号码校验功能不符合开发者的要求,开发者可自定义传入正则表达式
必填字符串且合法IP
miniJoi.requireIP(value )
miniJoi.requireIP(value , {error : new Error("This is an Error")})
输入pattern字段,则使用pattern
version 'ipv4'||'ipv6'
ipv4 表示只校验ipv4
ipv6 表示只校验ipv6
默认同时校验ipv4和ipv6
miniJoi.requireIP(value , {
error : new Error("This is an Error"),
version : 'ipv6'
})
如miniJoi提供的IP校验功能不符合开发者的要求,开发者可自定义传入正则表达式
必填字符串且合法Url
miniJoi.requireUrl(value )
miniJoi.requireUrl(value , {error : new Error("This is an Error")})
输入pattern字段,则使用pattern
miniJoi.requireUrl(value , {
error : new Error("This is an Error"),
pattern : /^1[3456789]\d{9}$/
})
如miniJoi提供的Url校验功能不符合开发者的要求,开发者可自定义传入正则表达式
必填字符串且合法身份证
miniJoi.requireID(value )
miniJoi.requireID(value , {error : new Error("This is an Error")})
输入pattern字段,则使用pattern
generation : "first" || "second"
first 表示只校验一代身份证
second 表示只校验二代身份证
默认同时校验一代和二代
miniJoi.requireID(value , {
error : new Error("This is an Error"),
pattern : /^1[3456789]\d{9}$/
generation : "first"
})
如miniJoi提供的身份证校验功能不符合开发者的要求,开发者可自定义传入正则表达式
必填数字
miniJoi.requireForNum(value)
miniJoi.requireForNum(value , {error : new Error("This is an Error")})
必填整数
miniJoi.requireForInt(value)
miniJoi.requireForInt(value , {error : new Error("This is an Error")})
必填数字枚举
miniJoi.requireAndEnumForNum(value)
miniJoi.requireAndEnumForNum(value ,[1,2], {error : new Error("This is an Error")})
必填数字小数位不大于 limit 位
miniJoi.requireAndPrecision(value)
miniJoi.requireAndPrecision(value , limit , {error : new Error("This is an Error")})
2.2 PASS
2.22 PASS
2.222 FAIL
必填数字范围API
miniJoi.requireForRangeNum(value ,op, limit )
miniJoi.requireForRangeNum(value ,op, limit , {error : new Error("This is an Error")})
op的值为 gt(>) || gte(>=) || lt(<) || lte(<=)
比如需要参数 > 0 , 则
miniJoi.requireForRangeNum(value ,"gt" , 0 ) 可代表正数
参数 >= 0
miniJoi.requireForRangeNum(value ,"gte" , 0 )
参数 <= 0
miniJoi.requireForRangeNum(value ,"lte" , 0 )
参数 < 0
miniJoi.requireForRangeNum(value ,"lt" , 0 ) 可代表负数
必填数字范围API
miniJoi.requireForRangeNum(value ,op, rangeArr )
miniJoi.requireForRangeNum(value ,op, rangeArr , {error : new Error("This is an Error")})
op的值为
left-close-right-close `[0,100]` 简称l-c-r-c
left-close-right-open `[0,100)` 简称 l-c-r-o
left-open-right-open `(0,100)` 简称 l-o-r-o
left-open-right-close `(0,100]` 简称 l-o-r-c
比如需要参数 > 0 and <= 100 , 则
miniJoi.requireForRangeNum(value ,"left-open-right-close" , [0,100] )
miniJoi.requireForRangeNum(value ,"l-o-r-c" , [0,100] )
比如需要参数 >= 0 and <= 100 , 则
miniJoi.requireForRangeNum(value ,"left-close-right-close" , [0,100] )
miniJoi.requireForRangeNum(value ,"l-c-r-c" , [0,100] )
比如需要参数 > 0 and < 100 , 则
miniJoi.requireForRangeNum(value ,"left-open-right-open" , [0,100] )
miniJoi.requireForRangeNum(value ,"l-o-r-o" , [0,100] )
比如需要参数 >= 0 and < 100 , 则
miniJoi.requireForRangeNum(value ,"left-close-right-open" , [0,100] )
miniJoi.requireForRangeNum(value ,"l-c-r-o" , [0,100] )
必填整数范围API
miniJoi.requireForRangeInt(value ,op, limit )
miniJoi.requireForRangeInt(value ,op, limit , {error : new Error("This is an Error")})
op的值为 gt(>) || gte(>=) || lt(<) || lte(<=)
比如需要参数 > 0 , 则
miniJoi.requireForRangeInt(value ,"gt" , 0 ) 可代表正整数
参数 >= 0
miniJoi.requireForRangeInt(value ,"gte" , 0 )
参数 <= 0
miniJoi.requireForRangeInt(value ,"lte" , 0 )
参数 < 0
miniJoi.requireForRangeInt(value ,"lt" , 0 ) 可代表负整数
必填整数范围API
miniJoi.requireForRangeInt(value ,op, rangeArr )
miniJoi.requireForRangeInt(value ,op, rangeArr , {error : new Error("This is an Error")})
必填布尔
miniJoi.requireForBool(value)
miniJoi.requireForBool(value , {error : new Error("This is an Error")})
数组必填且非空
miniJoi.requireAndNotEmptyForArr(value)
miniJoi.requireAndNotEmptyForArr(value , {error : new Error("This is an Error")})
数组必填可以为空
miniJoi.requireAndIsEmptyForArr(value)
miniJoi.requireAndIsEmptyForArr(value , {error : new Error("This is an Error")})
对象必填且非空
miniJoi.requireAndNotEmptyForObj(value)
miniJoi.requireAndNotEmptyForObj(value , {error : new Error("This is an Error")})
对象必填可以为空
miniJoi.requireAndIsEmptyForObj(value)
miniJoi.requireAndIsEmptyForObj(value , {error : new Error("This is an Error")})
FAQs
Node.js parameter verification module, more simple to use, JS parameter verification module, Joi module simple encapsulation library
The npm package minijoi receives a total of 1 weekly downloads. As such, minijoi popularity was classified as not popular.
We found that minijoi demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.