Table of Contents

GUID

The Guid class provides robust GUID (Globally Unique Identifier) creation and manipulation utilities for JavaScript/TypeScript applications.

Creating GUIDs

New GUID

import { Guid } from '@cratis/fundamentals';

// Create a new random GUID
const newId = Guid.create();
console.log(newId.toString()); // "550e8400-e29b-41d4-a716-446655440000"

From String

import { Guid } from '@cratis/fundamentals';

// Create from existing string
const existingId = new Guid('550e8400-e29b-41d4-a716-446655440000');

From Uint8Array

import { Guid } from '@cratis/fundamentals';

// Create from byte array
const bytes = new Uint8Array([0x55, 0x0e, 0x84, 0x00, 0xe2, 0x9b, 0x41, 0xd4, 0xa7, 0x16, 0x44, 0x66, 0x55, 0x44, 0x00, 0x00]);
const guidFromBytes = new Guid(bytes);

Empty GUID

import { Guid } from '@cratis/fundamentals';

// Get empty GUID (all zeros)
const emptyGuid = Guid.empty;
console.log(emptyGuid.toString()); // "00000000-0000-0000-0000-000000000000"

String Conversion

import { Guid } from '@cratis/fundamentals';

const guid = Guid.create();

// Convert to string (default format)
const str = guid.toString();

// Check if string is valid GUID format
const isValid = Guid.isGuid('550e8400-e29b-41d4-a716-446655440000'); // true

Equality

The Guid class implements proper equality comparison:

import { Guid } from '@cratis/fundamentals';

const guid1 = new Guid('550e8400-e29b-41d4-a716-446655440000');
const guid2 = new Guid('550e8400-e29b-41d4-a716-446655440000');
const guid3 = Guid.create();

console.log(guid1.equals(guid2)); // true
console.log(guid1.equals(guid3)); // false

Use Cases

GUIDs are commonly used for:

  • Entity Identifiers: Unique identifiers for domain objects
  • Event IDs: Tracking events in event-driven architectures
  • Session Tokens: Temporary unique identifiers
  • API Keys: Unique identifiers for external services

The GUID implementation ensures compatibility with .NET GUID formats, making it ideal for full-stack applications using both the frontend and backend Fundamentals packages.