| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
JavaScript / TypeScript implementation of the Apache Fory™ cross-language serialization protocol. Serialize JavaScript objects to bytes and deserialize them back — including across services written in Java, Python, Go, Rust, C++, and other Fory-supported languages.
| Package | Description |
|---|---|
| @apache-fory/core | Main Fory runtime for JavaScript/TypeScript |
| @apache-fory/hps | Optional Node.js high-performance suite (Node.js 20+) |
npm install @apache-fory/coreFor optional Node.js string-detection acceleration:
npm install @apache-fory/hps@apache-fory/hps uses V8's fast-call API to detect string encoding efficiently. It requires Node.js 20+ and is completely optional — if installation fails or your environment does not support it, @apache-fory/core works perfectly on its own.
import Fory, { Type } from "@apache-fory/core";
// Optional: import hps for Node.js string performance boost
// import hps from "@apache-fory/hps";
const userType = Type.struct(
{ typeName: "example.user" },
{
id: Type.int64(),
name: Type.string(),
age: Type.int32(),
},
);
const fory = new Fory();
// With hps: const fory = new Fory({ hps });
const { serialize, deserialize } = fory.register(userType);
const bytes = serialize({ id: 1n, name: "Alice", age: 30 });
const user = deserialize(bytes);
console.log(user);
// { id: 1n, name: 'Alice', age: 30 }| JavaScript Value | Fory Schema | Notes |
|---|---|---|
| boolean | Type.bool() | |
| number | Type.int8() / int16() / int32() / float32() / float64() | Pick the width matching the peer language |
| bigint | Type.int64() / uint64() | Use for 64-bit integers |
| string | Type.string() | |
| Uint8Array | Type.binary() | Binary blob |
| Date | Type.timestamp() / Type.date() | |
| Array | Type.list(Type.T()) | Ordered collection |
| Map | Type.map(Type.K(), Type.V()) | |
| Set | Type.set(Type.T()) | |
| Typed arrays | Type.int32Array() / Type.float64Array() / ... | Dense numeric or bool arrays |
Fory JavaScript serializes to the same binary format as the Java, Python, Go, Rust, C++, and Swift runtimes. A message written in JavaScript can be read in any other supported language without any conversion layer.
// JavaScript side
const messageType = Type.struct(
{ typeName: "example.message" },
{
id: Type.int64(),
content: Type.string(),
},
);
const fory = new Fory();
const { serialize } = fory.register(messageType);
const bytes = serialize({ id: 1n, content: "hello from JavaScript" });
// Send bytes to a Java/Python/Go/Rust serviceRegister the same example.message type on the other side using the peer runtime's API.
Compatible mode is enabled by default for independent service deployments:
const fory = new Fory();Readers can skip unknown fields and tolerate missing ones, supporting rolling upgrades and schema changes across services.
Full documentation is available at fory.apache.org:
Apache License 2.0 — see LICENSE for details.
| Back | FazBrowse Home | New Git URL |