@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,183 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
import * as LSP from 'vscode-languageserver-protocol';
|
|
36
|
+
import { inject } from '../../../di/index.js';
|
|
37
|
+
import { getDisableType, createDisableCompletionItem } from '../../utils/index.js';
|
|
38
|
+
import { completionRequest, initialize, lspService } from '../../decorators.js';
|
|
39
|
+
import { DisableMetadataLookupTable, DisableReportRuleNames } from '../../stylelint/index.js';
|
|
40
|
+
import { textDocumentsToken } from '../../tokens.js';
|
|
41
|
+
import { DocumentDiagnosticsService } from '../documents/document-diagnostics.service.js';
|
|
42
|
+
import { loggingServiceToken } from '../infrastructure/logging.service.js';
|
|
43
|
+
import { WorkspaceOptionsService } from '../workspace/workspace-options.service.js';
|
|
44
|
+
let CompletionService = (() => {
|
|
45
|
+
let _classDecorators = [lspService(), inject({
|
|
46
|
+
inject: [
|
|
47
|
+
textDocumentsToken,
|
|
48
|
+
WorkspaceOptionsService,
|
|
49
|
+
DocumentDiagnosticsService,
|
|
50
|
+
loggingServiceToken,
|
|
51
|
+
],
|
|
52
|
+
})];
|
|
53
|
+
let _classDescriptor;
|
|
54
|
+
let _classExtraInitializers = [];
|
|
55
|
+
let _classThis;
|
|
56
|
+
let _instanceExtraInitializers = [];
|
|
57
|
+
let _onInitialize_decorators;
|
|
58
|
+
let _handleCompletion_decorators;
|
|
59
|
+
var CompletionService = class {
|
|
60
|
+
static { _classThis = this; }
|
|
61
|
+
static {
|
|
62
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
63
|
+
_onInitialize_decorators = [initialize()];
|
|
64
|
+
_handleCompletion_decorators = [completionRequest()];
|
|
65
|
+
__esDecorate(this, null, _onInitialize_decorators, { kind: "method", name: "onInitialize", static: false, private: false, access: { has: obj => "onInitialize" in obj, get: obj => obj.onInitialize }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
66
|
+
__esDecorate(this, null, _handleCompletion_decorators, { kind: "method", name: "handleCompletion", static: false, private: false, access: { has: obj => "handleCompletion" in obj, get: obj => obj.handleCompletion }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
67
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
68
|
+
CompletionService = _classThis = _classDescriptor.value;
|
|
69
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
70
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
71
|
+
}
|
|
72
|
+
#documents = __runInitializers(this, _instanceExtraInitializers);
|
|
73
|
+
#options;
|
|
74
|
+
#diagnostics;
|
|
75
|
+
#logger;
|
|
76
|
+
constructor(documents, options, diagnostics, loggingService) {
|
|
77
|
+
this.#documents = documents;
|
|
78
|
+
this.#options = options;
|
|
79
|
+
this.#diagnostics = diagnostics;
|
|
80
|
+
this.#logger = loggingService.createLogger(CompletionService);
|
|
81
|
+
}
|
|
82
|
+
onInitialize() {
|
|
83
|
+
return {
|
|
84
|
+
capabilities: {
|
|
85
|
+
completionProvider: {},
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
async #shouldComplete(document) {
|
|
90
|
+
const options = await this.#options.getOptions(document.uri);
|
|
91
|
+
return (options.validate.includes(document.languageId) &&
|
|
92
|
+
options.snippet.includes(document.languageId));
|
|
93
|
+
}
|
|
94
|
+
async handleCompletion(params) {
|
|
95
|
+
const { textDocument, position } = params;
|
|
96
|
+
const { uri } = textDocument;
|
|
97
|
+
this.#logger?.debug('Received onCompletion', { uri, position });
|
|
98
|
+
const document = this.#documents.get(uri);
|
|
99
|
+
if (!document || !(await this.#shouldComplete(document))) {
|
|
100
|
+
if (this.#logger?.isDebugEnabled()) {
|
|
101
|
+
if (!document) {
|
|
102
|
+
this.#logger.debug('Unknown document, ignoring', { uri });
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.#logger.debug('Snippets or validation not enabled for language, ignoring', {
|
|
106
|
+
uri,
|
|
107
|
+
language: document.languageId,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
const diagnostics = this.#diagnostics.getDiagnostics(uri);
|
|
114
|
+
if (!diagnostics || diagnostics.length === 0) {
|
|
115
|
+
const items = [
|
|
116
|
+
createDisableCompletionItem('stylelint-disable-line'),
|
|
117
|
+
createDisableCompletionItem('stylelint-disable-next-line'),
|
|
118
|
+
createDisableCompletionItem('stylelint-disable'),
|
|
119
|
+
];
|
|
120
|
+
this.#logger?.debug('No diagnostics for document, returning generic completion items', {
|
|
121
|
+
uri,
|
|
122
|
+
items,
|
|
123
|
+
});
|
|
124
|
+
return items;
|
|
125
|
+
}
|
|
126
|
+
const thisLineRules = new Set();
|
|
127
|
+
const nextLineRules = new Set();
|
|
128
|
+
const disableTable = new DisableMetadataLookupTable(diagnostics);
|
|
129
|
+
for (const { code, range } of diagnostics) {
|
|
130
|
+
if (!code ||
|
|
131
|
+
typeof code !== 'string' ||
|
|
132
|
+
code === 'CssSyntaxError' ||
|
|
133
|
+
disableTable.find({
|
|
134
|
+
type: DisableReportRuleNames.Needless,
|
|
135
|
+
rule: code,
|
|
136
|
+
range,
|
|
137
|
+
}).size > 0) {
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (range.start.line === position.line) {
|
|
141
|
+
thisLineRules.add(code);
|
|
142
|
+
}
|
|
143
|
+
else if (range.start.line === position.line + 1) {
|
|
144
|
+
nextLineRules.add(code);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return this.#createCompletionItems(document, position, thisLineRules, nextLineRules);
|
|
148
|
+
}
|
|
149
|
+
#createCompletionItems(document, position, thisLineRules, nextLineRules) {
|
|
150
|
+
const disableType = getDisableType(document, position);
|
|
151
|
+
const results = [];
|
|
152
|
+
if (disableType === 'stylelint-disable-line') {
|
|
153
|
+
for (const rule of thisLineRules) {
|
|
154
|
+
results.push({
|
|
155
|
+
label: rule,
|
|
156
|
+
kind: LSP.CompletionItemKind.Snippet,
|
|
157
|
+
detail: `disable ${rule} rule. (Stylelint)`,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (disableType === 'stylelint-disable' ||
|
|
162
|
+
disableType === 'stylelint-disable-next-line') {
|
|
163
|
+
for (const rule of nextLineRules) {
|
|
164
|
+
results.push({
|
|
165
|
+
label: rule,
|
|
166
|
+
kind: LSP.CompletionItemKind.Snippet,
|
|
167
|
+
detail: `disable ${rule} rule. (Stylelint)`,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
results.push(createDisableCompletionItem('stylelint-disable-line', thisLineRules.size === 1 ? thisLineRules.values().next().value : undefined));
|
|
173
|
+
results.push(createDisableCompletionItem('stylelint-disable-next-line', nextLineRules.size === 1 ? nextLineRules.values().next().value : undefined));
|
|
174
|
+
results.push(createDisableCompletionItem('stylelint-disable'));
|
|
175
|
+
}
|
|
176
|
+
this.#logger?.debug('Returning completion items', { uri: document.uri, results });
|
|
177
|
+
return results;
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
return CompletionService = _classThis;
|
|
181
|
+
})();
|
|
182
|
+
export { CompletionService };
|
|
183
|
+
//# sourceMappingURL=completion.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.service.js","sourceRoot":"","sources":["../../../../src/server/services/lsp/completion.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Connection, TextDocumentChangeEvent } from 'vscode-languageserver';
|
|
2
|
+
import type LSP from 'vscode-languageserver-protocol';
|
|
3
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
4
|
+
import { type LoggingService } from '../infrastructure/logging.service.js';
|
|
5
|
+
import { WorkspaceFolderService } from '../workspace/workspace-folder.service.js';
|
|
6
|
+
import { WorkspaceOptionsService } from '../workspace/workspace-options.service.js';
|
|
7
|
+
/**
|
|
8
|
+
* Service that warns users when the `stylelint.config` setting is set to an
|
|
9
|
+
* empty object (`{}`), which overrides config file lookup and may cause
|
|
10
|
+
* confusing "No rules found" errors.
|
|
11
|
+
*/
|
|
12
|
+
export declare class EmptyConfigWarningLspService {
|
|
13
|
+
#private;
|
|
14
|
+
constructor(options: WorkspaceOptionsService, workspaceFolderService: WorkspaceFolderService, connection: Connection, loggingService: LoggingService);
|
|
15
|
+
handleDocumentOpened({ document }: TextDocumentChangeEvent<TextDocument>): Promise<void>;
|
|
16
|
+
onInitialize(params?: LSP.InitializeParams): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
import { inject } from '../../../di/index.js';
|
|
36
|
+
import { initialize, lspService, textDocumentEvent } from '../../decorators.js';
|
|
37
|
+
import { lspConnectionToken } from '../../tokens.js';
|
|
38
|
+
import { isEmptyObject } from '../../utils/index.js';
|
|
39
|
+
import { loggingServiceToken } from '../infrastructure/logging.service.js';
|
|
40
|
+
import { WorkspaceFolderService } from '../workspace/workspace-folder.service.js';
|
|
41
|
+
import { WorkspaceOptionsService } from '../workspace/workspace-options.service.js';
|
|
42
|
+
/**
|
|
43
|
+
* Service that warns users when the `stylelint.config` setting is set to an
|
|
44
|
+
* empty object (`{}`), which overrides config file lookup and may cause
|
|
45
|
+
* confusing "No rules found" errors.
|
|
46
|
+
*/
|
|
47
|
+
let EmptyConfigWarningLspService = (() => {
|
|
48
|
+
let _classDecorators = [lspService(), inject({
|
|
49
|
+
inject: [
|
|
50
|
+
WorkspaceOptionsService,
|
|
51
|
+
WorkspaceFolderService,
|
|
52
|
+
lspConnectionToken,
|
|
53
|
+
loggingServiceToken,
|
|
54
|
+
],
|
|
55
|
+
})];
|
|
56
|
+
let _classDescriptor;
|
|
57
|
+
let _classExtraInitializers = [];
|
|
58
|
+
let _classThis;
|
|
59
|
+
let _instanceExtraInitializers = [];
|
|
60
|
+
let _handleDocumentOpened_decorators;
|
|
61
|
+
let _onInitialize_decorators;
|
|
62
|
+
var EmptyConfigWarningLspService = class {
|
|
63
|
+
static { _classThis = this; }
|
|
64
|
+
static {
|
|
65
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
66
|
+
_handleDocumentOpened_decorators = [textDocumentEvent('onDidOpen')];
|
|
67
|
+
_onInitialize_decorators = [initialize()];
|
|
68
|
+
__esDecorate(this, null, _handleDocumentOpened_decorators, { kind: "method", name: "handleDocumentOpened", static: false, private: false, access: { has: obj => "handleDocumentOpened" in obj, get: obj => obj.handleDocumentOpened }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
69
|
+
__esDecorate(this, null, _onInitialize_decorators, { kind: "method", name: "onInitialize", static: false, private: false, access: { has: obj => "onInitialize" in obj, get: obj => obj.onInitialize }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
70
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
71
|
+
EmptyConfigWarningLspService = _classThis = _classDescriptor.value;
|
|
72
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
73
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
74
|
+
}
|
|
75
|
+
#options = __runInitializers(this, _instanceExtraInitializers);
|
|
76
|
+
#workspaceFolderService;
|
|
77
|
+
#connection;
|
|
78
|
+
#logger;
|
|
79
|
+
#warnedWorkspaces = new Set();
|
|
80
|
+
#isVSCode = false;
|
|
81
|
+
#canShowDocument = false;
|
|
82
|
+
constructor(options, workspaceFolderService, connection, loggingService) {
|
|
83
|
+
this.#options = options;
|
|
84
|
+
this.#workspaceFolderService = workspaceFolderService;
|
|
85
|
+
this.#connection = connection;
|
|
86
|
+
this.#logger = loggingService.createLogger(EmptyConfigWarningLspService);
|
|
87
|
+
}
|
|
88
|
+
async handleDocumentOpened({ document }) {
|
|
89
|
+
const hasEmptyConfig = await this.#check(document);
|
|
90
|
+
if (hasEmptyConfig) {
|
|
91
|
+
await this.#showWarning();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
onInitialize(params) {
|
|
95
|
+
this.#isVSCode = params?.clientInfo?.name === 'Visual Studio Code';
|
|
96
|
+
this.#canShowDocument = params?.capabilities.window?.showDocument?.support ?? false;
|
|
97
|
+
}
|
|
98
|
+
async #check(document) {
|
|
99
|
+
const workspaceFolder = await this.#workspaceFolderService.getWorkspaceFolder(this.#connection, document);
|
|
100
|
+
if (!workspaceFolder) {
|
|
101
|
+
this.#logger?.debug('Document not part of a workspace, ignoring', {
|
|
102
|
+
uri: document.uri,
|
|
103
|
+
});
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
if (this.#warnedWorkspaces.has(workspaceFolder)) {
|
|
107
|
+
this.#logger?.debug('Already warned about empty config in this workspace', {
|
|
108
|
+
uri: document.uri,
|
|
109
|
+
});
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
const options = await this.#options.getOptions(document.uri);
|
|
113
|
+
if (!isEmptyObject(options.config)) {
|
|
114
|
+
this.#logger?.debug('Config is not an empty object', {
|
|
115
|
+
uri: document.uri,
|
|
116
|
+
configType: typeof options.config,
|
|
117
|
+
configIsNull: options.config === null,
|
|
118
|
+
});
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
this.#warnedWorkspaces.add(workspaceFolder);
|
|
122
|
+
this.#logger?.debug('Detected empty config object', { uri: document.uri });
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
async #showWarning() {
|
|
126
|
+
this.#logger?.warn('The "stylelint.config" setting is set to an empty object, overriding config file lookup');
|
|
127
|
+
const message = 'The "stylelint.config" setting is set to an empty object ({}). This overrides config file lookup and may cause "No rules found" errors. Remove this setting from User, Remote, or Workspace settings to let Stylelint find your configuration file.';
|
|
128
|
+
if (!this.#isVSCode || !this.#canShowDocument) {
|
|
129
|
+
this.#connection.window.showWarningMessage(message);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const warningResponse = await this.#connection.window.showWarningMessage(message, {
|
|
133
|
+
title: 'Open Settings',
|
|
134
|
+
});
|
|
135
|
+
if (warningResponse?.title === 'Open Settings') {
|
|
136
|
+
const showDocumentResponse = await this.#connection.window.showDocument({
|
|
137
|
+
uri: 'vscode://settings/stylelint.config',
|
|
138
|
+
external: true,
|
|
139
|
+
});
|
|
140
|
+
if (!showDocumentResponse.success) {
|
|
141
|
+
this.#logger?.warn('Failed to open VS Code settings');
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
return EmptyConfigWarningLspService = _classThis;
|
|
147
|
+
})();
|
|
148
|
+
export { EmptyConfigWarningLspService };
|
|
149
|
+
//# sourceMappingURL=empty-config-warning.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"empty-config-warning.service.js","sourceRoot":"","sources":["../../../../src/server/services/lsp/empty-config-warning.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Connection, TextDocumentChangeEvent, TextDocuments } from 'vscode-languageserver';
|
|
2
|
+
import * as LSP from 'vscode-languageserver-protocol';
|
|
3
|
+
import type { TextDocument } from 'vscode-languageserver-textdocument';
|
|
4
|
+
import type { URI } from 'vscode-uri';
|
|
5
|
+
import { DocumentFixesService } from '../documents/document-fixes.service.js';
|
|
6
|
+
import { type LoggingService } from '../infrastructure/logging.service.js';
|
|
7
|
+
import { WorkspaceOptionsService } from '../workspace/workspace-options.service.js';
|
|
8
|
+
export declare class FormatterLspService {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(documents: TextDocuments<TextDocument>, options: WorkspaceOptionsService, fixes: DocumentFixesService, connection: Connection, uriModule: Pick<typeof URI, 'parse'>, loggingService: LoggingService);
|
|
11
|
+
onInitialize(params?: LSP.InitializeParams): Partial<LSP.InitializeResult>;
|
|
12
|
+
handleDocumentRegistration({ document, }: TextDocumentChangeEvent<TextDocument>): Promise<void>;
|
|
13
|
+
handleDocumentClosed({ document }: TextDocumentChangeEvent<TextDocument>): void;
|
|
14
|
+
deregisterAll(): void;
|
|
15
|
+
handleDocumentFormatting(params: LSP.DocumentFormattingParams): Promise<LSP.TextEdit[] | undefined | null>;
|
|
16
|
+
}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
2
|
+
var useValue = arguments.length > 2;
|
|
3
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
4
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
5
|
+
}
|
|
6
|
+
return useValue ? value : void 0;
|
|
7
|
+
};
|
|
8
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
9
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
10
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
11
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
12
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
13
|
+
var _, done = false;
|
|
14
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
15
|
+
var context = {};
|
|
16
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
17
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
18
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
19
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
20
|
+
if (kind === "accessor") {
|
|
21
|
+
if (result === void 0) continue;
|
|
22
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
23
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
24
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
25
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
26
|
+
}
|
|
27
|
+
else if (_ = accept(result)) {
|
|
28
|
+
if (kind === "field") initializers.unshift(_);
|
|
29
|
+
else descriptor[key] = _;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
33
|
+
done = true;
|
|
34
|
+
};
|
|
35
|
+
import * as LSP from 'vscode-languageserver-protocol';
|
|
36
|
+
import { inject } from '../../../di/index.js';
|
|
37
|
+
import { documentFormattingRequest, initialize, lspService, notification, shutdown, textDocumentEvent, } from '../../decorators.js';
|
|
38
|
+
import { formattingOptionsToRules } from '../../stylelint/index.js';
|
|
39
|
+
import { lspConnectionToken, textDocumentsToken, UriModuleToken } from '../../tokens.js';
|
|
40
|
+
import { DocumentFixesService } from '../documents/document-fixes.service.js';
|
|
41
|
+
import { loggingServiceToken } from '../infrastructure/logging.service.js';
|
|
42
|
+
import { WorkspaceOptionsService } from '../workspace/workspace-options.service.js';
|
|
43
|
+
let FormatterLspService = (() => {
|
|
44
|
+
let _classDecorators = [lspService(), inject({
|
|
45
|
+
inject: [
|
|
46
|
+
textDocumentsToken,
|
|
47
|
+
WorkspaceOptionsService,
|
|
48
|
+
DocumentFixesService,
|
|
49
|
+
lspConnectionToken,
|
|
50
|
+
UriModuleToken,
|
|
51
|
+
loggingServiceToken,
|
|
52
|
+
],
|
|
53
|
+
})];
|
|
54
|
+
let _classDescriptor;
|
|
55
|
+
let _classExtraInitializers = [];
|
|
56
|
+
let _classThis;
|
|
57
|
+
let _instanceExtraInitializers = [];
|
|
58
|
+
let _onInitialize_decorators;
|
|
59
|
+
let _handleDocumentRegistration_decorators;
|
|
60
|
+
let _handleDocumentClosed_decorators;
|
|
61
|
+
let _deregisterAll_decorators;
|
|
62
|
+
let _handleDocumentFormatting_decorators;
|
|
63
|
+
var FormatterLspService = class {
|
|
64
|
+
static { _classThis = this; }
|
|
65
|
+
static {
|
|
66
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
67
|
+
_onInitialize_decorators = [initialize()];
|
|
68
|
+
_handleDocumentRegistration_decorators = [textDocumentEvent('onDidOpen'), textDocumentEvent('onDidChangeContent'), textDocumentEvent('onDidSave')];
|
|
69
|
+
_handleDocumentClosed_decorators = [textDocumentEvent('onDidClose')];
|
|
70
|
+
_deregisterAll_decorators = [notification(LSP.DidChangeConfigurationNotification.type), notification(LSP.DidChangeWorkspaceFoldersNotification.type), shutdown()];
|
|
71
|
+
_handleDocumentFormatting_decorators = [documentFormattingRequest()];
|
|
72
|
+
__esDecorate(this, null, _onInitialize_decorators, { kind: "method", name: "onInitialize", static: false, private: false, access: { has: obj => "onInitialize" in obj, get: obj => obj.onInitialize }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
73
|
+
__esDecorate(this, null, _handleDocumentRegistration_decorators, { kind: "method", name: "handleDocumentRegistration", static: false, private: false, access: { has: obj => "handleDocumentRegistration" in obj, get: obj => obj.handleDocumentRegistration }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
74
|
+
__esDecorate(this, null, _handleDocumentClosed_decorators, { kind: "method", name: "handleDocumentClosed", static: false, private: false, access: { has: obj => "handleDocumentClosed" in obj, get: obj => obj.handleDocumentClosed }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
75
|
+
__esDecorate(this, null, _deregisterAll_decorators, { kind: "method", name: "deregisterAll", static: false, private: false, access: { has: obj => "deregisterAll" in obj, get: obj => obj.deregisterAll }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
76
|
+
__esDecorate(this, null, _handleDocumentFormatting_decorators, { kind: "method", name: "handleDocumentFormatting", static: false, private: false, access: { has: obj => "handleDocumentFormatting" in obj, get: obj => obj.handleDocumentFormatting }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
77
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
78
|
+
FormatterLspService = _classThis = _classDescriptor.value;
|
|
79
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
80
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
81
|
+
}
|
|
82
|
+
#documents = __runInitializers(this, _instanceExtraInitializers);
|
|
83
|
+
#options;
|
|
84
|
+
#fixes;
|
|
85
|
+
#connection;
|
|
86
|
+
#uri;
|
|
87
|
+
#logger;
|
|
88
|
+
#registerDynamically = false;
|
|
89
|
+
#registrations = new Map();
|
|
90
|
+
constructor(documents, options, fixes, connection, uriModule, loggingService) {
|
|
91
|
+
this.#documents = documents;
|
|
92
|
+
this.#options = options;
|
|
93
|
+
this.#fixes = fixes;
|
|
94
|
+
this.#connection = connection;
|
|
95
|
+
this.#uri = uriModule;
|
|
96
|
+
this.#logger = loggingService.createLogger(FormatterLspService);
|
|
97
|
+
}
|
|
98
|
+
onInitialize(params) {
|
|
99
|
+
this.#registerDynamically = Boolean(params?.capabilities.textDocument?.formatting?.dynamicRegistration);
|
|
100
|
+
return {
|
|
101
|
+
capabilities: {
|
|
102
|
+
documentFormattingProvider: !this.#registerDynamically,
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
async handleDocumentRegistration({ document, }) {
|
|
107
|
+
await this.#register(document);
|
|
108
|
+
}
|
|
109
|
+
handleDocumentClosed({ document }) {
|
|
110
|
+
this.#deregister(document.uri);
|
|
111
|
+
}
|
|
112
|
+
async #shouldFormat(document) {
|
|
113
|
+
const options = await this.#options.getOptions(document.uri);
|
|
114
|
+
return options.validate.includes(document.languageId);
|
|
115
|
+
}
|
|
116
|
+
async #register(document) {
|
|
117
|
+
if (!this.#registerDynamically ||
|
|
118
|
+
!(await this.#shouldFormat(document)) ||
|
|
119
|
+
this.#registrations.has(document.uri)) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const parsedUri = this.#uri.parse(document.uri);
|
|
123
|
+
const basePath = parsedUri.scheme === 'file'
|
|
124
|
+
? (parsedUri.fsPath ?? parsedUri.path ?? '')
|
|
125
|
+
: (parsedUri.path ?? parsedUri.fsPath ?? '');
|
|
126
|
+
const normalizedPath = basePath.replace(/\\/g, '/').replace(/[[\]{}]/g, '?');
|
|
127
|
+
const filter = { scheme: parsedUri.scheme, pattern: normalizedPath };
|
|
128
|
+
const options = {
|
|
129
|
+
documentSelector: [filter],
|
|
130
|
+
};
|
|
131
|
+
this.#registrations.set(document.uri, this.#connection.client.register(LSP.DocumentFormattingRequest.type, options));
|
|
132
|
+
this.#logger?.debug('Registering formatter for document', {
|
|
133
|
+
uri: document.uri,
|
|
134
|
+
options,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
#deregister(uri) {
|
|
138
|
+
const registration = this.#registrations.get(uri);
|
|
139
|
+
if (!registration) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
this.#logger?.debug('Deregistering formatter for document', { uri });
|
|
143
|
+
registration
|
|
144
|
+
.then((disposable) => disposable.dispose())
|
|
145
|
+
.catch((error) => {
|
|
146
|
+
this.#logger?.error('Error deregistering formatter for document', {
|
|
147
|
+
uri,
|
|
148
|
+
error,
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
this.#registrations.delete(uri);
|
|
152
|
+
}
|
|
153
|
+
deregisterAll() {
|
|
154
|
+
for (const [uri, registration] of this.#registrations) {
|
|
155
|
+
registration
|
|
156
|
+
.then((disposable) => disposable.dispose())
|
|
157
|
+
.catch((error) => {
|
|
158
|
+
this.#logger?.error('Error deregistering formatter for document', {
|
|
159
|
+
uri,
|
|
160
|
+
error,
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
this.#registrations.clear();
|
|
165
|
+
}
|
|
166
|
+
async handleDocumentFormatting(params) {
|
|
167
|
+
this.#logger?.debug('Received onDocumentFormatting', params);
|
|
168
|
+
const { textDocument, options } = params;
|
|
169
|
+
if (!textDocument) {
|
|
170
|
+
this.#logger?.debug('No text document provided, ignoring');
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
const { uri } = textDocument;
|
|
174
|
+
const document = this.#documents.get(uri);
|
|
175
|
+
if (!document || !(await this.#shouldFormat(document))) {
|
|
176
|
+
if (this.#logger?.isDebugEnabled()) {
|
|
177
|
+
if (!document) {
|
|
178
|
+
this.#logger.debug('Unknown document, ignoring', { uri });
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this.#logger.debug('Document should not be formatted, ignoring', {
|
|
182
|
+
uri,
|
|
183
|
+
language: document.languageId,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
// Resolve the file's configuration first to ensure settings like
|
|
190
|
+
// customSyntax are preserved when formatting.
|
|
191
|
+
const resolvedConfig = await this.#fixes.resolveConfig(document);
|
|
192
|
+
const formattingRules = formattingOptionsToRules(options);
|
|
193
|
+
// Only include config properties that affect syntax parsing. Other
|
|
194
|
+
// properties are excluded to avoid interfering with formatting.
|
|
195
|
+
const mergedConfig = resolvedConfig
|
|
196
|
+
? {
|
|
197
|
+
customSyntax: resolvedConfig.customSyntax,
|
|
198
|
+
rules: {
|
|
199
|
+
...formattingRules,
|
|
200
|
+
},
|
|
201
|
+
}
|
|
202
|
+
: { rules: formattingRules };
|
|
203
|
+
const linterOptions = {
|
|
204
|
+
config: mergedConfig,
|
|
205
|
+
};
|
|
206
|
+
this.#logger?.debug('Formatting document', { uri, linterOptions });
|
|
207
|
+
const fixes = await this.#fixes.getFixes(document, linterOptions);
|
|
208
|
+
this.#logger?.debug('Returning fixes', { uri, fixes });
|
|
209
|
+
return fixes;
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
return FormatterLspService = _classThis;
|
|
213
|
+
})();
|
|
214
|
+
export { FormatterLspService };
|
|
215
|
+
//# sourceMappingURL=formatter.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatter.service.js","sourceRoot":"","sources":["../../../../src/server/services/lsp/formatter.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './code-actions/index.js';
|
|
2
|
+
export * from './auto-fix.service.js';
|
|
3
|
+
export * from './completion.service.js';
|
|
4
|
+
export * from './empty-config-warning.service.js';
|
|
5
|
+
export * from './formatter.service.js';
|
|
6
|
+
export * from './old-stylelint-warning.service.js';
|
|
7
|
+
export * from './validator.service.js';
|
|
8
|
+
export * from './workspace-activity.service.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './code-actions/index.js';
|
|
2
|
+
export * from './auto-fix.service.js';
|
|
3
|
+
export * from './completion.service.js';
|
|
4
|
+
export * from './empty-config-warning.service.js';
|
|
5
|
+
export * from './formatter.service.js';
|
|
6
|
+
export * from './old-stylelint-warning.service.js';
|
|
7
|
+
export * from './validator.service.js';
|
|
8
|
+
export * from './workspace-activity.service.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/server/services/lsp/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mCAAmC,CAAC;AAClD,cAAc,wBAAwB,CAAC;AACvC,cAAc,oCAAoC,CAAC;AACnD,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC"}
|