OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-booking / node_modules / bare-module / lib / errors.js

55 lines · javascript ref:
module.exports = class ModuleError extends Error {
  constructor(msg, fn = ModuleError, code = fn.name) {
    super(`${code}: ${msg}`)
    this.code = code

    if (Error.captureStackTrace) {
      Error.captureStackTrace(this, fn)
    }
  }

  get name() {
    return 'ModuleError'
  }

  static MODULE_NOT_FOUND(msg, specifier, referrer = null, candidates = []) {
    const err = new ModuleError(msg, ModuleError.MODULE_NOT_FOUND)

    err.specifier = specifier
    err.referrer = referrer
    err.candidates = candidates

    return err
  }

  static ASSET_NOT_FOUND(msg, specifier, referrer = null, candidates = []) {
    const err = new ModuleError(msg, ModuleError.ASSET_NOT_FOUND)

    err.specifier = specifier
    err.referrer = referrer
    err.candidates = candidates

    return err
  }

  static UNKNOWN_PROTOCOL(msg) {
    return new ModuleError(msg, ModuleError.UNKNOWN_PROTOCOL)
  }

  static INVALID_BUNDLE_EXTENSION(msg) {
    return new ModuleError(msg, ModuleError.INVALID_BUNDLE_EXTENSION)
  }

  static INVALID_URL_PATH(msg) {
    return new ModuleError(msg, ModuleError.INVALID_URL_PATH)
  }

  static INVALID_IMPORTS_MAP(msg) {
    return new ModuleError(msg, ModuleError.INVALID_IMPORTS_MAP)
  }

  static TYPE_INCOMPATIBLE(msg) {
    return new ModuleError(msg, ModuleError.TYPE_INCOMPATIBLE)
  }
}