It is a monorepository containing packages relevant for the implementation of the OPAQUE asymmetric PAKE (aPAKE) protocol in JavaScript/TypeScript.
This monorepo aims to create an abstraction layer on top of existing OPAQUE libraries, server frameworks, and front-end web frameworks/libraries.
Each package has TypeScript support and targets ECMAScript 2015 (ES6) as its minimum version. Rollup was used to build each package.
The UML diagram below shows the abstraction and relationship among packages. The bridge structural design pattern was used. Specific implementations of OPAQUE can be provided as pluggable and interchangeable drivers that OPAQUE clients and servers could use.
@teamjayj/opaque-core
is the common package that provides an API needed by drivers, clients, and servers of opaque-starter
.
opaque-starter
has drivers for the existing JavaScript OPAQUE authentication libraries.
Package | Implementation |
---|---|
@teamjayj/opaque-cloudflare-driver |
@cloudflare/opaque-ts |
@teamjayj/opaque-nthparty-driver (Draft) |
@nthparty/opaque |
opaque-starter
has available implementations of OPAQUE authentication in popular JavaScript server frameworks.
Package | Server Framework |
---|---|
@teamjayj/opaque-express-server |
express |
opaque-starter
has available implementations of OPAQUE authentication in popular JavaScript client or browser frameworks.
Package | Server Framework |
---|---|
@teamjayj/opaque-axios-client |
axios |
This turborepo uses Yarn v1 as a package manager. It includes the following tools:
-
TypeScript for static type checking
tsconfig
-tsconfig.json
s used throughout the monorepo
-
ESLint for code linting
eslint-config-custom
-eslint
configurations (includeseslint-config-next
andeslint-config-prettier
)
-
Prettier for code formatting
-
Vitest for unit testing
This repository is used in the npx create-turbo
command, and selected when choosing which package manager you wish to use with your monorepo (Yarn).
To build all packages, run the following command:
cd opaque-starter
yarn build
To run the tests of all packages, run the following command:
cd opaque-starter
yarn test