@stylelint/language-server 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +39 -0
- package/bin/stylelint-language-server.mjs +25 -0
- package/build/di/container.d.ts +12 -0
- package/build/di/container.js +76 -0
- package/build/di/container.js.map +1 -0
- package/build/di/hooks.d.ts +16 -0
- package/build/di/hooks.js +25 -0
- package/build/di/hooks.js.map +1 -0
- package/build/di/index.d.ts +7 -0
- package/build/di/index.js +8 -0
- package/build/di/index.js.map +1 -0
- package/build/di/inject.d.ts +48 -0
- package/build/di/inject.js +55 -0
- package/build/di/inject.js.map +1 -0
- package/build/di/module.d.ts +51 -0
- package/build/di/module.js +93 -0
- package/build/di/module.js.map +1 -0
- package/build/di/runtime/application.d.ts +17 -0
- package/build/di/runtime/application.js +209 -0
- package/build/di/runtime/application.js.map +1 -0
- package/build/di/runtime/decorators.d.ts +14 -0
- package/build/di/runtime/decorators.js +26 -0
- package/build/di/runtime/decorators.js.map +1 -0
- package/build/di/runtime/index.d.ts +3 -0
- package/build/di/runtime/index.js +4 -0
- package/build/di/runtime/index.js.map +1 -0
- package/build/di/runtime/symbols.d.ts +1 -0
- package/build/di/runtime/symbols.js +2 -0
- package/build/di/runtime/symbols.js.map +1 -0
- package/build/di/runtime/types.d.ts +20 -0
- package/build/di/runtime/types.js +2 -0
- package/build/di/runtime/types.js.map +1 -0
- package/build/di/tokens.d.ts +8 -0
- package/build/di/tokens.js +7 -0
- package/build/di/tokens.js.map +1 -0
- package/build/di/types.d.ts +16 -0
- package/build/di/types.js +2 -0
- package/build/di/types.js.map +1 -0
- package/build/server/config/default-options.d.ts +2 -0
- package/build/server/config/default-options.js +29 -0
- package/build/server/config/default-options.js.map +1 -0
- package/build/server/decorators.d.ts +121 -0
- package/build/server/decorators.js +272 -0
- package/build/server/decorators.js.map +1 -0
- package/build/server/index.d.ts +2 -0
- package/build/server/index.js +3 -0
- package/build/server/index.js.map +1 -0
- package/build/server/modules/documents.module.d.ts +1 -0
- package/build/server/modules/documents.module.js +12 -0
- package/build/server/modules/documents.module.js.map +1 -0
- package/build/server/modules/index.d.ts +6 -0
- package/build/server/modules/index.js +7 -0
- package/build/server/modules/index.js.map +1 -0
- package/build/server/modules/infrastructure.module.d.ts +1 -0
- package/build/server/modules/infrastructure.module.js +7 -0
- package/build/server/modules/infrastructure.module.js.map +1 -0
- package/build/server/modules/lsp.module.d.ts +1 -0
- package/build/server/modules/lsp.module.js +18 -0
- package/build/server/modules/lsp.module.js.map +1 -0
- package/build/server/modules/platform.module.d.ts +4 -0
- package/build/server/modules/platform.module.js +33 -0
- package/build/server/modules/platform.module.js.map +1 -0
- package/build/server/modules/stylelint-runtime.module.d.ts +1 -0
- package/build/server/modules/stylelint-runtime.module.js +19 -0
- package/build/server/modules/stylelint-runtime.module.js.map +1 -0
- package/build/server/modules/workspace.module.d.ts +1 -0
- package/build/server/modules/workspace.module.js +7 -0
- package/build/server/modules/workspace.module.js.map +1 -0
- package/build/server/runtime/application.d.ts +19 -0
- package/build/server/runtime/application.js +22 -0
- package/build/server/runtime/application.js.map +1 -0
- package/build/server/runtime/language-server-feature.d.ts +13 -0
- package/build/server/runtime/language-server-feature.js +142 -0
- package/build/server/runtime/language-server-feature.js.map +1 -0
- package/build/server/runtime/lsp-service-runtime.d.ts +15 -0
- package/build/server/runtime/lsp-service-runtime.js +133 -0
- package/build/server/runtime/lsp-service-runtime.js.map +1 -0
- package/build/server/server.d.ts +13 -0
- package/build/server/server.js +38 -0
- package/build/server/server.js.map +1 -0
- package/build/server/server.module.d.ts +1 -0
- package/build/server/server.module.js +13 -0
- package/build/server/server.module.js.map +1 -0
- package/build/server/services/documents/document-diagnostics.service.d.ts +15 -0
- package/build/server/services/documents/document-diagnostics.service.js +88 -0
- package/build/server/services/documents/document-diagnostics.service.js.map +1 -0
- package/build/server/services/documents/document-fixes.service.d.ts +14 -0
- package/build/server/services/documents/document-fixes.service.js +94 -0
- package/build/server/services/documents/document-fixes.service.js.map +1 -0
- package/build/server/services/documents/index.d.ts +2 -0
- package/build/server/services/documents/index.js +3 -0
- package/build/server/services/documents/index.js.map +1 -0
- package/build/server/services/index.d.ts +5 -0
- package/build/server/services/index.js +6 -0
- package/build/server/services/index.js.map +1 -0
- package/build/server/services/infrastructure/command.service.d.ts +22 -0
- package/build/server/services/infrastructure/command.service.js +151 -0
- package/build/server/services/infrastructure/command.service.js.map +1 -0
- package/build/server/services/infrastructure/index.d.ts +4 -0
- package/build/server/services/infrastructure/index.js +5 -0
- package/build/server/services/infrastructure/index.js.map +1 -0
- package/build/server/services/infrastructure/logging.service.d.ts +6 -0
- package/build/server/services/infrastructure/logging.service.js +4 -0
- package/build/server/services/infrastructure/logging.service.js.map +1 -0
- package/build/server/services/infrastructure/notification.service.d.ts +24 -0
- package/build/server/services/infrastructure/notification.service.js +142 -0
- package/build/server/services/infrastructure/notification.service.js.map +1 -0
- package/build/server/services/infrastructure/winston-logging.service.d.ts +10 -0
- package/build/server/services/infrastructure/winston-logging.service.js +48 -0
- package/build/server/services/infrastructure/winston-logging.service.js.map +1 -0
- package/build/server/services/lsp/auto-fix.service.d.ts +15 -0
- package/build/server/services/lsp/auto-fix.service.js +142 -0
- package/build/server/services/lsp/auto-fix.service.js.map +1 -0
- package/build/server/services/lsp/code-actions/code-action.service.d.ts +18 -0
- package/build/server/services/lsp/code-actions/code-action.service.js +288 -0
- package/build/server/services/lsp/code-actions/code-action.service.js.map +1 -0
- package/build/server/services/lsp/code-actions/disable-rule-file-code-action.service.d.ts +11 -0
- package/build/server/services/lsp/code-actions/disable-rule-file-code-action.service.js +72 -0
- package/build/server/services/lsp/code-actions/disable-rule-file-code-action.service.js.map +1 -0
- package/build/server/services/lsp/code-actions/disable-rule-line-code-action.service.d.ts +12 -0
- package/build/server/services/lsp/code-actions/disable-rule-line-code-action.service.js +80 -0
- package/build/server/services/lsp/code-actions/disable-rule-line-code-action.service.js.map +1 -0
- package/build/server/services/lsp/code-actions/index.d.ts +3 -0
- package/build/server/services/lsp/code-actions/index.js +4 -0
- package/build/server/services/lsp/code-actions/index.js.map +1 -0
- package/build/server/services/lsp/completion.service.d.ts +12 -0
- package/build/server/services/lsp/completion.service.js +183 -0
- package/build/server/services/lsp/completion.service.js.map +1 -0
- package/build/server/services/lsp/empty-config-warning.service.d.ts +17 -0
- package/build/server/services/lsp/empty-config-warning.service.js +149 -0
- package/build/server/services/lsp/empty-config-warning.service.js.map +1 -0
- package/build/server/services/lsp/formatter.service.d.ts +16 -0
- package/build/server/services/lsp/formatter.service.js +215 -0
- package/build/server/services/lsp/formatter.service.js.map +1 -0
- package/build/server/services/lsp/index.d.ts +8 -0
- package/build/server/services/lsp/index.js +9 -0
- package/build/server/services/lsp/index.js.map +1 -0
- package/build/server/services/lsp/old-stylelint-warning.service.d.ts +13 -0
- package/build/server/services/lsp/old-stylelint-warning.service.js +186 -0
- package/build/server/services/lsp/old-stylelint-warning.service.js.map +1 -0
- package/build/server/services/lsp/validator.service.d.ts +19 -0
- package/build/server/services/lsp/validator.service.js +273 -0
- package/build/server/services/lsp/validator.service.js.map +1 -0
- package/build/server/services/lsp/workspace-activity.service.d.ts +10 -0
- package/build/server/services/lsp/workspace-activity.service.js +76 -0
- package/build/server/services/lsp/workspace-activity.service.js.map +1 -0
- package/build/server/services/services.module.d.ts +1 -0
- package/build/server/services/services.module.js +19 -0
- package/build/server/services/services.module.js.map +1 -0
- package/build/server/services/stylelint-runtime/global-path-resolver.service.d.ts +38 -0
- package/build/server/services/stylelint-runtime/global-path-resolver.service.js +223 -0
- package/build/server/services/stylelint-runtime/global-path-resolver.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/index.d.ts +11 -0
- package/build/server/services/stylelint-runtime/index.js +12 -0
- package/build/server/services/stylelint-runtime/index.js.map +1 -0
- package/build/server/services/stylelint-runtime/package-root-cache.service.d.ts +9 -0
- package/build/server/services/stylelint-runtime/package-root-cache.service.js +141 -0
- package/build/server/services/stylelint-runtime/package-root-cache.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/package-root.service.d.ts +8 -0
- package/build/server/services/stylelint-runtime/package-root.service.js +119 -0
- package/build/server/services/stylelint-runtime/package-root.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/pnp-configuration-cache.service.d.ts +16 -0
- package/build/server/services/stylelint-runtime/pnp-configuration-cache.service.js +195 -0
- package/build/server/services/stylelint-runtime/pnp-configuration-cache.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/process-runner.service.d.ts +30 -0
- package/build/server/services/stylelint-runtime/process-runner.service.js +149 -0
- package/build/server/services/stylelint-runtime/process-runner.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/stylelint-options.service.d.ts +12 -0
- package/build/server/services/stylelint-runtime/stylelint-options.service.js +185 -0
- package/build/server/services/stylelint-runtime/stylelint-options.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/stylelint-runner.service.d.ts +42 -0
- package/build/server/services/stylelint-runtime/stylelint-runner.service.js +478 -0
- package/build/server/services/stylelint-runtime/stylelint-runner.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/worker-environment.service.d.ts +17 -0
- package/build/server/services/stylelint-runtime/worker-environment.service.js +135 -0
- package/build/server/services/stylelint-runtime/worker-environment.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/worker-process.service.d.ts +8 -0
- package/build/server/services/stylelint-runtime/worker-process.service.js +66 -0
- package/build/server/services/stylelint-runtime/worker-process.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/worker-registry.service.d.ts +19 -0
- package/build/server/services/stylelint-runtime/worker-registry.service.js +289 -0
- package/build/server/services/stylelint-runtime/worker-registry.service.js.map +1 -0
- package/build/server/services/stylelint-runtime/workspace-stylelint.service.d.ts +37 -0
- package/build/server/services/stylelint-runtime/workspace-stylelint.service.js +185 -0
- package/build/server/services/stylelint-runtime/workspace-stylelint.service.js.map +1 -0
- package/build/server/services/workspace/index.d.ts +2 -0
- package/build/server/services/workspace/index.js +3 -0
- package/build/server/services/workspace/index.js.map +1 -0
- package/build/server/services/workspace/workspace-folder.service.d.ts +18 -0
- package/build/server/services/workspace/workspace-folder.service.js +101 -0
- package/build/server/services/workspace/workspace-folder.service.js.map +1 -0
- package/build/server/services/workspace/workspace-options.service.d.ts +12 -0
- package/build/server/services/workspace/workspace-options.service.js +125 -0
- package/build/server/services/workspace/workspace-options.service.js.map +1 -0
- package/build/server/stylelint/disable-metadata-lookup-table.d.ts +20 -0
- package/build/server/stylelint/disable-metadata-lookup-table.js +68 -0
- package/build/server/stylelint/disable-metadata-lookup-table.js.map +1 -0
- package/build/server/stylelint/formatting-options-to-rules.d.ts +12 -0
- package/build/server/stylelint/formatting-options-to-rules.js +19 -0
- package/build/server/stylelint/formatting-options-to-rules.js.map +1 -0
- package/build/server/stylelint/get-disable-diagnostic-rule.d.ts +7 -0
- package/build/server/stylelint/get-disable-diagnostic-rule.js +22 -0
- package/build/server/stylelint/get-disable-diagnostic-rule.js.map +1 -0
- package/build/server/stylelint/index.d.ts +7 -0
- package/build/server/stylelint/index.js +8 -0
- package/build/server/stylelint/index.js.map +1 -0
- package/build/server/stylelint/is-disable-report-rule.d.ts +6 -0
- package/build/server/stylelint/is-disable-report-rule.js +17 -0
- package/build/server/stylelint/is-disable-report-rule.js.map +1 -0
- package/build/server/stylelint/load-stylelint.d.ts +23 -0
- package/build/server/stylelint/load-stylelint.js +173 -0
- package/build/server/stylelint/load-stylelint.js.map +1 -0
- package/build/server/stylelint/process-linter-result.d.ts +32 -0
- package/build/server/stylelint/process-linter-result.js +129 -0
- package/build/server/stylelint/process-linter-result.js.map +1 -0
- package/build/server/stylelint/types.d.ts +143 -0
- package/build/server/stylelint/types.js +47 -0
- package/build/server/stylelint/types.js.map +1 -0
- package/build/server/stylelint/warning-to-diagnostic.d.ts +46 -0
- package/build/server/stylelint/warning-to-diagnostic.js +143 -0
- package/build/server/stylelint/warning-to-diagnostic.js.map +1 -0
- package/build/server/tokens.d.ts +20 -0
- package/build/server/tokens.js +16 -0
- package/build/server/tokens.js.map +1 -0
- package/build/server/types.d.ts +74 -0
- package/build/server/types.js +18 -0
- package/build/server/types.js.map +1 -0
- package/build/server/utils/documents/create-text-edits.d.ts +10 -0
- package/build/server/utils/documents/create-text-edits.js +31 -0
- package/build/server/utils/documents/create-text-edits.js.map +1 -0
- package/build/server/utils/documents/get-disable-type.d.ts +26 -0
- package/build/server/utils/documents/get-disable-type.js +32 -0
- package/build/server/utils/documents/get-disable-type.js.map +1 -0
- package/build/server/utils/documents/get-edit-info.d.ts +14 -0
- package/build/server/utils/documents/get-edit-info.js +31 -0
- package/build/server/utils/documents/get-edit-info.js.map +1 -0
- package/build/server/utils/documents/get-fixes.d.ts +12 -0
- package/build/server/utils/documents/get-fixes.js +18 -0
- package/build/server/utils/documents/get-fixes.js.map +1 -0
- package/build/server/utils/documents/index.d.ts +4 -0
- package/build/server/utils/documents/index.js +5 -0
- package/build/server/utils/documents/index.js.map +1 -0
- package/build/server/utils/errors.d.ts +10 -0
- package/build/server/utils/errors.js +89 -0
- package/build/server/utils/errors.js.map +1 -0
- package/build/server/utils/fs.d.ts +4 -0
- package/build/server/utils/fs.js +11 -0
- package/build/server/utils/fs.js.map +1 -0
- package/build/server/utils/functions/get-first-return-value.d.ts +11 -0
- package/build/server/utils/functions/get-first-return-value.js +28 -0
- package/build/server/utils/functions/get-first-return-value.js.map +1 -0
- package/build/server/utils/functions/index.d.ts +2 -0
- package/build/server/utils/functions/index.js +3 -0
- package/build/server/utils/functions/index.js.map +1 -0
- package/build/server/utils/functions/lazy-call.d.ts +12 -0
- package/build/server/utils/functions/lazy-call.js +33 -0
- package/build/server/utils/functions/lazy-call.js.map +1 -0
- package/build/server/utils/index.d.ts +11 -0
- package/build/server/utils/index.js +12 -0
- package/build/server/utils/index.js.map +1 -0
- package/build/server/utils/iterables.d.ts +8 -0
- package/build/server/utils/iterables.js +15 -0
- package/build/server/utils/iterables.js.map +1 -0
- package/build/server/utils/logging/error-formatter.d.ts +7 -0
- package/build/server/utils/logging/error-formatter.js +14 -0
- package/build/server/utils/logging/error-formatter.js.map +1 -0
- package/build/server/utils/logging/get-log-function.d.ts +8 -0
- package/build/server/utils/logging/get-log-function.js +11 -0
- package/build/server/utils/logging/get-log-function.js.map +1 -0
- package/build/server/utils/logging/index.d.ts +4 -0
- package/build/server/utils/logging/index.js +5 -0
- package/build/server/utils/logging/index.js.map +1 -0
- package/build/server/utils/logging/language-server-formatter.d.ts +19 -0
- package/build/server/utils/logging/language-server-formatter.js +55 -0
- package/build/server/utils/logging/language-server-formatter.js.map +1 -0
- package/build/server/utils/logging/language-server-transport.d.ts +19 -0
- package/build/server/utils/logging/language-server-transport.js +39 -0
- package/build/server/utils/logging/language-server-transport.js.map +1 -0
- package/build/server/utils/lsp/create-disable-completion-item.d.ts +7 -0
- package/build/server/utils/lsp/create-disable-completion-item.js +32 -0
- package/build/server/utils/lsp/create-disable-completion-item.js.map +1 -0
- package/build/server/utils/lsp/display-error.d.ts +7 -0
- package/build/server/utils/lsp/display-error.js +24 -0
- package/build/server/utils/lsp/display-error.js.map +1 -0
- package/build/server/utils/lsp/index.d.ts +4 -0
- package/build/server/utils/lsp/index.js +5 -0
- package/build/server/utils/lsp/index.js.map +1 -0
- package/build/server/utils/lsp/rule-code-actions-collection.d.ts +29 -0
- package/build/server/utils/lsp/rule-code-actions-collection.js +61 -0
- package/build/server/utils/lsp/rule-code-actions-collection.js.map +1 -0
- package/build/server/utils/lsp/types.d.ts +22 -0
- package/build/server/utils/lsp/types.js +2 -0
- package/build/server/utils/lsp/types.js.map +1 -0
- package/build/server/utils/objects/index.d.ts +3 -0
- package/build/server/utils/objects/index.js +4 -0
- package/build/server/utils/objects/index.js.map +1 -0
- package/build/server/utils/objects/is-object.d.ts +8 -0
- package/build/server/utils/objects/is-object.js +13 -0
- package/build/server/utils/objects/is-object.js.map +1 -0
- package/build/server/utils/objects/merge-assign.d.ts +8 -0
- package/build/server/utils/objects/merge-assign.js +38 -0
- package/build/server/utils/objects/merge-assign.js.map +1 -0
- package/build/server/utils/objects/merge-options-with-defaults.d.ts +5 -0
- package/build/server/utils/objects/merge-options-with-defaults.js +56 -0
- package/build/server/utils/objects/merge-options-with-defaults.js.map +1 -0
- package/build/server/utils/sets.d.ts +6 -0
- package/build/server/utils/sets.js +22 -0
- package/build/server/utils/sets.js.map +1 -0
- package/build/server/utils/strings.d.ts +12 -0
- package/build/server/utils/strings.js +20 -0
- package/build/server/utils/strings.js.map +1 -0
- package/build/server/utils/types.d.ts +27 -0
- package/build/server/utils/types.js +2 -0
- package/build/server/utils/types.js.map +1 -0
- package/build/server/worker/types.d.ts +63 -0
- package/build/server/worker/types.js +2 -0
- package/build/server/worker/types.js.map +1 -0
- package/build/server/worker/worker-entry.d.ts +1 -0
- package/build/server/worker/worker-entry.js +320 -0
- package/build/server/worker/worker-entry.js.map +1 -0
- package/build/server/worker/worker-logging.service.d.ts +18 -0
- package/build/server/worker/worker-logging.service.js +61 -0
- package/build/server/worker/worker-logging.service.js.map +1 -0
- package/build/server/worker/worker-process.d.ts +54 -0
- package/build/server/worker/worker-process.js +266 -0
- package/build/server/worker/worker-process.js.map +1 -0
- package/build/shared/log-level.d.ts +5 -0
- package/build/shared/log-level.js +11 -0
- package/build/shared/log-level.js.map +1 -0
- package/build/shared/types.d.ts +9 -0
- package/build/shared/types.js +3 -0
- package/build/shared/types.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { DidChangeConfigurationNotification, TextDocumentSyncKind, } from 'vscode-languageserver-protocol';
|
|
2
|
+
import { isLanguageServerServiceInstance } from '../decorators.js';
|
|
3
|
+
import { CommandService, NotificationService, StylelintRunnerService, WorkspaceOptionsService, } from '../services/index.js';
|
|
4
|
+
import { textDocumentsToken } from '../tokens.js';
|
|
5
|
+
import { mergeAssign } from '../utils/index.js';
|
|
6
|
+
import { LanguageServerServiceRuntime, } from './lsp-service-runtime.js';
|
|
7
|
+
const defaultRuntimeFactory = (commandService, options) => new LanguageServerServiceRuntime(commandService, options);
|
|
8
|
+
class LanguageServerFeature {
|
|
9
|
+
#connection;
|
|
10
|
+
#documentDisposables = [];
|
|
11
|
+
#runtimeFactory;
|
|
12
|
+
#documents;
|
|
13
|
+
#commandService;
|
|
14
|
+
#notificationService;
|
|
15
|
+
#optionsService;
|
|
16
|
+
#runner;
|
|
17
|
+
#serviceRuntime;
|
|
18
|
+
#supportsWorkspaceConfiguration = false;
|
|
19
|
+
constructor(connection, runtimeFactory) {
|
|
20
|
+
this.#connection = connection;
|
|
21
|
+
this.#runtimeFactory = runtimeFactory;
|
|
22
|
+
}
|
|
23
|
+
start(context) {
|
|
24
|
+
if (this.#serviceRuntime) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
this.#documents = context.resolve(textDocumentsToken);
|
|
28
|
+
this.#commandService = context.resolve(CommandService);
|
|
29
|
+
this.#notificationService = context.resolve(NotificationService);
|
|
30
|
+
this.#optionsService = context.resolve(WorkspaceOptionsService);
|
|
31
|
+
this.#runner = context.resolve(StylelintRunnerService);
|
|
32
|
+
this.#serviceRuntime = this.#runtimeFactory(this.#commandService, {
|
|
33
|
+
documents: this.#documents,
|
|
34
|
+
});
|
|
35
|
+
this.#documents.listen(this.#connection);
|
|
36
|
+
this.#commandService.register();
|
|
37
|
+
this.#registerDocumentHandlers();
|
|
38
|
+
this.#registerConnectionHandlers();
|
|
39
|
+
this.#registerServices(context.metadata.services);
|
|
40
|
+
this.#serviceRuntime.registerCommandHandlers();
|
|
41
|
+
}
|
|
42
|
+
shutdown() {
|
|
43
|
+
if (!this.#serviceRuntime) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.#serviceRuntime.dispose();
|
|
47
|
+
this.#serviceRuntime = undefined;
|
|
48
|
+
this.#disposeDocumentHandlers();
|
|
49
|
+
if (this.#commandService) {
|
|
50
|
+
this.#commandService.dispose();
|
|
51
|
+
this.#commandService = undefined;
|
|
52
|
+
}
|
|
53
|
+
if (this.#notificationService) {
|
|
54
|
+
this.#notificationService.dispose();
|
|
55
|
+
this.#notificationService = undefined;
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
this.#runner?.dispose();
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// Ignore resolution issues during shutdown.
|
|
62
|
+
}
|
|
63
|
+
this.#runner = undefined;
|
|
64
|
+
}
|
|
65
|
+
dispose() {
|
|
66
|
+
this.#disposeDocumentHandlers();
|
|
67
|
+
}
|
|
68
|
+
#registerServices(services) {
|
|
69
|
+
if (!this.#serviceRuntime) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
for (const service of services) {
|
|
73
|
+
if (!isLanguageServerServiceInstance(service)) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
this.#serviceRuntime.registerService(service);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
#registerDocumentHandlers() {
|
|
80
|
+
if (!this.#documents || !this.#optionsService) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const disposable = this.#documents.onDidClose(({ document }) => {
|
|
84
|
+
this.#optionsService?.delete(document.uri);
|
|
85
|
+
});
|
|
86
|
+
this.#documentDisposables.push(disposable);
|
|
87
|
+
}
|
|
88
|
+
#disposeDocumentHandlers() {
|
|
89
|
+
for (const disposable of this.#documentDisposables) {
|
|
90
|
+
try {
|
|
91
|
+
disposable.dispose();
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// Best-effort cleanup.
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
this.#documentDisposables.length = 0;
|
|
98
|
+
}
|
|
99
|
+
#registerConnectionHandlers() {
|
|
100
|
+
this.#connection.onInitialize((params) => this.#handleInitialize(params));
|
|
101
|
+
this.#connection.onInitialized((params) => {
|
|
102
|
+
void this.#handleInitialized(params);
|
|
103
|
+
});
|
|
104
|
+
this.#connection.onDidChangeConfiguration((params) => this.#handleDidChangeConfiguration(params));
|
|
105
|
+
}
|
|
106
|
+
#handleInitialize(params) {
|
|
107
|
+
this.#supportsWorkspaceConfiguration = Boolean(params.capabilities.workspace?.configuration);
|
|
108
|
+
this.#optionsService?.setSupportsWorkspaceConfiguration(this.#supportsWorkspaceConfiguration);
|
|
109
|
+
const baseResult = {
|
|
110
|
+
capabilities: {
|
|
111
|
+
textDocumentSync: TextDocumentSyncKind.Full,
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
const decorated = this.#serviceRuntime?.runInitializers(params);
|
|
115
|
+
if (decorated) {
|
|
116
|
+
mergeAssign(baseResult, decorated);
|
|
117
|
+
}
|
|
118
|
+
return baseResult;
|
|
119
|
+
}
|
|
120
|
+
async #handleInitialized(_params) {
|
|
121
|
+
if (!this.#supportsWorkspaceConfiguration) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
await this.#connection.client.register(DidChangeConfigurationNotification.type, {
|
|
125
|
+
section: 'stylelint',
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
#handleDidChangeConfiguration(params) {
|
|
129
|
+
if (!this.#optionsService) {
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
this.#optionsService.clearCache();
|
|
133
|
+
this.#optionsService.updateGlobalOptions(params.settings);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Creates a runtime feature that wires the language server to the shared runtime.
|
|
138
|
+
*/
|
|
139
|
+
export function createLanguageServerFeature(options) {
|
|
140
|
+
return new LanguageServerFeature(options.connection, options.runtimeFactory ?? defaultRuntimeFactory);
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=language-server-feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"language-server-feature.js","sourceRoot":"","sources":["../../../src/server/runtime/language-server-feature.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { TextDocuments } from 'vscode-languageserver';
|
|
2
|
+
import type * as LSP from 'vscode-languageserver-protocol';
|
|
3
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
4
|
+
import { CommandService } from '../services/infrastructure/command.service.js';
|
|
5
|
+
export interface LanguageServerServiceRuntimeOptions {
|
|
6
|
+
documents?: TextDocuments<TextDocument>;
|
|
7
|
+
}
|
|
8
|
+
export declare class LanguageServerServiceRuntime {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(commands: CommandService, options?: LanguageServerServiceRuntimeOptions);
|
|
11
|
+
registerService(service: object): void;
|
|
12
|
+
runInitializers(params: LSP.InitializeParams): Partial<LSP.InitializeResult> | undefined;
|
|
13
|
+
registerCommandHandlers(): void;
|
|
14
|
+
dispose(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { mergeAssign } from '../utils/index.js';
|
|
2
|
+
import { getLanguageServerServiceMetadata, } from '../decorators.js';
|
|
3
|
+
export class LanguageServerServiceRuntime {
|
|
4
|
+
#commands;
|
|
5
|
+
#documents;
|
|
6
|
+
#services = new Set();
|
|
7
|
+
#commandsRegistered = false;
|
|
8
|
+
constructor(commands, options = {}) {
|
|
9
|
+
this.#commands = commands;
|
|
10
|
+
this.#documents = options.documents;
|
|
11
|
+
}
|
|
12
|
+
registerService(service) {
|
|
13
|
+
if (!getLanguageServerServiceMetadata(service)) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
this.#services.add(service);
|
|
17
|
+
this.#registerTextDocumentHandlers(service);
|
|
18
|
+
}
|
|
19
|
+
runInitializers(params) {
|
|
20
|
+
let aggregated;
|
|
21
|
+
for (const service of this.#services) {
|
|
22
|
+
const metadata = getLanguageServerServiceMetadata(service);
|
|
23
|
+
if (!metadata) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
for (const initializer of metadata.initializerHandlers) {
|
|
27
|
+
const result = initializer(params);
|
|
28
|
+
if (!result) {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
if (!aggregated) {
|
|
32
|
+
aggregated = { ...result };
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
mergeAssign(aggregated, result);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return aggregated;
|
|
39
|
+
}
|
|
40
|
+
registerCommandHandlers() {
|
|
41
|
+
if (this.#commandsRegistered) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
for (const service of this.#services) {
|
|
45
|
+
const metadata = getLanguageServerServiceMetadata(service);
|
|
46
|
+
if (!metadata) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
for (const handlerMetadata of metadata.commandHandlers) {
|
|
50
|
+
const handler = this.#createCommandHandler(service, handlerMetadata);
|
|
51
|
+
const disposable = this.#commands.on(handlerMetadata.commandId, handler);
|
|
52
|
+
metadata.disposables.push(disposable);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
this.#commandsRegistered = true;
|
|
56
|
+
}
|
|
57
|
+
dispose() {
|
|
58
|
+
for (const service of this.#services) {
|
|
59
|
+
const metadata = getLanguageServerServiceMetadata(service);
|
|
60
|
+
if (!metadata) {
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
this.#runShutdownHandlers(metadata);
|
|
64
|
+
this.#disposeMetadata(metadata);
|
|
65
|
+
}
|
|
66
|
+
this.#services.clear();
|
|
67
|
+
}
|
|
68
|
+
#disposeMetadata(metadata) {
|
|
69
|
+
for (const disposable of metadata.disposables) {
|
|
70
|
+
try {
|
|
71
|
+
disposable.dispose();
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// Best effort cleanup.
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
metadata.disposables.length = 0;
|
|
78
|
+
}
|
|
79
|
+
#createCommandHandler(_service, descriptor) {
|
|
80
|
+
return async (params) => {
|
|
81
|
+
const args = params.arguments ?? [];
|
|
82
|
+
const minArgs = descriptor.options?.minArgs;
|
|
83
|
+
if (typeof minArgs === 'number' && args.length < minArgs) {
|
|
84
|
+
return {};
|
|
85
|
+
}
|
|
86
|
+
// Argument type checking is not performed here; it is the
|
|
87
|
+
// responsibility of the command handler to validate arguments.
|
|
88
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
89
|
+
const result = descriptor.handler(...args);
|
|
90
|
+
const awaited = await Promise.resolve(result);
|
|
91
|
+
return awaited ?? {};
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
#registerTextDocumentHandlers(service) {
|
|
95
|
+
const metadata = getLanguageServerServiceMetadata(service);
|
|
96
|
+
if (!metadata || metadata.textDocumentHandlers.length === 0) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (!this.#documents) {
|
|
100
|
+
throw new Error('@textDocumentEvent() requires a TextDocuments instance. Provide one when creating LanguageServerServiceDecoratorsHost.');
|
|
101
|
+
}
|
|
102
|
+
for (const descriptor of metadata.textDocumentHandlers) {
|
|
103
|
+
const disposable = this.#registerTextDocumentHandler(descriptor);
|
|
104
|
+
metadata.disposables.push(disposable);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
#registerTextDocumentHandler(descriptor) {
|
|
108
|
+
const documents = this.#documents;
|
|
109
|
+
const wrappedHandler = (event) => {
|
|
110
|
+
void descriptor.handler(event)?.catch(() => {
|
|
111
|
+
// Ignore errors from async handlers to avoid crashing document events.
|
|
112
|
+
});
|
|
113
|
+
};
|
|
114
|
+
const registrar = documents[descriptor.event];
|
|
115
|
+
return registrar(wrappedHandler);
|
|
116
|
+
}
|
|
117
|
+
#runShutdownHandlers(metadata) {
|
|
118
|
+
for (const handler of metadata.shutdownHandlers) {
|
|
119
|
+
try {
|
|
120
|
+
const result = handler();
|
|
121
|
+
if (result && typeof result.then === 'function') {
|
|
122
|
+
void result.catch(() => {
|
|
123
|
+
// Suppress shutdown handler errors during disposal.
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// Ignore failures to ensure shutdown continues.
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=lsp-service-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-service-runtime.js","sourceRoot":"","sources":["../../../src/server/runtime/lsp-service-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Connection } from 'vscode-languageserver';
|
|
2
|
+
import type { LogLevel } from '../shared/log-level.js';
|
|
3
|
+
export interface StylelintLanguageServerOptions {
|
|
4
|
+
connection: Connection;
|
|
5
|
+
logLevel?: LogLevel;
|
|
6
|
+
logPath?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class StylelintLanguageServer {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(options: StylelintLanguageServerOptions);
|
|
11
|
+
start(): Promise<void>;
|
|
12
|
+
dispose(): Promise<void>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// @no-unit-test -- Simple bootstrap code not needing unit tests; tested via integration tests.
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
import { module } from '../di/index.js';
|
|
4
|
+
import { platformModule } from './modules/index.js';
|
|
5
|
+
import { createLanguageServerApplication } from './runtime/application.js';
|
|
6
|
+
import { languageServerModule } from './server.module.js';
|
|
7
|
+
import { createWinstonLoggingService, winstonToken } from './services/index.js';
|
|
8
|
+
export class StylelintLanguageServer {
|
|
9
|
+
#application;
|
|
10
|
+
#options;
|
|
11
|
+
constructor(options) {
|
|
12
|
+
this.#options = options;
|
|
13
|
+
}
|
|
14
|
+
async start() {
|
|
15
|
+
if (this.#application) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const featureModule = module({
|
|
19
|
+
imports: [languageServerModule],
|
|
20
|
+
register: [
|
|
21
|
+
createWinstonLoggingService(this.#options.logLevel ?? 'info', this.#options.logPath),
|
|
22
|
+
],
|
|
23
|
+
});
|
|
24
|
+
this.#application = createLanguageServerApplication({
|
|
25
|
+
connection: this.#options.connection,
|
|
26
|
+
modules: [platformModule, featureModule],
|
|
27
|
+
overrides: [[winstonToken, winston]],
|
|
28
|
+
});
|
|
29
|
+
await this.#application.start();
|
|
30
|
+
this.#options.connection.listen();
|
|
31
|
+
}
|
|
32
|
+
async dispose() {
|
|
33
|
+
await this.#application?.dispose();
|
|
34
|
+
this.#application = undefined;
|
|
35
|
+
this.#options.connection.dispose();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAG/F,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAShF,MAAM,OAAO,uBAAuB;IACnC,YAAY,CAAsD;IACzD,QAAQ,CAAiC;IAElD,YAAY,OAAuC;QAClD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,KAAK;QACV,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO;QACR,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,CAAC;YAC5B,OAAO,EAAE,CAAC,oBAAoB,CAAC;YAC/B,QAAQ,EAAE;gBACT,2BAA2B,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;aACpF;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,GAAG,+BAA+B,CAAC;YACnD,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YACpC,OAAO,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC;YACxC,SAAS,EAAE,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;SACpC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,OAAO;QACZ,MAAM,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const languageServerModule: import("../di/module.js").ModuleMetadata;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// @no-unit-test -- No logic, just DI module definition.
|
|
2
|
+
import { module } from '../di/index.js';
|
|
3
|
+
import { documentsModule, infrastructureModule, lspModule, stylelintRuntimeModule, workspaceModule, } from './modules/index.js';
|
|
4
|
+
export const languageServerModule = module({
|
|
5
|
+
imports: [
|
|
6
|
+
infrastructureModule,
|
|
7
|
+
workspaceModule,
|
|
8
|
+
stylelintRuntimeModule,
|
|
9
|
+
documentsModule,
|
|
10
|
+
lspModule,
|
|
11
|
+
],
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=server.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.module.js","sourceRoot":"","sources":["../../src/server/server.module.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAExD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EACN,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,sBAAsB,EACtB,eAAe,GACf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,CAAC,MAAM,oBAAoB,GAAG,MAAM,CAAC;IAC1C,OAAO,EAAE;QACR,oBAAoB;QACpB,eAAe;QACf,sBAAsB;QACtB,eAAe;QACf,SAAS;KACT;CACD,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type LSP from 'vscode-languageserver-protocol';
|
|
2
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
3
|
+
import type { LintDiagnostics } from '../../stylelint/index.js';
|
|
4
|
+
import { type LoggingService } from '../infrastructure/logging.service.js';
|
|
5
|
+
export type DocumentLintResult = (LintDiagnostics & {
|
|
6
|
+
version: number;
|
|
7
|
+
}) | undefined;
|
|
8
|
+
export declare class DocumentDiagnosticsService {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(loggingService: LoggingService);
|
|
11
|
+
set(document: TextDocument, diagnostics: LSP.Diagnostic[], lintResult?: LintDiagnostics): void;
|
|
12
|
+
clear(uri: string): void;
|
|
13
|
+
getDiagnostics(uri: string): LSP.Diagnostic[];
|
|
14
|
+
getLintResult(uri: string): DocumentLintResult;
|
|
15
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { inject } from '../../../di/inject.js';
|
|
36
|
+
import { loggingServiceToken } from '../infrastructure/logging.service.js';
|
|
37
|
+
let DocumentDiagnosticsService = (() => {
|
|
38
|
+
let _classDecorators = [inject({
|
|
39
|
+
inject: [loggingServiceToken],
|
|
40
|
+
})];
|
|
41
|
+
let _classDescriptor;
|
|
42
|
+
let _classExtraInitializers = [];
|
|
43
|
+
let _classThis;
|
|
44
|
+
var DocumentDiagnosticsService = class {
|
|
45
|
+
static { _classThis = this; }
|
|
46
|
+
static {
|
|
47
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
48
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
49
|
+
DocumentDiagnosticsService = _classThis = _classDescriptor.value;
|
|
50
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
51
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
52
|
+
}
|
|
53
|
+
#logger;
|
|
54
|
+
#diagnostics = new Map();
|
|
55
|
+
#lintResults = new Map();
|
|
56
|
+
constructor(loggingService) {
|
|
57
|
+
this.#logger = loggingService.createLogger(DocumentDiagnosticsService);
|
|
58
|
+
}
|
|
59
|
+
set(document, diagnostics, lintResult) {
|
|
60
|
+
this.#diagnostics.set(document.uri, diagnostics);
|
|
61
|
+
if (lintResult) {
|
|
62
|
+
this.#lintResults.set(document.uri, { ...lintResult, version: document.version });
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.#lintResults.delete(document.uri);
|
|
66
|
+
}
|
|
67
|
+
this.#logger?.debug('Updated diagnostics cache', {
|
|
68
|
+
uri: document.uri,
|
|
69
|
+
diagnostics: diagnostics.length,
|
|
70
|
+
hasLintResult: Boolean(lintResult),
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
clear(uri) {
|
|
74
|
+
this.#diagnostics.delete(uri);
|
|
75
|
+
this.#lintResults.delete(uri);
|
|
76
|
+
this.#logger?.debug('Cleared diagnostics cache', { uri });
|
|
77
|
+
}
|
|
78
|
+
getDiagnostics(uri) {
|
|
79
|
+
return this.#diagnostics.get(uri) ?? [];
|
|
80
|
+
}
|
|
81
|
+
getLintResult(uri) {
|
|
82
|
+
return this.#lintResults.get(uri);
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
return DocumentDiagnosticsService = _classThis;
|
|
86
|
+
})();
|
|
87
|
+
export { DocumentDiagnosticsService };
|
|
88
|
+
//# sourceMappingURL=document-diagnostics.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-diagnostics.service.js","sourceRoot":"","sources":["../../../../src/server/services/documents/document-diagnostics.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAuB,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;IAOnF,0BAA0B;4BAHtC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,mBAAmB,CAAC;SAC7B,CAAC;;;;;;;;YACF,6KAuCC;;;YAvCY,uDAA0B;;QACtC,OAAO,CAAkB;QACzB,YAAY,GAAG,IAAI,GAAG,EAA4B,CAAC;QACnD,YAAY,GAAG,IAAI,GAAG,EAAkD,CAAC;QAEzE,YAAY,cAA8B;YACzC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,0BAA0B,CAAC,CAAC;QACxE,CAAC;QAED,GAAG,CAAC,QAAsB,EAAE,WAA6B,EAAE,UAA4B;YACtF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAEjD,IAAI,UAAU,EAAE,CAAC;gBAChB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC;YAED,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,2BAA2B,EAAE;gBAChD,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,WAAW,EAAE,WAAW,CAAC,MAAM;gBAC/B,aAAa,EAAE,OAAO,CAAC,UAAU,CAAC;aAClC,CAAC,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,GAAW;YAChB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE9B,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,cAAc,CAAC,GAAW;YACzB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACzC,CAAC;QAED,aAAa,CAAC,GAAW;YACxB,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC;;;;SAtCW,0BAA0B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type stylelint from 'stylelint';
|
|
2
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
3
|
+
import type { TextEdit } from 'vscode-languageserver-types';
|
|
4
|
+
import { getFixes } from '../../utils/index.js';
|
|
5
|
+
import { type LoggingService } from '../infrastructure/logging.service.js';
|
|
6
|
+
import { StylelintRunnerService } from '../stylelint-runtime/stylelint-runner.service.js';
|
|
7
|
+
import { WorkspaceOptionsService } from '../workspace/workspace-options.service.js';
|
|
8
|
+
export declare const getFixesFnToken: import("../../../di/tokens.js").Token<typeof getFixes>;
|
|
9
|
+
export declare class DocumentFixesService {
|
|
10
|
+
#private;
|
|
11
|
+
constructor(runner: StylelintRunnerService, options: WorkspaceOptionsService, loggingService: LoggingService, getFixesFn: typeof getFixes);
|
|
12
|
+
getFixes(document: TextDocument, linterOptions?: stylelint.LinterOptions): Promise<TextEdit[]>;
|
|
13
|
+
resolveConfig(document: TextDocument): Promise<stylelint.Config | undefined>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { createToken, inject } from '../../../di/index.js';
|
|
36
|
+
import { loggingServiceToken } from '../infrastructure/logging.service.js';
|
|
37
|
+
import { StylelintRunnerService } from '../stylelint-runtime/stylelint-runner.service.js';
|
|
38
|
+
import { WorkspaceOptionsService } from '../workspace/workspace-options.service.js';
|
|
39
|
+
export const getFixesFnToken = createToken('DocumentFixesGetFixesFn');
|
|
40
|
+
let DocumentFixesService = (() => {
|
|
41
|
+
let _classDecorators = [inject({
|
|
42
|
+
inject: [StylelintRunnerService, WorkspaceOptionsService, loggingServiceToken, getFixesFnToken],
|
|
43
|
+
})];
|
|
44
|
+
let _classDescriptor;
|
|
45
|
+
let _classExtraInitializers = [];
|
|
46
|
+
let _classThis;
|
|
47
|
+
var DocumentFixesService = class {
|
|
48
|
+
static { _classThis = this; }
|
|
49
|
+
static {
|
|
50
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
51
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
52
|
+
DocumentFixesService = _classThis = _classDescriptor.value;
|
|
53
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
54
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
55
|
+
}
|
|
56
|
+
#runner;
|
|
57
|
+
#options;
|
|
58
|
+
#logger;
|
|
59
|
+
#getFixes;
|
|
60
|
+
constructor(runner, options, loggingService, getFixesFn) {
|
|
61
|
+
this.#runner = runner;
|
|
62
|
+
this.#options = options;
|
|
63
|
+
this.#logger = loggingService.createLogger(DocumentFixesService);
|
|
64
|
+
this.#getFixes = getFixesFn;
|
|
65
|
+
}
|
|
66
|
+
async getFixes(document, linterOptions = {}) {
|
|
67
|
+
try {
|
|
68
|
+
const options = await this.#options.getOptions(document.uri);
|
|
69
|
+
const edits = await this.#getFixes(this.#runner, document, linterOptions, options);
|
|
70
|
+
this.#logger?.debug('Fixes retrieved', { uri: document.uri, edits });
|
|
71
|
+
return edits;
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
this.#logger?.error('Error getting fixes', { uri: document.uri, error });
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async resolveConfig(document) {
|
|
79
|
+
try {
|
|
80
|
+
const runnerOptions = await this.#options.getOptions(document.uri);
|
|
81
|
+
const config = await this.#runner.resolveConfig(document, runnerOptions);
|
|
82
|
+
this.#logger?.debug('Config resolved', { uri: document.uri, hasConfig: Boolean(config) });
|
|
83
|
+
return config;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
this.#logger?.error('Error resolving config', { uri: document.uri, error });
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
return DocumentFixesService = _classThis;
|
|
92
|
+
})();
|
|
93
|
+
export { DocumentFixesService };
|
|
94
|
+
//# sourceMappingURL=document-fixes.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-fixes.service.js","sourceRoot":"","sources":["../../../../src/server/services/documents/document-fixes.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG3D,OAAO,EAAuB,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAChG,OAAO,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,2CAA2C,CAAC;AAEpF,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAkB,yBAAyB,CAAC,CAAC;IAK1E,oBAAoB;4BAHhC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,eAAe,CAAC;SAC/F,CAAC;;;;;;;;YACF,6KAkDC;;;YAlDY,uDAAoB;;QAChC,OAAO,CAAyB;QAChC,QAAQ,CAA0B;QAClC,OAAO,CAAkB;QACzB,SAAS,CAAkB;QAE3B,YACC,MAA8B,EAC9B,OAAgC,EAChC,cAA8B,EAC9B,UAA2B;YAE3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,QAAQ,CACb,QAAsB,EACtB,gBAAyC,EAAE;YAE3C,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;gBAEnF,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;gBAErE,OAAO,KAAK,CAAC;YACd,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,qBAAqB,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;gBAEzE,OAAO,EAAE,CAAC;YACX,CAAC;QACF,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,QAAsB;YACzC,IAAI,CAAC;gBACJ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,aAA8B,CAAC,CAAC;gBAE1F,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAE1F,OAAO,MAAM,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;gBAE5E,OAAO,SAAS,CAAC;YAClB,CAAC;QACF,CAAC;;;;SAjDW,oBAAoB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/services/documents/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC"}
|