https://github.com/codewithveek/green-auth
An open-source web3 authentication
https://github.com/codewithveek/green-auth
Last synced: 6 days ago
JSON representation
An open-source web3 authentication
- Host: GitHub
- URL: https://github.com/codewithveek/green-auth
- Owner: codewithveek
- License: mit
- Created: 2024-06-18T16:14:57.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-25T15:14:11.000Z (almost 2 years ago)
- Last Synced: 2026-02-04T14:37:16.468Z (4 months ago)
- Language: TypeScript
- Size: 234 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# green-auth
An open-source web3 authentication
# @green-auth/snowflake-unique-id
A TypeScript implementation of Twitter's Snowflake ID generation algorithm with additional features for URL-safe short IDs.
## Installation
```bash
npm install @green-auth/snowflake-unique-id
```
## Usage
### Basic Usage
```ts
import { SnowflakeIdGenerator } from "@green-auth/snowflake-unique-id";
const generator = new SnowflakeIdGenerator({ nodeId: 1 });
// Generate a BigInt ID
const bigIntId = generator.bigIntId();
console.log(bigIntId); // e.g., "459185200908210193"
// Generate a URL-safe short ID
const urlSafeId = generator.urlSafeId();
console.log(urlSafeId); // e.g., "aB3x_9Yz"
```
## Custom configuration
```ts
const customGenerator = new SnowflakeIdGenerator({
nodeId: 2,
epoch: 1672531200000, // Custom epoch (e.g., 2023-01-01)
nodeBits: 8,
sequenceBits: 14,
defaultShortIdLength: 10,
});
const customUrlSafeId = customGenerator.urlSafeId(12);
console.log(customUrlSafeId); // e.g., "aBcDeF123456"
```
## Types
### SnowflakeOptions
options: An object with the following properties:
- `nodeId` (required): number - Unique identifier for this generator instance (0 to 2^nodeBits - 1)
- `epoch` (optional): number - Custom epoch in milliseconds (default: 1609459200000, 2021-01-01)
- `nodeBits` (optional): number - Number of bits to use for node ID (default: 10)
- `sequenceBits` (optional): number - Number of bits to use for sequence (default: 12)
- `defaultShortIdLength` (optional): number - Default length for short IDs (default: 8)
### Methods
`bigIntId()`
Generates a unique BigInt ID.
```ts
bigIntId(): string
```
Returns: A string representation of the BigInt ID.
`urlSafeId(length?: number)`
Generates a URL-safe unique ID.
```ts
urlSafeId(length?: number): string
```
Parameters:
- `length` (optional): number - The desired length of the URL-safe ID (default: value of defaultShortIdLength option)
Returns: A URL-safe string ID.