npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@takosjp/yurucommu-core

v4.1.14

Published

Shared ActivityPub, API, DB, and runtime engine library for the yurucommu product family.

Readme

Yurucommu Core

English: README.en.md

Yurucommu Core は、yurucommu family の製品 (yurucommu / yurumeet など) が共通で使う ActivityPub / API / DB / runtime エンジンのライブラリ です。分散 SNS の連合・サーバー API・ データベース層を 1 か所に実装しておくことで、各製品は UI に集中できます。

これはインストールできる製品の repo ではなく、OpenTofu Capsule (Git URL から取り込む 1 つのアプリ/インフラ単位) も持ちません。deploy できる製品は別の repo にあります。

  • yurucommu — フィード / ストーリー / プロフィールの fullstack product。yurucommu.com・ Worker artifact・OpenTofu Capsule を持ちます
  • yurumeet — トーク中心の fullstack product。yurume は discovery と push 登録で使う 短い client id / 略称です

できること

  • ActivityPub 連合 — フォロー・投稿・ブースト・いいね・返信をサーバーをまたいで行い、 コミュニティとつながりを結びます。HTTP-signature の検証、SSRF 対策済みの fetch、 actor / ドメインのブロックリストを備えます
  • サーバー API — actor・投稿・ストーリー・DM・コミュニティ・メディア・通知・ モバイル push の route を提供します
  • クライアント契約 — yurucommu・yurumeet・モバイル・代替クライアント向けの型付き SDK と discovery の型を提供します
  • 検索・通知・レコメンド — 人とコンテンツを見つけられます
  • 認証 — パスワード、Google / X OAuth、Takosumi Accounts の OIDC クライアントに対応します
  • 二言語 UI — 日本語 / 英語に対応します

使い方の境界

この repo を Capsule としてインストールしないでください。代わりに yurucommu または yurumeet をインストールします。これらの製品 repo が、自分の UI とこのサーバーエンジンを束ね、 自分の Worker artifact を公開し、自分の plain OpenTofu module を持ちます。

クライアント実装は @takosjp/yurucommu-api を使ってください。製品の Worker artifact は @takosjp/yurucommu-core/server で Hono backend を作成し、 @takosjp/yurucommu-core/migrations で D1 migration を有効化します。この checkout の 未公開 source path を import してはいけません。

開発者向け

cd yurucommu-core
bun install
bun run check   # complete portable gate
bun run test    # portable suites and packaged-consumer checks
bun run lint    # alias of the complete portable gate
bun run fmt     # prettier

backend エンジンの source は src/backend (Hono routes、ActivityPub 連合、配送 pipeline)、 共有 npm API package は packages/api、データベースの schema と migration は src/db/schema と migrations/ にあります。

bun run check は format check、TypeScript / static analysis、portable tests、 API build、Worker / browser bundle、packaged consumer を含む完全な portable gate です。通常の CI が green なら、この portable gate の証拠になります。

Linux procfs の native 検証

実 kernel の sibling PID namespace owner と hidepid=2 を調べる2件は、 test-native/ の独立した検証です。必要な能力を持つ Linux host で別 cadence として 実行します。

bun run check:native:linux-procfs

入口は Linux と unshare / mount / setpriv を要求し、各10秒の時間制限付きで PID namespace、 procfs mount、hidepid=2 と異なる UID での実行能力を先に確認します。ツール不足や namespace / mount 権限の拒否は、生の診断を表示して非ゼロで終了します。 prerequisite が通ると、現在の Bun で2件を無条件に実行し、テストの失敗 status を返します。 native suite 全体の上限は60秒です。時間切れは診断と status 124 を返し、 入口が作った suite の process group だけを終了します。通常終了時にも残った子を掃除します。 ツールの自動 install や権限の追加は行いません。portable CI の green は、 この Linux native 検証の成功を意味しません。

API package のコマンド:

bun run build:api  # build @takosjp/yurucommu-api
bun run pack:api   # npm pack --dry-run for the API package

bun run check は両 package を実際に pack し、一時 consumer から manifest に宣言された public export をすべて import します。Core の client-api と独立した API package の browser bundle、Core の Worker bundle も検査します。依存はインストール済みのローカル module を 使うため registry への接続は不要です。公開後の registry readback は deploy の別検証です。

Actor GET の閲覧者別Follow状態は outgoing Follow契約を参照してください。 未公開sourceの契約と、registry公開済みpackageのconsumer利用は別に検証します。

core → product の release 順序

新しい API 契約 (例: ブラウザ通知の public API と 0019_notification_push_delivery.sql、core / API 3.1.0 から) は、まずこの repo で両 package を同じ tag から npm に公開し、packaged consumer gate が通ることを確認します。 その公開が registry から取得できるようになった後にだけ、yurucommu / yurumeet の dependency range と bun.lock を registry package から更新し、各 repo の bun run check:core-release を通してから製品版 Worker を release します。file: / workspace: / Git dependency で未公開 source を代用してはいけません。

Yurumeet とモバイルクライアントは別 repo にあります。これらは @takosjp/yurucommu-api に依存し、 Capsule の output または /.well-known/social-server でサーバーを見つけ、自分の静的/runtime artifact を Takosumi・Cloudflare・self-host の実行環境で deploy します。デバッグ用に clients/ の下へローカル checkout を置けますが、このディレクトリは意図的に git 管理外に してあり、サーバー repo を小さく保ちます。

クライアントが別 origin で動く場合、yurucommu サーバー側の CORS / CSRF の許可リストに その origin を含める必要があります。

製品としての境界

Yurucommu は ActivityPub 連合・コンテンツ配送・ユーザー identity をすべてアプリ層で自前実装して います。Takos core のサービスにも、プラットフォーム層の連合の仕組みにも依存しません。Takosumi 経由で インストールされた場合もユーザーが削除できる通常の Capsule であり、Takos core に取り込まれることは ありません。詳しい境界は AGENTS.md を参照してください。

ドキュメント