# @dynamic-entity/core 中文文档

规范地址：https://npmcn.com/package/%40dynamic-entity/core/

版本：3\.3\.2
npm 元数据更新时间：2026-10-24T03:19:31.789Z
中文译文更新时间：2026-11-13T06:23:33.790Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40dynamic-entity/core
原文对照：https://npmcn.com/package/%40dynamic-entity/core/?lang=original
项目主页：https://github.com/berserker5619/Dynamic-Entity/tree/main/packages/core#readme
源码仓库：https://github.com/berserker5619/Dynamic-Entity

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

- 包体积（解压后）：2.2 MB，24 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2026-05-02T10:03:13.288Z
- 最新版本发布：2026-10-24T03:19:31.447Z
- 近 30 天下载量：2156（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：40（近 12 个月 40 个）

## 中文简介

共享模型+框架-可知性 动态实体生态系统的逻辑.

## 安装

```sh
npm install @dynamic-entity/core
```

也可以使用：`pnpm add @dynamic-entity/core`、`yarn add @dynamic-entity/core`、`bun add @dynamic-entity/core`

## README

# @ 动态实体/ 核心

[![npm version](https://img.shields.io/npm/v/@dynamic-entity/core.svg?color=blue)](https://www.npmjs.com/package/@dynamic-entity/core) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/berserker5619/Dynamic-Entity/blob/main/LICENSE)

框架不可知核心模型、纯形式逻辑、规则评价引擎和实地类型词汇 `@dynamic-entity` 生态系统.

它不包含 Angular 和 RxJS —— 它是纯正的 TypeScript 从任何框架都可以使用,也可以在服务器上使用.

* * *

## \* 安装

```bash
npm install @dynamic-entity/core
```

* * *

## \* 特性

-   **嵌入式实体形成模型( E)`EntityFormConfig`(中文(简体) )** ——有标签的分级,子tab,巢组,阵列,和字段表显示元数据.
-   **纯形式逻辑** - 标签分辨率,显示值格式(`setDateFormatters` 页:1 `date` 编号 : `datetime` 编号 : `time`),被嵌入的数据访问,并被遮掩,都作为无副作用的函数.
-   **规则引擎** 超过18个操作者的条件评估(`EQUAL`, (中文(简体) ), `NOT_EQUAL`, (中文(简体) ), `CONTAINS`, (中文(简体) ), `NOT_CONTAINS`, (中文(简体) ), `STARTS_WITH`, (中文(简体) ), `ENDS_WITH`, (中文(简体) ), `IS_EMPTY`, (中文(简体) ), `IS_NOT_EMPTY`, (中文(简体) ), `LESS_THAN`, (中文(简体) ), `MORE_THAN`, (中文(简体) ), `LESS_THAN_EQUAL`, (中文(简体) ), `MORE_THAN_EQUAL`, (中文(简体) ), `DATE_BEFORE`, (中文(简体) ), `DATE_AFTER`, (中文(简体) ), `IN`, (中文(简体) ), `NOT_IN`, (中文(简体) ), `HAS_ITEMS`, (中文(简体) ), `VALUE_CHANGED`产生三种行动类型: `visibility`, (中文(简体) ), `validation`,以及 `info`。 。 。 .
-   **Canonical 字段目录** —— 说 `FIELD_TYPE_CATALOG` 是27个字段类型密钥的单一真理源(`text`, (中文(简体) ), `textarea`, (中文(简体) ), `markdown`, (中文(简体) ), `number`, (中文(简体) ), `currency`, (中文(简体) ), `email`, (中文(简体) ), `password`, (中文(简体) ), `date`, (中文(简体) ), `datetime`, (中文(简体) ), `time`, (中文(简体) ), `monthYear`, (中文(简体) ), `dropdown`, (中文(简体) ), `radio`, (中文(简体) ), `checkbox`, (中文(简体) ), `boolean`, (中文(简体) ), `multiSelect`, (中文(简体) ), `entity-ref`, (中文(简体) ), `group`, (中文(简体) ), `array`, (中文(简体) ), `image`, (中文(简体) ), `file`, (中文(简体) ), `url`, (中文(简体) ), `phone`, (中文(简体) ), `slider`, (中文(简体) ), `rating`, (中文(简体) ), `color`, (中文(简体) ), `tags`供造物者和造物者食用.
-   **实体参考合同** —— 说 `EntityReferenceLoader`,选项正常化和纯级联过滤(`lookupFilter` 编号 : `lookupPath`) (中文(简体) ).
-   **文件合同** - 犬科医生 `FileRef` 财务报告和审定财务报表 `FileUploadHandler`,由图像和文件字段类型共享.
-   **配置验证** —— 说 `validateConfig` 检查结构、对照目录的字段类型、每个范围独有的编号、以及永远无法解决的参考文献——包括方括号内的字段路径,并在通过时, `FormRule`s. JSON Schema,用于编辑完成船,并配有 `@dynamic-entity/core/schema`。同样的支票是 `dynamic-entity validate` 命令,用于在 CI 中显示配置.
-   **电子表格导入引擎** —— 说 `deriveImportColumns`, (中文(简体) ), `suggestMapping` 财务报告和审定财务报表 `applyMapping` 将工作表行转换成与配置相对应的记录,应用字段验证符和表单的规则。 引擎还包括一个能探测到 `,` 编号 : `;` / 标签 (`createCsvReader`, (中文(简体) ), `parseCsv`),重复字段的编号标题相匹配, `arrayBoundFor` 用平板大小 `cellText` 用于渲染输入的单元格。 它是纯的,所以相同的引擎运行在浏览器和 `@dynamic-entity/server`。 。 。 .
-   **记录迁移** —— 说 `migrateRecord`, (中文(简体) ), `needsMigration`, (中文(简体) ), `stampRecord` 财务报告和审定财务报表 `validateMigrations` 将保存的记录移动为配置 `version` 变化。 纯粹,所以同样的步骤在浏览器和服务器上运行.
-   **行身份** ——每行对象 `array` 字段带有 `$rowId` (单位:千美元)`ROW_ID_KEY`) (中文(简体) ). `applyRowIds` 财务报告和审定财务报表 `rowIdMigration` 给在 3.2 位码前保存的行, `legacy-1`, (中文(简体) ), `legacy-2`每次跑步都一样; `newRowId` 做一个新鲜的。 见根 README"牛身份"部分.
-   **改变历史** —— 说 `@dynamic-entity/core/history`数字 : `diffEntityRecords` 财务报告和审定财务报表 `describeEntityChanges` 将两个版本的记录转换成结构化的改动,以及每个句子,用任何语言,通过 [`audit-trail-text`](https://www.npmjs.com/package/audit-trail-text)。 。 。 . `diffFormConfigs` 对表单的配置和规则也一样。 以下仅限无害环境管理:根据共同JS,它需要20.19+或22.12+节点,或 `import()`. 见"根"README""变相史"部分.

* * *

## QQ 快速启动

```typescript
import {
  evaluateFormRules,
  resolveLabel,
  FIELD_TYPE_CATALOG,
  type FormRule,
} from '@dynamic-entity/core';

// 1. Resolve a localized label
const label = resolveLabel({ en: 'First Name', de: 'Vorname' }, 'en'); // "First Name"

// 2. Inspect the field type vocabulary
console.log(FIELD_TYPE_CATALOG.length); // 27

// 3. Raise an info banner on the `annualBudget` field when it exceeds 5,000,000
const rules: FormRule[] = [
  {
    formConfigId: 'client',
    fieldId: 'annualBudget',
    conditions: [{ operator: 'MORE_THAN', value: 5_000_000, compareType: 'value' }],
    action: { type: 'info', value: 'Budget exceeds $5,000,000' },
    targets: [{ id: 'annualBudget', type: 'field' }],
    enabled: true,
    priority: 0,
  },
];

const result = evaluateFormRules(rules, { annualBudget: 6_000_000 });
console.log(result.infoBanners); // { annualBudget: 'Budget exceeds $5,000,000' }
```

`evaluateFormRules` 返回 a `RuleEvaluationResult`数字 :

```typescript
interface RuleEvaluationResult {
  hiddenFields: string[];                        // fields hidden by a visibility rule
  hiddenTabs: string[];                          // tabs hidden by a visibility rule
  shownFields: string[];                         // fields a `visibility: true` rule showed
  shownTabs: string[];                           // tabs a `visibility: true` rule showed
  validationErrors: Record<string, string>;      // target id → message
  validationWarnings: Record<string, string>;    // target id → message
  infoBanners: Record<string, string>;           // target id → message
}
```

每个列表和地图都持有目标 **作为规则名称** - 赤裸的身份证或括号内的道路 例如 `[personal.status]` - 不是规则ID。 隐藏胜出 表演胜出 静态 `visibility: false` 或者说 `showWhen`。您通过的数值图由相同的 名称,所以一条带有路径的规则也需要路径键入的值: `flattenFieldValues` 绘制地图,在地图的编号和字段下绘制 `[path]`通过基线记录为 第三个参数 `VALUE_CHANGED` 操作员,以及 `{ onProblem }` 作为第四次 听到一个错误的规则,它被跳过而不是被抛出:

```typescript
import { evaluateFormRules, type FormRule } from '@dynamic-entity/core';

declare const rules: FormRule[];
declare const currentValues: Record<string, unknown>;
declare const originalValues: Record<string, unknown>;

const changed = evaluateFormRules(rules, currentValues, originalValues);
```

* * *

## 显示日期

`formatDisplayValue` 格式 `date`, (中文(简体) ), `datetime` 财务报告和审定财务报表 `time` 通过 **运行时间** 语言 (单位:千美元)`toLocaleDateString` 和朋友,不是表单 `language`。 。 。 . `language` 选择哪个 `LocalizedText` 要读的密钥; 绑定二者将改变每个消费者的标点 其浏览器( 或节点) `Intl`)被设定为别的东西.

```typescript
import { setDateFormatters } from '@dynamic-entity/core';

setDateFormatters({
  date: (value, lang) => value.toLocaleDateString(lang ?? []),
});
```

每一个打电话者 `formatDisplayValue` 尊重——在渲染器中,意思是 只读 `date`, (中文(简体) ), `datetime` 财务报告和审定财务报表 `time` 以及记录摘要.

一个部分对象会覆盖一种,而留下其余的. `setDateFormatters()` 没有 参数恢复默认值。 它是模块级别,而不是一个注射符号,因为 `formatDisplayValue` 是一个纯粹的函数—— 渲染器, 建造器和CLI都称之为, 只有一个注射器.

* * *

## 验证配置

`validateConfig` 这是API。 包裹还装有 `dynamic-entity` 一样 检查可以不写脚本就用 CI 运行 :

```bash
npx dynamic-entity validate ./form-config.json
```

`--additional-field-types signature,nps` 是命令行形式 `additionalFieldTypes`,以及 `--validators noDisposable,uniqueEmail` 联 合 国 `knownValidators`,所以一个 `validators.custom` 命名未注册的东西在被悄悄地丢弃之前被抓住 提供时间. `--rules rules.json` 是一个 `FormRule[]` 对照同一数据检查 路径/ id 规则为 `showWhen`。 。 。 . `--fail-on-warnings` 将警告视为失败. 退出 `0` 没有错误, `1` 表示配置无法使用, `2` 表示文件或JSON本身是.

## 常见问题

### @dynamic-entity/core 是什么？

共享模型\+框架-可知性 动态实体生态系统的逻辑\.

### 如何安装 @dynamic-entity/core？

在项目目录运行 npm install @dynamic-entity/core，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 dynamic-entity，可以用 npx dynamic-entity 直接运行。

### @dynamic-entity/core 支持 TypeScript 吗？

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

### @dynamic-entity/core 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @dynamic-entity/core 可以商用吗？

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

### @dynamic-entity/core 的下载量有多少？

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

### @dynamic-entity/core 还在维护吗？

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

