UNPKG

@uirouter/core

Version:

UI-Router Core: Framework agnostic, State-based routing for JavaScript Single Page Apps

238 lines 9.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.trace = exports.Trace = exports.Category = void 0; /** * # Transition tracing (debug) * * Enable transition tracing to print transition information to the console, * in order to help debug your application. * Tracing logs detailed information about each Transition to your console. * * To enable tracing, import the [[Trace]] singleton and enable one or more categories. * * ### ES6 * ```js * import {trace} from "@uirouter/core"; * trace.enable(1, 5); // TRANSITION and VIEWCONFIG * ``` * * ### CJS * ```js * let trace = require("@uirouter/core").trace; * trace.enable("TRANSITION", "VIEWCONFIG"); * ``` * * ### Globals * ```js * let trace = window["@uirouter/core"].trace; * trace.enable(); // Trace everything (very verbose) * ``` * * ### Angular 1: * ```js * app.run($trace => $trace.enable()); * ``` * * @packageDocumentation */ var hof_1 = require("../common/hof"); var predicates_1 = require("../common/predicates"); var strings_1 = require("./strings"); var safeConsole_1 = require("./safeConsole"); function uiViewString(uiview) { if (!uiview) return 'ui-view (defunct)'; var state = uiview.creationContext ? uiview.creationContext.name || '(root)' : '(none)'; return "[ui-view#".concat(uiview.id, " ").concat(uiview.$type, ":").concat(uiview.fqn, " (").concat(uiview.name, "@").concat(state, ")]"); } var viewConfigString = function (viewConfig) { var view = viewConfig.viewDecl; var state = view.$context.name || '(root)'; return "[View#".concat(viewConfig.$id, " from '").concat(state, "' state]: target ui-view: '").concat(view.$uiViewName, "@").concat(view.$uiViewContextAnchor, "'"); }; function normalizedCat(input) { return (0, predicates_1.isNumber)(input) ? Category[input] : Category[Category[input]]; } /** * Trace categories Enum * * Enable or disable a category using [[Trace.enable]] or [[Trace.disable]] * * `trace.enable(Category.TRANSITION)` * * These can also be provided using a matching string, or position ordinal * * `trace.enable("TRANSITION")` * * `trace.enable(1)` */ var Category; (function (Category) { Category[Category["RESOLVE"] = 0] = "RESOLVE"; Category[Category["TRANSITION"] = 1] = "TRANSITION"; Category[Category["HOOK"] = 2] = "HOOK"; Category[Category["UIVIEW"] = 3] = "UIVIEW"; Category[Category["VIEWCONFIG"] = 4] = "VIEWCONFIG"; })(Category || (exports.Category = Category = {})); var _tid = (0, hof_1.parse)('$id'); var _rid = (0, hof_1.parse)('router.$id'); var transLbl = function (trans) { return "Transition #".concat(_tid(trans), "-").concat(_rid(trans)); }; /** * Prints UI-Router Transition trace information to the console. */ var Trace = /** @class */ (function () { /** @internal */ function Trace() { /** @internal */ this._enabled = {}; this.approximateDigests = 0; } /** @internal */ Trace.prototype._set = function (enabled, categories) { var _this = this; if (!categories.length) { categories = Object.keys(Category) .map(function (k) { return parseInt(k, 10); }) .filter(function (k) { return !isNaN(k); }) .map(function (key) { return Category[key]; }); } categories.map(normalizedCat).forEach(function (category) { return (_this._enabled[category] = enabled); }); }; Trace.prototype.enable = function () { var categories = []; for (var _i = 0; _i < arguments.length; _i++) { categories[_i] = arguments[_i]; } this._set(true, categories); }; Trace.prototype.disable = function () { var categories = []; for (var _i = 0; _i < arguments.length; _i++) { categories[_i] = arguments[_i]; } this._set(false, categories); }; /** * Retrieves the enabled stateus of a [[Category]] * * ```js * trace.enabled("VIEWCONFIG"); // true or false * ``` * * @returns boolean true if the category is enabled */ Trace.prototype.enabled = function (category) { return !!this._enabled[normalizedCat(category)]; }; /** @internal called by ui-router code */ Trace.prototype.traceTransitionStart = function (trans) { if (!this.enabled(Category.TRANSITION)) return; safeConsole_1.safeConsole.log("".concat(transLbl(trans), ": Started -> ").concat((0, strings_1.stringify)(trans))); }; /** @internal called by ui-router code */ Trace.prototype.traceTransitionIgnored = function (trans) { if (!this.enabled(Category.TRANSITION)) return; safeConsole_1.safeConsole.log("".concat(transLbl(trans), ": Ignored <> ").concat((0, strings_1.stringify)(trans))); }; /** @internal called by ui-router code */ Trace.prototype.traceHookInvocation = function (step, trans, options) { if (!this.enabled(Category.HOOK)) return; var event = (0, hof_1.parse)('traceData.hookType')(options) || 'internal', context = (0, hof_1.parse)('traceData.context.state.name')(options) || (0, hof_1.parse)('traceData.context')(options) || 'unknown', name = (0, strings_1.functionToString)(step.registeredHook.callback); safeConsole_1.safeConsole.log("".concat(transLbl(trans), ": Hook -> ").concat(event, " context: ").concat(context, ", ").concat((0, strings_1.maxLength)(200, name))); }; /** @internal called by ui-router code */ Trace.prototype.traceHookResult = function (hookResult, trans, transitionOptions) { if (!this.enabled(Category.HOOK)) return; safeConsole_1.safeConsole.log("".concat(transLbl(trans), ": <- Hook returned: ").concat((0, strings_1.maxLength)(200, (0, strings_1.stringify)(hookResult)))); }; /** @internal called by ui-router code */ Trace.prototype.traceResolvePath = function (path, when, trans) { if (!this.enabled(Category.RESOLVE)) return; safeConsole_1.safeConsole.log("".concat(transLbl(trans), ": Resolving ").concat(path, " (").concat(when, ")")); }; /** @internal called by ui-router code */ Trace.prototype.traceResolvableResolved = function (resolvable, trans) { if (!this.enabled(Category.RESOLVE)) return; safeConsole_1.safeConsole.log("".concat(transLbl(trans), ": <- Resolved ").concat(resolvable, " to: ").concat((0, strings_1.maxLength)(200, (0, strings_1.stringify)(resolvable.data)))); }; /** @internal called by ui-router code */ Trace.prototype.traceError = function (reason, trans) { if (!this.enabled(Category.TRANSITION)) return; safeConsole_1.safeConsole.log("".concat(transLbl(trans), ": <- Rejected ").concat((0, strings_1.stringify)(trans), ", reason: ").concat(reason)); }; /** @internal called by ui-router code */ Trace.prototype.traceSuccess = function (finalState, trans) { if (!this.enabled(Category.TRANSITION)) return; safeConsole_1.safeConsole.log("".concat(transLbl(trans), ": <- Success ").concat((0, strings_1.stringify)(trans), ", final state: ").concat(finalState.name)); }; /** @internal called by ui-router code */ Trace.prototype.traceUIViewEvent = function (event, viewData, extra) { if (extra === void 0) { extra = ''; } if (!this.enabled(Category.UIVIEW)) return; safeConsole_1.safeConsole.log("ui-view: ".concat((0, strings_1.padString)(30, event), " ").concat(uiViewString(viewData)).concat(extra)); }; /** @internal called by ui-router code */ Trace.prototype.traceUIViewConfigUpdated = function (viewData, context) { if (!this.enabled(Category.UIVIEW)) return; this.traceUIViewEvent('Updating', viewData, " with ViewConfig from context='".concat(context, "'")); }; /** @internal called by ui-router code */ Trace.prototype.traceUIViewFill = function (viewData, html) { if (!this.enabled(Category.UIVIEW)) return; this.traceUIViewEvent('Fill', viewData, " with: ".concat((0, strings_1.maxLength)(200, html))); }; /** @internal called by ui-router code */ Trace.prototype.traceViewSync = function (pairs) { if (!this.enabled(Category.VIEWCONFIG)) return; var uivheader = 'uiview component fqn'; var cfgheader = 'view config state (view name)'; var mapping = pairs .map(function (_a) { var _b; var uiView = _a.uiView, viewConfig = _a.viewConfig; var uiv = uiView && uiView.fqn; var cfg = viewConfig && "".concat(viewConfig.viewDecl.$context.name, ": (").concat(viewConfig.viewDecl.$name, ")"); return _b = {}, _b[uivheader] = uiv, _b[cfgheader] = cfg, _b; }) .sort(function (a, b) { return (a[uivheader] || '').localeCompare(b[uivheader] || ''); }); safeConsole_1.safeConsole.table(mapping); }; /** @internal called by ui-router code */ Trace.prototype.traceViewServiceEvent = function (event, viewConfig) { if (!this.enabled(Category.VIEWCONFIG)) return; safeConsole_1.safeConsole.log("VIEWCONFIG: ".concat(event, " ").concat(viewConfigString(viewConfig))); }; /** @internal called by ui-router code */ Trace.prototype.traceViewServiceUIViewEvent = function (event, viewData) { if (!this.enabled(Category.VIEWCONFIG)) return; safeConsole_1.safeConsole.log("VIEWCONFIG: ".concat(event, " ").concat(uiViewString(viewData))); }; return Trace; }()); exports.Trace = Trace; /** * The [[Trace]] singleton * * #### Example: * ```js * import {trace} from "@uirouter/core"; * trace.enable(1, 5); * ``` */ var trace = new Trace(); exports.trace = trace; //# sourceMappingURL=trace.js.map