All files / src/worker errors.ts

81.81% Statements 9/11
100% Branches 4/4
71.42% Functions 5/7
81.81% Lines 9/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79                        25x     25x   25x 7x     25x                             1x                                   6x                 6x                 6x            
import { TypedEnv } from './types'
 
export type FlowErrorParams = {
  message: string
  httpStatus?: number
  isPrivate?: boolean
}
 
export class FlowError extends Error {
  readonly httpStatus: number
 
  // When set to true, the message will not be returned in the response.
  readonly isPrivate: boolean = true
 
  constructor(params: FlowErrorParams) {
    super(params.message)
 
    if (typeof params.isPrivate === 'boolean') {
      this.isPrivate = params.isPrivate
    }
 
    this.httpStatus = params.httpStatus ?? 500
  }
}
 
export class MissingVariableError extends FlowError {
  constructor(variable: keyof TypedEnv) {
    super({
      message: `${variable} is not set.`,
      isPrivate: false,
    })
  }
}
 
export class InvalidVariableError extends FlowError {
  constructor(variable: keyof TypedEnv, message: string) {
    super({
      message: `${variable} is invalid: ${message}`,
      isPrivate: false,
    })
  }
}
 
export class AssetsNotAvailableError extends FlowError {
  constructor() {
    super({
      message: 'env.ASSETS are not available. This is most likely caused by an invalid wrangler.jsonc configuration.',
      isPrivate: false,
    })
  }
}
 
export class SignalsNotAvailableError extends FlowError {
  constructor() {
    super({
      message: 'Signals were not found in this protected API call.',
      httpStatus: 403,
    })
  }
}
 
export class HeaderMissingError extends FlowError {
  constructor(header: string) {
    super({
      message: `${header} header is missing.`,
      httpStatus: 403,
    })
  }
}
 
export class IdentificationRequestFailedError extends FlowError {
  constructor(message: string, status: number) {
    super({
      message: `Ingress request failed with ${status} status: ${message}`,
      httpStatus: 403,
    })
  }
}