puppet-editor-services 2.0.4

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.
Files changed (109) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +510 -0
  3. data/CODEOWNERS +2 -0
  4. data/CODE_OF_CONDUCT.md +46 -0
  5. data/CONTRIBUTING.md +54 -0
  6. data/Gemfile +53 -0
  7. data/LICENSE +201 -0
  8. data/README.md +308 -0
  9. data/Rakefile +185 -0
  10. data/bin/puppet-debugserver +8 -0
  11. data/bin/puppet-languageserver +7 -0
  12. data/bin/puppet-languageserver-sidecar +7 -0
  13. data/lib/dsp/dsp.rb +7 -0
  14. data/lib/dsp/dsp_base.rb +62 -0
  15. data/lib/dsp/dsp_protocol.rb +4619 -0
  16. data/lib/lsp/lsp.rb +10 -0
  17. data/lib/lsp/lsp_base.rb +63 -0
  18. data/lib/lsp/lsp_custom.rb +170 -0
  19. data/lib/lsp/lsp_enums.rb +143 -0
  20. data/lib/lsp/lsp_protocol.rb +2785 -0
  21. data/lib/lsp/lsp_protocol_callhierarchy.proposed.rb +239 -0
  22. data/lib/lsp/lsp_protocol_colorprovider.rb +100 -0
  23. data/lib/lsp/lsp_protocol_configuration.rb +82 -0
  24. data/lib/lsp/lsp_protocol_declaration.rb +73 -0
  25. data/lib/lsp/lsp_protocol_foldingrange.rb +129 -0
  26. data/lib/lsp/lsp_protocol_implementation.rb +75 -0
  27. data/lib/lsp/lsp_protocol_progress.rb +200 -0
  28. data/lib/lsp/lsp_protocol_selectionrange.rb +79 -0
  29. data/lib/lsp/lsp_protocol_sematictokens.proposed.rb +340 -0
  30. data/lib/lsp/lsp_protocol_typedefinition.rb +75 -0
  31. data/lib/lsp/lsp_protocol_workspacefolders.rb +174 -0
  32. data/lib/lsp/lsp_types.rb +1534 -0
  33. data/lib/puppet-debugserver/debug_session/break_points.rb +137 -0
  34. data/lib/puppet-debugserver/debug_session/flow_control.rb +161 -0
  35. data/lib/puppet-debugserver/debug_session/hook_handlers.rb +295 -0
  36. data/lib/puppet-debugserver/debug_session/puppet_session_run_mode.rb +66 -0
  37. data/lib/puppet-debugserver/debug_session/puppet_session_state.rb +122 -0
  38. data/lib/puppet-debugserver/hooks.rb +132 -0
  39. data/lib/puppet-debugserver/message_handler.rb +277 -0
  40. data/lib/puppet-debugserver/puppet_debug_session.rb +541 -0
  41. data/lib/puppet-debugserver/puppet_monkey_patches.rb +118 -0
  42. data/lib/puppet-languageserver/client_session_state.rb +119 -0
  43. data/lib/puppet-languageserver/crash_dump.rb +50 -0
  44. data/lib/puppet-languageserver/epp/validation_provider.rb +34 -0
  45. data/lib/puppet-languageserver/facter_helper.rb +25 -0
  46. data/lib/puppet-languageserver/global_queues/sidecar_queue.rb +205 -0
  47. data/lib/puppet-languageserver/global_queues/single_instance_queue.rb +126 -0
  48. data/lib/puppet-languageserver/global_queues/validation_queue.rb +102 -0
  49. data/lib/puppet-languageserver/global_queues.rb +16 -0
  50. data/lib/puppet-languageserver/manifest/completion_provider.rb +331 -0
  51. data/lib/puppet-languageserver/manifest/definition_provider.rb +99 -0
  52. data/lib/puppet-languageserver/manifest/document_symbol_provider.rb +228 -0
  53. data/lib/puppet-languageserver/manifest/folding_provider.rb +226 -0
  54. data/lib/puppet-languageserver/manifest/format_on_type_provider.rb +143 -0
  55. data/lib/puppet-languageserver/manifest/hover_provider.rb +221 -0
  56. data/lib/puppet-languageserver/manifest/signature_provider.rb +169 -0
  57. data/lib/puppet-languageserver/manifest/validation_provider.rb +127 -0
  58. data/lib/puppet-languageserver/message_handler.rb +462 -0
  59. data/lib/puppet-languageserver/providers.rb +18 -0
  60. data/lib/puppet-languageserver/puppet_helper.rb +108 -0
  61. data/lib/puppet-languageserver/puppet_lexer_helper.rb +55 -0
  62. data/lib/puppet-languageserver/puppet_monkey_patches.rb +39 -0
  63. data/lib/puppet-languageserver/puppet_parser_helper.rb +212 -0
  64. data/lib/puppet-languageserver/puppetfile/validation_provider.rb +185 -0
  65. data/lib/puppet-languageserver/server_capabilities.rb +48 -0
  66. data/lib/puppet-languageserver/session_state/document_store.rb +272 -0
  67. data/lib/puppet-languageserver/session_state/language_client.rb +239 -0
  68. data/lib/puppet-languageserver/session_state/object_cache.rb +162 -0
  69. data/lib/puppet-languageserver/sidecar_protocol.rb +532 -0
  70. data/lib/puppet-languageserver/uri_helper.rb +46 -0
  71. data/lib/puppet-languageserver-sidecar/cache/base.rb +36 -0
  72. data/lib/puppet-languageserver-sidecar/cache/filesystem.rb +111 -0
  73. data/lib/puppet-languageserver-sidecar/cache/null.rb +27 -0
  74. data/lib/puppet-languageserver-sidecar/facter_helper.rb +41 -0
  75. data/lib/puppet-languageserver-sidecar/puppet_environment_monkey_patches.rb +52 -0
  76. data/lib/puppet-languageserver-sidecar/puppet_helper.rb +281 -0
  77. data/lib/puppet-languageserver-sidecar/puppet_modulepath_monkey_patches.rb +146 -0
  78. data/lib/puppet-languageserver-sidecar/puppet_monkey_patches.rb +9 -0
  79. data/lib/puppet-languageserver-sidecar/puppet_parser_helper.rb +77 -0
  80. data/lib/puppet-languageserver-sidecar/puppet_strings_helper.rb +399 -0
  81. data/lib/puppet-languageserver-sidecar/puppet_strings_monkey_patches.rb +16 -0
  82. data/lib/puppet-languageserver-sidecar/sidecar_protocol_extensions.rb +16 -0
  83. data/lib/puppet-languageserver-sidecar/workspace.rb +89 -0
  84. data/lib/puppet_debugserver.rb +164 -0
  85. data/lib/puppet_editor_services/connection/base.rb +62 -0
  86. data/lib/puppet_editor_services/connection/stdio.rb +25 -0
  87. data/lib/puppet_editor_services/connection/tcp.rb +34 -0
  88. data/lib/puppet_editor_services/handler/base.rb +16 -0
  89. data/lib/puppet_editor_services/handler/debug_adapter.rb +63 -0
  90. data/lib/puppet_editor_services/handler/json_rpc.rb +133 -0
  91. data/lib/puppet_editor_services/logging.rb +45 -0
  92. data/lib/puppet_editor_services/protocol/base.rb +27 -0
  93. data/lib/puppet_editor_services/protocol/debug_adapter.rb +135 -0
  94. data/lib/puppet_editor_services/protocol/debug_adapter_messages.rb +171 -0
  95. data/lib/puppet_editor_services/protocol/json_rpc.rb +241 -0
  96. data/lib/puppet_editor_services/protocol/json_rpc_messages.rb +200 -0
  97. data/lib/puppet_editor_services/server/base.rb +42 -0
  98. data/lib/puppet_editor_services/server/stdio.rb +85 -0
  99. data/lib/puppet_editor_services/server/tcp.rb +349 -0
  100. data/lib/puppet_editor_services/server.rb +15 -0
  101. data/lib/puppet_editor_services/version.rb +36 -0
  102. data/lib/puppet_editor_services.rb +8 -0
  103. data/lib/puppet_languageserver.rb +263 -0
  104. data/lib/puppet_languageserver_sidecar.rb +361 -0
  105. data/puppet-debugserver +11 -0
  106. data/puppet-editor-services.gemspec +29 -0
  107. data/puppet-languageserver +15 -0
  108. data/puppet-languageserver-sidecar +14 -0
  109. metadata +240 -0
