UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

1 lines 10.8 kB
{"version":3,"sources":["../../../packages/core/data/core-environment.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAIpG;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;OAEG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,oBAAY,yBAAyB;IACjC;;OAEG;IACH,YAAY,IAAI;IAEhB;;OAEG;IACH,OAAO,IAAI;IAEX;;OAEG;IACH,GAAG,IAAI;CACV;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAAC,EAAE,yBAAyB,GAAG,MAAM,CAAC;IAExD;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAE/B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,qBAAa,eAAe;IACxB;;OAEG;IACH,OAAc,mBAAmB,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7D,OAAc,oBAAoB,EAAE,oBAAoB,CAAC;IACzD,OAAc,YAAY,EAAE,YAAY,CAAC;IAEzC;;;;;;OAMG;WACW,UAAU,CACpB,eAAe,EAAE,sBAAsB,EACvC,mBAAmB,EAAE,0BAA0B,EAC/C,cAAc,CAAC,EAAE,cAAc,GAChC,OAAO,CAAC,IAAI,CAAC;IAgGhB;;;OAGG;WACW,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IASnE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;CAS9B","file":"core-environment.d.ts","sourcesContent":["import { LogLevel } from '../diagnostics/log-level';\r\nimport { EnvironmentModule } from '../manifest/environment-modules';\r\nimport { ManifestLoader } from '../manifest/manifest-loader';\r\nimport { PerformanceTracker } from '../performance/performance-tracker';\r\nimport { AccessibilityManager } from './accessibility-manager';\r\nimport { AssetManager } from './asset-manager';\r\nimport { LocaleSet, LocalizationManager, LocalizationManagerOptions } from './localization-manager';\r\nimport { NativeQ } from './native-q';\r\nimport { PowerShell } from './powershell';\r\n\r\n/**\r\n * Interface for manifest loading.\r\n */\r\nexport interface ManifestLoadingOptions {\r\n /**\r\n * Specify shell or module name.\r\n */\r\n name: string;\r\n\r\n /**\r\n * Specify the version of shell or module.\r\n */\r\n version: string;\r\n\r\n /**\r\n * Specify the name of PowerShell module.\r\n */\r\n powerShellModuleName?: string;\r\n\r\n /**\r\n * Specify the name of PowerShell prefix.\r\n */\r\n powerShellPrefix?: string;\r\n\r\n /**\r\n * Specify angular-cli production state used by the module loading only.\r\n */\r\n isProduction?: boolean;\r\n\r\n /**\r\n * Specify shell origin URL for sideloading debugging.\r\n */\r\n shellOrigin?: string;\r\n}\r\n\r\n/**\r\n * The enum switch to use predefined endpoints.\r\n */\r\nexport enum RuntimePowerShellEndpoint {\r\n /**\r\n * Not specify.\r\n */\r\n InlineScript = 0,\r\n\r\n /**\r\n * The default endpoint. Microsoft.PowerShell\r\n */\r\n Default = 1,\r\n\r\n /**\r\n * The SME endpoint. Microsoft.SME.PowerShell\r\n */\r\n Sme = 2\r\n}\r\n\r\n/**\r\n * Interface for runtime options.\r\n */\r\nexport interface RuntimeOptions {\r\n /**\r\n * Enable websocket if true.\r\n */\r\n websocket?: boolean;\r\n\r\n /**\r\n * Enable SSH websocket if true.\r\n */\r\n sshWebsocket?: boolean;\r\n\r\n /**\r\n * Force to use module functions instead of embedded script on PowerShell calls.\r\n */\r\n powerShellEndpoint?: RuntimePowerShellEndpoint | string;\r\n\r\n /**\r\n * Disable style injection if true.\r\n */\r\n disableStyleInjection?: boolean;\r\n\r\n /**\r\n * Disable accessibility if true.\r\n */\r\n disableAccessibility?: boolean;\r\n\r\n /**\r\n * Configure CSS version for supporting v2 that is 400% zoom\r\n */\r\n cssV2?: boolean;\r\n\r\n /**\r\n * Determines if it is react extension or not. If React extension, will not load any css from shell.\r\n */\r\n reactExtension?: boolean;\r\n}\r\n\r\n/**\r\n * Class to initialize and the SME environment\r\n * (Localized string cannot be used in this class due to initialization phase when the strings are not ready yet.)\r\n * @dynamic\r\n */\r\nexport class CoreEnvironment {\r\n /**\r\n * The localization manager once the environment has been initialized\r\n */\r\n public static localizationManager: LocalizationManager<void>;\r\n public static accessibilityManager: AccessibilityManager;\r\n public static assetManager: AssetManager;\r\n\r\n /**\r\n * Initializes the environment with manifest loading mode.\r\n *\r\n * @param manifestOptions the name of manifest loading options.\r\n * @param localizationOptions the options to initialize the Localization Manager\r\n * @param runtimeOptions the optional runtime options.\r\n */\r\n public static initialize(\r\n manifestOptions: ManifestLoadingOptions,\r\n localizationOptions: LocalizationManagerOptions,\r\n runtimeOptions?: RuntimeOptions\r\n ): Promise<void> {\r\n if (!manifestOptions || !manifestOptions.name) {\r\n // no localization.\r\n throw new Error('CoreEnvironment.initialize() - Argument error: manifestOptions.');\r\n }\r\n PerformanceTracker.coreEnvironmentInitStarted();\r\n PerformanceTracker.initializeLighthouseMetricsTrackers();\r\n\r\n const InitOptions: MsftSme.MsftSmeInit = {\r\n mode: MsftSme.EnvironmentMode.LoadEmbedded,\r\n moduleName: manifestOptions.name,\r\n moduleVersion: manifestOptions.version,\r\n powerShellModuleName: manifestOptions.powerShellModuleName,\r\n powerShellPrefix: manifestOptions.powerShellPrefix,\r\n isProduction: manifestOptions.isProduction,\r\n sessionId: 'N/A',\r\n logLevel: MsftSme.consoleDebug() === null ? LogLevel.Warning : MsftSme.consoleDebug(),\r\n sessionExpiration: 0,\r\n performanceProfile: false,\r\n developerGuide: false,\r\n experiments: MsftSme.experiments(),\r\n connectivityLevel: '',\r\n isShell: false,\r\n shellVersion: null,\r\n gatewayApiVersion: null,\r\n gatewayPlatform: null\r\n };\r\n if (manifestOptions.name === EnvironmentModule.nameOfShell) {\r\n // shell manifest loading\r\n InitOptions.isShell = true;\r\n InitOptions.mode = MsftSme.EnvironmentMode.Load;\r\n InitOptions.sessionId = MsftSme.newGuid();\r\n } else if (manifestOptions.isProduction) {\r\n // module on the production using the same site origin from location information\r\n // if not specified by manifestOptions.shellOrigin.\r\n InitOptions.shellOrigin = manifestOptions && manifestOptions.shellOrigin ? manifestOptions.shellOrigin : window.location.origin;\r\n } else {\r\n // module side-loading manifest. non production environment accept any shell origin.\r\n InitOptions.shellOrigin = '*';\r\n }\r\n\r\n const self = MsftSme.self();\r\n self.Init = InitOptions;\r\n\r\n // enable websocket stream query only if requested.\r\n if (runtimeOptions && runtimeOptions.websocket) {\r\n self.Init.websocket = true;\r\n }\r\n\r\n // enable SSH websocket stream query only if requested.\r\n if (runtimeOptions && runtimeOptions.sshWebsocket) {\r\n self.Init.sshWebsocket = true;\r\n }\r\n\r\n // enable websocket stream query only if requested.\r\n if (runtimeOptions && runtimeOptions.powerShellEndpoint) {\r\n if (typeof runtimeOptions.powerShellEndpoint === 'string') {\r\n self.Init.powerShellEndpoint = <string>runtimeOptions.powerShellEndpoint;\r\n } else {\r\n const type = <RuntimePowerShellEndpoint>runtimeOptions.powerShellEndpoint;\r\n switch (type) {\r\n case RuntimePowerShellEndpoint.Default:\r\n self.Init.powerShellEndpoint = PowerShell.defaultPowerShellEndpoint;\r\n break;\r\n case RuntimePowerShellEndpoint.Sme:\r\n self.Init.powerShellEndpoint = PowerShell.smePowerShellEndpoint;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n CoreEnvironment.localizationManager = new LocalizationManager<any>(localizationOptions);\r\n\r\n if (!runtimeOptions || !runtimeOptions.disableStyleInjection) {\r\n CoreEnvironment.assetManager = new AssetManager(CoreEnvironment.localizationManager, runtimeOptions?.cssV2, runtimeOptions?.reactExtension);\r\n }\r\n\r\n const deferred = NativeQ.defer<void>();\r\n PerformanceTracker.manifestLoadStarted();\r\n ManifestLoader.loadManifest()\r\n .then(() => {\r\n PerformanceTracker.localizationStarted();\r\n return CoreEnvironment.localization();\r\n })\r\n .then(() => {\r\n if (!runtimeOptions || !runtimeOptions.disableAccessibility) {\r\n PerformanceTracker.accessibilityManagerStarted();\r\n CoreEnvironment.accessibilityManager = new AccessibilityManager();\r\n }\r\n deferred.resolve();\r\n })\r\n .catch(deferred.reject)\r\n .finally(() => PerformanceTracker.coreEnvironmentInitCompleted());\r\n return deferred.promise;\r\n }\r\n\r\n /**\r\n * Validate and load localized strings if the localeId doesn't match with current locale Id.\r\n * @param localeSet the local information set.\r\n */\r\n public static moduleLoadLocale(localeSet: LocaleSet): Promise<void> {\r\n if (CoreEnvironment.localizationManager.localeId.id !== localeSet.id) {\r\n CoreEnvironment.localizationManager.saveLocale(localeSet);\r\n return CoreEnvironment.localization();\r\n }\r\n\r\n return NativeQ.resolved<void>();\r\n }\r\n\r\n /**\r\n * Initialize and load localization data by option settings.\r\n */\r\n private static localization(): Promise<void> {\r\n const self = MsftSme.self();\r\n CoreEnvironment.localizationManager.updateDocumentLanguage();\r\n return CoreEnvironment.localizationManager.fetchLocalizedStrings()\r\n .toPromise()\r\n .then(strings => {\r\n self.Resources.strings = strings;\r\n });\r\n }\r\n}\r\n"]}