| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- import { editor } from './fillers/monaco-editor-core.js';
- var STOP_WHEN_IDLE_FOR = 2 * 60 * 1000; // 2min
- var WorkerManager = /** @class */ (function () {
- function WorkerManager(defaults) {
- var _this = this;
- this._defaults = defaults;
- this._worker = null;
- this._idleCheckInterval = setInterval(function () { return _this._checkIfIdle(); }, 30 * 1000);
- this._lastUsedTime = 0;
- this._configChangeListener = this._defaults.onDidChange(function () { return _this._stopWorker(); });
- }
- WorkerManager.prototype._stopWorker = function () {
- if (this._worker) {
- this._worker.dispose();
- this._worker = null;
- }
- this._client = null;
- };
- WorkerManager.prototype.dispose = function () {
- clearInterval(this._idleCheckInterval);
- this._configChangeListener.dispose();
- this._stopWorker();
- };
- WorkerManager.prototype._checkIfIdle = function () {
- if (!this._worker) {
- return;
- }
- var timePassedSinceLastUsed = Date.now() - this._lastUsedTime;
- if (timePassedSinceLastUsed > STOP_WHEN_IDLE_FOR) {
- this._stopWorker();
- }
- };
- WorkerManager.prototype._getClient = function () {
- this._lastUsedTime = Date.now();
- if (!this._client) {
- this._worker = editor.createWebWorker({
- // module that exports the create() method and returns a `JSONWorker` instance
- moduleId: 'vs/language/json/jsonWorker',
- label: this._defaults.languageId,
- // passed in to the create() method
- createData: {
- languageSettings: this._defaults.diagnosticsOptions,
- languageId: this._defaults.languageId,
- enableSchemaRequest: this._defaults.diagnosticsOptions.enableSchemaRequest
- }
- });
- this._client = this._worker.getProxy();
- }
- return this._client;
- };
- WorkerManager.prototype.getLanguageServiceWorker = function () {
- var _this = this;
- var resources = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- resources[_i] = arguments[_i];
- }
- var _client;
- return this._getClient()
- .then(function (client) {
- _client = client;
- })
- .then(function (_) {
- return _this._worker.withSyncedResources(resources);
- })
- .then(function (_) { return _client; });
- };
- return WorkerManager;
- }());
- export { WorkerManager };
|