1.0.0 • Published 1 year ago

@isephix/tokenshield v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Token Proxy

A minimal, dependency-free library for secure API token management in frontend JavaScript.

Features

  • Two independent approaches:
    1. Server Proxy: Maximum compatibility and control
    2. Service Worker: Serverless solution
  • No external dependencies
  • TypeScript support
  • Simple API

Installation

npm install tokenshield

Usage

Server Proxy

// Server-side
import { ProxyServer } from 'tokenshield';

const server = new ProxyServer();
server.listen(3000);

// Client-side
const registerToken = async (token) => {
  const response = await fetch('http://localhost:3000/token', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ token })
  });
  return response.json();
};

const getTempToken = async (id) => {
  const response = await fetch('http://localhost:3000/temp', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ id })
  });
  return response.json();
};

// Usage
const { id } = await registerToken('your-api-token');
const { token } = await getTempToken(id);

// Make API requests
fetch('https://api.example.com/data', {
  headers: { 'x-temp-token': token }
});

Service Worker

import { ServiceWorkerProxy } from 'tokenshield';

const proxy = new ServiceWorkerProxy();
await proxy.register();
await proxy.setToken('your-api-token');

// Use regular fetch - SW will intercept
const data = await fetch('https://api.example.com/data');

API Documentation

ProxyServer

  • constructor(options?: TokenProxyOptions)
  • listen(port: number = 3000): void

ServiceWorkerProxy

  • constructor(options?: { swPath?: string })
  • register(): Promise<ServiceWorkerRegistration>
  • setToken(token: string, id?: string): Promise<void>
  • fetch(url: string, options?: RequestInit): Promise<Response>

License

MIT