VCard spec是很小的,但细节被咬——逃生规则,内容行折叠,代码安全UTF-8. easy-vcard 帮你处理,所以你把时间花在你的产品上,而不是在 RFC 6350 (韩语)。 。 。 .
- 流利建业.
.addEmail(…).addPhone(…).toString()说完了. - RFC - 正确从框出.
,;\而新线逃离了自己。 线以75octets折叠. 多字节字符(CJK,emoji,RTL)从不撕裂. - 零运行时间依赖关系. ~13 kB on npm. ES2020 输出与
.d.ts。 。 。 . - 需要的时候,会很友好的. 弃去
VERSION:3.0用一面旗帜. - 战斗测试. 88个测试跨越了逃生边缘的病例,多条线,i18n,以及光谱的尴尬角.
目录
安装
npm install @covve/easy-vcard
需要节点.js 第18条 (使用内置)
structuredClone) (中文(简体) ).
快开始
import { VCard } from '@covve/easy-vcard';
const vcard = new VCard()
.setFullName('Johnny D. Doe-Smith')
.addFirstName('John')
.addLastName('Doe')
.addLastName('Smith')
.addPrefixName('Dr.')
.addNickname('Jonny')
.addPhone('+1 1221112', { pref: '1', type: 'home' })
.addEmail('[email protected]')
.addTitle('Senior Engineer')
.addOrganization('Jdoecomp co.', ['North Division']);
console.log(vcard.toString());
BEGIN:VCARD
VERSION:4.0
FN:Johnny D. Doe-Smith
N:Doe,Smith;John;;Dr.;
NICKNAME:Jonny
TEL;PREF=1;TYPE=home:+1 1221112
EMAIL:[email protected]
TITLE:Senior Engineer
ORG:Jdoecomp co.;North Division
END:VCARD
每个行是 CRLF- 终止了 75octets以上的行会自动折叠 CRLF +空间——你不选择加入.
更喜欢平地物体? 这个 Formatter 接受一个 IVCard 直接 :
import { Formatter } from '@covve/easy-vcard';
const text = new Formatter().format({
name: { fullNames: ['Johnny D. Doe-Smith'] },
emails: [{ value: '[email protected]' }],
});
它为你处理什么
逃跑——RFC 6350 第3.4节
传出生弦. 图书馆逃走了 \, (中文(简体) ), ,, (中文(简体) ), ;,以及属性值的新行.
new VCard()
.setFullName('John')
.addNotes('Hello, world; with a newline\nbreak')
.toString();
NOTE:Hello\, world\; with a newline\nbreak
线条折叠——RFC 6350§3.2
超过75个 UTF-8 octets 的内容线被拆分 CRLF 和单一的领先空间。 文件夹行走代码点,而非字节 – 多字节字符 ()中, (中文(简体) ), 🍕, (中文(简体) ), שלום, (中文(简体) ), Müller)从不分裂中性格.
VERSION:3.0 倒计时
一些遗产解析器拒绝4.0标题. 一旗翻来:
vcard.toString(true); // emits VERSION:3.0
new Formatter().format(json, true); // same
其余产出仍遵循4.0常规,因此结果可能不完全有效3.0. 只在必要的时候使用.
API 参考
IParams是可选参数键的对象 :label, (中文(简体) ),language, (中文(简体) ),value, (中文(简体) ),pref, (中文(简体) ),altId, (中文(简体) ),pid, (中文(简体) ),type, (中文(简体) ),mediatype, (中文(简体) ),calscale, (中文(简体) ),sortAs, (中文(简体) ),geo, (中文(简体) ),timezone, (中文(简体) ),encoding。并不是每个属性都接受每个参数——见 RFC (RFC ) (法语) 对于矩阵.
名称
| 方法 | 它会做什么 |
|---|---|
setFullName(fullName) | 设置强制 FN 属性。 如果你省略它,一个是建造从 N 组件 |
addFirstName(firstName) | 附录 N 首字母名称 |
addMiddleName(middleName) | 附录 N 中间名 |
addLastName(lastName) | 附录 N 姓 |
addPrefixName(pre) | 附录 N 荣誉前缀 |
addSuffixName(suf) | 附录 N 荣誉后缀 |
联系人
| 方法 | 它会做什么 |
|---|---|
addNickname(nickname, params?) | 添加一个 NICKNAME 条目 |
addPhoto(data, params?) | 添加一个 PHOTO 输入. data 可能是 URL 或 Base64 数据 URI |
addAddress(street, locality, region, postCode, country, params?) | 添加一个 ADR 输入。 每个组件接受 string | null | undefined - 无效和未定义的规范化为 "" |
addPhone(number, params?) | 添加一个 TEL 条目 |
addEmail(email, params?) | 添加一个 EMAIL 条目 |
addUrl(url, params?) | 添加一个 URL 条目 |
vcard.addAddress('123 Main St.', null, undefined, 'AB-123', 'USA', { type: 'home' });
// → ADR;TYPE=home:;;123 Main St.;;;AB-123;USA
工作
| 方法 | 它会做什么 |
|---|---|
addTitle(title, params?) | 添加一个 TITLE 条目 |
addRole(role, params?) | 添加一个 ROLE 条目 |
addOrganization(organization, organizationUnits?, params?) | 添加一个 ORG 输入. organizationUnits 在主名下列出子单位名称 |
杂项
| 方法 | 它会做什么 |
|---|---|
addNotes(notes, params?) | 添加一个 NOTE 条目 |
setRevision(rev, params?) | 设置 REV 属性 |
setUID(uid, params?) | 设置 UID 属性 |
产出
| 方法 | 回返 |
|---|---|
toString(forceV3 = false) | 格式化了 vCard 字符串 |
toVcard(forceV3 = false) | 别名 toString |
toJSON() | 内部状态的深克隆为平原 IVCard 对象 - 传递给 Formatter.format(…) 或者随便你怎么说 |
尚未支持
以下 vCard 属性尚未执行 。 公关欢迎.
SOURCE KIND XML BDAY ANNIVERSARY GENDER IMPP LANG TZ GEO
LOGO MEMBER RELATED CATEGORIES PRODID SOUND CLIENTPIDMAP
KEY FBURL CALADRURI CALURI
分析已存在的 vCard 字符串已超出范围 —— 说 easy-vcard 是一个单行道的东西。 用于解析, 到达 vcard4 或者说 vcf。 。 。 .
释放
出版物由 CircleCI 自动发布.
- 弹出
version内package.json添加一个CHANGELOG.md输入公关。 合并到master。 。 。 . - 标记合并承诺
vX.Y.Z(必须匹配)package.json)并推:git tag v2.3.0 && git push origin v2.3.0 - 这个
publish任务运行在标签按键上:安装、构建、涂抹、测试、验证标签匹配package.json.version,则npm publish --access public使用NPM_TOKEN(原始内容存档于2018-09-21). project env var.
仅限严格分解标记( S)vMAJOR.MINOR.PATCH)自动推出. 释放前标签 v2.3.0-beta.1 别.
关于科夫
科维 帮助专业人士将短暂的相遇转变为重要的联系。 我们建造了各种工具 精心培育网络 —— Covve的名片扫描仪 用于捕捉线索 一种扫描API 用于授权其他产品内部的接触摄入 以及一种CRM 后续的,所以你不必这么做.
easy-vcard 是所有这些下面的一个小块 开源的 因为vCard处理是每个联络工具应该正确的东西.
| 网站 | cavve.com (英语) |
| 问题与公关 | github.com/Covve/易碎卡 |