@g9tm/syncdata-lynx

中文文档
1.5.23发布于 2026/11/15MITTypeScriptES Module零依赖近 30 天下载 3906

Lynx支持G9SyncData TypeScript客户端:一个Brotli本土模块(Android org.brotli decoder,iOS压缩框架,Lynxtron/Node zlib),用于同步帧,传输超过@g9tm/signalr-supernetcore-lynx.

中文使用文档
文档目录5 节
  1. 安装
  2. 使用
  3. 土著合同
  4. 测试
  5. 许可证

@g9tm/ syncdata-lynx (英语)

Lynx 对支持 @g9tm/syncdata, G9SyncData 客户端的 TypeScript 双子:

  • G9SyncDataLynxModule – 一个本地模块(Lynx Autolink),将服务器的Brotli帧从JS解码 线程: 有 Google 的 Android org.brotli:dec, iOS 15+ 带有 Apple 压缩框架, Lynxtron 有节点:zlib (单位:千美元)@g9tm/syncdata-lynx/lynxtron) (中文(简体) ).
  • createLynxSyncTransport() ——G9本土WebSocket上的同步传输 @g9tm/signalr-supernetcore-lynx (Lynx 发布架构没有 WebSocket ), 默认的 MessagePack, 没有谈判回合 旅行时间.
  • useLynxBrotli() ——使本地解码器成为商店和引擎所读取的每一帧的默认.
  • lynxSnapshotFileSink(databasePath) ——快照文件的设备侧 (ADR- 0072):一个站点的第一次下载 以 SQLite 文件以 1 MiB 片段到达, 每个片段被解压, 对照其 SHA-256 检查并写入 输入原生模块所显示的文件。 文件的字节再也不会回到JavaScript;商店复制它 以SQL(ATTACH +一个 INSERT … SELECT (按表格开列).

1.2.2版,随 @g9tm/syncdata 和.NET软件包.

安装

npm install @g9tm/syncdata @g9tm/syncdata-lynx @g9tm/signalr-supernetcore-lynx @g9tm/signalr-supernetcore-client @microsoft/signalr @microsoft/signalr-protocol-msgpack @msgpack/msgpack

自动链接拾取本地模块 @g9tm/syncdata-lynx 财务报告和审定财务报表 @g9tm/signalr-supernetcore-lynx (单位:千美元)lynx.lib.json) (中文(简体) ). iOS: 舱 g9tm-syncdata-lynx 财务报告和审定财务报表 g9tm-signalr-lynx (Lynx 4.0.3 注册iOS 模块明确: [config registerModule:G9SyncDataLynxModule.class]) (中文(简体) ).

使用

import { G9SyncEngine } from '@g9tm/syncdata';
import { G9SqliteSyncStore } from '@g9tm/syncdata/sqlite';
import { createLynxSyncTransport, lynxSnapshotFileSink, useLynxBrotli } from '@g9tm/syncdata-lynx';
import { createNativeSqliteDriver } from '@g9lynx/native'; // G9LynxControls

useLynxBrotli();
const store = new G9SqliteSyncStore({
  driver: createNativeSqliteDriver(),
  databasePath,
  // null on a platform that cannot take files (an older module): the device then receives rows, as before.
  snapshotFiles: await lynxSnapshotFileSink(databasePath),
});
const transport = createLynxSyncTransport({ url: 'https://sync.example.com/g9sync', accessTokenFactory: () => token });
const engine = new G9SyncEngine(store, transport, model);
await engine.initialize();

商店接受任何驱动程序 G9SqliteDriver 形状( e)@g9tm/syncdata/sqlite); G9Lynx Controls 本地驱动程序 (Androidx.sqlite被捆绑在Android上,系统SQLite在iOS上)是预定的. 由.NET 客户端编写的数据库 (MAUI)是相同的文件格式,表格和元数据: Lynx app打开并继续.

