123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- var _a;
- const LANGUAGE_DEFAULT = 'en';
- let _isWindows = false;
- let _isMacintosh = false;
- let _isLinux = false;
- let _isLinuxSnap = false;
- let _isNative = false;
- let _isWeb = false;
- let _isElectron = false;
- let _isIOS = false;
- let _locale = undefined;
- let _language = LANGUAGE_DEFAULT;
- let _translationsConfigFile = undefined;
- let _userAgent = undefined;
- export const globals = (typeof self === 'object' ? self : typeof global === 'object' ? global : {});
- let nodeProcess = undefined;
- if (typeof globals.vscode !== 'undefined' && typeof globals.vscode.process !== 'undefined') {
- // Native environment (sandboxed)
- nodeProcess = globals.vscode.process;
- }
- else if (typeof process !== 'undefined') {
- // Native environment (non-sandboxed)
- nodeProcess = process;
- }
- const isElectronProcess = typeof ((_a = nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.versions) === null || _a === void 0 ? void 0 : _a.electron) === 'string';
- const isElectronRenderer = isElectronProcess && (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.type) === 'renderer';
- // Web environment
- if (typeof navigator === 'object' && !isElectronRenderer) {
- _userAgent = navigator.userAgent;
- _isWindows = _userAgent.indexOf('Windows') >= 0;
- _isMacintosh = _userAgent.indexOf('Macintosh') >= 0;
- _isIOS = (_userAgent.indexOf('Macintosh') >= 0 || _userAgent.indexOf('iPad') >= 0 || _userAgent.indexOf('iPhone') >= 0) && !!navigator.maxTouchPoints && navigator.maxTouchPoints > 0;
- _isLinux = _userAgent.indexOf('Linux') >= 0;
- _isWeb = true;
- _locale = navigator.language;
- _language = _locale;
- }
- // Native environment
- else if (typeof nodeProcess === 'object') {
- _isWindows = (nodeProcess.platform === 'win32');
- _isMacintosh = (nodeProcess.platform === 'darwin');
- _isLinux = (nodeProcess.platform === 'linux');
- _isLinuxSnap = _isLinux && !!nodeProcess.env['SNAP'] && !!nodeProcess.env['SNAP_REVISION'];
- _isElectron = isElectronProcess;
- _locale = LANGUAGE_DEFAULT;
- _language = LANGUAGE_DEFAULT;
- const rawNlsConfig = nodeProcess.env['VSCODE_NLS_CONFIG'];
- if (rawNlsConfig) {
- try {
- const nlsConfig = JSON.parse(rawNlsConfig);
- const resolved = nlsConfig.availableLanguages['*'];
- _locale = nlsConfig.locale;
- // VSCode's default language is 'en'
- _language = resolved ? resolved : LANGUAGE_DEFAULT;
- _translationsConfigFile = nlsConfig._translationsConfigFile;
- }
- catch (e) {
- }
- }
- _isNative = true;
- }
- // Unknown environment
- else {
- console.error('Unable to resolve platform.');
- }
- let _platform = 0 /* Web */;
- if (_isMacintosh) {
- _platform = 1 /* Mac */;
- }
- else if (_isWindows) {
- _platform = 3 /* Windows */;
- }
- else if (_isLinux) {
- _platform = 2 /* Linux */;
- }
- export const isWindows = _isWindows;
- export const isMacintosh = _isMacintosh;
- export const isLinux = _isLinux;
- export const isNative = _isNative;
- export const isWeb = _isWeb;
- export const isIOS = _isIOS;
- export const userAgent = _userAgent;
- /**
- * The language used for the user interface. The format of
- * the string is all lower case (e.g. zh-tw for Traditional
- * Chinese)
- */
- export const language = _language;
- /**
- * The OS locale or the locale specified by --locale. The format of
- * the string is all lower case (e.g. zh-tw for Traditional
- * Chinese). The UI is not necessarily shown in the provided locale.
- */
- export const locale = _locale;
- /**
- * See https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#:~:text=than%204%2C%20then-,set%20timeout%20to%204,-.
- *
- * Works similarly to `setTimeout(0)` but doesn't suffer from the 4ms artificial delay
- * that browsers set when the nesting level is > 5.
- */
- export const setTimeout0 = (() => {
- if (typeof globals.postMessage === 'function' && !globals.importScripts) {
- let pending = [];
- globals.addEventListener('message', (e) => {
- if (e.data && e.data.vscodeScheduleAsyncWork) {
- for (let i = 0, len = pending.length; i < len; i++) {
- const candidate = pending[i];
- if (candidate.id === e.data.vscodeScheduleAsyncWork) {
- pending.splice(i, 1);
- candidate.callback();
- return;
- }
- }
- }
- });
- let lastId = 0;
- return (callback) => {
- const myId = ++lastId;
- pending.push({
- id: myId,
- callback: callback
- });
- globals.postMessage({ vscodeScheduleAsyncWork: myId }, '*');
- };
- }
- return (callback) => setTimeout(callback);
- })();
- export const setImmediate = (function defineSetImmediate() {
- if (globals.setImmediate) {
- return globals.setImmediate.bind(globals);
- }
- if (typeof globals.postMessage === 'function' && !globals.importScripts) {
- return setTimeout0;
- }
- if (typeof (nodeProcess === null || nodeProcess === void 0 ? void 0 : nodeProcess.nextTick) === 'function') {
- return nodeProcess.nextTick.bind(nodeProcess);
- }
- const _promise = Promise.resolve();
- return (callback) => _promise.then(callback);
- })();
- export const OS = (_isMacintosh || _isIOS ? 2 /* Macintosh */ : (_isWindows ? 1 /* Windows */ : 3 /* Linux */));
- let _isLittleEndian = true;
- let _isLittleEndianComputed = false;
- export function isLittleEndian() {
- if (!_isLittleEndianComputed) {
- _isLittleEndianComputed = true;
- const test = new Uint8Array(2);
- test[0] = 1;
- test[1] = 2;
- const view = new Uint16Array(test.buffer);
- _isLittleEndian = (view[0] === (2 << 8) + 1);
- }
- return _isLittleEndian;
- }
|