@dynamic-entity/core

中文文档
3.3.2发布于 2026/10/24MITTypeScriptESM + CJS构建来源已验证近 30 天下载 2156

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

中文使用文档
文档目录5 节
  1. * 安装
  2. * 特性
  3. QQ 快速启动
  4. 显示日期
  5. 验证配置

@ 动态实体/ 核心

npm version License: MIT

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

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


* 安装

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 检查结构、对照目录的字段类型、每个范围独有的编号、以及永远无法解决的参考文献——包括方括号内的字段路径,并在通过时, FormRules. 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。 。 。 . diffFormConfigs 对表单的配置和规则也一样。 以下仅限无害环境管理:根据共同JS,它需要20.19+或22.12+节点,或 import(). 见"根"README""变相史"部分.

QQ 快速启动

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数字 :

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 } 作为第四次 听到一个错误的规则,它被跳过而不是被抛出:

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)被设定为别的东西.

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 运行 :

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 共发布 40 个版本,首次发布于 2026/05/02;过去 12 个月发布了 40 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
3.3.2latest2026/10/2420 天前
3.3.12026/10/2222 天前
3.3.02026/10/2222 天前
3.2.02026/10/2222 天前
3.1.02026/10/1925 天前
3.1.0-rc.12026/10/1925 天前

关于 @dynamic-entity/core 的常见问题

@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 和提交记录判断。