New:Microsoft Teams Notifications Are Now Available in Socket.Learn more →
Get Started

usrcp-adapter-kit

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

usrcp-adapter-kit

Shared encrypted-at-rest config store and helpers for USRCP capture adapters

latest
Source
npmnpm
Version
0.2.7
Version published
Weekly downloads
7
-97.24%
Maintainers
1
Weekly downloads
 
Created
Source

usrcp-adapter-kit

Shared building blocks for USRCP capture adapters.

Today this is the encrypted-at-rest config store that every USRCP capture adapter (Linear, GitHub, Gmail, Google Calendar, Slack, Telegram, Discord, iMessage) builds on. It is the single deep-importer of usrcp-core's encryption primitives — adapters depend on this kit rather than reaching into usrcp-core internals. This kit also provides the shared localhost Google OAuth flow at usrcp-adapter-kit/google-oauth (used by the gmail + google-calendar adapters).

This is internal infrastructure for the USRCP adapter ecosystem; you generally install it transitively by installing an adapter, not directly.

What it does

createAdapterConfig() takes a declarative field spec and returns a complete config store: AES-GCM secret encryption at rest (mode 0600), atomic writes, a validate-or-exit gate, legacy-plaintext auto-migration, master-key rotation re-encryption, and debounced cursor persistence.

import { createAdapterConfig } from "usrcp-adapter-kit";

interface LinearConfig {
  linear_api_key: string;
  allowlisted_team_ids: string[];
  domain: string;
  poll_interval_s: number;
  last_synced_at?: string;
}

const store = createAdapterConfig<LinearConfig>({
  adapterName: "linear",
  filename: "linear-config.json",
  fields: [
    { name: "linear_api_key", kind: "secret" },
    { name: "allowlisted_team_ids", kind: "requiredNonEmptyArray" },
    { name: "domain", kind: "required" },
    { name: "poll_interval_s", kind: "requiredNumber" },
    { name: "last_synced_at", kind: "optional" },
  ],
  cursorFields: ["last_synced_at"],
});

// store.writeConfig / loadConfig / preflightConfig /
// reencryptConfigUnderNewKey / saveCursors / flushCursors / …

Field kinds

KindMeaning
secretRequired, encrypted at rest under the USRCP global key
requiredRequired (truthy)
requiredNumberRequired, typeof === "number"
requiredNonEmptyArrayRequired, non-empty array
optionalNot validated (cursors, optional allowlists); may declare a default

License

Apache-2.0

Keywords

usrcp

FAQs

Package last updated on 11 Sep 2026

Related posts