# @carecard/validate 中文文档

规范地址：https://npmcn.com/package/%40carecard/validate/

版本：3\.45\.0
npm 元数据更新时间：2026-11-02T19:16:24.973Z
中文译文更新时间：2026-11-09T08:35:24.208Z
软件包许可：ISC

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40carecard/validate
原文对照：https://npmcn.com/package/%40carecard/validate/?lang=original
项目主页：https://github.com/CareCard-ca/pkg-validate#readme
源码仓库：https://github.com/CareCard-ca/pkg-validate

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：368 kB，54 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=24\.21\.0 \<25
- 运行依赖：1 个
- 首次发布：2025-12-23T07:29:48.644Z
- 最新版本发布：2026-11-02T19:16:24.607Z
- 近 30 天下载量：3527（2026-10-09 至 2026-11-07，npm 官方下载统计）
- 已发布版本数：87（近 12 个月 87 个）

## 中文简介

验证数据

## 安装

```sh
npm install @carecard/validate
```

也可以使用：`pnpm add @carecard/validate`、`yarn add @carecard/validate`、`bun add @carecard/validate`

## README

# @ carecard/ 验证

可重复使用的格式上游、条形输入正常化和调用者配置 审定。 域计划、允许的角色、工作流程状态和密码 政策属于拥有这些政策的服务或应用程序。 这个包裹从来没有 解释财产名称或提供商业政策默认.

## 明确的计划

`createValueParser(predicate, transform?)` 调整布尔上游和可选 价值转换。 自定义解析器返回 `{ isValid: true, value }` 或者说 `{ isValid: false }`预测值必须准确返回 `true` 接受一个值.

`validateSchemaProperties(input, schema)` 仅返回在 呼叫者计划。 它复制和修剪 JSON 密钥和字符串边缘 在解析前, 省略未知或拒绝的字段,并且不改变输入.

`validateSchemaWhitelistProperties(input, requiredPaths, options)` 需要一个 明确 `options.schema` 对每个完整的选定路径都使用一个解析器。 需求 缺少/无效字段并提供无效的可选字段生成 `BAD_INPUT`。 。 。 . 缺少的可选字段被省略 。 分数叶是按元素解析的元素. 缺少或无效的配置 `TypeError`。 。 。 .

```js
const {
  createValueParser,
  isInteger,
  validateSchemaWhitelistProperties,
} = require('@carecard/validate');

const output = await validateSchemaWhitelistProperties(
  { measurement: { count: 3 }, ignored: true },
  ['measurement.count'],
  { schema: { 'measurement.count': createValueParser(isInteger) } },
);
// { measurement: { count: 3 } }
```

选项也支持 `optionalProperties`, (中文(简体) ), `convertToSnakeCase`, (中文(简体) ), `flattenOutput`, (中文(简体) ), 财务报告和审定财务报表 `flattenKeyStyle` (单位:千美元)`path` 默认或 `leaf`) (中文(简体) ). 蛇/骆驼路径变体 ; 拒绝一个段内的混合外壳。 选择是 以五个路径段和每个呼叫的5000个路径为界. 公共常数是 `MAX_NESTING_DEPTH` 财务报告和审定财务报表 `MAX_KEYS_PER_CALL`。 。 。 .

平叶相撞有利于更浅的值,然后是第一个转弯. 所保留的外观键仍然是惰性自身数据,所继承的路径被忽略. 模糊的正态密钥,循环 JSON 输入,和访问器被拒绝.

## 配置密码验证

`validatePasswordAgainstPolicy(value, { minimumLength, maximumLength, isBlocked? })` 需要调用者选中的长度 。 它修剪了弦边缘,使NFC正常化,以及 计算 Unicode 代码点。 成功的结果含有犬科价值. 失败的原因是 `invalid_type`, (中文(简体) ), `invalid_unicode`, (中文(简体) ), `too_short`, (中文(简体) ), `too_long`, (中文(简体) ), 财务报告和审定财务报表 `blocked`。无效的政策配置 `TypeError`。 。 。 .

`isCommonPassword(value)` 暴露了一个普通的 弱口袋检查。 它已经 没有自动效果; 呼叫者决定是否将其作为 `isBlocked`。 。 。 .

## 格式上游和正常化

