Loading README.md 0 → 100644 +47 −0 Original line number Diff line number Diff line <!-- deno-fmt-ignore-file --> Fedify: a fediverse server framework ==================================== Fedify is a [Deno]/TypeScript library for building federated server apps powered by [ActivityPub] and other standards, which is so-called [fediverse]. You may already know some of the networks in the fediverse, such as [Mastodon], [Lemmy], [Pixelfed], [PeerTube], and so on. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience. Fedify is still in the early stage of development, and it's not ready for production use yet. However, you can try it out and give feedback to help improve it. The rough roadmap is to implement the following features out of the box: - Type-safe objects for [Activity Vocabulary] (including some community extensions) - [WebFinger] client and server - [HTTP Signatures] - Middlewares for handling webhooks - [ActivityPub] client - Special touch for interoperability with Mastodon and few other popular fediverse software Currently this project is not well documented, but you can find some examples in the *examples/* directory. [Deno]: https://deno.com/ [ActivityPub]: https://www.w3.org/TR/activitypub/ [fediverse]: https://en.wikipedia.org/wiki/Fediverse [Mastodon]: https://joinmastodon.org/ [Lemmy]: https://join-lemmy.org/ [Pixelfed]: https://pixelfed.org/ [PeerTube]: https://joinpeertube.org/ [Activity Vocabulary]: https://www.w3.org/TR/activitystreams-vocabulary/ [WebFinger]: https://datatracker.ietf.org/doc/html/rfc7033 [HTTP Signatures]: https://tools.ietf.org/html/draft-cavage-http-signatures-12 Prerequisites ------------- - [Deno] 1.41.0 or later with the following flags: - `--unstable-temporal` - `--unstable-kv` codegen/class.test.ts +1 −1 Original line number Diff line number Diff line import { assertEquals } from "https://deno.land/std@0.217.0/assert/mod.ts"; import { assertEquals } from "jsr:@std/assert@^0.218.2"; import { sortTopologically } from "./class.ts"; Deno.test("sortTopologically()", () => { Loading codegen/class.ts +1 −2 Original line number Diff line number Diff line Loading @@ -72,8 +72,7 @@ export async function* generateClasses( yield 'import jsonld from "npm:jsonld@8.3.2";'; yield `import { LanguageTag, parseLanguageTag } from "npm:@phensley/language-tag@1.8.0";\n`; yield `import { exportSPKI, importSPKI } from "https://deno.land/x/jose@v5.2.2/index.ts";\n`; yield `import { exportSPKI, importSPKI } from "npm:jose@5.2.2";\n`; yield `import { DocumentLoader, fetchDocumentLoader } from "${runtimePath}/docloader.ts";\n`; yield `import { LanguageString } from "${runtimePath}/langstr.ts";\n`; Loading codegen/field.ts +1 −1 Original line number Diff line number Diff line import { encodeBase58 } from "https://deno.land/std@0.207.0/encoding/base58.ts"; import { encodeBase58 } from "jsr:@std/encoding@^0.218.2/base58"; import { PropertySchema, TypeSchema } from "./schema.ts"; import { areAllScalarTypes, getTypeNames } from "./type.ts"; Loading codegen/fs.test.ts +2 −2 Original line number Diff line number Diff line import { join } from "https://deno.land/std@0.208.0/path/mod.ts"; import { assertEquals } from "https://deno.land/std@0.208.0/assert/mod.ts"; import { join } from "jsr:@std/path@^0.218.2"; import { assertEquals } from "jsr:@std/assert@^0.218.2"; import { toSet } from "https://deno.land/x/aitertools@0.5.0/mod.ts"; import { readDirRecursive } from "./fs.ts"; Loading Loading
README.md 0 → 100644 +47 −0 Original line number Diff line number Diff line <!-- deno-fmt-ignore-file --> Fedify: a fediverse server framework ==================================== Fedify is a [Deno]/TypeScript library for building federated server apps powered by [ActivityPub] and other standards, which is so-called [fediverse]. You may already know some of the networks in the fediverse, such as [Mastodon], [Lemmy], [Pixelfed], [PeerTube], and so on. It aims to eliminate the complexity and redundant boilerplate code when building a federated server app, so that you can focus on your business logic and user experience. Fedify is still in the early stage of development, and it's not ready for production use yet. However, you can try it out and give feedback to help improve it. The rough roadmap is to implement the following features out of the box: - Type-safe objects for [Activity Vocabulary] (including some community extensions) - [WebFinger] client and server - [HTTP Signatures] - Middlewares for handling webhooks - [ActivityPub] client - Special touch for interoperability with Mastodon and few other popular fediverse software Currently this project is not well documented, but you can find some examples in the *examples/* directory. [Deno]: https://deno.com/ [ActivityPub]: https://www.w3.org/TR/activitypub/ [fediverse]: https://en.wikipedia.org/wiki/Fediverse [Mastodon]: https://joinmastodon.org/ [Lemmy]: https://join-lemmy.org/ [Pixelfed]: https://pixelfed.org/ [PeerTube]: https://joinpeertube.org/ [Activity Vocabulary]: https://www.w3.org/TR/activitystreams-vocabulary/ [WebFinger]: https://datatracker.ietf.org/doc/html/rfc7033 [HTTP Signatures]: https://tools.ietf.org/html/draft-cavage-http-signatures-12 Prerequisites ------------- - [Deno] 1.41.0 or later with the following flags: - `--unstable-temporal` - `--unstable-kv`
codegen/class.test.ts +1 −1 Original line number Diff line number Diff line import { assertEquals } from "https://deno.land/std@0.217.0/assert/mod.ts"; import { assertEquals } from "jsr:@std/assert@^0.218.2"; import { sortTopologically } from "./class.ts"; Deno.test("sortTopologically()", () => { Loading
codegen/class.ts +1 −2 Original line number Diff line number Diff line Loading @@ -72,8 +72,7 @@ export async function* generateClasses( yield 'import jsonld from "npm:jsonld@8.3.2";'; yield `import { LanguageTag, parseLanguageTag } from "npm:@phensley/language-tag@1.8.0";\n`; yield `import { exportSPKI, importSPKI } from "https://deno.land/x/jose@v5.2.2/index.ts";\n`; yield `import { exportSPKI, importSPKI } from "npm:jose@5.2.2";\n`; yield `import { DocumentLoader, fetchDocumentLoader } from "${runtimePath}/docloader.ts";\n`; yield `import { LanguageString } from "${runtimePath}/langstr.ts";\n`; Loading
codegen/field.ts +1 −1 Original line number Diff line number Diff line import { encodeBase58 } from "https://deno.land/std@0.207.0/encoding/base58.ts"; import { encodeBase58 } from "jsr:@std/encoding@^0.218.2/base58"; import { PropertySchema, TypeSchema } from "./schema.ts"; import { areAllScalarTypes, getTypeNames } from "./type.ts"; Loading
codegen/fs.test.ts +2 −2 Original line number Diff line number Diff line import { join } from "https://deno.land/std@0.208.0/path/mod.ts"; import { assertEquals } from "https://deno.land/std@0.208.0/assert/mod.ts"; import { join } from "jsr:@std/path@^0.218.2"; import { assertEquals } from "jsr:@std/assert@^0.218.2"; import { toSet } from "https://deno.land/x/aitertools@0.5.0/mod.ts"; import { readDirRecursive } from "./fs.ts"; Loading