UNPKG

5.83 kBSource Map (JSON)View Raw
1{"version":3,"file":"app-error.js","sourceRoot":"","sources":["../src/lib/app-error.ts"],"names":[],"mappings":";;;AAAA,uCAA0C;AAK1C,MAAa,QAAS,SAAQ,KAAK;IAIjC,YAAY,YAA0B,EAAE,KAA6B;QACnE,KAAK,EAAE,CAAC;QAER,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC;QAE9C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QAChE,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;QAE9B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;CACF;AAhBD,4BAgBC;AAEY,QAAA,mBAAmB,GAC9B,2FAA2F,CAAC;AAmD9F,SAAgB,eAAe,CAAC,OAAqB;IACnD,QAAQ,OAAO,CAAC,IAAI,EAAE;QACpB,KAAK,WAAW;YACd,OAAO,qBAAqB,CAAC;QAE/B,KAAK,aAAa;YAChB,OAAO;MACP,2BAAmB,EAAE,CAAC;QAExB,KAAK,oBAAoB,CAAC,CAAC;YACzB,OAAO,6CAA6C,OAAO,CAAC,QAAQ;;MAEpE,2BAAmB,EAAE,CAAC;SACvB;QAED,KAAK,eAAe,CAAC,CAAC;YACpB,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;YAE9C,MAAM,WAAW,GAAG,uBAAa,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAEhE,OAAO,iBAAiB,aAAa,IAAI,UAAU,WAAW,WAAW,IAAI,CAAC;SAC/E;QAED,KAAK,oBAAoB,CAAC,CAAC;YACzB,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;YAE3C,OAAO,4CAA4C,aAAa,kCAAkC,OAAO;iDAC9D,CAAC;SAC7C;QAED,KAAK,sBAAsB,CAAC,CAAC;YAC3B,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;YAG9D,OAAO,8CACL,eAAe,GAAG,CACpB,YAAY,aAAa,kCAAkC,SAAS;iDACzB,CAAC;SAC7C;QAED,KAAK,gBAAgB;YACnB,OAAO,6BAA6B,CAAC;QAEvC,KAAK,sBAAsB;YACzB,OAAO,wCAAwC,CAAC;QAElD,KAAK,oBAAoB,CAAC,CAAC;YACzB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAEpC,OAAO,+BAA+B,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;;EAEjE,QAAQ,EAAE,CAAC;SACR;QAED,KAAK,wBAAwB,CAAC,CAAC;YAC7B,OAAO,oCAAoC,CAAC;SAC7C;QAED,KAAK,mBAAmB,CAAC,CAAC;YACxB,OAAO,wCAAwC,CAAC;SACjD;QAED;YACE,OAAO,eAAe,CAAC;KAC1B;AACH,CAAC;AAjED,0CAiEC","sourcesContent":["import { formatPercent } from './helpers';\n\nimport type { ErrorCode } from './types';\n\n// If we need advanced error consider using https://github.com/joyent/node-verror\nexport class AppError extends Error {\n code?: ErrorCode;\n cause?: Error;\n\n constructor(errorContext: ErrorContext, error?: NodeJS.ErrnoException) {\n super();\n // https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, AppError.prototype);\n\n const message = getErrorMessage(errorContext);\n\n this.message = error ? `${message}: ${error.message}` : message;\n this.code = errorContext.code;\n\n Error.captureStackTrace(this, AppError);\n }\n}\n\nexport const SOURCE_MAP_INFO_URL =\n 'https://github.com/danvk/source-map-explorer/blob/master/README.md#generating-source-maps';\n\ninterface CommonErrorContext {\n code:\n | 'NoBundles'\n | 'NoSourceMap'\n | 'CannotSaveFile'\n | 'CannotCreateTempFile'\n | 'CannotOpenCoverageFile'\n | 'NoCoverageMatches'\n | 'Unknown';\n}\n\ninterface OneSourceSourceMapErrorContext {\n code: 'OneSourceSourceMap';\n filename: string;\n}\n\ninterface UnmappedBytesErrorContext {\n code: 'UnmappedBytes';\n totalBytes: number;\n unmappedBytes: number;\n}\n\ninterface InvalidMappingLineErrorContext {\n code: 'InvalidMappingLine';\n generatedLine: number;\n maxLine: number;\n}\n\ninterface InvalidMappingColumnErrorContext {\n code: 'InvalidMappingColumn';\n generatedLine: number;\n generatedColumn: number;\n maxColumn: number;\n}\n\ninterface CannotOpenTempFileErrorContext {\n code: 'CannotOpenTempFile';\n error: Buffer;\n tempFile: string;\n}\n\nexport type ErrorContext =\n | CommonErrorContext\n | OneSourceSourceMapErrorContext\n | UnmappedBytesErrorContext\n | InvalidMappingLineErrorContext\n | InvalidMappingColumnErrorContext\n | CannotOpenTempFileErrorContext;\n\nexport function getErrorMessage(context: ErrorContext): string {\n switch (context.code) {\n case 'NoBundles':\n return 'No file(s) provided';\n\n case 'NoSourceMap':\n return `Unable to find a source map.\nSee ${SOURCE_MAP_INFO_URL}`;\n\n case 'OneSourceSourceMap': {\n return `Your source map only contains one source (${context.filename}).\nThis can happen if you use browserify+uglifyjs, for example, and don't set the --in-source-map flag to uglify.\nSee ${SOURCE_MAP_INFO_URL}`;\n }\n\n case 'UnmappedBytes': {\n const { unmappedBytes, totalBytes } = context;\n\n const bytesString = formatPercent(unmappedBytes, totalBytes, 2);\n\n return `Unable to map ${unmappedBytes}/${totalBytes} bytes (${bytesString}%)`;\n }\n\n case 'InvalidMappingLine': {\n const { generatedLine, maxLine } = context;\n\n return `Your source map refers to generated line ${generatedLine}, but the source only contains ${maxLine} line(s).\nCheck that you are using the correct source map.`;\n }\n\n case 'InvalidMappingColumn': {\n const { generatedLine, generatedColumn, maxColumn } = context;\n\n // Add 1 since generatedColumn is 0-based\n return `Your source map refers to generated column ${\n generatedColumn + 1\n } on line ${generatedLine}, but the source only contains ${maxColumn} column(s) on that line.\nCheck that you are using the correct source map.`;\n }\n\n case 'CannotSaveFile':\n return 'Unable to save HTML to file';\n\n case 'CannotCreateTempFile':\n return 'Unable to create a temporary HTML file';\n\n case 'CannotOpenTempFile': {\n const { error, tempFile } = context;\n\n return `Unable to open web browser. ${error.toString().trim()}\nEither run with --html, --json, --tsv, --file, or view HTML for the visualization at:\n${tempFile}`;\n }\n\n case 'CannotOpenCoverageFile': {\n return 'Unable to open/parse coverage file';\n }\n\n case 'NoCoverageMatches': {\n return 'No matched bundles found for coverages';\n }\n\n default:\n return 'Unknown error';\n }\n}\n"]}
\No newline at end of file