@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
53 lines • 6.7 kB
JavaScript
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import * as i0 from "@angular/core";
import * as i1 from "@angular/router";
/**
*
* @smeDoc {@label Experiments and IsProduction @id sme-dev-guide-utilities-msft-sme-experiments}
*
* @overview
* @file {@filepath ./experiment-key/examples/overview.md}
*
* @example {@label Experiment key @id experiment-key}
* @file {@filename experiment-key.ts @filepath ./experiment-key/examples/experiment-key.ts}
*
* @example {@label IsProduction @id isProduction}
* @file {@filename isproduction.ts @filepath ./experiment-key/examples/isproduction.ts}
*/
export class ExperimentGuardService {
/**
* Initializes a new instance of the ExperimentGuardService class.
* @param router the router.
*/
constructor(router) {
this.router = router;
}
/**
* Guard against navigating unless angular dev mode is enabled
* @param route the current route snapshot
* @param state the current router state snapshot
*/
canActivate(route, state) {
const routeData = route.data;
let experiments = routeData.experiments || [];
let shellExperiments = routeData.shellExperiments || [];
if (!Array.isArray(experiments)) {
experiments = [experiments];
}
if (!Array.isArray(shellExperiments)) {
shellExperiments = [shellExperiments];
}
if (experiments.every(x => MsftSme.isExperimentEnabled(x)) && shellExperiments.every(x => MsftSme.isExperimentEnabled(x))) {
return true;
}
this.router.navigateByUrl(routeData.redirectTo);
return false;
}
}
/** @nocollapse */ ExperimentGuardService.ɵfac = function ExperimentGuardService_Factory(t) { return new (t || ExperimentGuardService)(i0.ɵɵinject(i1.Router)); };
/** @nocollapse */ ExperimentGuardService.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: ExperimentGuardService, factory: ExperimentGuardService.ɵfac });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ExperimentGuardService, [{
type: Injectable
}], function () { return [{ type: i1.Router }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwZXJpbWVudC5ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvZ3VhcmRzL2V4cGVyaW1lbnQuZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBdUMsTUFBTSxFQUF1QixNQUFNLGlCQUFpQixDQUFDOzs7QUFRbkc7Ozs7Ozs7Ozs7OztHQVlHO0FBRUgsTUFBTSxPQUFPLHNCQUFzQjtJQUUvQjs7O09BR0c7SUFDSCxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFJLENBQUM7SUFFdkM7Ozs7T0FJRztJQUNJLFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3hFLE1BQU0sU0FBUyxHQUF3QixLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ2xELElBQUksV0FBVyxHQUFHLFNBQVMsQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO1FBQzlDLElBQUksZ0JBQWdCLEdBQUcsU0FBUyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztRQUV4RCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM3QixXQUFXLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDbEMsZ0JBQWdCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDdkgsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzsrR0E5QlEsc0JBQXNCOzJHQUF0QixzQkFBc0IsV0FBdEIsc0JBQXNCO3VGQUF0QixzQkFBc0I7Y0FEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgQ2FuQWN0aXZhdGUsIFJvdXRlciwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IEJhc2VHdWFyZERhdGEgfSBmcm9tICcuL2d1YXJkLWRhdGEnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBFeHBlcmltZW50R3VhcmREYXRhIGV4dGVuZHMgQmFzZUd1YXJkRGF0YSB7XHJcbiAgICBleHBlcmltZW50czogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgICBzaGVsbEV4cGVyaW1lbnRzPzogc3RyaW5nIHwgc3RyaW5nW107XHJcbn1cclxuXHJcbi8qKlxyXG4gKlxyXG4gKiBAc21lRG9jIHtAbGFiZWwgRXhwZXJpbWVudHMgYW5kIElzUHJvZHVjdGlvbiBAaWQgc21lLWRldi1ndWlkZS11dGlsaXRpZXMtbXNmdC1zbWUtZXhwZXJpbWVudHN9XHJcbiAqXHJcbiAqIEBvdmVydmlld1xyXG4gKiBAZmlsZSB7QGZpbGVwYXRoIC4vZXhwZXJpbWVudC1rZXkvZXhhbXBsZXMvb3ZlcnZpZXcubWR9XHJcbiAqXHJcbiAqIEBleGFtcGxlIHtAbGFiZWwgRXhwZXJpbWVudCBrZXkgQGlkIGV4cGVyaW1lbnQta2V5fVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGV4cGVyaW1lbnQta2V5LnRzIEBmaWxlcGF0aCAuL2V4cGVyaW1lbnQta2V5L2V4YW1wbGVzL2V4cGVyaW1lbnQta2V5LnRzfVxyXG4gKlxyXG4gKiBAZXhhbXBsZSB7QGxhYmVsIElzUHJvZHVjdGlvbiBAaWQgaXNQcm9kdWN0aW9ufVxyXG4gKiBAZmlsZSB7QGZpbGVuYW1lIGlzcHJvZHVjdGlvbi50cyBAZmlsZXBhdGggLi9leHBlcmltZW50LWtleS9leGFtcGxlcy9pc3Byb2R1Y3Rpb24udHN9XHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBFeHBlcmltZW50R3VhcmRTZXJ2aWNlIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIEV4cGVyaW1lbnRHdWFyZFNlcnZpY2UgY2xhc3MuXHJcbiAgICAgKiBAcGFyYW0gcm91dGVyIHRoZSByb3V0ZXIuXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR3VhcmQgYWdhaW5zdCBuYXZpZ2F0aW5nIHVubGVzcyBhbmd1bGFyIGRldiBtb2RlIGlzIGVuYWJsZWRcclxuICAgICAqIEBwYXJhbSByb3V0ZSB0aGUgY3VycmVudCByb3V0ZSBzbmFwc2hvdFxyXG4gICAgICogQHBhcmFtIHN0YXRlIHRoZSBjdXJyZW50IHJvdXRlciBzdGF0ZSBzbmFwc2hvdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogYm9vbGVhbiB7XHJcbiAgICAgICAgY29uc3Qgcm91dGVEYXRhID0gPEV4cGVyaW1lbnRHdWFyZERhdGE+cm91dGUuZGF0YTtcclxuICAgICAgICBsZXQgZXhwZXJpbWVudHMgPSByb3V0ZURhdGEuZXhwZXJpbWVudHMgfHwgW107XHJcbiAgICAgICAgbGV0IHNoZWxsRXhwZXJpbWVudHMgPSByb3V0ZURhdGEuc2hlbGxFeHBlcmltZW50cyB8fCBbXTtcclxuXHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVyaW1lbnRzKSkge1xyXG4gICAgICAgICAgICBleHBlcmltZW50cyA9IFtleHBlcmltZW50c107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShzaGVsbEV4cGVyaW1lbnRzKSkge1xyXG4gICAgICAgICAgICBzaGVsbEV4cGVyaW1lbnRzID0gW3NoZWxsRXhwZXJpbWVudHNdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGV4cGVyaW1lbnRzLmV2ZXJ5KHggPT4gTXNmdFNtZS5pc0V4cGVyaW1lbnRFbmFibGVkKHgpKSAmJiBzaGVsbEV4cGVyaW1lbnRzLmV2ZXJ5KHggPT4gTXNmdFNtZS5pc0V4cGVyaW1lbnRFbmFibGVkKHgpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChyb3V0ZURhdGEucmVkaXJlY3RUbyk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==