feather-reader 0.4.6

A minimalist, atproto-native RSS/Atom reader in Rust — your feed subscriptions live in your own PDS.
Documentation
{
  "name": "featherreader-oauth-sidecar",
  "version": "0.1.0",
  "private": true,
  "description": "atproto OAuth confidential-client sidecar for FeatherReader — owns the OAuth handshake (PAR/PKCE/DPoP/token-refresh) so the Rust server never touches it. Exposes login/callback + an internal shared-secret-guarded authed com.atproto.repo.* API.",
  "license": "AGPL-3.0-or-later",
  "type": "module",
  "engines": {
    "node": ">=24 <27"
  },
  "bin": {
    "featherreader-oauth-sidecar": "dist/server.js"
  },
  "scripts": {
    "build": "tsc -p tsconfig.json",
    "start": "node dist/server.js",
    "dev": "tsx watch src/server.ts",
    "typecheck": "tsc -p tsconfig.json --noEmit",
    "lint": "oxlint src test --max-warnings 0",
    "lint:fix": "oxlint src test --fix",
    "format:check": "prettier --check \".oxlintrc.json\" \".prettierrc.json\"",
    "format:write": "prettier --write .",
    "test:build": "rm -rf dist-test && tsc -p tsconfig.test.json",
    "test:guard": "node -e \"const fs=require('node:fs');let f=[];try{f=fs.readdirSync('dist-test/test',{recursive:true}).filter(n=>String(n).endsWith('.test.js'))}catch(e){};if(f.length<5){console.error('FAIL: found '+f.length+' compiled test files under dist-test/test, expected at least 5. node --test exits 0 when it matches nothing, so this guard is what turns a vanished suite into a red build.');process.exit(1)}console.log('[guard] '+f.length+' compiled test files')\"",
    "test": "npm run test:build && npm run test:guard && node --test 'dist-test/test/**/*.test.js'"
  },
  "dependencies": {
    "@atproto/api": "^0.22.0",
    "@atproto/jwk-jose": "^0.2.4",
    "@atproto/oauth-client-node": "^0.5.8",
    "@fastify/rate-limit": "^11.2.0",
    "fastify": "^5.12.5"
  },
  "devDependencies": {
    "@types/node": "^26.6.4",
    "oxlint": "^1.86.0",
    "prettier": "3.9.9",
    "tsx": "^4.23.15",
    "typescript": "^7.0.0"
  }
}