分阶段快照文件前往 <the app's cache directory>/g9sync-files/<database name>-<hash of its path>: 一个文件夹 每个数据库(两个用户的数据库从不扫描对方的文件),App-private以及Android Auto备份和外部 iOS备份. 过 { directory } 选择其它位置; 存储在表格复制后删除每个文件 清除它下次开始时自己写的残骸 文件夹里没有其它东西被触动.

土著合同

方法答复({ ok, value } 编号 : { ok: false, error: { code, message } }(中文(简体) )
capabilities(callback){ version, platform, brotli, snapshotFiles, cacheDirectory }
brotliDecompress(data: ArrayBuffer, expectedLength: number, callback)精确的矩阵 expectedLength 字节; 错误 G9SYNC-BROTLI-ARG, (中文(简体) ), G9SYNC-BROTLI-INVALID, (中文(简体) ), G9SYNC-BROTLI-UNAVAILABLE
snapshotFileCreate(path, size, callback)无效; 创建目录, 截取已有文件
snapshotFileWriteSegment(path, offset, data: ArrayBuffer, length, sha256, sync, callback)无效;解压,检查长度和SHA-256,然后写作: offset (单位:千美元)sync:先被冲入稳定存储器 - F FLFSYNC on iOS; G9SYNC-FILE-INVALID 没有写
snapshotFileSize(path, callback)大小,或无
snapshotFileHead(path, length, callback)第一个矩阵 length 字节
snapshotFileRemove(path, callback)无效; 文件缺失不是错误
snapshotFileList(directory, callback)目录文件的完整路径排序

文件错误 : G9SYNC-FILE-ARG, (中文(简体) ), G9SYNC-FILE-INVALID, (中文(简体) ), G9SYNC-FILE-IO (有系统的理由),在联署材料方面 G9SYNC-FILE-UNAVAILABLE 没有方法的模块。 部分工作运行在自己的本地线条(Android)或 序列队列(iOS),因此它从不等待一个帧解码和一个文件地块的写法顺序.

何物证明在哪里,何物仍需要设备: 土著-弱势群体-Ping.md。 。 。 .

测试

npm test                    # the JS wrapper over fake native modules
npm run test:lynxsim        # the whole sync against the real .NET sample server, in a Lynx-shaped sandbox (needs the disposable PostgreSQL)
npm run test:android-jvm    # the Kotlin core on a JVM
npm run check:android-module # compiles the module against Lynx 4.1.0, checks the Autolink provider
npm run test:ios-core       # the iOS cores (Brotli + snapshot files): Apple clang + Compression on macOS, GNUstep + libbrotlidec on Linux/WSL

许可证

麻省理工学院.

版本与发布记录

@g9tm/syncdata-lynx 共发布 30 个版本,首次发布于 2026/10/06;过去 12 个月发布了 30 个版本。

版本发布日期距今
1.5.23latest2026/11/15今天
1.5.222026/11/15今天
1.5.212026/11/132 天前
1.5.202026/11/115 天前
1.5.192026/11/106 天前
1.5.182026/11/106 天前

关于 @g9tm/syncdata-lynx 的常见问题

@g9tm/syncdata-lynx 是什么?

Lynx支持G9SyncData TypeScript客户端:一个Brotli本土模块(Android org.brotli decoder,iOS压缩框架,Lynxtron/Node zlib),用于同步帧,传输超过@g9tm/signalr-supernetcore-lynx.

如何安装 @g9tm/syncdata-lynx?

在项目目录运行 npm install @g9tm/syncdata-lynx,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@g9tm/syncdata(1.5.23)、@microsoft/signalr(^10.0.0)、@g9tm/signalr-supernetcore-lynx(^2.11.0)、@g9tm/signalr-supernetcore-client(^2.11.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@g9tm/syncdata-lynx 支持 TypeScript 吗?

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

@g9tm/syncdata-lynx 支持 ESM 还是 CommonJS?

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

@g9tm/syncdata-lynx 可以商用吗?

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

@g9tm/syncdata-lynx 的下载量有多少?

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

@g9tm/syncdata-lynx 还在维护吗?

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