12345678910111213141516171819202122232425262728293031323334353637383940 |
- 'use strict'
- // As Errlop uses Editions, we should use a specific Errlop edition
- // As otherwise, the circular reference may fail on some machines
- // https://github.com/bevry/errlop/issues/2
- import Errlop from 'errlop'
- interface ErrtionOptions {
- message: string
- code: string | number
- level?: string | number
- }
- interface Errtion extends Errlop, ErrtionOptions {}
- /**
- * Allow code and level inputs on Errlop.
- * We do this instead of a class extension, as class extensions do not interop well on node 0.8, which is our target.
- */
- export function errtion(
- this: void,
- opts: ErrtionOptions,
- parent?: Errlop | Error
- ): Errtion {
- const { message, code, level } = opts
- const error = new Errlop(message, parent) as Errtion
- if (code) error.code = code
- if (level) error.level = level
- return error
- }
- /** Converts anything to a string, by returning strings and serialising objects. */
- export function stringify(value: any): string {
- return typeof value === 'string' ? value : JSON.stringify(value)
- }
- /** Converts a version range like `4 || 6` to `>=4` */
- export function simplifyRange(range: string): string {
- return range.replace(/^([.\-\w]+)(\s.+)?$/, '>=$1')
- }
|