import { TextDocuments } from 'vscode-languageserver';
import { TextDocument } from 'vscode-languageserver-textdocument';
import { CRD_CATALOG_URL, JSON_SCHEMASTORE_URL } from './languageservice/utils/schemaUrls';
// This class is responsible for handling all the settings
export class SettingsState {
    constructor() {
        this.yamlConfigurationSettings = undefined;
        this.schemaAssociations = undefined;
        this.formatterRegistration = null;
        this.specificValidatorPaths = [];
        this.schemaConfigurationSettings = [];
        this.yamlShouldValidate = true;
        this.yamlFormatterSettings = {
            singleQuote: false,
            bracketSpacing: true,
            proseWrap: 'preserve',
            printWidth: 80,
            trailingComma: true,
            enable: true,
        };
        this.yamlShouldHover = true;
        this.yamlShouldHoverAnchor = true;
        this.yamlShouldCompletion = true;
        this.yamlHoverSchemaSource = true;
        this.yamlDisableSchemaDetection = [];
        this.schemaStoreSettings = [];
        this.customTags = [];
        this.schemaStoreEnabled = true;
        this.schemaStoreUrl = JSON_SCHEMASTORE_URL;
        this.kubernetesCRDStoreEnabled = true;
        this.kubernetesCRDStoreUrl = CRD_CATALOG_URL;
        this.kubernetesVersion = undefined;
        this.indentation = undefined;
        this.disableAdditionalProperties = false;
        this.disableDefaultProperties = false;
        this.suggest = {
            parentSkeletonSelectedFirst: false,
        };
        this.keyOrdering = false;
        this.maxItemsComputed = 5000;
        // File validation helpers
        this.pendingValidationRequests = {};
        this.validationDelayMs = 200;
        // Create a simple text document manager. The text document manager
        // supports full document sync only
        this.documents = new TextDocuments(TextDocument);
        this.workspaceRoot = null;
        this.workspaceFolders = [];
        this.clientDynamicRegisterSupport = false;
        this.hierarchicalDocumentSymbolSupport = false;
        this.hasWorkspaceFolderCapability = false;
        this.hasConfigurationCapability = false;
        this.hasCodeLensRefreshSupport = false;
        this.configurationPullPromise = Promise.resolve();
        this.useVSCodeContentRequest = false;
        this.yamlVersion = '1.2';
        this.useSchemaSelectionRequests = false;
        this.hasWsChangeWatchedFileDynamicRegistration = false;
        this.fileExtensions = ['.yml', '.yaml'];
        this.locale = 'en';
    }
}
export class TextDocumentTestManager extends TextDocuments {
    constructor() {
        super(TextDocument);
        this.testTextDocuments = new Map();
    }
    get(uri) {
        return this.testTextDocuments.get(uri);
    }
    set(textDocument) {
        this.testTextDocuments.set(textDocument.uri, textDocument);
    }
}
//# sourceMappingURL=yamlSettings.js.map