CML JavaScript/TypeScript SDK - 语义时代的Markdown编解码库
npm install @contextmark/cmlCML是语义时代的Markdown,它让兼具人类可读和机器可运算特征的关系结构片段,成为可大规模计算、任意传输、分布式存储的语义中间层。
- 🚀 高性能: 基于 TypeScript 实现,支持 ESM 和 CommonJS
- 🔧 类型安全: 完整的 TypeScript 类型定义
- 🌐 跨平台: 支持浏览器和 Node.js 环境
- 📦 Tree-shaking: 纯 ESM 导出,支持按需导入
- 📚 文档完整: JSDoc 注释,自动生成 API 文档
``bash`
npm install @contextmark/cml
`typescript
import { CML2Elements, CML2Fragments, IsCML } from '@contextmark/cml';
// 检查CML编码是否合法
try {
IsCML('aeyJ1c2VyIjoidGVzdCJ9QGRvbWFpbi5jb20=');
console.log('CML编码合法');
} catch (error) {
console.error('CML编码非法:', error.message);
}
// 解析为单基元序列
const elements = CML2Elements('aeyJ1c2VyIjoidGVzdCJ9QGRvbWFpbi5jb20=');
console.log(elements);
// 解析为双基元序列
const fragments = CML2Fragments('aeyJ1c2VyIjoidGVzdCJ9QGRvbWFpbi5jb20=');
console.log(fragments);
`
`typescript
import { CML2A, CML2C, CML2P, CML2Q } from '@contextmark/cml';
const cml = 'aeyJ1c2VyIjoidGVzdCJ9QGRvbWFpbi5jb20=';
// 转换为不同模式
const aMode = CML2A(cml); // Double Base58
const cMode = CML2C(cml); // Double Base64URL
const pMode = CML2P(cml); // Hybrid Plaintext
const qMode = CML2Q(cml); // Hybrid + Global Base64URL
`
`typescript
import { toMarkdown, fromMarkdown } from '@contextmark/cml';
// CML 转 Markdown
const markdown = toMarkdown('aeyJ1c2VyIjoidGVzdCJ9QGRvbWFpbi5jb20=');
console.log(markdown); // user@domain.com
// Markdown 转 CML 数组
const elements = fromMarkdown('user@domain.com');`
console.log(elements); // ['user', '@', 'domain', '.', 'com']
`typescript
import { New, encodeFragmentsCFromDouble } from '@contextmark/cml';
// 手动构建双基元序列
const fragments = New(['user', '@', 'domain', '.', 'com']);
// 编码为指定模式
const encoded = encodeFragmentsCFromDouble(fragments);
console.log(encoded); // c模式编码
`
#### CmlMode
CML编码模式枚举:
- A: Double Base58 - 字符集普适性最好C
- : Double Base64URL - 高性能模式 Q
- : Hybrid + Global Base64URL - 最小熵增P
- : Hybrid Plaintext - 单层明文混编
#### CmlElements
基元类型抽象的单序列:, , , , ...
#### CmlFragments
基元类型的分类双序列:
- tokens: 所有的实体内容relations
- : 所有的关系符 (@, ., +, :, 空格)
#### 验证相关
- IsCML(encoded: string): void - 检查CML编码是否合法
#### 模式转换
- CML2A(encoded: string): string - 转换为a模式CML2C(encoded: string): string
- - 转换为c模式 CML2P(encoded: string): string
- - 转换为p模式CML2Q(encoded: string): string
- - 转换为q模式
#### 解析转换
- CML2Elements(encoded: string): CmlElements - 解析为单基元序列CML2Fragments(encoded: string): CmlFragments
- - 解析为双基元序列New(arr: string[]): CmlFragments
- - 手动构建双基元序列
#### Markdown支持
- toMarkdown(encoded: string): string - CML转MarkdownfromMarkdown(md: string): string[]
- - Markdown转CML数组
`bash安装依赖
npm install
本项目采用MIT宽松授权。本项目是对 Context Mark Language (CML)核心规范的标准实现。
原始语言文档 :doc-war.com/CML
原始协议仓库链接:https://github.com/ContextMark/CML