{
"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": ">=22.5 <27"
},
"bin": {
"featherreader-oauth-sidecar": "dist/server.js"
},
"scripts": {
"build": "tsc -p tsconfig.json",
"start": "node dist/server.js",
"dev": "node --loader ts-node/esm src/server.ts",
"typecheck": "tsc -p tsconfig.json --noEmit",
"lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\" --max-warnings 0",
"lint:fix": "eslint \"src/**/*.ts\" \"test/**/*.ts\" --fix",
"format:check": "prettier --check \"eslint.config.js\" \".prettierrc.json\"",
"format:write": "prettier --write .",
"test": "tsc -p tsconfig.test.json && node --test dist-test/test/*.test.js"
},
"dependencies": {
"@atproto/api": "^0.20.28",
"@atproto/oauth-client-node": "^0.4.8",
"fastify": "^5.2.0"
},
"devDependencies": {
"@eslint/js": "10.0.1",
"@types/node": "^26.1.1",
"eslint": "10.7.0",
"eslint-config-prettier": "10.1.8",
"prettier": "3.9.5",
"ts-node": "^10.9.2",
"typescript": "^5.7.0",
"typescript-eslint": "8.63.0"
}
}