Commit acd9c72f authored by ChanHaeng Lee's avatar ChanHaeng Lee
Browse files

Merge remote-tracking branch 'upstream/main'

parents 58c23078 8e4bd2e7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -183,11 +183,11 @@ labels:
        - Routing or middleware support

  - component/kv:
      description: "Key-value storage layer"
      description: "keyvalue storage layer"
      instructions: |
        Use for:
        - Persistence changes
        - Data modeling for key-value store
        - Data modeling for keyvalue store

  - component/mq:
      description: "Message queue infrastructure"
+13 −10
Original line number Diff line number Diff line
@@ -216,7 +216,7 @@ jobs:
        node-version: lts/*
        cache: pnpm
    - run: deno task test:cfworkers
      working-directory: ${{ github.workspace }}/fedify/
      working-directory: ${{ github.workspace }}/packages/fedify/

  lint:
    runs-on: ubuntu-latest
@@ -257,7 +257,7 @@ jobs:
        node-version: lts/*
        cache: pnpm
    - run: '[[ "$(jq -r .version deno.json)" = "$(jq -r .version package.json)" ]]'
      working-directory: ${{ github.workspace }}/fedify/
      working-directory: ${{ github.workspace }}/packages/fedify/
    - run: deno task -f @fedify/fedify codegen
    - run: deno publish --dry-run
    - run: pnpm install
@@ -299,7 +299,7 @@ jobs:
          '.version = .version + "-dev." + $build + "+" + $commit' \
          deno.json > deno.json.tmp
        mv deno.json.tmp deno.json
      working-directory: ${{ github.workspace }}/fedify/
      working-directory: ${{ github.workspace }}/packages/fedify/
    - if: github.event_name == 'pull_request_target'
      run: |
        jq \
@@ -309,7 +309,7 @@ jobs:
          '.version = .version + "-pr." + $pr_number + "." + $build + "+" + $commit' \
          deno.json > deno.json.tmp
        mv deno.json.tmp deno.json
      working-directory: ${{ github.workspace }}/fedify/
      working-directory: ${{ github.workspace }}/packages/fedify/
      env:
        PR_NUMBER: ${{ github.event.pull_request.number }}
        PR_SHA: ${{ github.event.pull_request.head.sha }}
@@ -318,18 +318,18 @@ jobs:
        set -ex
        echo version="$(jq -r .version deno.json)" >> $GITHUB_OUTPUT
        echo short_version="$(jq -r .version deno.json | sed 's/[+].*//')" >> $GITHUB_OUTPUT
      working-directory: ${{ github.workspace }}/fedify/
      working-directory: ${{ github.workspace }}/packages/fedify/
    - run: deno task check-versions --fix
    - if: github.ref_type == 'tag'
      run: |
        set -ex
        [[ "$(jq -r .version deno.json)" = "$GITHUB_REF_NAME" ]]
        ! grep -i "to be released" CHANGES.md
      working-directory: ${{ github.workspace }}/fedify/
      working-directory: ${{ github.workspace }}/packages/fedify/
    # Don't know why, but the .gitignore list is not overridden by include list
    # in deno.json:
    - run: rm vocab/.gitignore
      working-directory: ${{ github.workspace }}/fedify/
    - run: rm src/vocab/.gitignore
      working-directory: ${{ github.workspace }}/packages/fedify/
    - run: |
        pnpm install
        pnpm pack --recursive --filter='!./examples/**'
@@ -337,7 +337,7 @@ jobs:
          rm fedify-cli-*.tgz
        fi
    - run: deno task pack
      working-directory: ${{ github.workspace }}/cli/
      working-directory: ${{ github.workspace }}/packages/cli/
    - id: extract-changelog
      uses: dahlia/submark@5a5ff0a58382fb812616a5801402f5aef00f90ce
      with:
