The main use case for the generated source maps is to give
errors a meaningful context in terms of the original source
that the user wrote.
Related changes that are included in this commit:
* renamed virtual folders used for jit:
* ng://<module type>/module.ngfactory.js
* ng://<module type>/<comp type>.ngfactory.js
* ng://<module type>/<comp type>.html (for inline templates)
* error logging:
* all errors that happen in templates are logged
from the place of the nearest element.
* instead of logging error messages and stacks separately,
we log the actual error. This is needed so that browsers apply
source maps to the stack correctly.
* error type and error is logged as one log entry.
Note that long-stack-trace zone has a bug that
disables source maps for stack traces,
see https://github.com/angular/zone.js/issues/661.
BREAKING CHANGE:
- DebugNode.source no more returns the source location of a node.
Closes 14013
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
* found in the LICENSE file at https://angular.io/license
|
|
*/
|
|
|
|
import {DebugContext} from './view';
|
|
|
|
export const ERROR_TYPE = 'ngType';
|
|
export const ERROR_COMPONENT_TYPE = 'ngComponentType';
|
|
export const ERROR_DEBUG_CONTEXT = 'ngDebugContext';
|
|
export const ERROR_ORIGINAL_ERROR = 'ngOriginalError';
|
|
export const ERROR_LOGGER = 'ngErrorLogger';
|
|
|
|
|
|
export function getType(error: Error): Function {
|
|
return (error as any)[ERROR_TYPE];
|
|
}
|
|
|
|
export function getDebugContext(error: Error): DebugContext {
|
|
return (error as any)[ERROR_DEBUG_CONTEXT];
|
|
}
|
|
|
|
export function getOriginalError(error: Error): Error {
|
|
return (error as any)[ERROR_ORIGINAL_ERROR];
|
|
}
|
|
|
|
export function getErrorLogger(error: Error): (console: Console, ...values: any[]) => void {
|
|
return (error as any)[ERROR_LOGGER] || defaultErrorLogger;
|
|
}
|
|
|
|
|
|
function defaultErrorLogger(console: Console, ...values: any[]) {
|
|
(<any>console.error)(...values);
|
|
} |