@elythia-network/mfm

中文文档
0.1.0发布于 2026/10/13MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2368

MFM( Misskey Flavored Markdown) 用 mfm- js 0.2.6. 0的 API 解析器, 在线性时间和内存中

中文使用文档

@elythia-网络/mfm

MFM( Misskey Flavored Markdown) 的解析器,其 API 为 缩写:mfm-js 6.2.6.: 相同职能, 节点类型和树,以时间和记忆线性表示输入的长度. 它是 Go 解析器的 TypeScript 端口,位于 同一仓库; 见 README 那里有设计,工作与内存限制 和共享的固定装置.

npm install @elythia-network/mfm
import * as mfm from '@elythia-network/mfm';

const nodes = mfm.parse('**Hello** :wave: #mfm @[email protected]');
const simple = mfm.parseSimple('Name :custom_emoji:'); // for user names and the like
const hashtags = mfm.extract(nodes, (n) => n.type === 'hashtag');

该软件包是一个没有依赖性的ES模块. 它需要节点20或 后期或支持 ES2022 的浏览器; 在 Node.js 版本上可以 require() ES模块(20.19和22.12或以后), require 还行.

替换 mfm-js

每出口 mfm-js 0.26.0 以相同名称出口 类型 : parse(input, { nestLimit }), (中文(简体) ), parseSimple, (中文(简体) ), toString, (中文(简体) ), inspect, (中文(简体) ), extract, (中文(简体) ), isMfmBlock,节点类型(MfmNode, (中文(简体) ), MfmBlock, (中文(简体) ), MfmInline, (中文(简体) ), MfmSimpleNode, (中文(简体) ), MfmText,还有 NodeType和节点构造器 (单位:千美元)TEXT, (中文(简体) ), BOLD, (中文(简体) ), N_URL(中文(简体) ). 替换导入即可 :

-import * as mfm from 'mfm-js';
+import * as mfm from '@elythia-network/mfm';

树等于mfm-js's,包括节点对象的关键顺序, 用于每个共用固定装置和随机输入的 mfm-js 0.26.0在测试中. 差别:

  1. 巢限盖. A 类 nestLimit 500人以上被降为500人。 尼斯廷语是 通过再现读取:1,000个关卡在代码之前需要约800 KB堆栈 被优化,接近 V8 的默认值为 984 KB,因此上限保持了差值. Go 解析器的盖子为1000.

  2. 工作与记忆限制. 最多只打个电话 2^21 + 32 × length 工作单位和最多 max(16 MiB, 64 × length) 备忘字节 存储,其长度在UTF-16代码单元中。 等两个都用光了, 如寄存器所描述的那样,其余的输入被读作文本 读取。 没有输入共享固定装置,也没有输入3 000个特征 测试中的压力输入达到极限.

    备忘存储器是一个名义上的计数: 它被充值到大小 Go 解析器的结构(使 ASCII 输入在 与Go中相同),在JavaScript堆积中未被测量. 堆积 剖面需求较大:在22号节点上测量为最小 --max-old-space-size 我们最糟糕的形状 尝试( 大量深层引号块) 需要约 330 MB 用于 1 048 576个字符和大约1.3个GB,用于4 194 304个字符,大约 5倍于计算数量,而所需3 000个性质输入 总共约11 MB(比纯文本分析多出约4 MB). 解析未信任输入的呼叫者应限制其长度( Misskey 限制) 3 000个字符).

字符串像 mfm-js 一样处理: 位置是 UTF-16 代码单位, 一个孤独 代位被保留为角色. nestLimit 读取方式 mfm -js 比较一下: undefined 财务报告和审定财务报表 null 给20,一个分数是圆的, NaN 而负值表现为 0.

许可证

麻省理工学院. emoji模式来源于@misskey-dev/emoji-data,以及API和P 树跟随 mfm-js; 请见软件包中的 Third PARTY NOTICES.

版本与发布记录

@elythia-network/mfm 共发布 2 个版本,首次发布于 2026/10/13;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.0latest2026/10/131 个月前
0.0.0-stage2026/10/131 个月前

关于 @elythia-network/mfm 的常见问题

@elythia-network/mfm 是什么?

MFM( Misskey Flavored Markdown) 用 mfm- js 0.2.6. 0的 API 解析器, 在线性时间和内存中

如何安装 @elythia-network/mfm?

在项目目录运行 npm install @elythia-network/mfm,或使用 pnpm add / yarn add / bun add。

@elythia-network/mfm 支持 TypeScript 吗?

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

@elythia-network/mfm 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@elythia-network/mfm 需要什么版本的 Node.js?

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

@elythia-network/mfm 可以商用吗?

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

@elythia-network/mfm 的下载量有多少?

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

@elythia-network/mfm 还在维护吗?

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