diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..2679899 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "conventionalCommits.scopes": ["docs"] +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..9d60b2e --- /dev/null +++ b/README.md @@ -0,0 +1,95 @@ +

+ Lysand Logo +

+ +

Lysand API

+ +Set of NPM packages written in TypeScript to interact with Lysand-compatible services. + +## Packages + +- **`@lysand-org/federation`**: Federation types and validators for Lysand server implementations. +- **`@lysand-org/client`**: Client for the reference Lysand Server implementation. + +## Usage + +> [!WARNING] +> These packages are not even published on NPM yet. They are still in development and are not ready for production use. + +## Getting Started + +### Prerequisites + +#### For Usage + +See the [**Compatibility**](#compatibility) section for the supported environments. Any package manager can be used to install the packages. + +#### For Development + +- [**Bun**](https://bun.sh) version `1.1.8` or higher. +- Either the [**Linux**](https://www.linux.org) or [**macOS**](https://www.apple.com/macos) operating systems. ([**Windows**](https://www.microsoft.com/windows) will work, but is not officially supported.) + +### Compatibility + +This library is built for JavaScript runtimes with the support for: + +- [**ES Modules**](https://nodejs.org/api/esm.html) +- [**ECMAScript 2020**](https://www.ecma-international.org/ecma-262/11.0/index.html) + +#### 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**](https://parceljs.org) or [**Rollup**](https://rollupjs.org). + +### Installation + +Both packages are distributed as a scoped package on the NPM registry. + +```bash +npm install @lysand-org/federation @lysand-org/client # For NPM +yarn add @lysand-org/federation @lysand-org/client # For Yarn +pnpm add @lysand-org/federation @lysand-org/client # For PNPM +bun add @lysand-org/federation @lysand-org/client # For Bun +``` + +#### From Source + +If you want to install from source, you can clone this repository and run the following commands: + +```bash +bun install # Install dependencies + +bun run build # Build the packages +``` + +## License + +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. + +## Acknowledgments + +### Projects + +- [**Bun**](https://bun.sh): Thanks to the Bun team for creating an amazing JavaScript runtime. +- [**TypeScript**](https://www.typescriptlang.org): TypeScript is the backbone of this project. +- [**Node.js**](https://nodejs.org): Node.js created the idea of JavaScript on the server. + +### People + +- [**April John**](https://github.com/cutestnekoaqua): Creator and maintainer of the Lysand Server ActivityPub bridge. \ No newline at end of file diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000..363a67f Binary files /dev/null and b/bun.lockb differ diff --git a/federation/biome.json b/federation/biome.json new file mode 100644 index 0000000..536d532 --- /dev/null +++ b/federation/biome.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.6.4/schema.json", + "organizeImports": { + "enabled": true, + "ignore": ["node_modules", "dist"] + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + }, + "ignore": ["node_modules", "dist"] + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 4, + "ignore": ["node_modules", "dist"] + } +} diff --git a/federation/package.json b/federation/package.json new file mode 100644 index 0000000..0330d27 --- /dev/null +++ b/federation/package.json @@ -0,0 +1,63 @@ +{ + "name": "@lysand-org/federation", + "displayName": "Lysand Federation", + "version": "3.0.0", + "author": { + "email": "jesse.wierzbinski@lysand.org", + "name": "Jesse Wierzbinski (CPlusPatch)", + "url": "https://cpluspatch.com" + }, + "readme": "README.md", + "repository": { + "type": "git", + "url": "https://github.com/lysand-org/api.git", + "directory": "federation" + }, + "bugs": { + "url": "https://github.com/lysand-org/api/issues" + }, + "license": "MIT", + "contributors": [ + { + "name": "Jesse Wierzbinski", + "email": "jesse.wierzbinski@lysand.org", + "url": "https://cpluspatch.com" + } + ], + "maintainers": [ + { + "name": "Jesse Wierzbinski", + "email": "jesse.wierzbinski@lysand.org", + "url": "https://cpluspatch.com" + } + ], + "description": "Type definitions for Lysand Federation, with validators.", + "categories": ["Other"], + "type": "module", + "engines": { + "bun": ">=1.1.8" + }, + "exports": { + "import": "./dist/index.js", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/lysand" + }, + "homepage": "https://lysand.org", + "keywords": [ + "lysand", + "federation", + "api", + "typescript", + "zod", + "validation" + ], + "packageManager": "bun@1.1.8", + "devDependencies": { + "@biomejs/biome": "^1.7.3" + }, + "trustedDependencies": ["@biomejs/biome"] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..d4883b9 --- /dev/null +++ b/package.json @@ -0,0 +1,9 @@ +{ + "name": "lysand-api", + "private": true, + "workspaces": ["federation"], + "scripts": { + "lint": "bunx @biomejs/biome check .", + "build": "echo 'Not implemented :(' && exit 1" + } +}