@@ -426,6 +426,7 @@ jobs:
          | @fedify/nestjs   | ${{ steps.versioning.outputs.version }} |                             | [npm][npm:@fedify/nestjs]   |
          | @fedify/postgres | ${{ steps.versioning.outputs.version }} | [JSR][jsr:@fedify/postgres] | [npm][npm:@fedify/postgres] |
          | @fedify/redis    | ${{ steps.versioning.outputs.version }} | [JSR][jsr:@fedify/redis]    | [npm][npm:@fedify/redis]    |
          | @fedify/sqlite   | ${{ steps.versioning.outputs.version }} | [JSR][jsr:@fedify/sqlite]   | [npm][npm:@fedify/sqlite]   |
          | @fedify/testing  | ${{ steps.versioning.outputs.version }} | [JSR][jsr:@fedify/testing]  | [npm][npm:@fedify/testing]  |

          [jsr:@fedify/fedify]: https://jsr.io/@fedify/fedify@${{ steps.versioning.outputs.version }}
@@ -442,6 +443,8 @@ jobs:
          [npm:@fedify/postgres]: https://www.npmjs.com/package/@fedify/postgres/v/${{ steps.versioning.outputs.short_version }}
          [jsr:@fedify/redis]: https://jsr.io/@fedify/redis@${{ steps.versioning.outputs.version }}
          [npm:@fedify/redis]: https://www.npmjs.com/package/@fedify/redis/v/${{ steps.versioning.outputs.short_version }}
          [jsr:@fedify/sqlite]: https://jsr.io/@fedify/sqlite@${{ steps.versioning.outputs.version }}
          [npm:@fedify/sqlite]: https://www.npmjs.com/package/@fedify/sqlite/v/${{ steps.versioning.outputs.short_version }}
          [jsr:@fedify/testing]: https://jsr.io/@fedify/testing@${{ steps.versioning.outputs.version }}
          [npm:@fedify/testing]: https://www.npmjs.com/package/@fedify/testing/v/${{ steps.versioning.outputs.short_version }}
        pr-number: ${{ github.event.pull_request.number }}
@@ -466,7 +469,7 @@ jobs:
      with:
        deno-version: v2.x
    - run: deno task codegen
      working-directory: ${{ github.workspace }}/fedify/
      working-directory: ${{ github.workspace }}/packages/fedify/
    - uses: denoland/deployctl@v1
      with:
        project: fedify-blog
+30 −24
Original line number Diff line number Diff line
@@ -50,24 +50,27 @@ Repository Structure

