@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在测试中. 差别:
-
巢限盖. A 类
nestLimit500人以上被降为500人。 尼斯廷语是 通过再现读取:1,000个关卡在代码之前需要约800 KB堆栈 被优化,接近 V8 的默认值为 984 KB,因此上限保持了差值. Go 解析器的盖子为1000. -
工作与记忆限制. 最多只打个电话
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.