直接上游覆盖整数,UUID,日期/时间戳,电子邮件,HTTP URL, MIME 类型、安全 JSON、 Unicode 文本、名称、文件名元数据、电话和其他 可重复使用的格式。 它们返回布尔语,不给数据指定域名. `isInStringArray(values, input)` 检查一个呼叫者提供的病例不敏感列表. 现有 `validate` 名称空间包含相同的通用格式的上游.

`normalizeInputWhitespace(input)` 复制 JSON 记录和数组, 修饰自有密钥 和字符串边缘,保留内部的空白和不透明/二进制值,以及 拒绝关键相撞、连接器和周期。 原始格式上游保留 字符限制。 文件名呼叫器可以被明确接受 有 NFKC 和修饰的元数据; 显示名称不变 .

公共根和有重点的进口对浏览器捆绑安全. 类型脚本 合同的提供方式 `index.d.ts`。 。 。 .

## 验证

运行 `npm run test:All`, (中文(简体) ), `npm run lint`,以及 `npm run format:check`运行时间 发言、分支、职能和线路的覆盖率仍为100%。 测试 使用呼叫者拥有的示例计划进行公共行为; 商业政策是 在它自己的存储器中验证.

不可转让的测试令不规则:每一次测试必须独立通过之前或之后的测试,每一次执行指令的套房都必须通过. 每个测试必须建立它所需要的状态,隔离可变状态,并清理它拥有的状态;它绝不能依赖另一个测试的设置,突变,或清理. 默认测试,CI,和Husky命令必须使用测试框架的普通命令,不得强迫随机命令. 随机顺序执行只是一种明确的诊断,它所暴露出的每一出故障都必须被固定在根源上.

不可谈判的"根源-原因"解决方案规则:总是识别并解决已核实的根源,使用更强的解决方案,并给出正确,持久,生产质量的结果. 绝不将临时工作、资源增加、重试、压制、绕行或只表现的补丁视为补丁。 验证根-原因 固定真实失败的工作流程 并证明结束状态.

不可转让的TDD规则:总是先写出失败的测试,运行以确认它因预期原因失败,然后执行代码并重跑测试直到通过. 所有编码工作都需要测试驱动开发,不得跳过. 仅用于文档或技能编辑,运行相关的焦点非测试 更改道词前验证; 不添加检查的自动测试 出品人、文件或寄存器结构.

不可转让寄存器隔离规则:每个寄存器必须只使用寄存器内包含的文件,代码,定着物,依赖以及服务来运行其Husky钩和测试. 测试和Husky脚本不得导入,要求,阅读,执行,或以其他方式依赖寄存器根外的兄弟姐妹寄存器或路径. app-e2e-测试是唯一的例外,因为交叉存储端到端测试是其明确的责任.

不可转让错误和警告规则:从不压制,沉默,隐藏,降级,过滤,忽略,跳过,或绕过代码,测试,工具,编译器,linters,或验证错误或警告. 修补根源,再重新运行受影响的检查并需要干净的结果. 预期出错路径测试可能断言出错,但绝不能掩盖出乎意料的失败.

不可转让类型脚本类型规则: 永远不要使用类型脚本类型 `any`; 总是使用特定域类型、通用项目类型、现有项目类型,或 `unknown` 在所有类型Script- family文件中明确缩小(`.ts`, (中文(简体) ), `.tsx`, (中文(简体) ), `.mts`, (中文(简体) ), `.cts`,以及 `.d.ts`) (中文(简体) ).

非可转让代码组织规则:具有相同或等同行为的函数必须在整个CareCard寄存器中使用相同或明显对应的描述性名称,等同的功能必须活在每个寄存器既定架构中同名的文件中. 不允许向后兼容名称,别名,或重复位置.

## 常见问题

### @carecard/validate 是什么？

验证数据

### 如何安装 @carecard/validate？

在项目目录运行 npm install @carecard/validate，或使用 pnpm add / yarn add / bun add。

### @carecard/validate 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @carecard/validate 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @carecard/validate 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=24\.21\.0 \<25。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @carecard/validate 可以商用吗？

@carecard/validate 使用 ISC 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @carecard/validate 的下载量有多少？

根据 npm 官方下载统计，@carecard/validate 在 2026/10/09 – 2026/11/07 这 30 天内被下载 3,527 次，日均约 118 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @carecard/validate 还在维护吗？

最新版本 3\.45\.0 发布于 2026/11/03（6 天前）；至今共发布 87 个版本，其中过去 12 个月发布了 87 个；首次发布于 2025/12/23。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

