# @canvas-js/signer-atp

> The Bluesky/AT Protocol session signer prompts the user for an app password, and uses it to generate a new signed post on Bluesky, authenticating a new session. The posted authentication message is then immediately deleted.

Latest version **0.16.1** (published 2025-07-30) · 0 weekly downloads

## Install

```sh
npm install @canvas-js/signer-atp
pnpm add @canvas-js/signer-atp
yarn add @canvas-js/signer-atp
bun add @canvas-js/signer-atp
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.16.1 |
| Published | 2025-07-30 |
| First published | 2025-04-18 |
| Weekly downloads | 0 |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 11 |
| Unpacked size | 13.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Canvas Technologies, Inc. |
| Maintainers | joelg, raykyri, rjwebb |

## Links

- npm: https://www.npmjs.com/package/@canvas-js/signer-atp
- npm.io page: https://npm.io/package/@canvas-js/signer-atp

## Dependencies (11)

- [@ipld/car](https://npm.io/package/@ipld/car.md) ^5.4.2
- [@atproto/api](https://npm.io/package/@atproto/api.md) ^0.14.7
- [multiformats](https://npm.io/package/multiformats.md) ^13.3.7
- [@noble/hashes](https://npm.io/package/@noble/hashes.md) ^1.8.0
- [@ipld/dag-cbor](https://npm.io/package/@ipld/dag-cbor.md) ^9.2.4
- [@ipld/dag-json](https://npm.io/package/@ipld/dag-json.md) ^10.2.5
- [@libp2p/logger](https://npm.io/package/@libp2p/logger.md) ^5.1.13
- [@atproto/crypto](https://npm.io/package/@atproto/crypto.md) ^0.4.4
- [@canvas-js/utils](https://npm.io/package/@canvas-js/utils.md) 1.0.0
- [@canvas-js/interfaces](https://npm.io/package/@canvas-js/interfaces.md) 0.16.1
- [@canvas-js/signatures](https://npm.io/package/@canvas-js/signatures.md) 0.16.1

## Recent versions

- 0.16.1 (latest) — 2025-07-30
- 0.16.0-next.9 (next) — 2025-07-13
- 0.16.0 — 2025-07-08
- 0.16.0-next.8 — 2025-06-26
- 0.16.0-next.7 — 2025-06-25
- 0.16.0-next.6 — 2025-06-25
- 0.16.0-next.5 — 2025-06-18
- 0.16.0-next.4 — 2025-06-18
- 0.16.0-next.3 — 2025-06-13
- 0.16.0-next.2 — 2025-06-13
- 0.16.0-next.1 — 2025-06-13
- 0.16.0-next.0 — 2025-06-13
- 0.15.2-next.0 — 2025-06-11
- 0.15.1 — 2025-06-05
- 0.15.0 — 2025-05-22
- … 16 more at https://npm.io/package/@canvas-js/signer-atp/versions

## README

# @canvas-js/signer-atp

The Bluesky/AT Protocol session signer prompts the user for an app password, and uses it to generate a new signed post on Bluesky, authenticating a new session. The posted authentication message is then immediately deleted.

It also handles verification of messages matching this authentication method.

## Table of Contents

- [Installation](#installation)
- [API](#api)

## Installation

```
npm i @canvas-js/signer-atp
```

## API

```ts
import type { Action, Message, Session, SessionSigner, Signature } from "@canvas-js/interfaces"
import { Operation } from "./operation.js"

export type ATPSessionData = {
  verificationMethod: string
  plcOperationLog: Operation[]
  recordArchive: Uint8Array
  recordURI: string
}

export interface ATPSignerOptions {
  login?: () => Promise<{
    identifier: string
    password: string
  }>
}

export declare class ATPSigner implements SessionSigner<ATPSessionData> {
  constructor(options?: ATPSignerOptions)

  static createAuthenticationMessage(topic: string, publicKey: string, address: string): string

  match: (address: string) => boolean
  verifySession(topic: string, session: Session<ATPSessionData>): Promise<void>
  getSession(
    topic: string,
    options?: {
      chain?: string
      timestamp?: number
      fromCache?: boolean
    },
  ): Promise<Session<ATPSessionData>>
  sign(message: Message<Action | Session>): Signature
  clear(topic: string): void
}
```

---
_Source: https://npm.io/package/@canvas-js/signer-atp · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