The repository is organized as a monorepo with the following packages:

 -  *fedify/*: Main Fedify library (@fedify/fedify)
    -  *codegen/*: Code generation scripts
    -  *compat/*: Compatibility layer
    -  *federation/*: Core federation functionality
    -  *nodeinfo/*: NodeInfo protocol implementation
    -  *runtime/*: Runtime utilities
    -  *shim/*: Platform abstraction layer
    -  *sig/*: Signature implementation
    -  *testing/*: Testing utilities
    -  *vocab/*: ActivityPub vocabulary implementation
    -  *webfinger/*: WebFinger protocol implementation
    -  *x/*: Framework integrations
 -  *cli/*: Fedify CLI implementation (@fedify/cli, built with Deno)
 -  *amqp/*: AMQP/RabbitMQ driver (@fedify/amqp)
 -  *express/*: Express.js integration (@fedify/express)
 -  *h3/*: h3 framework integration (@fedify/h3)
 -  *postgres/*: PostgreSQL drivers (@fedify/postgres)
 -  *redis/*: Redis drivers (@fedify/redis)
 -  *packages/fedify/*: Main Fedify library (@fedify/fedify)
    -  *src/codegen/*: Code generation scripts
    -  *src/compat/*: Compatibility layer
    -  *src/federation/*: Core federation functionality
    -  *src/nodeinfo/*: NodeInfo protocol implementation
    -  *src/runtime/*: Runtime utilities
    -  *src/shim/*: Platform abstraction layer
    -  *src/sig/*: Signature implementation
    -  *src/testing/*: Testing utilities
    -  *src/vocab/*: ActivityPub vocabulary implementation
    -  *src/webfinger/*: WebFinger protocol implementation
    -  *src/x/*: Framework integrations
 -  *packages/cli/*: Fedify CLI implementation (@fedify/cli, built with Deno)
 -  *packages/amqp/*: AMQP/RabbitMQ driver (@fedify/amqp)
 -  *packages/express/*: Express.js integration (@fedify/express)
 -  *packages/h3/*: h3 framework integration (@fedify/h3)
 -  *packages/postgres/*: PostgreSQL drivers (@fedify/postgres)
 -  *packages/redis/*: Redis drivers (@fedify/redis)
 -  *packages/nestjs/*: NestJS integration (@fedify/nestjs)
 -  *packages/sqlite/*: SQLite driver (@fedify/sqlite)
 -  *packages/testing/*: Testing utilities (@fedify/testing)
 -  *docs/*: Documentation built with Node.js and VitePress
 -  *examples/*: Example projects demonstrating Fedify usage

@@ -132,21 +135,23 @@ Common Tasks

### Adding ActivityPub Vocabulary Types

1. Create a new YAML file in *fedify/vocab/* following existing patterns
1. Create a new YAML file in *packages/fedify/src/vocab/* following existing patterns
2. Run `deno task codegen` to generate TypeScript classes
3. Export the new types from appropriate module files

### Implementing Framework Integrations

1. Add new integrations in the *fedify/x/* directory
1. Add new integrations in the *packages/fedify/src/x/* directory
2. Follow pattern from existing integrations (hono.ts, sveltekit.ts)
3. Use standard request/response interfaces for compatibility
4. Consider creating a dedicated package for substantial integrations

### Creating Database Adapters

1. For core KV/MQ interfaces: implement in *fedify/federation/kv.ts* and *fedify/federation/mq.ts*
2. For specific database adapters: create dedicated packages (*postgres/*, *redis/*, *amqp/*)
1. For core KV/MQ interfaces: implement in *packages/fedify/src/federation/kv.ts*
   and *packages/fedify/src/federation/mq.ts*
2. For specific database adapters: create dedicated packages
   (*packages/sqlite/*, *packages/postgres/*, *packages/redis/*, *packages/amqp/*)
3. Follow the pattern from existing database adapter packages
4. Implement both KV store and message queue interfaces as needed

@@ -167,7 +172,7 @@ Testing Requirements

1. Write unit tests for all new functionality
2. Follow the pattern of existing tests
3. Use the testing utilities in *fedify/testing/*
3. Use the testing utilities in *packages/fedify/src/testing/* or *packages/testing/*
4. Consider interoperability with other fediverse software
5. For package-specific tests, follow the testing patterns in each package

@@ -251,7 +256,8 @@ The monorepo uses different build processes for different packages:
2. **@fedify/cli**: Built with Deno, distributed via JSR and npm

3. **Database adapters and integrations**: Use tsdown for TypeScript compilation:
   - *amqp/*, *express/*, *h3/*, *postgres/*, *redis/*
   - *packages/amqp/*, *packages/express/*, *packages/h3/*, *packages/sqlite/*,
     *packages/postgres/*, *packages/redis/*, *packages/nestjs/*
   - Built to support Node.js and Bun environments

Ensure changes work across all distribution formats and target environments.
+16 −0
Original line number Diff line number Diff line
@@ -91,6 +91,13 @@ the versioning.
     -  Added `@fedify/nestjs` package.
     -  Added `FedifyModule` for integrating Fedify into NestJS applications.

 -  Added `SqliteKvStore`, implementing `KvStore` using SQLite with the
    `@fedify/sqlite` package. Compatible with Bun, Deno, and Node.js.
    [[#274], [#318] by An Subin]

     -  Added `@fedify/sqlite` package.
     -  Added `SqliteKvStore`, a SQLite implementation of `KvStore`.

 -  Added `-o`/`--output` option to `fedify lookup` command. This option allows
    users to save retrieved lookup results to specified path.
    [[#261], [#321] by Jiwon Kwon]
@@ -117,10 +124,15 @@ the versioning.
    in each activity, in addition to the activity's own type.
    [[#191], [#342] by Jang Hanarae]

 -  The `fedify` CLI now correctly disables color output when standard output
    isn't a TTY (for example, when redirecting to a file) or when the `NO_COLOR`
    environment variable is set.  [[#257], [#341] by Cho Hasang]

[#168]: https://github.com/fedify-dev/fedify/issues/168
[#191]: https://github.com/fedify-dev/fedify/issues/191
[#197]: https://github.com/fedify-dev/fedify/issues/197
[#248]: https://github.com/fedify-dev/fedify/issues/248
[#257]: https://github.com/fedify-dev/fedify/issues/257
[#260]: https://github.com/fedify-dev/fedify/issues/260
[#261]: https://github.com/fedify-dev/fedify/issues/261
[#262]: https://github.com/fedify-dev/fedify/issues/262
@@ -135,6 +147,8 @@ the versioning.
[#298]: https://github.com/fedify-dev/fedify/pull/298
[#304]: https://github.com/fedify-dev/fedify/issues/304
[#309]: https://github.com/fedify-dev/fedify/pull/309
[#274]: https://github.com/fedify-dev/fedify/issues/274
[#318]: https://github.com/fedify-dev/fedify/pull/318
[#310]: https://github.com/fedify-dev/fedify/issues/310
[#311]: https://github.com/fedify-dev/fedify/issues/311
[#321]: https://github.com/fedify-dev/fedify/pull/321
@@ -142,6 +156,7 @@ the versioning.
[#331]: https://github.com/fedify-dev/fedify/pull/331
[#332]: https://github.com/fedify-dev/fedify/pull/332
[#342]: https://github.com/fedify-dev/fedify/pull/342
[#341]: https://github.com/fedify-dev/fedify/pull/341


Version 1.7.7
@@ -162,6 +177,7 @@ Released on July 28, 2025.
[#335]: https://github.com/fedify-dev/fedify/pull/335



Version 1.7.6
-------------

+13 −9
Original line number Diff line number Diff line
@@ -181,15 +181,19 @@ Build

The repository is organized as a monorepo with the following packages:

 -  *fedify/*: The main Fedify library (@fedify/fedify).  The library is built
    with Deno, and tested with Deno, Node.js, and [Bun].
     -  *codegen/*: The code generation scripts.
 -  *cli/*: The Fedify CLI (@fedify/cli).  The CLI is built with [Deno].
 -  *amqp/*: AMQP/RabbitMQ driver (@fedify/amqp) for Fedify.
 -  *express/*: Express.js integration (@fedify/express) for Fedify.
 -  *h3/*: h3 framework integration (@fedify/h3) for Fedify.
 -  *postgres/*: PostgreSQL drivers (@fedify/postgres) for Fedify.
 -  *redis/*: Redis drivers (@fedify/redis) for Fedify.
 -  *packages/fedify/*: The main Fedify library (@fedify/fedify).  The library
    is built with Deno, and tested with Deno, Node.js, and [Bun].
     -  *src/codegen/*: The code generation scripts.
 -  *packages/cli/*: The Fedify CLI (@fedify/cli).  The CLI is built with
    [Deno].
 -  *packages/amqp/*: AMQP/RabbitMQ driver (@fedify/amqp) for Fedify.
 -  *packages/express/*: Express.js integration (@fedify/express) for Fedify.
 -  *packages/h3/*: h3 framework integration (@fedify/h3) for Fedify.
 -  *packages/postgres/*: PostgreSQL drivers (@fedify/postgres) for Fedify.
 -  *packages/redis/*: Redis drivers (@fedify/redis) for Fedify.
 -  *packages/nestjs/*: NestJS integration (@fedify/nestjs) for Fedify.
 -  *packages/sqlite/*: SQLite driver (@fedify/sqlite) for Fedify.
 -  *packages/testing/*: Testing utilities (@fedify/testing) for Fedify.
 -  *docs/*: The Fedify docs.  The docs are built with [Node.js] and
    [VitePress].
 -  *examples/*: The example projects.  Some examples are built with Deno, and
Loading