1.1.2Updated a month ago
declare namespace Viapak {
  interface Package extends DB.Entity {
    namespace: string
    name: string
    tags: string[]
    versions: Package.VersionMap
    events: Package.Event[]
    deprecated: boolean
  }

  namespace Package {
    type Class = import("$classes/package.ts").Package;
    type NamespacedString = `@${string}/${string}`;
    type Clean = Omit<Package, 'events'> & {
      events: Event.Clean[]
      scripts: string[]
    }

    interface State {
      tab: import('./package_tabs.enum.ts').PackageTab
      pathname: string
      _package: Package.Class
      users: User.Class[]
      tokens: Token.Class[]
      token_users: Record<Token['uuid'], User.Class | null>
      error?: string
    }

    interface VersionMap {
      current: string | null
      latest: string | null
      all: string[]
    }

    interface Event {
      token: string
      event: string
      timestamp: number
      version: string
    }

    namespace Event {
      type Clean = Omit<Event, 'token'> & { user?: string }
      type ToClean = Omit<Event, 'token'> & { token?: string, user?: string }
    }
  }
}