@enjoys/context-engine 1.1.0 → 1.1.1

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 (85) hide show
  1. package/data/codeActions/dart.json +31 -0
  2. package/data/codeActions/docker-compose.json +112 -0
  3. package/data/codeActions/kotlin.json +18 -0
  4. package/data/codeActions/scala.json +26 -0
  5. package/data/codeActions/swift.json +26 -0
  6. package/data/codeLens/dart.json +15 -0
  7. package/data/codeLens/docker-compose.json +4 -0
  8. package/data/codeLens/kotlin.json +10 -0
  9. package/data/codeLens/scala.json +18 -0
  10. package/data/codeLens/swift.json +15 -0
  11. package/data/color/dart.json +37 -0
  12. package/data/color/docker-compose.json +6 -0
  13. package/data/color/kotlin.json +12 -0
  14. package/data/color/scala.json +13 -0
  15. package/data/color/swift.json +37 -0
  16. package/data/commands/kotlin.json +45 -0
  17. package/data/commands/scala.json +171 -0
  18. package/data/commands/swift.json +67 -0
  19. package/data/completion/dart.json +1436 -0
  20. package/data/completion/docker-compose.json +959 -0
  21. package/data/completion/kotlin.json +1580 -0
  22. package/data/completion/scala.json +1076 -0
  23. package/data/completion/swift.json +1742 -0
  24. package/data/declaration/dart.json +25 -0
  25. package/data/declaration/docker-compose.json +42 -0
  26. package/data/declaration/kotlin.json +14 -0
  27. package/data/declaration/scala.json +23 -0
  28. package/data/declaration/swift.json +18 -0
  29. package/data/defination/dart.json +369 -0
  30. package/data/defination/docker-compose.json +347 -0
  31. package/data/defination/kotlin.json +789 -0
  32. package/data/defination/scala.json +285 -0
  33. package/data/defination/swift.json +551 -0
  34. package/data/documentHighlight/dart.json +84 -0
  35. package/data/documentHighlight/docker-compose.json +233 -0
  36. package/data/documentHighlight/kotlin.json +37 -0
  37. package/data/documentHighlight/scala.json +79 -0
  38. package/data/documentHighlight/swift.json +89 -0
  39. package/data/documentSymbol/dart.json +20 -0
  40. package/data/documentSymbol/docker-compose.json +75 -0
  41. package/data/documentSymbol/kotlin.json +15 -0
  42. package/data/documentSymbol/scala.json +21 -0
  43. package/data/documentSymbol/swift.json +17 -0
  44. package/data/formatting/dart.json +16 -0
  45. package/data/formatting/docker-compose.json +24 -0
  46. package/data/formatting/kotlin.json +14 -0
  47. package/data/formatting/scala.json +17 -0
  48. package/data/formatting/swift.json +19 -0
  49. package/data/hover/dart.json +161 -0
  50. package/data/hover/docker-compose.json +404 -0
  51. package/data/hover/kotlin.json +341 -0
  52. package/data/hover/scala.json +209 -0
  53. package/data/hover/swift.json +239 -0
  54. package/data/implementation/dart.json +14 -0
  55. package/data/implementation/docker-compose.json +7 -0
  56. package/data/implementation/kotlin.json +13 -0
  57. package/data/implementation/scala.json +16 -0
  58. package/data/implementation/swift.json +14 -0
  59. package/data/inlayHints/dart.json +29 -0
  60. package/data/inlayHints/docker-compose.json +43 -0
  61. package/data/inlayHints/kotlin.json +23 -0
  62. package/data/inlayHints/scala.json +42 -0
  63. package/data/inlayHints/swift.json +37 -0
  64. package/data/inlineCompletions/dart.json +27 -0
  65. package/data/inlineCompletions/docker-compose.json +89 -0
  66. package/data/inlineCompletions/kotlin.json +19 -0
  67. package/data/inlineCompletions/scala.json +26 -0
  68. package/data/inlineCompletions/swift.json +23 -0
  69. package/data/links/dart.json +16 -0
  70. package/data/links/docker-compose.json +47 -0
  71. package/data/links/kotlin.json +10 -0
  72. package/data/links/scala.json +17 -0
  73. package/data/links/swift.json +13 -0
  74. package/data/manifest.json +38 -0
  75. package/data/references/dart.json +15 -0
  76. package/data/references/docker-compose.json +42 -0
  77. package/data/references/kotlin.json +12 -0
  78. package/data/references/scala.json +15 -0
  79. package/data/references/swift.json +14 -0
  80. package/data/typeDefinition/dart.json +35 -0
  81. package/data/typeDefinition/docker-compose.json +4 -0
  82. package/data/typeDefinition/kotlin.json +33 -0
  83. package/data/typeDefinition/scala.json +52 -0
  84. package/data/typeDefinition/swift.json +56 -0
  85. package/package.json +1 -1
