Loading .github/workflows/build.yaml +39 −6 Original line number Diff line number Diff line Loading @@ -42,9 +42,6 @@ jobs: lint: runs-on: ubuntu-latest permissions: id-token: write contents: read steps: - uses: actions/checkout@v4 - uses: denoland/setup-deno@v1 Loading @@ -53,10 +50,27 @@ jobs: - run: deno task check - run: deno task check working-directory: ${{ github.workspace }}/examples/blog/ release-test: runs-on: ubuntu-latest permissions: id-token: write contents: read steps: - uses: actions/checkout@v4 - uses: denoland/setup-deno@v1 with: deno-version: v1.x - uses: actions/setup-node@v4 with: node-version: lts/* - run: deno task publish --dry-run - run: deno task dnt - run: npm publish --dry-run working-directory: ${{ github.workspace }}/npm/ publish-jsr: needs: [test, lint] publish: needs: [test, lint, release-test] runs-on: ubuntu-latest permissions: id-token: write Loading @@ -67,6 +81,9 @@ jobs: - uses: denoland/setup-deno@v1 with: deno-version: v1.x - uses: actions/setup-node@v4 with: node-version: lts/* - if: github.ref_type == 'branch' run: | jq \ Loading @@ -83,6 +100,9 @@ jobs: # Don't know why, but the .gitignore list is not overriden by include list # in deno.json: - run: rm vocab/.gitignore - run: 'deno task dnt "$(jq -r .version deno.json)"' - run: npm pack working-directory: ${{ github.workspace }}/npm/ - id: extract-changelog uses: dahlia/submark@5a5ff0a58382fb812616a5801402f5aef00f90ce with: Loading @@ -99,10 +119,23 @@ jobs: with: body_path: ${{ steps.extract-changelog.outputs.output-file }} name: Fedify ${{ github.ref_name }} files: npm/*.tgz generate_release_notes: false discussion_category_name: Announcements - if: github.event_name == 'push' run: deno task publish --allow-dirty - if: github.event_name == 'push' run: | set -ex npm config set //registry.npmjs.org/:_authToken "$NPM_AUTH_TOKEN" if [[ "$GITHUB_REF_TYPE" = "tag" ]]; then npm publish --provenance --access public *.tgz else npm publish --provenance --access public --tag dev *.tgz fi env: NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} working-directory: ${{ github.workspace }}/npm/ publish-examples-blog: if: github.event_name == 'push' Loading @@ -124,7 +157,7 @@ jobs: root: . publish-docs: needs: [publish-jsr] needs: [publish] runs-on: ubuntu-latest permissions: id-token: write Loading .gitignore +1 −0 Original line number Diff line number Diff line Loading @@ -5,3 +5,4 @@ apidoc/ coverage/ deno.lock npm/ .vscode/settings.json +3 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ }, "cSpell.words": [ "activitypub", "aitertools", "apidoc", "bccs", "btos", Loading @@ -36,6 +37,7 @@ "cfworker", "codegen", "Deno", "denokv", "dereferenceable", "discoverability", "docloader", Loading Loading @@ -63,6 +65,7 @@ "superproperty", "unfollow", "unfollowing", "urlpattern", "webfinger" ] } CHANGES.md +34 −0 Original line number Diff line number Diff line Loading @@ -13,11 +13,45 @@ Version 0.5.0 To be released. - Fedify is now available on npm: [@fedify/fedify]. [[#24]] - Abstract key-value store for caching. - Added `KvStore` interface. - Added `KvStoreSetOptions` interface. - Added `KvKey` type. - Added `DenoKvStore` class. - `KvCacheParameters.kv` option now accepts a `KvStore` instead of `Deno.Kv`. - `KvCacheParameters.prefix` option now accepts a `KvKey` instead of `Deno.KvKey`. - `FederationParameters.kv` option now accepts a `KvStore` instead of `Deno.Kv`. - `FederationKvPrefixes.activityIdempotence` option now accepts a `KvKey` instead of `Deno.KvKey`. - `FederationKvPrefixes.remoteDocument` option now accepts a `KvKey` instead of `Deno.KvKey`. - Abstract message queue for outgoing activities. - Added `MessageQueue` interface. - Added `MessageQueueEnqueueOptions` interface. - Added `InProcessMessageQueue` class. - Added `FederationParameters.queue` option. - Added `@fedify/fedify/x/denokv` module for adapting `Deno.Kv` to `KvStore` and `MessageQueue`. It is only available in Deno runtime. - Added `DenoKvStore` class. - Added `DenoKvMessageQueue` class. - Removed dependency on *jose*. - Added `exportSpki()` function. - Added `importSpki()` function. [@fedify/fedify]: https://www.npmjs.com/package/@fedify/fedify [#24]: https://github.com/dahlia/fedify/discussions/24 Version 0.4.0 ------------- Loading README.md +7 −6 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ Fedify: an ActivityPub server framework ======================================= [![JSR][JSR badge]][JSR] [![JSR score][JSR score badge]][JSR score] [![npm][npm badge]][npm] [![GitHub Actions][GitHub Actions badge]][GitHub Actions] [![Matrix][Matrix badge]][Matrix] [![Follow @hongminhee@todon.eu][@hongminhee.todon.eu badge]][@hongminhee.todon.eu] Loading @@ -13,7 +13,7 @@ Fedify: an ActivityPub server framework > [!NOTE] > Looking for a quick demo? Here it is: [Fedify Demo] on Deno Playground. Fedify is a [Deno]/TypeScript library for building federated server apps Fedify is a TypeScript library for building federated server apps powered by [ActivityPub] and other standards, so-called [fediverse].[^1] 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 Loading Loading @@ -51,9 +51,9 @@ join our [Matrix chat space][Matrix] or [GitHub Discussions]. [Mastodon], [Lemmy], [Pixelfed], [PeerTube], and so on. [JSR]: https://jsr.io/@fedify/fedify [JSR badge]: https://jsr.io/badges/@fedify/fedify [JSR score]: https://jsr.io/@fedify/fedify/score [JSR score badge]: https://jsr.io/badges/@fedify/fedify/score [JSR badge]: https://jsr.io/badges/@fedify/fedify? [npm]: https://www.npmjs.com/package/@fedify/fedify [npm badge]: https://img.shields.io/npm/v/@fedify/fedify?logo=npm [GitHub Actions]: https://github.com/dahlia/fedify/actions/workflows/build.yaml [GitHub Actions badge]: https://github.com/dahlia/fedify/actions/workflows/build.yaml/badge.svg [Matrix]: https://matrix.to/#/#fedify:matrix.org Loading @@ -61,7 +61,6 @@ join our [Matrix chat space][Matrix] or [GitHub Discussions]. [@hongminhee.todon.eu badge]: https://fedi-badge.deno.dev/@hongminhee@todon.eu/followers.svg [@hongminhee.todon.eu]: https://todon.eu/@hongminhee [Fedify Demo]: https://dash.deno.com/playground/fedify-demo [Deno]: https://deno.com/ [ActivityPub]: https://www.w3.org/TR/activitypub/ [fediverse]: https://en.wikipedia.org/wiki/Fediverse [Activity Vocabulary]: https://www.w3.org/TR/activitystreams-vocabulary/ Loading Loading @@ -94,3 +93,5 @@ Or you can directly import it in your code using `jsr:` specifier: ~~~~ typescript import { Federation } from "jsr:@fedify/fedify"; ~~~~ [Deno]: https://deno.com/ Loading
.github/workflows/build.yaml +39 −6 Original line number Diff line number Diff line Loading @@ -42,9 +42,6 @@ jobs: lint: runs-on: ubuntu-latest permissions: id-token: write contents: read steps: - uses: actions/checkout@v4 - uses: denoland/setup-deno@v1 Loading @@ -53,10 +50,27 @@ jobs: - run: deno task check - run: deno task check working-directory: ${{ github.workspace }}/examples/blog/ release-test: runs-on: ubuntu-latest permissions: id-token: write contents: read steps: - uses: actions/checkout@v4 - uses: denoland/setup-deno@v1 with: deno-version: v1.x - uses: actions/setup-node@v4 with: node-version: lts/* - run: deno task publish --dry-run - run: deno task dnt - run: npm publish --dry-run working-directory: ${{ github.workspace }}/npm/ publish-jsr: needs: [test, lint] publish: needs: [test, lint, release-test] runs-on: ubuntu-latest permissions: id-token: write Loading @@ -67,6 +81,9 @@ jobs: - uses: denoland/setup-deno@v1 with: deno-version: v1.x - uses: actions/setup-node@v4 with: node-version: lts/* - if: github.ref_type == 'branch' run: | jq \ Loading @@ -83,6 +100,9 @@ jobs: # Don't know why, but the .gitignore list is not overriden by include list # in deno.json: - run: rm vocab/.gitignore - run: 'deno task dnt "$(jq -r .version deno.json)"' - run: npm pack working-directory: ${{ github.workspace }}/npm/ - id: extract-changelog uses: dahlia/submark@5a5ff0a58382fb812616a5801402f5aef00f90ce with: Loading @@ -99,10 +119,23 @@ jobs: with: body_path: ${{ steps.extract-changelog.outputs.output-file }} name: Fedify ${{ github.ref_name }} files: npm/*.tgz generate_release_notes: false discussion_category_name: Announcements - if: github.event_name == 'push' run: deno task publish --allow-dirty - if: github.event_name == 'push' run: | set -ex npm config set //registry.npmjs.org/:_authToken "$NPM_AUTH_TOKEN" if [[ "$GITHUB_REF_TYPE" = "tag" ]]; then npm publish --provenance --access public *.tgz else npm publish --provenance --access public --tag dev *.tgz fi env: NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} working-directory: ${{ github.workspace }}/npm/ publish-examples-blog: if: github.event_name == 'push' Loading @@ -124,7 +157,7 @@ jobs: root: . publish-docs: needs: [publish-jsr] needs: [publish] runs-on: ubuntu-latest permissions: id-token: write Loading
.gitignore +1 −0 Original line number Diff line number Diff line Loading @@ -5,3 +5,4 @@ apidoc/ coverage/ deno.lock npm/
.vscode/settings.json +3 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ }, "cSpell.words": [ "activitypub", "aitertools", "apidoc", "bccs", "btos", Loading @@ -36,6 +37,7 @@ "cfworker", "codegen", "Deno", "denokv", "dereferenceable", "discoverability", "docloader", Loading Loading @@ -63,6 +65,7 @@ "superproperty", "unfollow", "unfollowing", "urlpattern", "webfinger" ] }
CHANGES.md +34 −0 Original line number Diff line number Diff line Loading @@ -13,11 +13,45 @@ Version 0.5.0 To be released. - Fedify is now available on npm: [@fedify/fedify]. [[#24]] - Abstract key-value store for caching. - Added `KvStore` interface. - Added `KvStoreSetOptions` interface. - Added `KvKey` type. - Added `DenoKvStore` class. - `KvCacheParameters.kv` option now accepts a `KvStore` instead of `Deno.Kv`. - `KvCacheParameters.prefix` option now accepts a `KvKey` instead of `Deno.KvKey`. - `FederationParameters.kv` option now accepts a `KvStore` instead of `Deno.Kv`. - `FederationKvPrefixes.activityIdempotence` option now accepts a `KvKey` instead of `Deno.KvKey`. - `FederationKvPrefixes.remoteDocument` option now accepts a `KvKey` instead of `Deno.KvKey`. - Abstract message queue for outgoing activities. - Added `MessageQueue` interface. - Added `MessageQueueEnqueueOptions` interface. - Added `InProcessMessageQueue` class. - Added `FederationParameters.queue` option. - Added `@fedify/fedify/x/denokv` module for adapting `Deno.Kv` to `KvStore` and `MessageQueue`. It is only available in Deno runtime. - Added `DenoKvStore` class. - Added `DenoKvMessageQueue` class. - Removed dependency on *jose*. - Added `exportSpki()` function. - Added `importSpki()` function. [@fedify/fedify]: https://www.npmjs.com/package/@fedify/fedify [#24]: https://github.com/dahlia/fedify/discussions/24 Version 0.4.0 ------------- Loading
README.md +7 −6 Original line number Diff line number Diff line Loading @@ -5,7 +5,7 @@ Fedify: an ActivityPub server framework ======================================= [![JSR][JSR badge]][JSR] [![JSR score][JSR score badge]][JSR score] [![npm][npm badge]][npm] [![GitHub Actions][GitHub Actions badge]][GitHub Actions] [![Matrix][Matrix badge]][Matrix] [![Follow @hongminhee@todon.eu][@hongminhee.todon.eu badge]][@hongminhee.todon.eu] Loading @@ -13,7 +13,7 @@ Fedify: an ActivityPub server framework > [!NOTE] > Looking for a quick demo? Here it is: [Fedify Demo] on Deno Playground. Fedify is a [Deno]/TypeScript library for building federated server apps Fedify is a TypeScript library for building federated server apps powered by [ActivityPub] and other standards, so-called [fediverse].[^1] 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 Loading Loading @@ -51,9 +51,9 @@ join our [Matrix chat space][Matrix] or [GitHub Discussions]. [Mastodon], [Lemmy], [Pixelfed], [PeerTube], and so on. [JSR]: https://jsr.io/@fedify/fedify [JSR badge]: https://jsr.io/badges/@fedify/fedify [JSR score]: https://jsr.io/@fedify/fedify/score [JSR score badge]: https://jsr.io/badges/@fedify/fedify/score [JSR badge]: https://jsr.io/badges/@fedify/fedify? [npm]: https://www.npmjs.com/package/@fedify/fedify [npm badge]: https://img.shields.io/npm/v/@fedify/fedify?logo=npm [GitHub Actions]: https://github.com/dahlia/fedify/actions/workflows/build.yaml [GitHub Actions badge]: https://github.com/dahlia/fedify/actions/workflows/build.yaml/badge.svg [Matrix]: https://matrix.to/#/#fedify:matrix.org Loading @@ -61,7 +61,6 @@ join our [Matrix chat space][Matrix] or [GitHub Discussions]. [@hongminhee.todon.eu badge]: https://fedi-badge.deno.dev/@hongminhee@todon.eu/followers.svg [@hongminhee.todon.eu]: https://todon.eu/@hongminhee [Fedify Demo]: https://dash.deno.com/playground/fedify-demo [Deno]: https://deno.com/ [ActivityPub]: https://www.w3.org/TR/activitypub/ [fediverse]: https://en.wikipedia.org/wiki/Fediverse [Activity Vocabulary]: https://www.w3.org/TR/activitystreams-vocabulary/ Loading Loading @@ -94,3 +93,5 @@ Or you can directly import it in your code using `jsr:` specifier: ~~~~ typescript import { Federation } from "jsr:@fedify/fedify"; ~~~~ [Deno]: https://deno.com/