JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1416
  • Score
    100M100P100Q107267F
  • License MIT

Common type definitions for @guanghechen packages

Package Exports

  • @guanghechen/types

Readme

@guanghechen/types


Common type definitions for @guanghechen packages. Provides shared interfaces and types for disposable resources, error handling, path resolution, and pub-sub patterns.

Install

  • npm

    npm install --save-dev @guanghechen/types
  • yarn

    yarn add --dev @guanghechen/types

Usage

Disposable Types

import type { IDisposable, IBatchDisposable } from '@guanghechen/types'

// IDisposable - Resource cleanup interface
class Connection implements IDisposable {
  disposed = false
  dispose(): void {
    this.disposed = true
    // cleanup logic
  }
}

// IBatchDisposable - Manage multiple disposables
class ResourceManager implements IBatchDisposable {
  disposed = false
  registerDisposable<T extends IDisposable>(disposable: T): void {
    // register for batch disposal
  }
  dispose(): void {
    // dispose all registered resources
  }
}

Error Types

import type { ISoraError, ISoraErrorCollector } from '@guanghechen/types'
import { ErrorLevelEnum } from '@guanghechen/types'

const error: ISoraError = {
  from: 'my-module',
  level: ErrorLevelEnum.ERROR,
  details: new Error('Something went wrong')
}

// ErrorLevelEnum: WARN = 4, ERROR = 5, FATAL = 6

Path Types

import type { IPathResolver, IWorkspacePathResolver } from '@guanghechen/types'

// IPathResolver methods:
// - basename, dirname, join, normalize, relative
// - isAbsolute, ensureAbsolute
// - isSafeRelative, ensureSafeRelative, safeRelative, safeResolve

// IWorkspacePathResolver - Workspace-scoped path operations:
// - root, pathResolver
// - isSafePath, ensureSafePath
// - relative, resolve

Resource Types

import type { IResource, ITextResource } from '@guanghechen/types'

// IResource<T> - Async resource operations
// - exists(): Promise<boolean>
// - load(): Promise<T | undefined>
// - save(data: T): Promise<void>
// - destroy(): Promise<void>

// ITextResource = IResource<string>

Subscriber Types

import type {
  ISubscriber,
  ISubscribable,
  ISubscribers,
  IUnsubscribable
} from '@guanghechen/types'

// ISubscriber<T> - Receives notifications, extends IDisposable
// ISubscribable<T> - Can be subscribed to
// IUnsubscribable - Can unsubscribe from notifications
// ISubscribers<T> - Manages multiple subscribers

Utility Types

import type { Diff, Mutable, PickPartial, PromiseOr } from '@guanghechen/types'

// Diff<T, U> - Remove properties in U from T
type OnlyInA = Diff<{ a: 1; b: 2 }, { b: 2 }> // { a: 1 }

// Mutable<T> - Remove readonly from all properties
type MutableUser = Mutable<{ readonly name: string }> // { name: string }

// PickPartial<T, K> - Make specific properties optional
type PartialName = PickPartial<{ name: string; age: number }, 'name'>
// { name?: string; age: number }

// PromiseOr<T> - Value or Promise of value
type MaybeAsync = PromiseOr<string> // string | Promise<string>

Reference