@adatechnology/notification-client

中文文档
0.2.2发布于 2026/10/29MITTypeScriptESM + CJS近 30 天下载 3714

Isomorphic notification client — typed HTTP, device registration and SSE. Runs in React Native, web, Node and Bun.

原始使用文档
文档目录6 节
  1. Instalação
  2. Uso
  3. Tempo real sem EventSource
  4. Registro de device
  5. Restaurar modelo padrão
  6. Licença

@adatechnology/notification-client

Cliente isomórfico das rotas de notificação: HTTP tipado, registro de device e stream de tempo real. Roda em React Native, web, Node e Bun com o mesmo código.

Sem dependência de framework — o notification-ui é construído sobre ele, mas não é obrigatório.

Instalação

bun add @adatechnology/notification-client

Uso

import { createNotificationClient } from '@adatechnology/notification-client'

const client = createNotificationClient({
  baseUrl: 'https://api.exemplo.com/v1',
  getAuthHeaders: async () => ({ authorization: `Bearer ${await session.accessToken()}` }),
})

const page = await client.listNotifications({ cursor })
const unread = await client.countUnread()
await client.markAsRead(notificationId)

getAuthHeaders é função, não valor: token de vida curta é renovado entre uma chamada e outra, e capturar o header no boot deixaria o cliente autenticando com credencial vencida depois de 15 minutos.

Tempo real sem EventSource

const { url, headers } = await client.resolveStreamRequest()

const subscription = subscribeToNotificationStream({
  url,
  headers,
  onEvent: () => queryClient.invalidateQueries(),
})

resolveStreamRequest existe para o assinante reaproveitar a base e os headers já resolvidos, em vez de o chamador remontar a URL e o token por fora e os dois saírem de sincronia.

A EventSource da plataforma não é usada, de propósito. Ela não aceita cabeçalho — o token teria que ir na query string, onde vaza para log de servidor, histórico e referer (security.md §8). E o React Native não a tem nativamente. A implementação usa fetch + ReadableStream, que resolve os dois problemas de uma vez e funciona igual nos quatro ambientes.

Reconexão com backoff exponencial e retomada por Last-Event-ID estão incluídas.

Registro de device

import { createDeviceRegistration } from '@adatechnology/notification-client'

Registra o token de push e remove no logout — device que continua registrado depois da saída manda notificação da conta antiga para o aparelho.

Restaurar modelo padrão

restoreDefault(id) (no cliente HTTP) → POST /notification-templates/:id/restore-default; devolve o NotificationTemplate (a versão nova). 400 se o id não é do modelo padrão, 409 se recusada.

Licença

MIT © Ada Technology

版本与发布记录

@adatechnology/notification-client 共发布 10 个版本,首次发布于 2026/08/04;过去 12 个月发布了 10 个版本。

版本发布日期距今
0.2.2latest2026/10/299 天前
0.2.12026/10/1919 天前
0.2.02026/10/1919 天前
0.1.02026/09/022 个月前
0.1.0-rc.6rc2026/08/252 个月前
0.1.0-rc.52026/08/252 个月前

关于 @adatechnology/notification-client 的常见问题

@adatechnology/notification-client 是什么?

Isomorphic notification client — typed HTTP, device registration and SSE. Runs in React Native, web, Node and Bun.

如何安装 @adatechnology/notification-client?

在项目目录运行 npm install @adatechnology/notification-client,或使用 pnpm add / yarn add / bun add。

@adatechnology/notification-client 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@adatechnology/notification-client 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@adatechnology/notification-client 可以商用吗?

@adatechnology/notification-client 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@adatechnology/notification-client 的下载量有多少?

根据 npm 官方下载统计,@adatechnology/notification-client 在 2026/10/05 – 2026/11/03 这 30 天内被下载 3,714 次,日均约 124 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@adatechnology/notification-client 还在维护吗?

最新版本 0.2.2 发布于 2026/10/29(9 天前);至今共发布 10 个版本,其中过去 12 个月发布了 10 个;首次发布于 2026/08/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。