New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@owf/token-status-list

Package Overview
Dependencies
Maintainers
3
Versions
187
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@owf/token-status-list

Implementation of [Token Status List (draft-ietf-oauth-status-list)](https://datatracker.ietf.org/doc/draft-ietf-oauth-status-list/) with core bitstring handling, JWT transport, and CWT/CBOR transport — all in one package.

Source
npmnpm
Version
0.3.2
Version published
Weekly downloads
15K
-18.97%
Maintainers
3
Weekly downloads
 
Created
Source

@owf/token-status-list

Implementation of Token Status List (draft-ietf-oauth-status-list) with core bitstring handling, JWT transport, and CWT/CBOR transport — all in one package.

Features

  • Core StatusList: Variable bit-width (1/2/4/8-bit) status entries with deflate compression
  • JWT transport: Create and decode Status List Tokens in JWT format
  • CWT transport: Create and decode Status List Tokens in CWT/CBOR format
  • Referenced Token support: Extract status claims from both JWT and CWT referenced tokens
  • COSE algorithm constants: Standard IANA COSE algorithm identifiers

Installation

npm install @owf/token-status-list

Usage

Core — create and query a status list

import { StatusList, StatusTypes } from '@owf/token-status-list'

// Create a list of 100 000 entries at 1 bit each
const list = new StatusList(new Array(100_000).fill(0), 1)

// Mark some entries
list.setStatus(42, StatusTypes.INVALID)
list.setStatus(99, StatusTypes.INVALID)

// Query a status
list.getStatus(42) // 1 (INVALID)
list.getStatus(0)  // 0 (VALID)

// Compress / decompress for transport
const compressed = list.compressStatusListToBytes()
const restored = StatusList.decompressStatusListFromBytes(compressed, 1)

JWT transport — issue and read a Status List Token

import { StatusList, createHeaderAndPayload, getListFromStatusListJWT } from '@owf/token-status-list'

const list = new StatusList(new Array(100_000).fill(0), 1)
list.setStatus(42, 1)

// Build header + payload (sign with your own JOSE library)
const { header, payload } = createHeaderAndPayload(
  list,
  { iss: 'https://issuer.example', sub: 'https://issuer.example/statuslists/1', iat: Math.floor(Date.now() / 1000) },
  { alg: 'ES256', typ: '' },
)

// Later — decode the list back from a JWT string
const decoded = getListFromStatusListJWT(jwt)
decoded.getStatus(42) // 1

JWT transport — read a referenced token's status entry

import { getStatusListFromJWT } from '@owf/token-status-list'

const entry = getStatusListFromJWT(referencedTokenJWT)
// entry.idx  — index into the status list
// entry.uri  — URI of the Status List Token

CWT transport — issue and read a Status List Token

import {
  StatusList,
  COSEAlgorithms,
  createStatusListCWTPayload,
  createStatusListCWTHeader,
  encodeCWTPayload,
  decodeCWTPayload,
} from '@owf/token-status-list'

const list = new StatusList(new Array(100_000).fill(0), 1)
list.setStatus(42, 1)

// Build CWT claims and header (sign with your own COSE library)
const payload = createStatusListCWTPayload(list, 'https://issuer.example/statuslists/1', Math.floor(Date.now() / 1000))
const header = createStatusListCWTHeader(COSEAlgorithms.ES256, 'key-id-1')

// Encode to CBOR
const cborPayload = encodeCWTPayload(list, 'https://issuer.example/statuslists/1', Math.floor(Date.now() / 1000))

// Decode
const { subject, issuedAt, statusList } = decodeCWTPayload(cborPayload)
statusList.getStatus(42) // 1

CWT transport — referenced token status claim

import { createCWTStatusClaim, encodeCWTStatusClaim, decodeCWTStatusClaim } from '@owf/token-status-list'

// Create
const claim = createCWTStatusClaim(42, 'https://issuer.example/statuslists/1')

// Encode/decode via CBOR
const encoded = encodeCWTStatusClaim(42, 'https://issuer.example/statuslists/1')
const decoded = decodeCWTStatusClaim(encoded)
// decoded.idx === 42, decoded.uri === '...'

API

Core

ExportDescription
StatusListMain class — construct, get/set status, compress/decompress
SLExceptionError class thrown by status-list operations
StatusTypesConstants: VALID, INVALID, SUSPENDED, etc.
MediaTypesMIME types for JWT and CWT status list tokens
BitsPerStatusType: 1 | 2 | 4 | 8
StatusListEntryType: { idx: number; uri: string }

JWT Transport

ExportDescription
createHeaderAndPayloadBuild JWT header + payload from a StatusList
getListFromStatusListJWTDecode a StatusList from a JWT string
getStatusListFromJWTExtract StatusListEntry from a referenced token JWT
JWT_STATUS_LIST_TYPE"statuslist+jwt"
JWTClaimNamesClaim name constants

CWT Transport

ExportDescription
createStatusListCWTPayloadBuild CWT claims from a StatusList
createStatusListCWTHeaderBuild COSE protected header
encodeCWTPayload / decodeCWTPayloadCBOR encode/decode full payload
encodeStatusListToCBOR / decodeStatusListFromCBORCBOR encode/decode the status list only
createCWTStatusClaimBuild a referenced-token status claim object
encodeCWTStatusClaim / decodeCWTStatusClaimCBOR encode/decode a status claim
getListFromStatusListCWTExtract StatusList from CWT payload bytes
getStatusListFromCWTExtract StatusListEntry from CWT payload bytes
COSEAlgorithmsIANA COSE algorithm identifiers (ES256, ES384, EdDSA, …)
CWT_STATUS_LIST_TYPE"application/statuslist+cwt"
CWTClaimKeys / CWTStatusListKeys / CWTStatusListInfoKeys / COSEHeaderKeysNumeric/string key constants

FAQs

Package last updated on 14 Jul 2026

Related posts