翻转
在TypeScript中读取并写出游泳满足文件(SDIF,Hy-Tek.hy3/.ev3/.hyv).
麻省理工学院许可证,零运行时间依赖,无害环境管理。 在Node QQ22, Bun,和浏览器上运行. 库代码 从不触及文件系统:通过文本或字节.
安装
npm install @enagonathletics/flipturn
状态
预1.0. API是不稳定的,不会在没有大版本起伏的情况下更改(参见
bump-minor-pre-major 内 release-please-config.json) (中文(简体) ).
格式
| 格式 | 扩展 | 读取 | 写入 |
|---|---|---|---|
| SDIF v3 软件 | .sd3, (中文(简体) ), .cl2 | 是:会相会,会相会相会,会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相会相 | 是:条目(标准SDIF) |
| Hy-Tek 满足结果 | .hy3 | 有:条目、每轮结果、中继、DQ原因 | 没有 |
| Hy-Tek 事件文件 | .ev3, (中文(简体) ), .hyv | 有:活动、会议、收费、合格时间 | 没有 |
| Zip 容器 | .zip | 是: 在内部检测和读取每个相会文件 | 没有 |
| 列纳克斯 | .lef, (中文(简体) ), .lxf | 没有 | 没有 |
每个阅读器返回相同的格式中性 Meet 模型加上文件的原始记录和
任何警告,我都会告诉你 已知的漏洞: HY3分录(G1)不读取,Team Unify的"Extend"
SD3变体在真实的样本比较后才能被写入.
入境限制和费用
Meet.entryLimits 财务报告和审定财务报表 Meet.fees 在整个会议范围内; MeetEvent.entryFee 每个事件和
IndividualEntry编号 :RelayEntry.entryFee 每个条目。 格式只在此获得字段
它的字节位置在文件的字段表格或真实导出的文件上得到确认——
见 移植策略 为源.
| 格式 | entryLimits | 收费类型 |
|---|---|---|
| EV3 常规 | maxTotalEntries, (中文(简体) ), maxIndividualEntries, (中文(简体) ), maxRelayEntries ——除总数外,每名游泳运动员在全场开会(头球场19-21分,1分) | MeetEvent.entryFee 每起事件/中继(第15栏),加全场会议 teamSurcharge, (中文(简体) ), athleteSurcharge, (中文(简体) ), facilitySurcharge (标题栏7-9) |
| 希维 | 无——证实缺席。 团队经理的11个战地头和~18个战地事件行没有未申报的栏;对照 swimparse 财务报告和审定财务报表 hytek-parser独立的 HYV 读取器, 两者都不解码 超出现有的每个事件 entryFee | MeetEvent.entryFee 每起事件/中继 |
| HY3 (韩语) | 无——证实缺席。 成果/入门格式没有理由加以采用,没有 swimparse, (中文(简体) ), swimlib 或者说 hytek-parser 解码任意 | IndividualEntry.entryFee (E1, 1- 基于第33- 38段) RelayEntry.entryFee (F1,同栏) -- -- 没有全会收费栏 |
| SDIF 软件 | 无 – 在 spec 文本本身中确认缺失( 在 B1编号 :B2编号 :D0编号 :D1(中文(简体) ) | 无——确认缺席,依据相同 |
两名候选人受到调查,并被蓄意 没有 已建模 :
- EV3事件排行 27-29 (单位:千美元)
max_entries, (中文(简体) ),max_individual_entries, (中文(简体) ),max_relay_entries百分比swimlib现场表)紧接每次会议的会话栏次,这样将适合 a 每日/会话限制——但可用的一个EV3样本重复相同的三个值 与“事件级别上限”相同 "每天的限制是多余的" 没有真正的文件,如果它们 一天不同,这不是 (b) 确定为要求的任务的每日限制. - HY3 B2 级
meetFee(单位:千美元)swimlib索赔的1个cols 100-106)无法通过交叉核对:swimlib自己的B1日期字段,在同一有记录的家族中,当核对时,在垃圾上降落 实现管理器结果导出, 而swimparse财务报告和审定财务报表hytek-parser- 两个图书馆 其B-记录抵销 对 复制这些文件中的真实日期- 既不解码 B2 收费 一点也不 被视为未经证实,而不是模特.
使用量
读取任何相会文件 :
import { readSdif } from '@enagonathletics/flipturn/sdif';
const { meet, warnings } = readSdif(bytes); // Uint8Array (Windows-1252) or string
meet.swimmers; // name, birth date, gender, external ids
meet.entries; // seed times and, for results files, one result per round
用“ 满足管理器” zip 读取每个相遇文件 :
import { readMeetArchive } from '@enagonathletics/flipturn/zip';
for (const file of await readMeetArchive(zipBytes)) {
if (file.result) console.log(file.name, file.format, file.result.meet.events.length);
else if (file.error) console.warn(file.name, file.error);
}
事件文件保留性别代码为写入( E)G编号 :B 年龄组, W编号 :M (高级)
教会性别:
import { readEv3 } from '@enagonathletics/flipturn/ev3';
const [event] = readEv3(text).meet.events;
event.sexCode; // 'G'
event.gender; // 'F'
写入 SDIF 条目文件 . canadian 模式使美国游泳ID可选:
import { encodeWindows1252 } from '@enagonathletics/flipturn/core';
import { writeSdifEntries } from '@enagonathletics/flipturn/sdif';
const { text, warnings } = writeSdifEntries(meet, {
mode: 'canadian',
contact: { name: 'Registrar, Lee', phone: '2505550199' }
});
const bytes = encodeWindows1252(text); // 160-byte records, CRLF line endings
Meet.altitude (全脚,0-9999)去入B1. 过 profile: 'team-unify' 撰写
team Unify 标准 SD3导出的布局, 而不是其不同的规格: 事件编号
在73-75栏中右正写有大写后缀字母的76, Time 代码如 NT
右配角,没有教练的球队没有C2,A0描述(description默认值
Meet Entries), B1 高度 0 当未设定时, 团队代码的 LSC 在 D0 列 4-11, D3
参与旗帜 F, (中文(简体) ), Swimmer.middleName 财务报告和审定财务报表 N 第147栏和第1批Z0为零
成员数目.
游泳时间是百分之一的整数:
import { formatSwimTime, parseSwimTime } from '@enagonathletics/flipturn/core';
parseSwimTime('1:02.34'); // { kind: 'time', hundredths: 6234 }
formatSwimTime({ kind: 'nt' }); // 'NT'
文档
许可证
麻省理工学院