{"_id":"@activityplug/hackerspub","_rev":"4-7830a5235ab10a9d99135c4f4a035e26","name":"@activityplug/hackerspub","dist-tags":{"rc":"1.0.0-rc.0","latest":"1.0.2"},"versions":{"1.0.0-rc.0":{"name":"@activityplug/hackerspub","version":"1.0.0-rc.0","keywords":["activitypub","fediverse","hackerspub","typescript"],"license":"Apache-2.0 OR MIT","_id":"@activityplug/hackerspub@1.0.0-rc.0","maintainers":[{"name":"realignist","email":"hazelee@realignist.me"}],"homepage":"https://github.com/Nebu1eto/activityplug","bugs":{"url":"https://github.com/Nebu1eto/activityplug/issues"},"dist":{"shasum":"261719a1b548636568eecba61cfab4531cba69a9","tarball":"https://registry.npmjs.org/@activityplug/hackerspub/-/hackerspub-1.0.0-rc.0.tgz","fileCount":6,"integrity":"sha512-4mx2ux2X4Ftjr30q8xR/2aRLcVT5t8gwCRseUnLqznH5yAIoz60Aew5Ne7YmpLAcy0dxAMfJdKnXvGsfcsMQIA==","signatures":[{"sig":"MEYCIQCFscKTtKNy83/HrY6SXx9WrgkRGkTqdMjWCYDZZtmx9AIhAPXbIKuxM03ZFUMSnC6YgRCKXfUviGZMPVAMnFeJfPCd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120110},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","engines":{"node":">=26"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"}},"scripts":{"test":"node --experimental-strip-types ../../scripts/run-package-tests.ts","build":"rolldown -c ../../rolldown.config.ts --configLoader native","pack:dry-run":"pnpm pack --dry-run"},"_npmUser":{"name":"realignist","email":"hazelee@realignist.me"},"repository":{"url":"git+https://github.com/Nebu1eto/activityplug.git","type":"git","directory":"packages/hackerspub"},"description":"HackersPub adapter for ActivityPlug.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","dependencies":{"ky":"^2.0.2","zod":"^4.4.3","@urql/core":"^6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"@activityplug/e2e-fixtures":"0.0.1-rc.0","@activityplug/test-fixtures":"0.0.0"},"peerDependencies":{"@activityplug/core":"^1.0.0-rc.0"},"_npmOperationalInternal":{"tmp":"tmp/hackerspub_1.0.0-rc.0_1786068143955_0.10068471652471533","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@activityplug/hackerspub","version":"1.0.0","keywords":["activitypub","fediverse","hackerspub","typescript"],"license":"Apache-2.0 OR MIT","_id":"@activityplug/hackerspub@1.0.0","maintainers":[{"name":"realignist","email":"hazelee@realignist.me"}],"homepage":"https://github.com/Nebu1eto/activityplug","bugs":{"url":"https://github.com/Nebu1eto/activityplug/issues"},"dist":{"shasum":"299c5dcd5880f6c5097996ed587def77df54faf3","tarball":"https://registry.npmjs.org/@activityplug/hackerspub/-/hackerspub-1.0.0.tgz","fileCount":6,"integrity":"sha512-xr9yJzOT+GtN961ISyXZBVVMTpVfGcwyZaaz+VaPAZy0OL1su9nyKeD3FxSEK3aLIfaP+ICeEAxxg/LMk4+JJg==","signatures":[{"sig":"MEQCIGfbshohGd6RSCmzZZCUpuaFLN/MlJBKMDsrWUxAaKA0AiAyJW7oD9CMCGJBar1HnUPLL/6bMNJwJ4RgB8uIPAaEdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@activityplug%2fhackerspub@1.0.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120095},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","engines":{"node":">=26"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"}},"scripts":{"test":"node --experimental-strip-types ../../scripts/run-package-tests.ts","build":"rolldown -c ../../rolldown.config.ts --configLoader native","pack:dry-run":"pnpm pack --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b735b9cb-8355-4a49-9287-010bb31df3c0"}},"repository":{"url":"git+https://github.com/Nebu1eto/activityplug.git","type":"git","directory":"packages/hackerspub"},"description":"HackersPub adapter for ActivityPlug.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"ky":"^2.0.2","zod":"^4.4.3","@urql/core":"^6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"@activityplug/e2e-fixtures":"0.0.1","@activityplug/test-fixtures":"0.0.0"},"peerDependencies":{"@activityplug/core":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/hackerspub_1.0.0_1786073285175_0.18375400687768262","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@activityplug/hackerspub","version":"1.0.1","keywords":["activitypub","fediverse","hackerspub","typescript"],"license":"Apache-2.0 OR MIT","_id":"@activityplug/hackerspub@1.0.1","maintainers":[{"name":"realignist","email":"hazelee@realignist.me"}],"homepage":"https://github.com/Nebu1eto/activityplug","bugs":{"url":"https://github.com/Nebu1eto/activityplug/issues"},"dist":{"shasum":"f9810e23d7962d4f50c9517db740a35154dfed1c","tarball":"https://registry.npmjs.org/@activityplug/hackerspub/-/hackerspub-1.0.1.tgz","fileCount":6,"integrity":"sha512-ECtD7ZPBWgnrDP9cx7kY1019y+T5dfTyblNpdOtTPAICxXzzddHAStMphoMvD4CEf1jswFEUqJMonwyX868aLQ==","signatures":[{"sig":"MEUCIAaBQyKu3xJxMzdSdiedwAktFbEt/tiWk7wl9y7hZqZ8AiEArWvEc/Pe+hQgkgcVjyqBFjd/tZ8AfDTKjm/Lc6s5FYk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@activityplug%2fhackerspub@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":120076},"main":"./dist/index.mjs","type":"module","types":"./dist/index.d.mts","engines":{"node":">=26"},"exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"}},"scripts":{"test":"node --experimental-strip-types ../../scripts/run-package-tests.ts","build":"rolldown -c ../../rolldown.config.ts --configLoader native","pack:dry-run":"pnpm pack --dry-run"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b735b9cb-8355-4a49-9287-010bb31df3c0"}},"repository":{"url":"git+https://github.com/Nebu1eto/activityplug.git","type":"git","directory":"packages/hackerspub"},"description":"HackersPub adapter for ActivityPlug.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"ky":"^2.0.2","zod":"^4.4.3","@urql/core":"^6.0.3"},"_hasShrinkwrap":false,"devDependencies":{"@activityplug/e2e-fixtures":"0.0.2","@activityplug/test-fixtures":"0.0.0"},"peerDependencies":{"@activityplug/core":"^1.0.1"},"_npmOperationalInternal":{"tmp":"tmp/hackerspub_1.0.1_1786081422275_0.4329888986002315","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@activityplug/hackerspub","version":"1.0.2","description":"HackersPub adapter for ActivityPlug.","keywords":["activitypub","fediverse","hackerspub","typescript"],"homepage":"https://github.com/Nebu1eto/activityplug","bugs":{"url":"https://github.com/Nebu1eto/activityplug/issues"},"license":"Apache-2.0 OR MIT","repository":{"type":"git","url":"git+https://github.com/Nebu1eto/activityplug.git","directory":"packages/hackerspub"},"type":"module","sideEffects":false,"main":"./dist/index.mjs","types":"./dist/index.d.mts","exports":{".":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"}},"dependencies":{"@urql/core":"^6.0.3","ky":"^2.0.2","zod":"^4.4.3"},"devDependencies":{"@activityplug/e2e-fixtures":"0.0.3","@activityplug/test-fixtures":"0.0.0"},"peerDependencies":{"@activityplug/core":"^1.0.2"},"engines":{"node":">=26"},"scripts":{"build":"rolldown -c ../../rolldown.config.ts --configLoader native","pack:dry-run":"pnpm pack --dry-run","test":"node --experimental-strip-types ../../scripts/run-package-tests.ts"},"_nodeVersion":"26.7.0","_id":"@activityplug/hackerspub@1.0.2","dist":{"integrity":"sha512-Yncb8geHaAtcs3ZSPk8gvjOGwPwtlLZ3JkExLTDuEuLgxR1mLraQ9iL/1+RmKdti35YgosS4t2hcSHt25WKJTw==","shasum":"56265d71183177f473b2b3cf4dbe01e2ca12cd01","tarball":"https://registry.npmjs.org/@activityplug/hackerspub/-/hackerspub-1.0.2.tgz","fileCount":6,"unpackedSize":120511,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@activityplug%2fhackerspub@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDlwvlmD23QpvU9m7wKaSw/021mJi+eAle9pkazms2GGQIgD2l8om+FGhTKq0r/2/6xDQiAlrEFt6+H6Xhlx2rSLQU="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:b735b9cb-8355-4a49-9287-010bb31df3c0"}},"directories":{},"maintainers":[{"name":"realignist","email":"hazelee@realignist.me"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/hackerspub_1.0.2_1786235376468_0.9633234628357927"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-07T02:02:23.727Z","modified":"2026-08-09T00:29:36.911Z","1.0.0-rc.0":"2026-08-07T02:02:24.111Z","1.0.0":"2026-08-07T03:28:05.352Z","1.0.1":"2026-08-07T05:43:42.429Z","1.0.2":"2026-08-09T00:29:36.606Z"},"bugs":{"url":"https://github.com/Nebu1eto/activityplug/issues"},"license":"Apache-2.0 OR MIT","homepage":"https://github.com/Nebu1eto/activityplug","keywords":["activitypub","fediverse","hackerspub","typescript"],"repository":{"type":"git","url":"git+https://github.com/Nebu1eto/activityplug.git","directory":"packages/hackerspub"},"description":"HackersPub adapter for ActivityPlug.","maintainers":[{"name":"realignist","email":"hazelee@realignist.me"}],"readme":"`@activityplug/hackerspub`\n==========================\n\n`@activityplug/hackerspub` maps HackersPub's GraphQL, authentication, NodeInfo,\nand media endpoints to the ActivityPlug client contract. Use it with\n`@activityplug/core` when an application connects directly to HackersPub.\n\n\nInstallation\n------------\n\n~~~~ sh\npnpm add @activityplug/hackerspub\npnpm add @activityplug/core\n~~~~\n\nNode.js 26 or newer is required. Both packages use ECMAScript modules.\n`@activityplug/core` is a peer dependency, so the application controls the\ncompatible core version.\n\nThe package root contains the complete public adapter API:\n\n~~~~ ts\nimport * as activityplug from \"@activityplug/hackerspub\";\n~~~~\n\n\nCreate a client\n---------------\n\n`createHackersPubAdapter` currently takes no configuration options. Remote I/O\nstill requires a scoped authority supplied by the host application:\n\n~~~~ ts\nimport {\n  createActivityPlugClient,\n  type RemoteAuthority,\n} from \"@activityplug/core\";\nimport { createHackersPubAdapter } from \"@activityplug/hackerspub\";\n\nexport function createHackersPubClient(\n  origin: string,\n  remoteAuthority: RemoteAuthority,\n) {\n  return createActivityPlugClient({\n    adapter: createHackersPubAdapter(),\n    origin,\n    remoteAuthority,\n  });\n}\n~~~~\n\nThe remote authority must use a transport that applies the deployment's origin,\nDNS, redirect, and response-size policies. See the\n[security model](../../docs/security-model.md) for the transport boundary.\n\nUse capability decisions before enabling an optional workflow:\n\n~~~~ ts\nconst profile = await client.instances.detect();\nconst decision = profile.capabilities[\"auth.passkey\"];\n\nif (decision.status === \"supported\") {\n  const challenge = await client.auth.passkey.start({});\n  console.log(challenge.options);\n}\n~~~~\n\n\nAuthentication\n--------------\n\nThe adapter implements three strategies:\n\n -  existing access-token import;\n -  email challenge;\n -  passkey authentication.\n\nIt does not expose an OAuth client or OAuth refresh-token flow. The email\nchallenge defaults to the `en` locale when the caller does not provide one.\nPasskey completion expects the browser credential fields defined by\n`PasskeyAuthenticationResponse`.\n\nSee\n[authentication and sessions](../../docs/authentication-and-sessions.md) for\nsession storage and complete authentication flows.\n\n\nSupported operations\n--------------------\n\nThe adapter maps NodeInfo discovery, account lookup, profile updates for\n`displayName`, `note`, and `avatarId`, followers and following, relationships,\npost reads/creation/deletion, home and public timelines, account and post\nsearch, poll reads and votes, notifications, follow/block actions, favourites,\nboosts, and emoji reactions. It also supports server-side media ingestion from\na URL.\n\nPost creation accepts public, unlisted, followers-only, and direct visibility.\nReplies and quote posts are supported.\n\nImportant explicit limits include:\n\n -  post editing, edit history, poll creation, and content warnings are not\n    mapped;\n -  profile updates containing `headerId`, `locked`, `bot`, or `fields` are\n    unsupported;\n -  a post cannot attach an uploaded file through the mapped `createNote`\n    mutation;\n -  URL media ingestion does not store description or sensitivity metadata;\n -  hashtag timelines and hashtag search are not mapped;\n -  lists, follow requests, filters, scheduled posts, bookmarks, and bookmark\n    folders are not mapped;\n -  notification dismissal, clearing, grouping, and unread counts are not\n    exposed as portable operations;\n -  streaming is not implemented.\n\nSome HackersPub APIs can upload an image, but ActivityPlug reports\n`media.upload` as unsupported because the mapped post-creation API cannot attach\nthat upload. This prevents an application from treating a partial workflow as\na complete portable capability.\n\nUnsupported calls fail with `ActivityPlugError` code\n`UNSUPPORTED_OPERATION`. Search also rejects pagination cursors because the\nmapped API does not provide a reliable cursor.\n\n\nMedia\n-----\n\n`client.media.ingestUrl` asks HackersPub to fetch a remote image and returns the\nresulting normalized attachment. It requires an authenticated session. The\nadapter does not implement timeline or notification WebSockets.\n\nSee [streaming and media](../../docs/streaming-and-media.md) for the portable\nmedia contract and differences between adapters.\n\n\nPublic exports\n--------------\n\nThe package exports:\n\n -  `createHackersPubAdapter`;\n -  the pre-created `hackersPubAdapter`.\n\nUse `@activityplug/core` for the client, sessions, entity types, capability\ntypes, errors, and remote-authority types.\n\n\nRelated documentation\n---------------------\n\n -  [Adapters and capabilities](../../docs/adapters-and-capabilities.md)\n -  [Library usage](../../docs/library-usage.md)\n -  [Errors and troubleshooting](../../docs/errors-and-troubleshooting.md)\n\n\nLicense\n-------\n\nLicensed under Apache-2.0 OR MIT. See `LICENSE-APACHE` and `LICENSE-MIT`.\n","readmeFilename":""}