@foblex/mutator

中文文档
1.0.8发布于 2025/12/07MITTypeScriptESM + CJS近 30 天下载 8209

角信号态引擎有深补丁+撤销/重做和通知符.

中文使用文档
文档目录5 节
  1. QQ 快速启动
  2. API 参考
  3. 类型
  4. QQ 撤消限制
  5. 许可证

@ foblex/ 调试器

轻量级Angular Signals状态引擎有深补丁,去除/重取和语义通知等功能.

@foblex/mutator 是一个小型的 TypeScript 库, 建在顶部 signal() 从 @angular/core。 。 。 .
它允许你变异状态(create / update / delete,支持带有历史限制的撤销/重写,并通过通知字符串发布语义更新.

框架角 17 + (符号)
大小< 2 KB 分数+gzip
撤消限制50 (可通过构造器定制)
许可证麻省理工学院

QQ 快速启动

npm i @foblex/mutator
import { effect, inject, Injectable } from '@angular/core';
import { Mutator } from '@foblex/mutator';

// 1. Define your state shape
interface FlowState {
  nodes: Record<string, { x: number; y: number }>;
}

// 2. Create a store class extending Mutator
@Injectable({ providedIn: 'root' })
class FlowStore extends Mutator<FlowState> {}

// 3. Inject and initialize the store
const flow = inject(FlowStore);
flow.initialize({ nodes: {} });

// 4. React to changes with `effect()`
effect(() => {
  const { version, notifier } = flow.changes();
  console.log('Changed (v' + version + ') by', notifier);
  console.table(flow.getSnapshot().nodes);
});

// 5. Perform operations
flow.create({ nodes: { n1: { x: 0, y: 0 } } }, 'init');
flow.update({ nodes: { n1: { x: 100, y: 100 } } }, 'move');
flow.update({ nodes: { n1: { y: 200 } } }, 'drag');
flow.undo(); // ⬅️ back to y: 100
flow.redo(); // ➡️ forward to y: 200

API 参考

方法说明
initialize(base)设置初始状态并清除历史
create(patch, notifier?)添加新数据
update(patch, notifier?)更新已存在的字段( 深度合并)
delete(patch, notifier?)删除密钥
undo() / redo()撤消/ 重做一步
getSnapshot()当前状态( 碱+堆栈)
changes: Signal<{ version; notifier }>版本+变化源
canUndo / canRedo: Signal<boolean>用户界面按钮的活的旗子

类型

interface MutatorChange {
  version: number;
  notifier: string | null;
}

type DeepPartial<T> = {
  [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
};

QQ 撤消限制

provideMutator({
  limit: 100, // Default is 50
})

许可证

麻省理工学院

版本与发布记录

@foblex/mutator 共发布 8 个版本,首次发布于 2025/07/20;过去 12 个月发布了 1 个版本。

版本发布日期距今
1.0.8latest2025/12/0711 个月前
1.0.72025/07/261.3 年前
1.0.62025/07/261.3 年前
1.0.52025/07/261.3 年前
1.0.42025/07/211.3 年前
1.0.32025/07/211.3 年前

关于 @foblex/mutator 的常见问题

@foblex/mutator 是什么?

角信号态引擎有深补丁+撤销/重做和通知符.

如何安装 @foblex/mutator?

在项目目录运行 npm install @foblex/mutator,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@angular/common(>=17.0.0)、@angular/core(>=17.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@foblex/mutator 支持 TypeScript 吗?

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

@foblex/mutator 支持 ESM 还是 CommonJS?

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

@foblex/mutator 可以商用吗?

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

@foblex/mutator 的下载量有多少?

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

@foblex/mutator 还在维护吗?

最新版本 1.0.8 发布于 2025/12/07(11 个月前);至今共发布 8 个版本,其中过去 12 个月发布了 1 个;首次发布于 2025/07/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。