Skip to main content

@tls/enum@0.3.3
Built and signed on GitHub Actions

ENUM class and all tls 1.3 enum definitions

This package works with Deno, BrowsersIt is unknown whether this package works with Cloudflare Workers, Node.js, Bun
It is unknown whether this package works with Cloudflare Workers
It is unknown whether this package works with Node.js
This package works with Deno
It is unknown whether this package works with Bun
This package works with Browsers
JSR Score
100%
Published
3 hours ago (0.3.3)

JavaScript Enum Implementation

A robust enumeration implementation for JavaScript/TypeScript that provides Java-style enums with additional features for TLS 1.3 protocol definitions.

Features

  • Type-safe enumerations
  • Frozen constants to prevent modifications
  • Value and name lookups
  • Ordinal-based comparison
  • JSON serialization
  • Built-in TLS 1.3 protocol enumerations

Installation

deno add 'jsr:@tls/enum';

Basic Usage

import { Enum } from 'jsr:@tls/enum';

class Color extends Enum {
  static RED = new Color('RED', '#FF0000');
  static GREEN = new Color('GREEN', '#00FF00');
  static BLUE = new Color('BLUE', '#0000FF');

  static {
    this.freeze(); // Prevent further modifications
  }
}

// Usage examples
console.log(Color.RED.value);          // '#FF0000'
console.log(Color.RED.name);           // 'RED'
console.log(Color.RED.ordinal);        // 0
console.log(Color.values());           // [Color.RED, Color.GREEN, Color.BLUE]
console.log(Color.valueOf('GREEN'));    // Color.GREEN
console.log(Color.fromValue('#0000FF')); // Color.BLUE

TLS 1.3 Enumerations

SignatureScheme

import { SignatureScheme } from 'jsr:@tls/enum';

// Access signature schemes
console.log(SignatureScheme.RSA_PKCS1_SHA256.value);        // 0x0401
console.log(SignatureScheme.ED25519.name);                  // 'ED25519'
console.log(SignatureScheme.FromValue(0x0403));      // 'ECDSA_SECP256R1_SHA256'
console.log(SignatureScheme.Values());                // [0x0401, 0x0501, ...]

ExtensionType

import { ExtensionType } from 'jsr:@tls/enum';

// Access extension types
console.log(ExtensionType.SERVER_NAME.value);              // 0
console.log(ExtensionType.SUPPORTED_VERSIONS.name);        // 'SUPPORTED_VERSIONS'
console.log(ExtensionType.fromValue(43));                  // ExtensionType.SUPPORTED_VERSIONS

API Reference

Enum Base Class

Static Methods

  • size: Get the number of enum constants
  • values(): Get all enum constants
  • names(): Get all enum constant names
  • valueOf(name): Get enum constant by name
  • fromValue(value): Get enum constant by value
  • freeze(): Prevent further modifications
  • isFrozen(): Check if enum is frozen

Instance Properties

  • name: The name of the enum constant
  • value: The value associated with the enum constant
  • ordinal: The position of the constant in the enum

Instance Methods

  • toString(): Get string representation
  • toJSON(): Get JSON representation
  • equals(other): Compare with another enum constant
  • compareTo(other): Compare ordinal positions
  • [Symbol.toPrimitive](hint): Convert to primitive type

Examples

Creating Custom Enums

class HttpStatus extends Enum {
  static OK = new HttpStatus('OK', 200);
  static NOT_FOUND = new HttpStatus('NOT_FOUND', 404);
  static INTERNAL_ERROR = new HttpStatus('INTERNAL_ERROR', 500);

  static {
    this.freeze();
  }
}

// Usage
if (response.status === HttpStatus.OK.value) {
  console.log('Request successful');
}

Contributing

Contributions to improve the library are welcome. Please open an issue or pull request on the GitHub repository.

Donation

License

This project is licensed under the MIT License - see the LICENSE file for details.

Built and signed on
GitHub Actions
View transparency log

Add Package

deno add jsr:@tls/enum

Import symbol

import * as enum from "@tls/enum";

---- OR ----

Import directly with a jsr specifier

import * as enum from "jsr:@tls/enum";

Add Package

npx jsr add @tls/enum

Import symbol

import * as enum from "@tls/enum";

Add Package

yarn dlx jsr add @tls/enum

Import symbol

import * as enum from "@tls/enum";

Add Package

pnpm dlx jsr add @tls/enum

Import symbol

import * as enum from "@tls/enum";

Add Package

bunx jsr add @tls/enum

Import symbol

import * as enum from "@tls/enum";