import { InvalidEntityIdError, InvalidFieldKeyError } from './errors.js'

// Reuse the same regex as @platform-modules/fields for cross-module consistency
const FIELD_KEY_RE = /^[a-z][a-z0-9_]*$/
const ENTITY_ID_MAX_LEN = 1024

export function assertFieldKey(key: string): void {
  if (!key || !FIELD_KEY_RE.test(key)) {
    throw new InvalidFieldKeyError(key)
  }
}

export function assertEntityType(t: string): void {
  if (!t || !FIELD_KEY_RE.test(t)) {
    throw new InvalidFieldKeyError(t) // same class, same format rules
  }
}

export function assertEntityId(id: string): void {
  if (!id || id.length > ENTITY_ID_MAX_LEN || id.includes('\0')) {
    throw new InvalidEntityIdError(id)
  }
}