data/lib/lsp/lsp.rb ADDED
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ # DO NOT MODIFY. This file is built automatically
4
+ # See tools/lsp_introspect/index.js
5
+
6
+ %w[lsp_base lsp_custom lsp_types lsp_enums lsp_protocol_callhierarchy.proposed lsp_protocol_colorprovider lsp_protocol_configuration lsp_protocol lsp_protocol_declaration lsp_protocol_foldingrange lsp_protocol_implementation lsp_protocol_progress lsp_protocol_selectionrange lsp_protocol_sematictokens.proposed lsp_protocol_typedefinition lsp_protocol_workspacefolders].each do |lib|
7
+ require "lsp/#{lib}"
8
+ rescue LoadError
9
+ require File.expand_path(File.join(File.dirname(__FILE__), lib))
10
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module LSP
6
+ class LSPBase
7
+ def initialize(initial_hash = nil)
8
+ from_h!(initial_hash) unless initial_hash.nil?
9
+ end
10
+
11
+ def to_h
12
+ value = {}
13
+ optional_names = @optional_method_names.nil? ? [] : @optional_method_names
14
+
15
+ instance_method_names.each do |name|
16
+ item_value = send(name)
17
+ if item_value.is_a?(Array)
18
+ # Convert the items in the array .to_h
19
+ item_value = item_value.map { |item| item.respond_to?(:to_h) ? item.to_h : item }
20
+ elsif !item_value.nil? && item_value.respond_to?(:to_h)
21
+ item_value = item_value.to_h
22
+ end
23
+ valuename = name.to_s.end_with?('__lsp') ? name.to_s[0...-5] : name.to_s
24
+ value[valuename] = item_value unless optional_names.include?(name) && item_value.nil?
25
+ end
26
+
27
+ value
28
+ end
29
+
30
+ def from_h!(value); end
31
+
32
+ def to_json(*options)
33
+ to_h.to_json(options)
34
+ end
35
+
36
+ private
37
+
38
+ def instance_method_names
39
+ method_names = methods - LSP::LSPBase.instance_methods
40
+
41
+ method_names.reject { |name| name.to_s.end_with?('=') }
42
+ end
43
+
44
+ def to_typed_aray(val, expected_type)
45
+ return nil if val.nil?
46
+
47
+ val.map { |item| expected_type.new(item) }
48
+ end
49
+ end
50
+
51
+ def self.create_range(from_line, from_char, to_line, to_char)
52
+ {
53
+ 'start' => {
54
+ 'line' => from_line,
55
+ 'character' => from_char
56
+ },
57
+ 'end' => {
58
+ 'line' => to_line,
59
+ 'character' => to_char
60
+ }
61
+ }
62
+ end
63
+ end
@@ -0,0 +1,170 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Custom LSP Messages
4
+ # rubocop:disable Naming/MethodName
5
+
6
+ module LSP
7
+ # export interface PuppetVersionDetails {
8
+ # puppetVersion: string;
9
+ # facterVersion: string;
10
+ # languageServerVersion: string;
11
+ # factsLoaded: boolean;
12
+ # functionsLoaded: boolean;
13
+ # typesLoaded: boolean;
14
+ # classesLoaded: boolean;
15
+ # }
16
+ class PuppetVersion < LSPBase
17
+ attr_accessor :puppetVersion, :facterVersion, :languageServerVersion, :factsLoaded, :functionsLoaded, :typesLoaded, :classesLoaded # type: string # type: string # type: string # type: boolean # type: boolean # type: boolean # type: boolean
18
+
19
+ def from_h!(value)
20
+ value = {} if value.nil?
21
+ self.puppetVersion = value['puppetVersion']
22
+ self.facterVersion = value['facterVersion']
23
+ self.languageServerVersion = value['languageServerVersion']
24
+ self.factsLoaded = value['factsLoaded']
25
+ self.functionsLoaded = value['functionsLoaded']
26
+ self.typesLoaded = value['typesLoaded']
27
+ self.classesLoaded = value['classesLoaded']
28
+ self
29
+ end
30
+ end
31
+
32
+ # export interface GetPuppetFactResponse {
33
+ # data: string;
34
+ # error: string;
35
+ # }
36
+ class PuppetFactResponse < LSPBase
37
+ attr_accessor :facts, :error # type: string # type: string
38
+
39
+ def initialize(initial_hash = nil)
40
+ super
41
+ @optional_method_names = %i[error]
42
+ end
43
+
44
+ def from_h!(value)
45
+ value = {} if value.nil?
46
+ self.facts = value['facts']
47
+ self.error = value['error']
48
+ self
49
+ end
50
+ end
51
+
52
+ # export interface GetPuppetResourceResponse {
53
+ # data: string;
54
+ # error: string;
55
+ # }
56
+ class PuppetResourceResponse < LSPBase
57
+ attr_accessor :data, :error # type: string # type: string
58
+
59
+ def initialize(initial_hash = nil)
60
+ super
61
+ @optional_method_names = %i[error]
62
+ end
63
+
64
+ def from_h!(value)
65
+ value = {} if value.nil?
66
+ self.data = value['data']
67
+ self.error = value['error']
68
+ self
69
+ end
70
+ end
71
+
72
+ # export interface PuppetNodeGraphResponse {
73
+ # dotContent: string;
74
+ # data: string;
75
+ # }
76
+ class PuppetNodeGraphResponse < LSPBase
77
+ attr_accessor :vertices, :edges, :error # type: string # type: string # type: string
78
+
79
+ def initialize(initial_hash = nil)
80
+ super
81
+ @optional_method_names = %i[error]
82
+ end
83
+
84
+ def from_h!(value)
85
+ value = {} if value.nil?
86
+ self.vertices = value['vertices']
87
+ self.edges = value['edges']
88
+ self.error = value['error']
89
+ self
90
+ end
91
+ end
92
+
93
+ # export interface PuppetfileDependencyResponse {
94
+ # dotContent: string;
95
+ # data: string;
96
+ # }
97
+ class PuppetfileDependencyResponse < LSPBase
98
+ attr_accessor :dependencies, :error # type: string[] # type: string
99
+
100
+ def initialize(initial_hash = nil)
101
+ super
102
+ @optional_method_names = %i[error]
103
+ end
104
+
105
+ def from_h!(value)
106
+ value = {} if value.nil?
107
+ self.dependencies = value['dependencies']
108
+ self.error = value['error']
109
+ self
110
+ end
111
+ end
112
+
113
+ # export interface CompileNodeGraphResponse {
114
+ # dotContent: string;
115
+ # data: string;
116
+ # }
117
+ class CompileNodeGraphResponse < LSPBase
118
+ attr_accessor :dotContent, :error # type: string # type: string
119
+
120
+ def initialize(initial_hash = nil)
121
+ super
122
+ @optional_method_names = %i[error]
123
+ end
124
+
125
+ def from_h!(value)
126
+ value = {} if value.nil?
127
+ self.dotContent = value['dotContent']
128
+ self.error = value['error']
129
+ self
130
+ end
131
+ end
132
+
133
+ # export interface PuppetFixDiagnosticErrorsRequestParams {
134
+ # documentUri: string;
135
+ # alwaysReturnContent: boolean;
136
+ # }
137
+ class PuppetFixDiagnosticErrorsRequest < LSPBase
138
+ attr_accessor :documentUri, :alwaysReturnContent # type: string # type: boolean
139
+
140
+ def from_h!(value)
141
+ value = {} if value.nil?
142
+ self.documentUri = value['documentUri']
143
+ self.alwaysReturnContent = value['alwaysReturnContent']
144
+ self
145
+ end
146
+ end
147
+
148
+ # export interface PuppetFixDiagnosticErrorsResponse {
149
+ # documentUri: string;
150
+ # fixesApplied: number;
151
+ # newContent?: string;
152
+ # }
153
+ class PuppetFixDiagnosticErrorsResponse < LSPBase
154
+ attr_accessor :documentUri, :fixesApplied, :newContent # type: string # type: number # type: string
155
+
156
+ def initialize(initial_hash = nil)
157
+ super
158
+ @optional_method_names = %i[newContent]
159
+ end
160
+
161
+ def from_h!(value)
162
+ value = {} if value.nil?
163
+ self.documentUri = value['documentUri']
164
+ self.fixesApplied = value['fixesApplied']
165
+ self.newContent = value['newContent']
166
+ self
167
+ end
168
+ end
169
+ end
170
+ # rubocop:enable Naming/MethodName
@@ -0,0 +1,143 @@
1
+ # frozen_string_literal: true
2
+
3
+ # DO NOT MODIFY. This file is built automatically
4
+ # LSP Enumerations
5
+
6
+ module LSP
7
+ module DiagnosticSeverity
8
+ ERROR = 1
9
+ WARNING = 2
10
+ INFORMATION = 3
11
+ HINT = 4
12
+ end
13
+
14
+ module MarkupKind
15
+ PLAINTEXT = 'plaintext'
16
+ MARKDOWN = 'markdown'
17
+ end
18
+
19
+ module CompletionItemKind
20
+ TEXT = 1
21
+ METHOD = 2
22
+ FUNCTION = 3
23
+ CONSTRUCTOR = 4
24
+ FIELD = 5
25
+ VARIABLE = 6
26
+ CLASS = 7
27
+ INTERFACE = 8
28
+ MODULE = 9
29
+ PROPERTY = 10
30
+ UNIT = 11
31
+ VALUE = 12
32
+ ENUM = 13
33
+ KEYWORD = 14
34
+ SNIPPET = 15
35
+ COLOR = 16
36
+ FILE = 17
37
+ REFERENCE = 18
38
+ FOLDER = 19
39
+ ENUMMEMBER = 20
40
+ CONSTANT = 21
41
+ STRUCT = 22
42
+ EVENT = 23
43
+ OPERATOR = 24
44
+ TYPEPARAMETER = 25
45
+ end
46
+
47
+ module InsertTextFormat
48
+ PLAINTEXT = 1
49
+ SNIPPET = 2
50
+ end
51
+
52
+ module DocumentHighlightKind
53
+ TEXT = 1
54
+ READ = 2
55
+ WRITE = 3
56
+ end
57
+
58
+ module SymbolKind
59
+ FILE = 1
60
+ MODULE = 2
61
+ NAMESPACE = 3
62
+ PACKAGE = 4
63
+ CLASS = 5
64
+ METHOD = 6
65
+ PROPERTY = 7
66
+ FIELD = 8
67
+ CONSTRUCTOR = 9
68
+ ENUM = 10
69
+ INTERFACE = 11
70
+ FUNCTION = 12
71
+ VARIABLE = 13
72
+ CONSTANT = 14
73
+ STRING = 15
74
+ NUMBER = 16
75
+ BOOLEAN = 17
76
+ ARRAY = 18
77
+ OBJECT = 19
78
+ KEY = 20
79
+ NULL = 21
80
+ ENUMMEMBER = 22
81
+ STRUCT = 23
82
+ EVENT = 24
83
+ OPERATOR = 25
84
+ TYPEPARAMETER = 26
85
+ end
86
+
87
+ module CodeActionKind
88
+ EMPTY = ''
89
+ QUICKFIX = 'quickfix'
90
+ REFACTOR = 'refactor'
91
+ REFACTOREXTRACT = 'refactor.extract'
92
+ REFACTORINLINE = 'refactor.inline'
93
+ REFACTORREWRITE = 'refactor.rewrite'
94
+ SOURCE = 'source'
95
+ SOURCEORGANIZEIMPORTS = 'source.organizeImports'
96
+ SOURCEFIXALL = 'source.fixAll'
97
+ end
98
+
99
+ module TextDocumentSaveReason
100
+ MANUAL = 1
101
+ AFTERDELAY = 2
102
+ FOCUSOUT = 3
103
+ end
104
+
105
+ module ResourceOperationKind
106
+ CREATE = 'create'
107
+ RENAME = 'rename'
108
+ DELETE = 'delete'
109
+ end
110
+
111
+ module FailureHandlingKind
112
+ ABORT = 'abort'
113
+ TRANSACTIONAL = 'transactional'
114
+ TEXTONLYTRANSACTIONAL = 'textOnlyTransactional'
115
+ UNDO = 'undo'
116
+ end
117
+
118
+ module TextDocumentSyncKind
119
+ FULL = 1
120
+ INCREMENTAL = 2
121
+ end
122
+
123
+ module MessageType
124
+ ERROR = 1
125
+ WARNING = 2
126
+ INFO = 3
127
+ LOG = 4
128
+ end
129
+
130
+ module FileChangeType
131
+ CREATED = 1
132
+ CHANGED = 2
133
+ DELETED = 3
134
+ end
135
+
136
+ module CompletionTriggerKind
137
+ INVOKED = 1
138
+ TRIGGERCHARACTER = 2
139
+ TRIGGERFORINCOMPLETECOMPLETIONS = 3
140
+ end
141
+ end
142
+
143
+ # rubocop:enable Style/AsciiComments