diff --git a/packages/apidom-ls/src/config/asyncapi/server-variable/completion.ts b/packages/apidom-ls/src/config/asyncapi/server-variable/completion.ts index afb0dfcc60..9522950061 100644 --- a/packages/apidom-ls/src/config/asyncapi/server-variable/completion.ts +++ b/packages/apidom-ls/src/config/asyncapi/server-variable/completion.ts @@ -56,6 +56,18 @@ const completion: ApidomCompletionItem[] = [ value: 'An array of examples of the server variable.', }, }, + { + label: '$ref', + insertText: '\\$ref', + kind: 14, + format: CompletionFormat.QUOTED, + type: CompletionType.PROPERTY, + insertTextFormat: 2, + documentation: { + kind: 'markdown', + value: 'A reference to a server variable', + }, + }, ]; export default completion; diff --git a/packages/apidom-ls/src/config/asyncapi/server-variable/lint/allowed-fields.ts b/packages/apidom-ls/src/config/asyncapi/server-variable/lint/allowed-fields.ts index 0e3c045368..341c200da0 100644 --- a/packages/apidom-ls/src/config/asyncapi/server-variable/lint/allowed-fields.ts +++ b/packages/apidom-ls/src/config/asyncapi/server-variable/lint/allowed-fields.ts @@ -7,7 +7,7 @@ const serverVariableAllowedFieldsLint: LinterMeta = { message: 'Object includes not allowed fields', severity: 1, linterFunction: 'allowedFields', - linterParams: [['enum', 'default', 'description', 'examples'], 'x-'], + linterParams: [['enum', 'default', 'description', 'examples', '$ref'], 'x-'], marker: 'key', }; diff --git a/packages/apidom-ls/src/config/asyncapi/server/lint/allowed-fields.ts b/packages/apidom-ls/src/config/asyncapi/server/lint/allowed-fields.ts index aba833d526..ec0a12a76c 100644 --- a/packages/apidom-ls/src/config/asyncapi/server/lint/allowed-fields.ts +++ b/packages/apidom-ls/src/config/asyncapi/server/lint/allowed-fields.ts @@ -8,7 +8,16 @@ const serverAllowedFieldsLint: LinterMeta = { severity: 1, linterFunction: 'allowedFields', linterParams: [ - ['url', 'protocol', 'protocolVersion', 'description', 'variables', 'security', 'bindings'], + [ + 'url', + 'protocol', + 'protocolVersion', + 'description', + 'variables', + 'security', + 'bindings', + '$ref', + ], 'x-', ], marker: 'key', diff --git a/packages/apidom-ls/src/config/asyncapi/server/lint/protocol-required.ts b/packages/apidom-ls/src/config/asyncapi/server/lint/protocol-required.ts index 5f28d2a5af..560db411e3 100644 --- a/packages/apidom-ls/src/config/asyncapi/server/lint/protocol-required.ts +++ b/packages/apidom-ls/src/config/asyncapi/server/lint/protocol-required.ts @@ -9,6 +9,12 @@ const serverProtocolRequiredLint: LinterMeta = { linterFunction: 'hasRequiredField', linterParams: ['protocol'], marker: 'key', + conditions: [ + { + function: 'missingField', + params: ['$ref'], + }, + ], data: { quickFix: [ { diff --git a/packages/apidom-ls/src/config/asyncapi/server/lint/url-required.ts b/packages/apidom-ls/src/config/asyncapi/server/lint/url-required.ts index d45a8023d6..48ba988163 100644 --- a/packages/apidom-ls/src/config/asyncapi/server/lint/url-required.ts +++ b/packages/apidom-ls/src/config/asyncapi/server/lint/url-required.ts @@ -9,6 +9,12 @@ const serverUrlRequiredLint: LinterMeta = { linterFunction: 'hasRequiredField', linterParams: ['url'], marker: 'key', + conditions: [ + { + function: 'missingField', + params: ['$ref'], + }, + ], data: { quickFix: [ {