@@ -0,0 +1,239 @@
1
+ {
2
+ "language": "swift",
3
+ "hovers": {
4
+ "print": {
5
+ "contents": [{"value": "```swift\nfunc print(_ items: Any..., separator: String = \" \", terminator: String = \"\\n\")\n```\nWrites textual representations of the given items to standard output."}]
6
+ },
7
+ "debugPrint": {
8
+ "contents": [{"value": "```swift\nfunc debugPrint(_ items: Any..., separator: String = \" \", terminator: String = \"\\n\")\n```\nWrites debug textual representations of the given items to standard output."}]
9
+ },
10
+ "dump": {
11
+ "contents": [{"value": "```swift\nfunc dump<T>(_ value: T, name: String? = nil, indent: Int = 0, maxDepth: Int = .max, maxItems: Int = .max) -> T\n```\nDumps an object's contents using its mirror to standard output."}]
12
+ },
13
+ "min": {
14
+ "contents": [{"value": "```swift\nfunc min<T: Comparable>(_ x: T, _ y: T) -> T\n```\nReturns the lesser of two comparable values."}]
15
+ },
16
+ "max": {
17
+ "contents": [{"value": "```swift\nfunc max<T: Comparable>(_ x: T, _ y: T) -> T\n```\nReturns the greater of two comparable values."}]
18
+ },
19
+ "abs": {
20
+ "contents": [{"value": "```swift\nfunc abs<T: Comparable & SignedNumeric>(_ x: T) -> T\n```\nReturns the absolute value of the given number."}]
21
+ },
22
+ "stride": {
23
+ "contents": [{"value": "```swift\nfunc stride<T>(from start: T, to end: T, by stride: T.Stride) -> StrideTo<T>\n```\nReturns a sequence from start to (but not including) end, stepping by the specified amount."}]
24
+ },
25
+ "zip": {
26
+ "contents": [{"value": "```swift\nfunc zip<Sequence1, Sequence2>(_ sequence1: Sequence1, _ sequence2: Sequence2) -> Zip2Sequence<Sequence1, Sequence2>\n```\nCreates a sequence of pairs built out of two underlying sequences."}]
27
+ },
28
+ "map": {
29
+ "contents": [{"value": "```swift\nfunc map<T>(_ transform: (Element) throws -> T) rethrows -> [T]\n```\nReturns an array containing the results of mapping the given closure over the sequence's elements."}]
30
+ },
31
+ "filter": {
32
+ "contents": [{"value": "```swift\nfunc filter(_ isIncluded: (Element) throws -> Bool) rethrows -> [Element]\n```\nReturns an array containing only the elements that satisfy the given predicate."}]
33
+ },
34
+ "reduce": {
35
+ "contents": [{"value": "```swift\nfunc reduce<Result>(_ initialResult: Result, _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result\n```\nReturns the result of combining the sequence's elements using the given closure."}]
36
+ },
37
+ "compactMap": {
38
+ "contents": [{"value": "```swift\nfunc compactMap<ElementOfResult>(_ transform: (Element) throws -> ElementOfResult?) rethrows -> [ElementOfResult]\n```\nReturns an array containing the non-nil results of calling the given transformation."}]
39
+ },
40
+ "flatMap": {
41
+ "contents": [{"value": "```swift\nfunc flatMap<SegmentOfResult: Sequence>(_ transform: (Element) throws -> SegmentOfResult) rethrows -> [SegmentOfResult.Element]\n```\nReturns an array containing the concatenated results of calling the given transformation."}]
42
+ },
43
+ "sorted": {
44
+ "contents": [{"value": "```swift\nfunc sorted() -> [Element]\n```\nReturns the elements of the sequence, sorted."}]
45
+ },
46
+ "forEach": {
47
+ "contents": [{"value": "```swift\nfunc forEach(_ body: (Element) throws -> Void) rethrows\n```\nCalls the given closure on each element in the sequence in the same order as a for-in loop."}]
48
+ },
49
+ "contains": {
50
+ "contents": [{"value": "```swift\nfunc contains(_ element: Element) -> Bool\n```\nReturns a Boolean value indicating whether the sequence contains the given element."}]
51
+ },
52
+ "first": {
53
+ "contents": [{"value": "```swift\nvar first: Element? { get }\n```\nThe first element of the collection, or nil if the collection is empty."}]
54
+ },
55
+ "last": {
56
+ "contents": [{"value": "```swift\nvar last: Element? { get }\n```\nThe last element of the collection, or nil if the collection is empty."}]
57
+ },
58
+ "count": {
59
+ "contents": [{"value": "```swift\nvar count: Int { get }\n```\nThe number of elements in the collection."}]
60
+ },
61
+ "isEmpty": {
62
+ "contents": [{"value": "```swift\nvar isEmpty: Bool { get }\n```\nA Boolean value indicating whether the collection is empty."}]
63
+ },
64
+ "append": {
65
+ "contents": [{"value": "```swift\nmutating func append(_ newElement: Element)\n```\nAdds a new element at the end of the array."}]
66
+ },
67
+ "insert": {
68
+ "contents": [{"value": "```swift\nmutating func insert(_ newElement: Element, at i: Int)\n```\nInserts a new element at the specified position."}]
69
+ },
70
+ "remove": {
71
+ "contents": [{"value": "```swift\nmutating func remove(at index: Int) -> Element\n```\nRemoves and returns the element at the specified position."}]
72
+ },
73
+ "removeAll": {
74
+ "contents": [{"value": "```swift\nmutating func removeAll(keepingCapacity keepCapacity: Bool = false)\n```\nRemoves all elements from the array."}]
75
+ },
76
+ "enumerated": {
77
+ "contents": [{"value": "```swift\nfunc enumerated() -> EnumeratedSequence<Self>\n```\nReturns a sequence of pairs (n, x), where n represents a consecutive integer starting at zero."}]
78
+ },
79
+ "prefix": {
80
+ "contents": [{"value": "```swift\nfunc prefix(_ maxLength: Int) -> Slice<Self>\n```\nReturns a subsequence, up to the specified maximum length, containing the initial elements."}]
81
+ },
82
+ "suffix": {
83
+ "contents": [{"value": "```swift\nfunc suffix(_ maxLength: Int) -> Slice<Self>\n```\nReturns a subsequence, up to the given maximum length, containing the final elements."}]
84
+ },
85
+ "joined": {
86
+ "contents": [{"value": "```swift\nfunc joined(separator: String = \"\") -> String\n```\nReturns a new string by concatenating the elements of the sequence, adding the given separator."}]
87
+ },
88
+ "split": {
89
+ "contents": [{"value": "```swift\nfunc split(separator: Character, maxSplits: Int = .max, omittingEmptySubsequences: Bool = true) -> [Substring]\n```\nReturns the longest possible subsequences of the collection, around elements equal to the given element."}]
90
+ },
91
+ "replacingOccurrences": {
92
+ "contents": [{"value": "```swift\nfunc replacingOccurrences(of target: String, with replacement: String) -> String\n```\nReturns a new string in which all occurrences of a target string are replaced by another given string."}]
93
+ },
94
+ "hasPrefix": {
95
+ "contents": [{"value": "```swift\nfunc hasPrefix(_ prefix: String) -> Bool\n```\nReturns a Boolean value indicating whether the string begins with the specified prefix."}]
96
+ },
97
+ "hasSuffix": {
98
+ "contents": [{"value": "```swift\nfunc hasSuffix(_ suffix: String) -> Bool\n```\nReturns a Boolean value indicating whether the string ends with the specified suffix."}]
99
+ },
100
+ "uppercased": {
101
+ "contents": [{"value": "```swift\nfunc uppercased() -> String\n```\nReturns an uppercased version of the string."}]
102
+ },
103
+ "lowercased": {
104
+ "contents": [{"value": "```swift\nfunc lowercased() -> String\n```\nReturns a lowercased version of the string."}]
105
+ },
106
+ "trimmingCharacters": {
107
+ "contents": [{"value": "```swift\nfunc trimmingCharacters(in set: CharacterSet) -> String\n```\nReturns a new string made by removing from both ends of the string characters contained in a given character set."}]
108
+ },
109
+ "precondition": {
110
+ "contents": [{"value": "```swift\nfunc precondition(_ condition: @autoclosure () -> Bool, _ message: @autoclosure () -> String = \"\")\n```\nChecks a necessary condition for making forward progress."}]
111
+ },
112
+ "assert": {
113
+ "contents": [{"value": "```swift\nfunc assert(_ condition: @autoclosure () -> Bool, _ message: @autoclosure () -> String = \"\")\n```\nPerforms a traditional C-style assert with an optional message."}]
114
+ },
115
+ "fatalError": {
116
+ "contents": [{"value": "```swift\nfunc fatalError(_ message: @autoclosure () -> String = \"\") -> Never\n```\nUnconditionally prints a given message and stops execution."}]
117
+ },
118
+ "type(of:)": {
119
+ "contents": [{"value": "```swift\nfunc type<T>(of value: T) -> T.Type\n```\nReturns the dynamic type of a value."}]
120
+ },
121
+ "withAnimation": {
122
+ "contents": [{"value": "```swift\nfunc withAnimation<Result>(_ animation: Animation? = .default, _ body: () throws -> Result) rethrows -> Result\n```\nReturns the result of recomputing the view's body with the provided animation."}]
123
+ },
124
+ "Int": {
125
+ "contents": [{"value": "```swift\nstruct Int: FixedWidthInteger, SignedInteger\n```\nA signed integer value type."}]
126
+ },
127
+ "Double": {
128
+ "contents": [{"value": "```swift\nstruct Double: FloatingPoint\n```\nA double-precision, floating-point value type."}]
129
+ },
130
+ "Float": {
131
+ "contents": [{"value": "```swift\nstruct Float: FloatingPoint\n```\nA single-precision, floating-point value type."}]
132
+ },
133
+ "String": {
134
+ "contents": [{"value": "```swift\nstruct String: StringProtocol, Hashable, Codable\n```\nA Unicode string value."}]
135
+ },
136
+ "Bool": {
137
+ "contents": [{"value": "```swift\nstruct Bool: Sendable, Hashable, Codable\n```\nA value type whose instances are either true or false."}]
138
+ },
139
+ "Array": {
140
+ "contents": [{"value": "```swift\nstruct Array<Element>: RandomAccessCollection, MutableCollection\n```\nAn ordered, random-access collection."}]
141
+ },
142
+ "Dictionary": {
143
+ "contents": [{"value": "```swift\nstruct Dictionary<Key: Hashable, Value>: Collection\n```\nA collection whose elements are key-value pairs."}]
144
+ },
145
+ "Set": {
146
+ "contents": [{"value": "```swift\nstruct Set<Element: Hashable>: Collection\n```\nAn unordered collection of unique elements."}]
147
+ },
148
+ "Optional": {
149
+ "contents": [{"value": "```swift\nenum Optional<Wrapped>: ExpressibleByNilLiteral\n```\nA type that represents either a wrapped value or the absence of a value."}]
150
+ },
151
+ "Result": {
152
+ "contents": [{"value": "```swift\nenum Result<Success, Failure: Error>\n```\nA value that represents either a success or a failure, including an associated value in each case."}]
153
+ },
154
+ "Character": {
155
+ "contents": [{"value": "```swift\nstruct Character: Hashable, Sendable\n```\nA single extended grapheme cluster."}]
156
+ },
157
+ "Data": {
158
+ "contents": [{"value": "```swift\nstruct Data: Collection, ContiguousBytes, Hashable\n```\nA byte buffer in memory."}]
159
+ },
160
+ "URL": {
161
+ "contents": [{"value": "```swift\nstruct URL: Hashable, Equatable, Sendable\n```\nA value that identifies the location of a resource."}]
162
+ },
163
+ "Date": {
164
+ "contents": [{"value": "```swift\nstruct Date: Comparable, Hashable, Codable, Sendable\n```\nA specific point in time, independent of any calendar or time zone."}]
165
+ },
166
+ "Error": {
167
+ "contents": [{"value": "```swift\nprotocol Error\n```\nA type representing an error value that can be thrown."}]
168
+ },
169
+ "Codable": {
170
+ "contents": [{"value": "```swift\ntypealias Codable = Decodable & Encodable\n```\nA type that can convert itself into and out of an external representation."}]
171
+ },
172
+ "Hashable": {
173
+ "contents": [{"value": "```swift\nprotocol Hashable: Equatable\n```\nA type that can be hashed into a Hasher to produce an integer hash value."}]
174
+ },
175
+ "Equatable": {
176
+ "contents": [{"value": "```swift\nprotocol Equatable\n```\nA type that can be compared for value equality."}]
177
+ },
178
+ "Comparable": {
179
+ "contents": [{"value": "```swift\nprotocol Comparable: Equatable\n```\nA type that can be compared using the relational operators."}]
180
+ },
181
+ "Identifiable": {
182
+ "contents": [{"value": "```swift\nprotocol Identifiable {\n associatedtype ID: Hashable\n var id: ID { get }\n}\n```\nA class of types whose instances hold the value of an entity with stable identity."}]
183
+ },
184
+ "Sendable": {
185
+ "contents": [{"value": "```swift\nprotocol Sendable\n```\nA type whose values can safely be passed across concurrency domains by copying."}]
186
+ },
187
+ "AsyncSequence": {
188
+ "contents": [{"value": "```swift\nprotocol AsyncSequence\n```\nA type that provides asynchronous, sequential, iterated access to its elements."}]
189
+ },
190
+ "Task": {
191
+ "contents": [{"value": "```swift\nstruct Task<Success: Sendable, Failure: Error>\n```\nA unit of asynchronous work."}]
192
+ },
193
+ "Void": {
194
+ "contents": [{"value": "```swift\ntypealias Void = ()\n```\nThe return type of functions that don't explicitly specify a return type."}]
195
+ },
196
+ "Never": {
197
+ "contents": [{"value": "```swift\nenum Never\n```\nThe return type of functions that do not return normally; a type with no values."}]
198
+ },
199
+ "Any": {
200
+ "contents": [{"value": "The protocol to which all types implicitly conform."}]
201
+ },
202
+ "AnyObject": {
203
+ "contents": [{"value": "```swift\nprotocol AnyObject\n```\nThe protocol to which all classes implicitly conform."}]
204
+ },
205
+ "AnyHashable": {
206
+ "contents": [{"value": "```swift\nstruct AnyHashable: Hashable\n```\nA type-erased hashable value."}]
207
+ },
208
+ "Range": {
209
+ "contents": [{"value": "```swift\nstruct Range<Bound: Comparable>\n```\nA half-open interval from a lower bound up to, but not including, an upper bound."}]
210
+ },
211
+ "ClosedRange": {
212
+ "contents": [{"value": "```swift\nstruct ClosedRange<Bound: Comparable>\n```\nAn interval from a lower bound up to, and including, an upper bound."}]
213
+ },
214
+ "Sequence": {
215
+ "contents": [{"value": "```swift\nprotocol Sequence\n```\nA type that provides sequential, iterated access to its elements."}]
216
+ },
217
+ "Collection": {
218
+ "contents": [{"value": "```swift\nprotocol Collection: Sequence\n```\nA sequence whose elements can be traversed multiple times and accessed by indexed subscript."}]
219
+ },
220
+ "JSONDecoder": {
221
+ "contents": [{"value": "```swift\nclass JSONDecoder\n```\nAn object that decodes instances of a data type from JSON objects."}]
222
+ },
223
+ "JSONEncoder": {
224
+ "contents": [{"value": "```swift\nclass JSONEncoder\n```\nAn object that encodes instances of a data type as JSON objects."}]
225
+ },
226
+ "URLSession": {
227
+ "contents": [{"value": "```swift\nclass URLSession\n```\nAn object that coordinates a group of related network data transfer tasks."}]
228
+ },
229
+ "DispatchQueue": {
230
+ "contents": [{"value": "```swift\nclass DispatchQueue: DispatchObject\n```\nAn object that manages the execution of work items serially or concurrently."}]
231
+ },
232
+ "NotificationCenter": {
233
+ "contents": [{"value": "```swift\nclass NotificationCenter\n```\nA notification dispatch mechanism that enables the broadcast of information to registered observers."}]
234
+ },
235
+ "UserDefaults": {
236
+ "contents": [{"value": "```swift\nclass UserDefaults\n```\nAn interface to the user's defaults database for persistent key-value storage."}]
237
+ }
238
+ }
239
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "language": "dart",
3
+ "implementationPatterns": [
4
+ {"interface": "Interface", "implementationKeyword": "implements", "pattern": "class\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*(?:extends\\s+\\w+\\s*)?implements\\s+\\w+", "description": "Classes implementing interfaces"},
5
+ {"interface": "AbstractClass", "implementationKeyword": "extends", "pattern": "class\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*extends\\s+\\w+", "description": "Classes extending abstract classes"},
6
+ {"interface": "Mixin", "implementationKeyword": "with", "pattern": "class\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*(?:extends\\s+\\w+\\s*)?with\\s+\\w+", "description": "Classes applying mixins with 'with' keyword"},
7
+ {"interface": "SealedClass", "implementationKeyword": "extends", "pattern": "(?:class|sealed\\s+class)\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*extends\\s+\\w+", "description": "Sealed class subtypes"},
8
+ {"interface": "MixinOn", "implementationKeyword": "on", "pattern": "mixin\\s+(\\w+)\\s+on\\s+\\w+", "description": "Mixin with superclass constraint"}
9
+ ],
10
+ "keywords": {
11
+ "interface": ["abstract class", "sealed class", "interface class", "mixin", "mixin class"],
12
+ "implementation": ["class", "enum", "extension type", "mixin class"]
13
+ }
14
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "language": "docker-compose",
3
+ "implementationPatterns": [],
4
+ "keywords": {
5
+ "note": "Docker Compose (YAML configuration) does not have explicit interface/implementation constructs"
6
+ }
7
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "language": "kotlin",
3
+ "implementationPatterns": [
4
+ {"interface": "Interface", "implementationKeyword": ":", "pattern": "class\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*:\\s*\\w+", "description": "Classes implementing interfaces"},
5
+ {"interface": "AbstractClass", "implementationKeyword": ":", "pattern": "class\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*:\\s*\\w+\\s*\\(", "description": "Classes extending abstract classes"},
6
+ {"interface": "Sealed", "implementationKeyword": ":", "pattern": "(?:class|object|data\\s+class)\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*:\\s*\\w+", "description": "Sealed class/interface implementations"},
7
+ {"interface": "FunInterface", "implementationKeyword": "fun interface", "pattern": "fun\\s+interface\\s+(\\w+)", "description": "Functional interface declarations"}
8
+ ],
9
+ "keywords": {
10
+ "interface": ["interface", "abstract class", "sealed class", "sealed interface", "fun interface"],
11
+ "implementation": ["class", "object", "data class", "enum class", "value class"]
12
+ }
13
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "language": "scala",
3
+ "implementationPatterns": [
4
+ {"interface": "Trait", "implementationKeyword": "extends", "pattern": "(?:class|object|enum)\\s+(\\w+)\\s*(?:\\([^)]*\\))?\\s*extends\\s+(\\w+)", "description": "Class/object extending a trait or class"},
5
+ {"interface": "Trait Mixin", "implementationKeyword": "with", "pattern": "(?:class|object|trait)\\s+(\\w+)\\s*(?:\\([^)]*\\))?\\s*(?:extends\\s+\\w+\\s+)?with\\s+(\\w+)", "description": "Mixing in additional traits with 'with' keyword"},
6
+ {"interface": "Abstract Class", "implementationKeyword": "extends", "pattern": "class\\s+(\\w+)\\s*(?:\\([^)]*\\))?\\s*extends\\s+(?:abstract\\s+)?class\\s+(\\w+)", "description": "Concrete class extending an abstract class"},
7
+ {"interface": "Sealed Trait", "implementationKeyword": "extends", "pattern": "(?:case\\s+)?(?:class|object)\\s+(\\w+)\\s*(?:\\([^)]*\\))?\\s*extends\\s+(\\w+)", "description": "Case classes/objects extending a sealed trait"},
8
+ {"interface": "Enum Case", "implementationKeyword": "extends", "pattern": "case\\s+(\\w+)\\s+extends\\s+(\\w+)", "description": "Enum case extending the enum type"},
9
+ {"interface": "Given Implementation", "implementationKeyword": "given", "pattern": "given\\s+(?:\\w+\\s*:\\s*)?(\\w+)\\s*(?:\\[.*?\\])?\\s+with", "description": "Given instance implementing a type class"},
10
+ {"interface": "Self Type", "implementationKeyword": "=>", "pattern": "(?:trait|class)\\s+\\w+\\s*\\{\\s*(?:\\w+\\s*:)?\\s*(\\w+)\\s*=>", "description": "Self-type annotation requiring a trait"}
11
+ ],
12
+ "keywords": {
13
+ "interface": ["trait", "abstract class", "sealed trait", "sealed abstract class", "enum"],
14
+ "implementation": ["class", "case class", "object", "case object", "enum case", "given"]
15
+ }
16
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "language": "swift",
3
+ "implementationPatterns": [
4
+ {"interface": "Protocol", "implementationKeyword": ":", "pattern": "(?:class|struct|enum|actor)\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*:\\s*\\w+", "description": "Types conforming to protocols"},
5
+ {"interface": "Class", "implementationKeyword": ":", "pattern": "class\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*:\\s*\\w+", "description": "Classes inheriting from a superclass"},
6
+ {"interface": "Extension", "implementationKeyword": "extension", "pattern": "extension\\s+(\\w+)\\s*:\\s*\\w+", "description": "Extensions adding protocol conformance"},
7
+ {"interface": "ProtocolExtension", "implementationKeyword": "extension", "pattern": "extension\\s+(\\w+)\\s*(?:where\\s+[^{]+)?\\s*\\{", "description": "Protocol extensions providing default implementations"},
8
+ {"interface": "Actor", "implementationKeyword": "actor", "pattern": "actor\\s+(\\w+)\\s*(?:<[^>]*>)?\\s*:\\s*\\w+", "description": "Actors conforming to protocols"}
9
+ ],
10
+ "keywords": {
11
+ "interface": ["protocol", "class", "actor"],
12
+ "implementation": ["class", "struct", "enum", "actor", "extension"]
13
+ }
14
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "language": "dart",
3
+ "inlayHintPatterns": [
4
+ {"pattern": "(?:var|final)\\s+(\\w+)\\s*=\\s*(.+)", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type for var/final variable assignments"},
5
+ {"pattern": "(\\w+)\\s*\\(([^)]+)\\)", "kind": 2, "label": "{param_name}:", "position": "before_each_arg", "paddingRight": true, "description": "Show parameter names at call sites"},
6
+ {"pattern": "(?:var|final)\\s+(\\w+)\\s+in\\s+", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred element type in for-in loops"},
7
+ {"pattern": "=>\\s+(.+);", "kind": 1, "label": "-> {inferred_type}", "position": "after_arrow", "paddingLeft": true, "description": "Show return type for expression-body functions"},
8
+ {"pattern": "\\(\\s*(\\w+)\\s*\\)\\s*=>", "kind": 1, "label": ": {inferred_type}", "position": "after_param", "paddingLeft": true, "description": "Show inferred closure parameter types"},
9
+ {"pattern": "\\.(\\w+)\\s*\\(([^)]+)\\)", "kind": 2, "label": "{param_name}:", "position": "before_each_arg", "paddingRight": true, "description": "Show parameter names at method call sites"},
10
+ {"pattern": "late\\s+(?:final\\s+)?(\\w+)\\s*;", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show type for late variables without explicit type"}
11
+ ],
12
+ "typeInferenceRules": {
13
+ "string_literal": {"pattern": "'[^']*'|\"[^\"]*\"", "type": "String"},
14
+ "multiline_string": {"pattern": "'''[\\s\\S]*?'''|\"\"\"[\\s\\S]*?\"\"\"", "type": "String"},
15
+ "int_literal": {"pattern": "\\b\\d+\\b(?!\\.)", "type": "int"},
16
+ "double_literal": {"pattern": "\\b\\d+\\.\\d+\\b", "type": "double"},
17
+ "boolean_literal": {"pattern": "\\b(true|false)\\b", "type": "bool"},
18
+ "null_literal": {"pattern": "\\bnull\\b", "type": "Null"},
19
+ "list_literal": {"pattern": "\\[", "type": "List<T>"},
20
+ "const_list": {"pattern": "const\\s*\\[", "type": "List<T>"},
21
+ "map_literal": {"pattern": "\\{\\s*\\w+\\s*:", "type": "Map<K, V>"},
22
+ "set_literal": {"pattern": "\\{\\s*[^:]+\\s*\\}", "type": "Set<T>"},
23
+ "record_literal": {"pattern": "\\(\\s*\\w+\\s*,", "type": "(T1, T2)"},
24
+ "future_expression": {"pattern": "\\bawait\\s+", "type": "Future<T>"},
25
+ "stream_expression": {"pattern": "\\byield\\s+", "type": "Stream<T>"},
26
+ "constructor_call": {"pattern": "\\b[A-Z]\\w*\\s*\\(", "type": "{constructor_class}"},
27
+ "cascade": {"pattern": "\\.\\.", "type": "{cascade_target}"}
28
+ }
29
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "language": "docker-compose",
3
+ "inlayHintPatterns": [
4
+ {
5
+ "pattern": "(?:environment):\\s*\\n\\s+(\\w+)\\s*[:=]\\s*(.+)",
6
+ "kind": 1,
7
+ "label": ": {inferred_type}",
8
+ "position": "after_capture_1",
9
+ "paddingLeft": true,
10
+ "description": "Show inferred type for environment variable values"
11
+ }
12
+ ],
13
+ "typeInferenceRules": {
14
+ "string_literal": {
15
+ "pattern": "['\"].*['\"]",
16
+ "type": "string"
17
+ },
18
+ "number_literal": {
19
+ "pattern": "\\d+(\\.\\d+)?",
20
+ "type": "number"
21
+ },
22
+ "boolean_literal": {
23
+ "pattern": "\\b(true|false)\\b",
24
+ "type": "boolean"
25
+ },
26
+ "array_literal": {
27
+ "pattern": "\\[.*\\]",
28
+ "type": "array"
29
+ },
30
+ "null_literal": {
31
+ "pattern": "\\b(null)\\b",
32
+ "type": "null"
33
+ },
34
+ "duration_literal": {
35
+ "pattern": "\\d+[smh]",
36
+ "type": "duration"
37
+ },
38
+ "bytes_literal": {
39
+ "pattern": "\\d+[bBkKmMgG]",
40
+ "type": "bytes"
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "language": "kotlin",
3
+ "inlayHintPatterns": [
4
+ {"pattern": "(?:val|var)\\s+(\\w+)\\s*=\\s*(.+)", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type for variable assignments"},
5
+ {"pattern": "(\\w+)\\s*\\(([^)]+)\\)", "kind": 2, "label": "{param_name}:", "position": "before_each_arg", "paddingRight": true, "description": "Show parameter names at call sites"},
6
+ {"pattern": "fun\\s+\\w+\\([^)]*\\)\\s*=\\s*", "kind": 1, "label": ": {inferred_type}", "position": "after_equals", "paddingLeft": true, "description": "Show return type for expression functions"},
7
+ {"pattern": "\\blambda\\b|\\{\\s*\\w+\\s*->", "kind": 1, "label": ": {inferred_type}", "position": "after_param", "paddingLeft": true, "description": "Show lambda parameter types"}
8
+ ],
9
+ "typeInferenceRules": {
10
+ "string_literal": {"pattern": "\".*\"", "type": "String"},
11
+ "number_literal": {"pattern": "\\d+(\\.\\d+)?", "type": "Int"},
12
+ "long_literal": {"pattern": "\\d+L", "type": "Long"},
13
+ "float_literal": {"pattern": "\\d+\\.\\d+[fF]", "type": "Float"},
14
+ "double_literal": {"pattern": "\\d+\\.\\d+(?!f)", "type": "Double"},
15
+ "boolean_literal": {"pattern": "\\b(true|false)\\b", "type": "Boolean"},
16
+ "char_literal": {"pattern": "'.'", "type": "Char"},
17
+ "null_literal": {"pattern": "\\bnull\\b", "type": "Nothing?"},
18
+ "list_literal": {"pattern": "listOf\\(", "type": "List<T>"},
19
+ "map_literal": {"pattern": "mapOf\\(", "type": "Map<K, V>"},
20
+ "set_literal": {"pattern": "setOf\\(", "type": "Set<T>"},
21
+ "array_literal": {"pattern": "arrayOf\\(", "type": "Array<T>"}
22
+ }
23
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "language": "scala",
3
+ "inlayHintPatterns": [
4
+ {"pattern": "val\\s+(\\w+)\\s*=\\s*(.+)", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type for val assignments without explicit type"},
5
+ {"pattern": "var\\s+(\\w+)\\s*=\\s*(.+)", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type for var assignments without explicit type"},
6
+ {"pattern": "def\\s+(\\w+)(?:\\([^)]*\\))*\\s*=\\s*(?!\\{)", "kind": 1, "label": ": {inferred_type}", "position": "after_params", "paddingLeft": true, "description": "Show inferred return type for methods without explicit annotation"},
7
+ {"pattern": "(\\w+)\\s*\\(([^)]+)\\)", "kind": 2, "label": "{param_name}:", "position": "before_each_arg", "paddingRight": true, "description": "Show parameter names at function call sites"},
8
+ {"pattern": "for\\s*\\{?\\s*(\\w+)\\s*<-", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type of generator variable in for-comprehension"},
9
+ {"pattern": "case\\s+(\\w+)\\s*=>", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type of pattern match variable"},
10
+ {"pattern": "\\b(\\w+)\\s*\\(([^)]+)\\)", "kind": 2, "label": "(implicit {implicit_name})", "position": "after_args", "paddingLeft": true, "description": "Show implicit parameters being passed at call sites"},
11
+ {"pattern": "\\.map\\s*\\(\\s*(\\w+)\\s*=>", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type of lambda parameter"},
12
+ {"pattern": "\\.flatMap\\s*\\(\\s*(\\w+)\\s*=>", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type of flatMap lambda parameter"},
13
+ {"pattern": "\\.filter\\s*\\(\\s*(\\w+)\\s*=>", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type of filter lambda parameter"},
14
+ {"pattern": "lazy\\s+val\\s+(\\w+)\\s*=", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type for lazy val without explicit type"}
15
+ ],
16
+ "typeInferenceRules": {
17
+ "string_literal": {"pattern": "\"[^\"]*\"", "type": "String"},
18
+ "multiline_string": {"pattern": "\"\"\"[\\s\\S]*?\"\"\"", "type": "String"},
19
+ "interpolated_string": {"pattern": "[sf]\"[^\"]*\"", "type": "String"},
20
+ "int_literal": {"pattern": "\\b\\d+\\b(?![.LlFfDd])", "type": "Int"},
21
+ "long_literal": {"pattern": "\\b\\d+[Ll]\\b", "type": "Long"},
22
+ "float_literal": {"pattern": "\\b\\d+\\.\\d+[Ff]\\b", "type": "Float"},
23
+ "double_literal": {"pattern": "\\b\\d+\\.\\d+\\b(?![Ff])", "type": "Double"},
24
+ "boolean_literal": {"pattern": "\\b(true|false)\\b", "type": "Boolean"},
25
+ "char_literal": {"pattern": "'[^']'", "type": "Char"},
26
+ "null_literal": {"pattern": "\\bnull\\b", "type": "Null"},
27
+ "list_literal": {"pattern": "List\\s*\\(", "type": "List[T]"},
28
+ "map_literal": {"pattern": "Map\\s*\\(", "type": "Map[K, V]"},
29
+ "set_literal": {"pattern": "Set\\s*\\(", "type": "Set[T]"},
30
+ "vector_literal": {"pattern": "Vector\\s*\\(", "type": "Vector[T]"},
31
+ "array_literal": {"pattern": "Array\\s*\\(", "type": "Array[T]"},
32
+ "option_some": {"pattern": "Some\\s*\\(", "type": "Option[T]"},
33
+ "option_none": {"pattern": "\\bNone\\b", "type": "Option[Nothing]"},
34
+ "tuple_literal": {"pattern": "\\(\\s*[^)]+\\s*,", "type": "(T1, T2, ...)"},
35
+ "future_expr": {"pattern": "Future\\s*[{(]", "type": "Future[T]"},
36
+ "try_expr": {"pattern": "Try\\s*[{(]", "type": "Try[T]"},
37
+ "right_expr": {"pattern": "Right\\s*\\(", "type": "Either[Nothing, T]"},
38
+ "left_expr": {"pattern": "Left\\s*\\(", "type": "Either[T, Nothing]"},
39
+ "constructor_call": {"pattern": "new\\s+[A-Z]\\w*", "type": "{constructor_class}"},
40
+ "range_expr": {"pattern": "\\d+\\s+(?:to|until)\\s+\\d+", "type": "Range"}
41
+ }
42
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "language": "swift",
3
+ "inlayHintPatterns": [
4
+ {"pattern": "(?:let|var)\\s+(\\w+)\\s*=\\s*(.+)", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show inferred type for variable/constant assignments"},
5
+ {"pattern": "(\\w+)\\s*\\(([^)]+)\\)", "kind": 2, "label": "{param_name}:", "position": "before_each_arg", "paddingRight": true, "description": "Show parameter names at call sites"},
6
+ {"pattern": "func\\s+\\w+\\([^)]*\\)\\s*->\\s*some\\s+\\w+\\s*\\{", "kind": 1, "label": "// opaque: {inferred_type}", "position": "end_of_line", "paddingLeft": true, "description": "Show concrete type behind opaque return type"},
7
+ {"pattern": "func\\s+\\w+\\([^)]*\\)\\s*\\{", "kind": 1, "label": "-> Void", "position": "before_brace", "paddingLeft": true, "description": "Show implicit Void return type"},
8
+ {"pattern": "\\{\\s*(\\w+)\\s*in", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show closure parameter types"},
9
+ {"pattern": "\\.map\\s*\\{|\\. filter\\s*\\{|\\.compactMap\\s*\\{|\\.flatMap\\s*\\{|\\.reduce\\s*\\(|\\.sorted\\s*\\{|\\.forEach\\s*\\{", "kind": 1, "label": "-> {inferred_type}", "position": "end_of_line", "paddingLeft": true, "description": "Show return type of chained collection operations"},
10
+ {"pattern": "case\\s+\\.(\\w+)\\s*=\\s*(.+)", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show enum case associated value types"}
11
+ ],
12
+ "typeInferenceRules": {
13
+ "string_literal": {"pattern": "\".*\"", "type": "String"},
14
+ "multiline_string": {"pattern": "\"\"\"[\\s\\S]*?\"\"\"", "type": "String"},
15
+ "integer_literal": {"pattern": "\\b\\d+\\b", "type": "Int"},
16
+ "double_literal": {"pattern": "\\b\\d+\\.\\d+\\b", "type": "Double"},
17
+ "float_literal": {"pattern": "\\b\\d+\\.\\d+[fF]\\b", "type": "Float"},
18
+ "boolean_literal": {"pattern": "\\b(true|false)\\b", "type": "Bool"},
19
+ "nil_literal": {"pattern": "\\bnil\\b", "type": "Optional"},
20
+ "character_literal": {"pattern": "Character\\(\"[^\"]*\"\\)", "type": "Character"},
21
+ "array_literal": {"pattern": "\\[.*\\]", "type": "[Element]"},
22
+ "dictionary_literal": {"pattern": "\\[.*:.*\\]", "type": "[Key: Value]"},
23
+ "empty_array": {"pattern": "\\[\\s*\\]", "type": "[Any]"},
24
+ "empty_dictionary": {"pattern": "\\[\\s*:\\s*\\]", "type": "[AnyHashable: Any]"},
25
+ "tuple_literal": {"pattern": "\\(.*,.*\\)", "type": "(T1, T2)"},
26
+ "optional_chaining": {"pattern": "\\w+\\?\\.", "type": "Optional<T>"},
27
+ "string_interpolation": {"pattern": "\".*\\\\\\(.*\\).*\"", "type": "String"},
28
+ "range_literal": {"pattern": "\\d+\\.\\.<\\d+", "type": "Range<Int>"},
29
+ "closed_range_literal": {"pattern": "\\d+\\.\\.\\.\\d+", "type": "ClosedRange<Int>"},
30
+ "url_init": {"pattern": "URL\\(string:\\s*\"[^\"]+\"\\)", "type": "URL?"},
31
+ "data_init": {"pattern": "Data\\(", "type": "Data"},
32
+ "date_init": {"pattern": "Date\\(", "type": "Date"},
33
+ "task_init": {"pattern": "Task\\s*\\{", "type": "Task<Void, Never>"},
34
+ "result_success": {"pattern": "\\.success\\(", "type": "Result<Success, Failure>"},
35
+ "result_failure": {"pattern": "\\.failure\\(", "type": "Result<Success, Failure>"}
36
+ }
37
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "language": "dart",
3
+ "inlineCompletions": [
4
+ {"triggerPattern": "^\\s*void\\s+main\\s*$", "insertText": "void main() {\n ${1:print('Hello, Dart!');}\n}", "description": "Main function", "completeBracketPairs": true},
5
+ {"triggerPattern": "^\\s*class\\s+\\w+\\s*$", "insertText": "class ${1:Name} {\n final ${2:String} ${3:field};\n\n const ${1:Name}({required this.${3:field}});\n\n $0\n}", "description": "Class with constructor", "completeBracketPairs": true},
6
+ {"triggerPattern": "^\\s*for\\s*$", "insertText": "for (final ${1:item} in ${2:items}) {\n $0\n}", "description": "For-in loop", "completeBracketPairs": true},
7
+ {"triggerPattern": "^\\s*if\\s*$", "insertText": "if (${1:condition}) {\n $0\n}", "description": "If statement", "completeBracketPairs": true},
8
+ {"triggerPattern": "^\\s*try\\s*$", "insertText": "try {\n ${1:// code}\n} on ${2:Exception} catch (e) {\n ${3:print(e);}\n}", "description": "Try-catch block", "completeBracketPairs": true},
9
+ {"triggerPattern": "^\\s*Future\\s*$", "insertText": "Future<${1:void}> ${2:name}() async {\n $0\n}", "description": "Async function returning Future", "completeBracketPairs": true},
10
+ {"triggerPattern": "^\\s*Stream\\s*$", "insertText": "Stream<${1:int}> ${2:name}() async* {\n yield ${3:value};\n}", "description": "Stream generator function", "completeBracketPairs": true},
11
+ {"triggerPattern": "^\\s*switch\\s*\\(", "insertText": "switch (${1:value}) {\n case ${2:pattern}:\n $0\n break;\n default:\n break;\n}", "description": "Switch statement", "completeBracketPairs": true},
12
+ {"triggerPattern": "^\\s*final\\s+\\w+\\s*=\\s*switch\\s*$", "insertText": "final ${1:result} = switch (${2:value}) {\n ${3:pattern} => ${4:expr},\n _ => ${5:default},\n};", "description": "Switch expression", "completeBracketPairs": true},
13
+ {"triggerPattern": "^\\s*extension\\s+\\w+\\s*$", "insertText": "extension ${1:Name} on ${2:Type} {\n ${3:ReturnType} ${4:method}() {\n $0\n }\n}", "description": "Extension declaration", "completeBracketPairs": true},
14
+ {"triggerPattern": "^\\s*mixin\\s+\\w+\\s*$", "insertText": "mixin ${1:Name} {\n ${2:void} ${3:method}() {\n $0\n }\n}", "description": "Mixin declaration", "completeBracketPairs": true},
15
+ {"triggerPattern": "^\\s*sealed\\s+class\\s*$", "insertText": "sealed class ${1:Name} {}\n\nclass ${2:SubType} extends ${1:Name} {\n final ${3:String} ${4:value};\n const ${2:SubType}(this.${4:value});\n}", "description": "Sealed class hierarchy", "completeBracketPairs": true},
16
+ {"triggerPattern": "^\\s*enum\\s+\\w+\\s*$", "insertText": "enum ${1:Name} {\n ${2:value1}('${3:label1}'),\n ${4:value2}('${5:label2}');\n\n final String ${6:label};\n const ${1:Name}(this.${6:label});\n}", "description": "Enhanced enum with values", "completeBracketPairs": true},
17
+ {"triggerPattern": "^\\s*factory\\s*$", "insertText": "factory ${1:ClassName}.${2:named}(${3:params}) {\n return ${4:instance};\n}", "description": "Factory constructor", "completeBracketPairs": true},
18
+ {"triggerPattern": "^\\s*class\\s+\\w+\\s+extends\\s+StatelessWidget\\s*$", "insertText": "class ${1:MyWidget} extends StatelessWidget {\n const ${1:MyWidget}({super.key});\n\n @override\n Widget build(BuildContext context) {\n return ${2:Container()};\n }\n}", "description": "Stateless widget", "completeBracketPairs": true},
19
+ {"triggerPattern": "^\\s*class\\s+\\w+\\s+extends\\s+StatefulWidget\\s*$", "insertText": "class ${1:MyWidget} extends StatefulWidget {\n const ${1:MyWidget}({super.key});\n\n @override\n State<${1:MyWidget}> createState() => _${1:MyWidget}State();\n}\n\nclass _${1:MyWidget}State extends State<${1:MyWidget}> {\n @override\n Widget build(BuildContext context) {\n return ${2:Container()};\n }\n}", "description": "Stateful widget with State class", "completeBracketPairs": true},
20
+ {"triggerPattern": "^\\s*test\\s*$", "insertText": "test('${1:description}', () {\n $0\n});", "description": "Test case", "completeBracketPairs": true},
21
+ {"triggerPattern": "^\\s*group\\s*$", "insertText": "group('${1:description}', () {\n $0\n});", "description": "Test group", "completeBracketPairs": true},
22
+ {"triggerPattern": "^\\s*typedef\\s*$", "insertText": "typedef ${1:Name} = ${2:Type};", "description": "Type alias", "completeBracketPairs": true},
23
+ {"triggerPattern": "\\.then\\s*$", "insertText": ".then((${1:value}) {\n $0\n})", "description": "Future then callback", "completeBracketPairs": true},
24
+ {"triggerPattern": "\\.map\\s*$", "insertText": ".map((${1:e}) => ${2:e})", "description": "Map iterable elements", "completeBracketPairs": true},
25
+ {"triggerPattern": "\\.where\\s*$", "insertText": ".where((${1:e}) => ${2:condition})", "description": "Filter iterable elements", "completeBracketPairs": true}
26
+ ]
27
+ }