4.5 KiB
@lysand-org/federation
Federation types, validators and cryptography for Lysand server implementations.
Efficiency
The built output of the package is not even 200 KB in size, making it a lightweight and efficient solution for your Lysand needs. Installing the package adds around 5 MB to your node_modules folder, but this does not affect the final bundle size.
Compilation (bundling/minifying) time is a few seconds, almost all of which is spent on type-checking. The actual compilation time is less than a tenth of a second.
Usage
Federation
Roadmap
- Validation
- Signing code
- Advanced validator
Validation
Zod is used to validate and parse the objects. All Lysand objects are already written for you.
import { EntityValidator, type ValidationError } from "@lysand-org/federation";
const validator = new EntityValidator();
try {
// Will throw an error when the object is invalid, otherwise return the correct object
const invalidNote = await validator.Note({
// This is invalid
type: "Note",
content: 123,
});
} catch (error) {
// ToString returns the human-friendly error message
sendUser((error as ValidationError).toString());
}
// Types are also included for TypeScript users that don't use the extracted ones
const validNoteObject: typeof EntityValidator.$Note = {
type: "Note",
// ...
};
const validNote = await validator.Note(validNoteObject);
// validNote is still the same as noteObject
For more information about Note's methods, see the Zod documentation.
Your editor's IntelliSense should provide you with every method and property available, which all match the Lysand specification names.
Getting Started
Prerequisites
For Usage
See the Compatibility section for the supported environments. Any package manager can be used to install the packages.
For Development
- Bun version
1.1.8or higher. - Either the Linux or macOS operating systems. (Windows will work, but is not officially supported.)
Compatibility
This library is built for JavaScript runtimes with the support for:
Runtimes
- Node.js: 14.0+ is the minimum, but only Node.js 20.0+ (LTS) is officially supported.
- Deno: Support is unknown. 1.0+ is expected to work.
- Bun: Bun 1.1.8 is the minimum-supported version. As Bun is rapidly evolving, this may change. Previous versions may also work.
Browsers
Consequently, this library is compatible without any bundling in the following browser versions:
- Chrome: 80+
- Edge: 80+
- Firefox: 74+
- Safari: 13.1+
- Opera: 67+
- Internet Explorer: None
If you are targeting older browsers, please don't, you are doing yourself a disservice.
Transpilation to non-ES Module environments is not officially supported, but should be simple with the use of a bundler like Parcel or Rollup.
Installation
Package is distributed as a scoped package on the NPM registry.
npm install @lysand-org/federation # For NPM
yarn add @lysand-org/federation # For Yarn
pnpm add @lysand-org/federation # For PNPM
bun add @lysand-org/federation # For Bun
From Source
If you want to install from source, you can clone this repository and run the following commands:
bun install # Install dependencies
bun run build # Build the packages
The built package will be in the federation/dist folder.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
Projects
- Bun: Thanks to the Bun team for creating an amazing JavaScript runtime.
- TypeScript: TypeScript is the backbone of this project.
- Node.js: Node.js created the idea of JavaScript on the server.
People
- April John: Creator and maintainer of the Lysand Server ActivityPub bridge.
