astro-ghostcms/.pnpm-store/v3/files/7f/f24fc3928b962f83aaf3f673bc3...

97 lines
5.3 KiB
Plaintext

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUserPreferences = void 0;
const shared_1 = require("../shared");
const path = require("path-browserify");
const vscode_uri_1 = require("vscode-uri");
async function getUserPreferences(ctx, document) {
const config = await ctx.env.getConfiguration?.((0, shared_1.getConfigTitle)(document)) ?? {};
const preferencesConfig = config?.preferences ?? {};
const preferences = {
...config.unstable ?? {},
quotePreference: getQuoteStylePreference(preferencesConfig),
importModuleSpecifierPreference: getImportModuleSpecifierPreference(preferencesConfig),
importModuleSpecifierEnding: getImportModuleSpecifierEndingPreference(preferencesConfig),
jsxAttributeCompletionStyle: getJsxAttributeCompletionStyle(preferencesConfig),
allowTextChangesInNewFiles: document.uri.startsWith('file://'),
providePrefixAndSuffixTextForRename: (preferencesConfig.renameShorthandProperties ?? true) === false ? false : (preferencesConfig.useAliasesForRenames ?? true),
allowRenameOfImportPath: true,
includeAutomaticOptionalChainCompletions: config.suggest?.includeAutomaticOptionalChainCompletions ?? true,
provideRefactorNotApplicableReason: true,
generateReturnInDocTemplate: config.suggest?.jsdoc?.generateReturns ?? true,
includeCompletionsForImportStatements: config.suggest?.includeCompletionsForImportStatements ?? true,
includeCompletionsWithSnippetText: config.suggest?.includeCompletionsWithSnippetText ?? true,
includeCompletionsWithClassMemberSnippets: config.suggest?.classMemberSnippets?.enabled ?? true,
includeCompletionsWithObjectLiteralMethodSnippets: config.suggest?.objectLiteralMethodSnippets?.enabled ?? true,
autoImportFileExcludePatterns: getAutoImportFileExcludePatternsPreference(preferencesConfig, ctx.env.rootUri),
useLabelDetailsInCompletionEntries: true,
allowIncompleteCompletions: true,
displayPartsForJSDoc: true,
// inlay hints
includeInlayParameterNameHints: getInlayParameterNameHintsPreference(config),
includeInlayParameterNameHintsWhenArgumentMatchesName: !(config.inlayHints?.parameterNames?.suppressWhenArgumentMatchesName ?? true),
includeInlayFunctionParameterTypeHints: config.inlayHints?.parameterTypes?.enabled ?? false,
includeInlayVariableTypeHints: config.inlayHints?.variableTypes?.enabled ?? false,
includeInlayVariableTypeHintsWhenTypeMatchesName: !(config.inlayHints?.variableTypes?.suppressWhenTypeMatchesName ?? true),
includeInlayPropertyDeclarationTypeHints: config.inlayHints?.propertyDeclarationTypes?.enabled ?? false,
includeInlayFunctionLikeReturnTypeHints: config.inlayHints?.functionLikeReturnTypes?.enabled ?? false,
includeInlayEnumMemberValueHints: config.inlayHints?.enumMemberValues?.enabled ?? false,
// https://github.com/microsoft/vscode/blob/main/extensions/typescript-language-features/src/languageFeatures/completions.ts#L728-L730
includeCompletionsForModuleExports: config.suggest?.autoImports ?? true,
includeCompletionsWithInsertText: true,
includePackageJsonAutoImports: preferencesConfig.includePackageJsonAutoImports ?? 'auto',
};
return preferences;
}
exports.getUserPreferences = getUserPreferences;
function getQuoteStylePreference(config) {
switch (config.quoteStyle) {
case 'single': return 'single';
case 'double': return 'double';
default: return 'auto';
}
}
function getAutoImportFileExcludePatternsPreference(config, workspaceFolder) {
return workspaceFolder && config.autoImportFileExcludePatterns?.map(p => {
// Normalization rules: https://github.com/microsoft/TypeScript/pull/49578
const slashNormalized = p.replace(/\\/g, '/');
const isRelative = /^\.\.?($|\/)/.test(slashNormalized);
return path.isAbsolute(p) ? p :
p.startsWith('*') ? '/' + slashNormalized :
isRelative ? vscode_uri_1.URI.parse(path.join(workspaceFolder.toString(), p)).fsPath :
'/**/' + slashNormalized;
});
}
function getImportModuleSpecifierPreference(config) {
switch (config.importModuleSpecifier) {
case 'project-relative': return 'project-relative';
case 'relative': return 'relative';
case 'non-relative': return 'non-relative';
default: return undefined;
}
}
function getImportModuleSpecifierEndingPreference(config) {
switch (config.importModuleSpecifierEnding) {
case 'minimal': return 'minimal';
case 'index': return 'index';
case 'js': return 'js';
default: return 'minimal'; // fix https://github.com/johnsoncodehk/volar/issues/1667
// default: return 'auto';
}
}
function getJsxAttributeCompletionStyle(config) {
switch (config.jsxAttributeCompletionStyle) {
case 'braces': return 'braces';
case 'none': return 'none';
default: return 'auto';
}
}
function getInlayParameterNameHintsPreference(config) {
switch (config.inlayHints?.parameterNames?.enabled) {
case 'none': return 'none';
case 'literals': return 'literals';
case 'all': return 'all';
default: return undefined;
}
}
//# sourceMappingURL=getUserPreferences.js.map