@enjoys/context-engine 1.2.0 → 1.4.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 (270) hide show
  1. package/data/codeActions/angular.json +126 -0
  2. package/data/codeActions/css.json +111 -0
  3. package/data/codeActions/nestjs.json +124 -0
  4. package/data/codeActions/nextjs.json +198 -0
  5. package/data/codeActions/react.json +154 -0
  6. package/data/codeActions/shadcn.json +112 -0
  7. package/data/codeActions/shell.json +169 -26
  8. package/data/codeActions/tailwindcss.json +76 -0
  9. package/data/codeLens/angular.json +22 -0
  10. package/data/codeLens/css.json +68 -0
  11. package/data/codeLens/nestjs.json +21 -0
  12. package/data/codeLens/nextjs.json +117 -0
  13. package/data/codeLens/react.json +89 -0
  14. package/data/codeLens/shadcn.json +89 -0
  15. package/data/codeLens/shell.json +59 -17
  16. package/data/codeLens/tailwindcss.json +103 -0
  17. package/data/color/angular.json +21 -0
  18. package/data/color/css.json +124 -0
  19. package/data/color/nestjs.json +18 -0
  20. package/data/color/nextjs.json +22 -0
  21. package/data/color/react.json +93 -0
  22. package/data/color/shadcn.json +66 -0
  23. package/data/color/shell.json +106 -80
  24. package/data/color/tailwindcss.json +53 -0
  25. package/data/commands/angular.json +312 -0
  26. package/data/commands/css.json +41 -0
  27. package/data/commands/manifest.json +734 -727
  28. package/data/commands/nestjs.json +273 -0
  29. package/data/commands/nextjs.json +123 -0
  30. package/data/commands/react.json +210 -0
  31. package/data/commands/shadcn.json +410 -0
  32. package/data/commands/shell.json +571 -41
  33. package/data/commands/tailwindcss.json +53 -0
  34. package/data/completion/angular.json +1490 -0
  35. package/data/completion/css.json +1176 -0
  36. package/data/completion/javascript.json +27 -0
  37. package/data/completion/nestjs.json +1454 -0
  38. package/data/completion/nextjs.json +1373 -0
  39. package/data/completion/react.json +1319 -0
  40. package/data/completion/redis-cli.json +1 -1
  41. package/data/completion/shadcn.json +1202 -0
  42. package/data/completion/shell.json +2446 -510
  43. package/data/completion/tailwindcss.json +284 -0
  44. package/data/completion/typescript.json +27 -0
  45. package/data/declaration/angular.json +46 -0
  46. package/data/declaration/css.json +59 -0
  47. package/data/declaration/nestjs.json +47 -0
  48. package/data/declaration/nextjs.json +274 -0
  49. package/data/declaration/react.json +199 -0
  50. package/data/declaration/shadcn.json +211 -0
  51. package/data/declaration/shell.json +343 -24
  52. package/data/declaration/tailwindcss.json +137 -0
  53. package/data/definition/angular.json +670 -0
  54. package/data/definition/css.json +115 -0
  55. package/data/definition/nestjs.json +684 -0
  56. package/data/definition/nextjs.json +439 -0
  57. package/data/definition/react.json +397 -0
  58. package/data/definition/redis-cli.json +1 -1
  59. package/data/definition/shadcn.json +99 -0
  60. package/data/definition/shell.json +820 -0
  61. package/data/definition/tailwindcss.json +115 -0
  62. package/data/documentHighlight/angular.json +414 -0
  63. package/data/documentHighlight/css.json +125 -0
  64. package/data/documentHighlight/nestjs.json +115 -0
  65. package/data/documentHighlight/nextjs.json +212 -0
  66. package/data/documentHighlight/react.json +119 -0
  67. package/data/documentHighlight/shadcn.json +168 -0
  68. package/data/documentHighlight/shell.json +664 -334
  69. package/data/documentHighlight/tailwindcss.json +160 -0
  70. package/data/documentRangeFormatting/angular.json +45 -0
  71. package/data/documentRangeFormatting/css.json +101 -0
  72. package/data/documentRangeFormatting/nestjs.json +17 -0
  73. package/data/documentRangeFormatting/nextjs.json +17 -0
  74. package/data/documentRangeFormatting/react.json +78 -0
  75. package/data/documentRangeFormatting/shadcn.json +45 -0
  76. package/data/documentRangeFormatting/shell.json +120 -53
  77. package/data/documentRangeFormatting/tailwindcss.json +55 -0
  78. package/data/documentSymbol/angular.json +180 -0
  79. package/data/documentSymbol/css.json +96 -0
  80. package/data/documentSymbol/nestjs.json +152 -0
  81. package/data/documentSymbol/nextjs.json +159 -0
  82. package/data/documentSymbol/react.json +145 -0
  83. package/data/documentSymbol/shadcn.json +131 -0
  84. package/data/documentSymbol/shell.json +166 -26
  85. package/data/documentSymbol/tailwindcss.json +110 -0
  86. package/data/foldingRange/angular.json +99 -0
  87. package/data/foldingRange/css.json +66 -0
  88. package/data/foldingRange/nestjs.json +26 -0
  89. package/data/foldingRange/nextjs.json +26 -0
  90. package/data/foldingRange/react.json +120 -0
  91. package/data/foldingRange/shadcn.json +93 -0
  92. package/data/foldingRange/shell.json +106 -46
  93. package/data/foldingRange/tailwindcss.json +60 -0
  94. package/data/formatting/angular.json +21 -0
  95. package/data/formatting/css.json +73 -0
  96. package/data/formatting/nestjs.json +23 -0
  97. package/data/formatting/nextjs.json +23 -0
  98. package/data/formatting/react.json +71 -0
  99. package/data/formatting/shadcn.json +61 -0
  100. package/data/formatting/shell.json +103 -19
  101. package/data/formatting/tailwindcss.json +48 -0
  102. package/data/hover/angular.json +455 -0
  103. package/data/hover/css.json +300 -0
  104. package/data/hover/nestjs.json +296 -0
  105. package/data/hover/nextjs.json +305 -0
  106. package/data/hover/react.json +173 -0
  107. package/data/hover/redis-cli.json +1 -1
  108. package/data/hover/shadcn.json +450 -0
  109. package/data/hover/shell.json +684 -75
  110. package/data/hover/tailwindcss.json +968 -0
  111. package/data/implementation/angular.json +22 -0
  112. package/data/implementation/css.json +65 -0
  113. package/data/implementation/nestjs.json +24 -0
  114. package/data/implementation/nextjs.json +137 -0
  115. package/data/implementation/react.json +125 -0
  116. package/data/implementation/shadcn.json +89 -0
  117. package/data/implementation/shell.json +59 -3
  118. package/data/implementation/tailwindcss.json +59 -0
  119. package/data/inlayHints/angular.json +24 -0
  120. package/data/inlayHints/css.json +87 -0
  121. package/data/inlayHints/nestjs.json +24 -0
  122. package/data/inlayHints/nextjs.json +143 -0
  123. package/data/inlayHints/react.json +177 -0
  124. package/data/inlayHints/shadcn.json +109 -0
  125. package/data/inlayHints/shell.json +223 -35
  126. package/data/inlayHints/tailwindcss.json +111 -0
  127. package/data/inlineCompletions/angular.json +135 -0
  128. package/data/inlineCompletions/css.json +125 -0
  129. package/data/inlineCompletions/javascript.json +12 -0
  130. package/data/inlineCompletions/nestjs.json +25 -0
  131. package/data/inlineCompletions/nextjs.json +179 -0
  132. package/data/inlineCompletions/react.json +203 -0
  133. package/data/inlineCompletions/shadcn.json +115 -0
  134. package/data/inlineCompletions/shell.json +185 -35
  135. package/data/inlineCompletions/tailwindcss.json +411 -0
  136. package/data/inlineCompletions/typescript.json +12 -0
  137. package/data/linkedEditingRange/angular.json +23 -0
  138. package/data/linkedEditingRange/css.json +40 -0
  139. package/data/linkedEditingRange/nestjs.json +10 -0
  140. package/data/linkedEditingRange/nextjs.json +11 -0
  141. package/data/linkedEditingRange/react.json +75 -0
  142. package/data/linkedEditingRange/shadcn.json +23 -0
  143. package/data/linkedEditingRange/shell.json +25 -25
  144. package/data/linkedEditingRange/tailwindcss.json +30 -0
  145. package/data/links/angular.json +95 -0
  146. package/data/links/css.json +55 -0
  147. package/data/links/nestjs.json +130 -0
  148. package/data/links/nextjs.json +91 -0
  149. package/data/links/react.json +75 -0
  150. package/data/links/shadcn.json +98 -0
  151. package/data/links/shell.json +56 -0
  152. package/data/links/tailwindcss.json +65 -0
  153. package/data/manifest.json +399 -150
  154. package/data/onTypeFormatting/angular.json +14 -0
  155. package/data/onTypeFormatting/css.json +82 -0
  156. package/data/onTypeFormatting/nestjs.json +16 -0
  157. package/data/onTypeFormatting/nextjs.json +17 -0
  158. package/data/onTypeFormatting/react.json +127 -0
  159. package/data/onTypeFormatting/shadcn.json +54 -0
  160. package/data/onTypeFormatting/shell.json +72 -68
  161. package/data/onTypeFormatting/tailwindcss.json +63 -0
  162. package/data/rangeSemanticTokens/angular.json +140 -0
  163. package/data/rangeSemanticTokens/css.json +125 -0
  164. package/data/rangeSemanticTokens/nestjs.json +27 -0
  165. package/data/rangeSemanticTokens/nextjs.json +28 -0
  166. package/data/rangeSemanticTokens/react.json +216 -0
  167. package/data/rangeSemanticTokens/shadcn.json +140 -0
  168. package/data/rangeSemanticTokens/shell.json +247 -69
  169. package/data/rangeSemanticTokens/tailwindcss.json +186 -0
  170. package/data/references/angular.json +26 -0
  171. package/data/references/css.json +65 -0
  172. package/data/references/nestjs.json +24 -0
  173. package/data/references/nextjs.json +178 -0
  174. package/data/references/react.json +192 -0
  175. package/data/references/shadcn.json +101 -0
  176. package/data/references/shell.json +323 -92
  177. package/data/references/tailwindcss.json +125 -0
  178. package/data/rename/angular.json +131 -0
  179. package/data/rename/css.json +91 -0
  180. package/data/rename/nestjs.json +32 -0
  181. package/data/rename/nextjs.json +31 -0
  182. package/data/rename/react.json +88 -0
  183. package/data/rename/shadcn.json +79 -0
  184. package/data/rename/shell.json +101 -31
  185. package/data/rename/tailwindcss.json +58 -0
  186. package/data/selectionRange/angular.json +95 -0
  187. package/data/selectionRange/css.json +55 -0
  188. package/data/selectionRange/nestjs.json +21 -0
  189. package/data/selectionRange/nextjs.json +22 -0
  190. package/data/selectionRange/react.json +87 -0
  191. package/data/selectionRange/shadcn.json +89 -0
  192. package/data/selectionRange/shell.json +65 -35
  193. package/data/selectionRange/tailwindcss.json +35 -0
  194. package/data/semanticTokens/angular.json +198 -0
  195. package/data/semanticTokens/css.json +107 -0
  196. package/data/semanticTokens/nestjs.json +35 -0
  197. package/data/semanticTokens/nextjs.json +38 -0
  198. package/data/semanticTokens/react.json +215 -0
  199. package/data/semanticTokens/shadcn.json +180 -0
  200. package/data/semanticTokens/shell.json +238 -65
  201. package/data/semanticTokens/tailwindcss.json +161 -0
  202. package/data/signatureHelp/angular.json +182 -0
  203. package/data/signatureHelp/css.json +137 -0
  204. package/data/signatureHelp/nestjs.json +128 -0
  205. package/data/signatureHelp/nextjs.json +127 -0
  206. package/data/signatureHelp/react.json +281 -0
  207. package/data/signatureHelp/shadcn.json +237 -0
  208. package/data/signatureHelp/shell.json +797 -104
  209. package/data/signatureHelp/tailwindcss.json +64 -0
  210. package/data/typeDefinition/angular.json +362 -0
  211. package/data/typeDefinition/css.json +53 -0
  212. package/data/typeDefinition/nestjs.json +334 -0
  213. package/data/typeDefinition/nextjs.json +285 -0
  214. package/data/typeDefinition/react.json +236 -0
  215. package/data/typeDefinition/shadcn.json +292 -0
  216. package/data/typeDefinition/shell.json +104 -40
  217. package/data/typeDefinition/tailwindcss.json +47 -0
  218. package/package.json +1 -1
  219. package/data/codeActions/bash.json +0 -169
  220. package/data/codeActions/zsh.json +0 -49
  221. package/data/codeLens/bash.json +0 -75
  222. package/data/codeLens/zsh.json +0 -19
  223. package/data/color/bash.json +0 -100
  224. package/data/color/zsh.json +0 -80
  225. package/data/commands/bash.json +0 -102
  226. package/data/commands/zsh.json +0 -166
  227. package/data/completion/bash.json +0 -1184
  228. package/data/completion/zsh.json +0 -973
  229. package/data/declaration/bash.json +0 -301
  230. package/data/declaration/zsh.json +0 -205
  231. package/data/definition/bash.json +0 -565
  232. package/data/definition/zsh.json +0 -350
  233. package/data/documentHighlight/bash.json +0 -393
  234. package/data/documentHighlight/zsh.json +0 -266
  235. package/data/documentRangeFormatting/bash.json +0 -41
  236. package/data/documentRangeFormatting/zsh.json +0 -59
  237. package/data/documentSymbol/bash.json +0 -124
  238. package/data/documentSymbol/zsh.json +0 -26
  239. package/data/foldingRange/bash.json +0 -76
  240. package/data/foldingRange/zsh.json +0 -46
  241. package/data/formatting/bash.json +0 -88
  242. package/data/formatting/zsh.json +0 -28
  243. package/data/hover/bash.json +0 -579
  244. package/data/hover/zsh.json +0 -96
  245. package/data/implementation/bash.json +0 -44
  246. package/data/implementation/zsh.json +0 -41
  247. package/data/inlayHints/bash.json +0 -207
  248. package/data/inlayHints/zsh.json +0 -43
  249. package/data/inlineCompletions/bash.json +0 -155
  250. package/data/inlineCompletions/zsh.json +0 -17
  251. package/data/linkedEditingRange/bash.json +0 -25
  252. package/data/linkedEditingRange/zsh.json +0 -25
  253. package/data/links/bash.json +0 -56
  254. package/data/links/zsh.json +0 -15
  255. package/data/onTypeFormatting/bash.json +0 -68
  256. package/data/onTypeFormatting/zsh.json +0 -68
  257. package/data/rangeSemanticTokens/bash.json +0 -90
  258. package/data/rangeSemanticTokens/zsh.json +0 -76
  259. package/data/references/bash.json +0 -221
  260. package/data/references/zsh.json +0 -166
  261. package/data/rename/bash.json +0 -37
  262. package/data/rename/zsh.json +0 -31
  263. package/data/selectionRange/bash.json +0 -35
  264. package/data/selectionRange/zsh.json +0 -35
  265. package/data/semanticTokens/bash.json +0 -71
  266. package/data/semanticTokens/zsh.json +0 -71
  267. package/data/signatureHelp/bash.json +0 -111
  268. package/data/signatureHelp/zsh.json +0 -118
  269. package/data/typeDefinition/bash.json +0 -95
  270. package/data/typeDefinition/zsh.json +0 -40
@@ -0,0 +1,126 @@
1
+ {
2
+ "language": "angular",
3
+ "codeActions": [
4
+ {
5
+ "title": "Add missing import",
6
+ "kind": "quickfix",
7
+ "description": "Automatically import a symbol that is used but not imported in the current file",
8
+ "pattern": "\\b(Component|Injectable|Directive|Pipe|Input|Output|OnInit|OnDestroy|signal|computed|effect|inject|FormControl|FormGroup|HttpClient|Router|ActivatedRoute)\\b",
9
+ "isPreferred": true
10
+ },
11
+ {
12
+ "title": "Convert to standalone component",
13
+ "kind": "refactor.rewrite",
14
+ "description": "Convert an NgModule-based component to a standalone component with standalone: true and direct imports",
15
+ "pattern": "@Component\\s*\\(",
16
+ "isPreferred": false
17
+ },
18
+ {
19
+ "title": "Add lifecycle hook",
20
+ "kind": "refactor.rewrite",
21
+ "description": "Add a lifecycle hook (OnInit, OnDestroy, OnChanges, etc.) to the current component or directive class",
22
+ "pattern": "class\\s+\\w+(Component|Directive)",
23
+ "isPreferred": false
24
+ },
25
+ {
26
+ "title": "Extract to service",
27
+ "kind": "refactor.extract",
28
+ "description": "Extract selected logic into a new injectable Angular service",
29
+ "pattern": ".*",
30
+ "isPreferred": false
31
+ },
32
+ {
33
+ "title": "Add @Input property",
34
+ "kind": "refactor.rewrite",
35
+ "description": "Add a new @Input() property to the component or directive",
36
+ "pattern": "class\\s+\\w+(Component|Directive)",
37
+ "isPreferred": false
38
+ },
39
+ {
40
+ "title": "Add @Output property",
41
+ "kind": "refactor.rewrite",
42
+ "description": "Add a new @Output() EventEmitter property to the component or directive",
43
+ "pattern": "class\\s+\\w+(Component|Directive)",
44
+ "isPreferred": false
45
+ },
46
+ {
47
+ "title": "Convert @Input to signal input",
48
+ "kind": "refactor.rewrite",
49
+ "description": "Convert a decorator-based @Input() property to the signal-based input() function",
50
+ "pattern": "@Input\\(\\)",
51
+ "isPreferred": false
52
+ },
53
+ {
54
+ "title": "Convert @Output to signal output",
55
+ "kind": "refactor.rewrite",
56
+ "description": "Convert a decorator-based @Output() EventEmitter to the signal-based output() function",
57
+ "pattern": "@Output\\(\\)",
58
+ "isPreferred": false
59
+ },
60
+ {
61
+ "title": "Convert *ngIf to @if",
62
+ "kind": "refactor.rewrite",
63
+ "description": "Convert legacy *ngIf structural directive to new built-in @if control flow syntax",
64
+ "pattern": "\\*ngIf",
65
+ "isPreferred": false
66
+ },
67
+ {
68
+ "title": "Convert *ngFor to @for",
69
+ "kind": "refactor.rewrite",
70
+ "description": "Convert legacy *ngFor structural directive to new built-in @for control flow syntax with track",
71
+ "pattern": "\\*ngFor",
72
+ "isPreferred": false
73
+ },
74
+ {
75
+ "title": "Convert ngSwitch to @switch",
76
+ "kind": "refactor.rewrite",
77
+ "description": "Convert legacy ngSwitch directive to new built-in @switch control flow syntax",
78
+ "pattern": "\\[ngSwitch\\]",
79
+ "isPreferred": false
80
+ },
81
+ {
82
+ "title": "Add form validators",
83
+ "kind": "refactor.rewrite",
84
+ "description": "Add Validators (required, email, minLength, etc.) to a FormControl or FormGroup field",
85
+ "pattern": "new FormControl|FormBuilder|fb\\.group|fb\\.control",
86
+ "isPreferred": false
87
+ },
88
+ {
89
+ "title": "Import module",
90
+ "kind": "quickfix",
91
+ "description": "Add a missing module or standalone component/directive/pipe to the imports array",
92
+ "pattern": "@(Component|NgModule)\\s*\\(\\s*\\{",
93
+ "isPreferred": false
94
+ },
95
+ {
96
+ "title": "Organize imports",
97
+ "kind": "source.organizeImports",
98
+ "description": "Sort and clean up import statements, removing unused imports",
99
+ "pattern": "\\bimport\\b",
100
+ "isPreferred": true
101
+ },
102
+ {
103
+ "title": "Fix all auto-fixable lint issues",
104
+ "kind": "source.fixAll",
105
+ "description": "Apply all available automatic fixes for linting and type errors",
106
+ "pattern": ".*",
107
+ "isPreferred": false
108
+ },
109
+ {
110
+ "title": "Generate trackBy function",
111
+ "kind": "refactor.rewrite",
112
+ "description": "Generate a trackBy function for *ngFor or a track expression for @for",
113
+ "pattern": "\\*ngFor|@for",
114
+ "isPreferred": false
115
+ }
116
+ ],
117
+ "providedCodeActionKinds": [
118
+ "quickfix",
119
+ "refactor",
120
+ "refactor.extract",
121
+ "refactor.rewrite",
122
+ "source",
123
+ "source.fixAll",
124
+ "source.organizeImports"
125
+ ]
126
+ }
@@ -0,0 +1,111 @@
1
+ {
2
+ "language": "css",
3
+ "codeActions": [
4
+ {
5
+ "title": "Sort properties alphabetically",
6
+ "kind": "source.sortProperties",
7
+ "description": "Reorders all CSS property declarations within a rule block in alphabetical order for consistency and readability.",
8
+ "pattern": "\\{[^}]*[a-z-]+\\s*:[^}]*\\}",
9
+ "isPreferred": false
10
+ },
11
+ {
12
+ "title": "Remove duplicate properties",
13
+ "kind": "quickfix",
14
+ "description": "Detects and removes duplicate CSS property declarations within the same rule block, keeping the last occurrence.",
15
+ "pattern": "([a-z-]+)\\s*:[^;]+;[\\s\\S]*\\1\\s*:",
16
+ "isPreferred": true
17
+ },
18
+ {
19
+ "title": "Convert px to rem",
20
+ "kind": "refactor.convert",
21
+ "description": "Converts pixel values to rem units using a base font size of 16px (e.g., 16px → 1rem, 24px → 1.5rem).",
22
+ "pattern": ":\\s*(-?\\d+(\\.\\d+)?)px",
23
+ "isPreferred": false
24
+ },
25
+ {
26
+ "title": "Convert rem to px",
27
+ "kind": "refactor.convert",
28
+ "description": "Converts rem values to pixel units using a base font size of 16px (e.g., 1rem → 16px, 0.75rem → 12px).",
29
+ "pattern": ":\\s*(-?\\d+(\\.\\d+)?)rem",
30
+ "isPreferred": false
31
+ },
32
+ {
33
+ "title": "Add vendor prefixes",
34
+ "kind": "source.addPrefixes",
35
+ "description": "Adds -webkit-, -moz-, -ms-, -o- prefixed versions for properties that require vendor prefixes for broader browser support (e.g., transform, appearance, backdrop-filter).",
36
+ "pattern": "(?:transform|appearance|backdrop-filter|user-select|text-size-adjust|hyphens|writing-mode)\\s*:",
37
+ "isPreferred": false
38
+ },
39
+ {
40
+ "title": "Convert hex to rgb()",
41
+ "kind": "refactor.convert",
42
+ "description": "Converts hexadecimal color values to rgb() functional notation (e.g., #ff0000 → rgb(255, 0, 0)).",
43
+ "pattern": "#([0-9a-fA-F]{3,8})\\b",
44
+ "isPreferred": false
45
+ },
46
+ {
47
+ "title": "Convert hex to hsl()",
48
+ "kind": "refactor.convert",
49
+ "description": "Converts hexadecimal color values to hsl() functional notation (e.g., #ff0000 → hsl(0, 100%, 50%)).",
50
+ "pattern": "#([0-9a-fA-F]{3,8})\\b",
51
+ "isPreferred": false
52
+ },
53
+ {
54
+ "title": "Convert rgb() to hex",
55
+ "kind": "refactor.convert",
56
+ "description": "Converts rgb() or rgba() functional notation to hexadecimal color values (e.g., rgb(255, 0, 0) → #ff0000).",
57
+ "pattern": "rgba?\\(\\s*\\d+",
58
+ "isPreferred": false
59
+ },
60
+ {
61
+ "title": "Extract CSS custom property",
62
+ "kind": "refactor.extract",
63
+ "description": "Extracts a repeated value into a CSS custom property (variable) defined on :root and replaces all occurrences with var(--name).",
64
+ "pattern": ":\\s*([^;]+);",
65
+ "isPreferred": false
66
+ },
67
+ {
68
+ "title": "Add missing semicolons",
69
+ "kind": "quickfix",
70
+ "description": "Inserts missing semicolons at the end of CSS property declarations within rule blocks.",
71
+ "pattern": "[a-z-]+\\s*:[^;{}]+(?=\\s*[}\\n])",
72
+ "isPreferred": true
73
+ },
74
+ {
75
+ "title": "Expand shorthand property",
76
+ "kind": "refactor.expand",
77
+ "description": "Expands a shorthand property (margin, padding, border, background, font, animation, transition) into its individual longhand properties.",
78
+ "pattern": "(?:margin|padding|border|background|font|animation|transition|flex|grid|overflow|border-radius)\\s*:",
79
+ "isPreferred": false
80
+ },
81
+ {
82
+ "title": "Collapse to shorthand property",
83
+ "kind": "refactor.collapse",
84
+ "description": "Combines individual longhand properties (e.g., margin-top, margin-right, margin-bottom, margin-left) into their shorthand equivalent.",
85
+ "pattern": "(margin|padding|border|overflow)-(top|right|bottom|left)\\s*:",
86
+ "isPreferred": false
87
+ },
88
+ {
89
+ "title": "Convert named color to hex",
90
+ "kind": "refactor.convert",
91
+ "description": "Converts a CSS named color (e.g., red, blue, rebeccapurple) to its hexadecimal equivalent.",
92
+ "pattern": ":\\s*(red|blue|green|white|black|gray|grey|orange|purple|yellow|pink|cyan|magenta|rebeccapurple|transparent|currentColor)\\b",
93
+ "isPreferred": false
94
+ },
95
+ {
96
+ "title": "Add fallback for CSS custom property",
97
+ "kind": "quickfix",
98
+ "description": "Adds a fallback value to var() expressions that are missing one: var(--name) → var(--name, fallback).",
99
+ "pattern": "var\\(--[a-zA-Z0-9-]+\\s*\\)",
100
+ "isPreferred": false
101
+ },
102
+ {
103
+ "title": "Convert to logical properties",
104
+ "kind": "refactor.convert",
105
+ "description": "Converts physical properties (margin-left, padding-right, border-top, width, height) to their logical property equivalents (margin-inline-start, padding-inline-end, border-block-start, inline-size, block-size) for better internationalization support.",
106
+ "pattern": "(?:margin|padding|border)-(top|right|bottom|left)\\s*:|\\b(width|height)\\s*:",
107
+ "isPreferred": false
108
+ }
109
+ ],
110
+ "providedCodeActionKinds": ["quickfix", "refactor", "refactor.convert", "refactor.extract", "refactor.expand", "refactor.collapse", "source", "source.sortProperties", "source.addPrefixes"]
111
+ }
@@ -0,0 +1,124 @@
1
+ {
2
+ "language": "nestjs",
3
+ "codeActions": [
4
+ {
5
+ "title": "Add missing decorator import",
6
+ "kind": "quickfix",
7
+ "description": "Adds the missing import statement for NestJS decorators like @Controller, @Injectable, @Get, @Post, etc. from @nestjs/common",
8
+ "pattern": "@(Controller|Injectable|Get|Post|Put|Patch|Delete|Module|Inject|Body|Param|Query|Headers|UseGuards|UseInterceptors|UsePipes|UseFilters|SetMetadata|Catch|HttpCode|Header|Redirect|Req|Res)",
9
+ "isPreferred": true
10
+ },
11
+ {
12
+ "title": "Generate constructor injection",
13
+ "kind": "quickfix",
14
+ "description": "Generates a constructor with dependency injection for the specified service or repository",
15
+ "pattern": "class\\s+\\w+\\s*\\{",
16
+ "isPreferred": false
17
+ },
18
+ {
19
+ "title": "Extract method to service",
20
+ "kind": "refactor.extract",
21
+ "description": "Extracts the selected method logic from a controller into a service class",
22
+ "pattern": "@(Get|Post|Put|Patch|Delete)\\s*\\(",
23
+ "isPreferred": false
24
+ },
25
+ {
26
+ "title": "Add @Injectable() decorator",
27
+ "kind": "quickfix",
28
+ "description": "Adds the @Injectable() decorator to a class that needs to be managed by the NestJS IoC container",
29
+ "pattern": "export\\s+class\\s+\\w+(Service|Guard|Pipe|Interceptor|Filter|Strategy|Middleware)",
30
+ "isPreferred": true
31
+ },
32
+ {
33
+ "title": "Convert to async method",
34
+ "kind": "refactor",
35
+ "description": "Converts a synchronous route handler method to an async method with Promise return type",
36
+ "pattern": "@(Get|Post|Put|Patch|Delete)\\s*\\([^)]*\\)\\s*\\n\\s*(?!async)",
37
+ "isPreferred": false
38
+ },
39
+ {
40
+ "title": "Add ValidationPipe to method",
41
+ "kind": "quickfix",
42
+ "description": "Adds @UsePipes(new ValidationPipe()) decorator to the route handler for request validation",
43
+ "pattern": "@(Post|Put|Patch)\\s*\\(",
44
+ "isPreferred": false
45
+ },
46
+ {
47
+ "title": "Wrap in try-catch with HttpException",
48
+ "kind": "refactor",
49
+ "description": "Wraps the selected code in a try-catch block that throws an appropriate HttpException on error",
50
+ "pattern": "async\\s+\\w+\\s*\\(",
51
+ "isPreferred": false
52
+ },
53
+ {
54
+ "title": "Add @ApiProperty() to DTO fields",
55
+ "kind": "quickfix",
56
+ "description": "Adds @ApiProperty() decorator from @nestjs/swagger to all properties in a DTO class for Swagger documentation",
57
+ "pattern": "class\\s+\\w+Dto\\s*\\{",
58
+ "isPreferred": false
59
+ },
60
+ {
61
+ "title": "Generate CRUD endpoints",
62
+ "kind": "refactor",
63
+ "description": "Generates a complete set of CRUD route handlers (GET, POST, PUT, DELETE) in the controller",
64
+ "pattern": "@Controller\\s*\\(",
65
+ "isPreferred": false
66
+ },
67
+ {
68
+ "title": "Add @UseGuards(AuthGuard)",
69
+ "kind": "quickfix",
70
+ "description": "Adds @UseGuards(AuthGuard('jwt')) decorator to protect the route with JWT authentication",
71
+ "pattern": "@(Get|Post|Put|Patch|Delete)\\s*\\(",
72
+ "isPreferred": false
73
+ },
74
+ {
75
+ "title": "Add @UseInterceptors(ClassSerializerInterceptor)",
76
+ "kind": "quickfix",
77
+ "description": "Adds ClassSerializerInterceptor to the controller or method for response serialization",
78
+ "pattern": "@Controller\\s*\\(|@(Get|Post|Put|Patch|Delete)\\s*\\(",
79
+ "isPreferred": false
80
+ },
81
+ {
82
+ "title": "Add Swagger decorators to endpoint",
83
+ "kind": "refactor",
84
+ "description": "Adds @ApiOperation, @ApiResponse, and other Swagger decorators to document the endpoint",
85
+ "pattern": "@(Get|Post|Put|Patch|Delete)\\s*\\(",
86
+ "isPreferred": false
87
+ },
88
+ {
89
+ "title": "Convert to custom provider",
90
+ "kind": "refactor",
91
+ "description": "Converts a simple class provider to a custom provider with useFactory, useValue, or useClass syntax",
92
+ "pattern": "providers:\\s*\\[",
93
+ "isPreferred": false
94
+ },
95
+ {
96
+ "title": "Add module imports",
97
+ "kind": "quickfix",
98
+ "description": "Adds missing NestJS module imports (ConfigModule, TypeOrmModule, etc.) to the module's imports array",
99
+ "pattern": "@Module\\s*\\(",
100
+ "isPreferred": false
101
+ },
102
+ {
103
+ "title": "Organize imports",
104
+ "kind": "source.organizeImports",
105
+ "description": "Organizes and sorts import statements, grouping @nestjs/* imports together",
106
+ "pattern": "import\\s+",
107
+ "isPreferred": false
108
+ },
109
+ {
110
+ "title": "Fix all auto-fixable issues",
111
+ "kind": "source.fixAll",
112
+ "description": "Applies all available auto-fixes including missing imports, decorators, and formatting",
113
+ "pattern": ".*",
114
+ "isPreferred": false
115
+ }
116
+ ],
117
+ "providedCodeActionKinds": [
118
+ "quickfix",
119
+ "refactor",
120
+ "refactor.extract",
121
+ "source.organizeImports",
122
+ "source.fixAll"
123
+ ]
124
+ }
@@ -0,0 +1,198 @@
1
+ {
2
+ "language": "nextjs",
3
+ "codeActions": [
4
+ {
5
+ "title": "Add 'use client' directive",
6
+ "kind": "quickfix",
7
+ "description": "Adds 'use client' directive at the top of the file to mark it as a Client Component.",
8
+ "pattern": "useState|useEffect|useContext|useReducer|useRef|useCallback|useMemo|onClick|onChange|onSubmit|addEventListener",
9
+ "edit": {
10
+ "insertText": "'use client';\n\n",
11
+ "position": "top"
12
+ }
13
+ },
14
+ {
15
+ "title": "Add 'use server' directive",
16
+ "kind": "quickfix",
17
+ "description": "Adds 'use server' directive to mark the file or function as a Server Action.",
18
+ "pattern": "formData|revalidatePath|revalidateTag|redirect|db\\.|prisma\\.",
19
+ "edit": {
20
+ "insertText": "'use server';\n\n",
21
+ "position": "top"
22
+ }
23
+ },
24
+ {
25
+ "title": "Convert to Server Component",
26
+ "kind": "refactor",
27
+ "description": "Removes 'use client' directive and converts client-specific code to server-compatible patterns.",
28
+ "pattern": "^'use client'",
29
+ "edit": {
30
+ "removePattern": "^'use client';?\\s*\\n?",
31
+ "position": "top"
32
+ }
33
+ },
34
+ {
35
+ "title": "Convert to Client Component",
36
+ "kind": "refactor",
37
+ "description": "Adds 'use client' directive and ensures the component uses client-side patterns.",
38
+ "pattern": "export\\s+(default\\s+)?(async\\s+)?function",
39
+ "edit": {
40
+ "insertText": "'use client';\n\n",
41
+ "position": "top"
42
+ }
43
+ },
44
+ {
45
+ "title": "Extract Server Action",
46
+ "kind": "refactor.extract",
47
+ "description": "Extracts inline server action into a separate 'use server' function.",
48
+ "pattern": "'use server'\\s*;?\\s*\\n\\s*(?=.*formData)",
49
+ "edit": {
50
+ "extractTo": "actions.ts",
51
+ "directive": "'use server'"
52
+ }
53
+ },
54
+ {
55
+ "title": "Add generateMetadata export",
56
+ "kind": "quickfix",
57
+ "description": "Adds a generateMetadata function for dynamic SEO metadata.",
58
+ "pattern": "export\\s+default\\s+(async\\s+)?function\\s+\\w+Page",
59
+ "edit": {
60
+ "insertText": "\nimport type { Metadata } from 'next';\n\nexport async function generateMetadata({ params }: { params: { slug: string } }): Promise<Metadata> {\n return {\n title: '',\n description: '',\n };\n}\n",
61
+ "position": "beforeExport"
62
+ }
63
+ },
64
+ {
65
+ "title": "Add generateStaticParams export",
66
+ "kind": "quickfix",
67
+ "description": "Adds a generateStaticParams function for static generation of dynamic routes.",
68
+ "pattern": "params:\\s*\\{\\s*\\w+:\\s*string",
69
+ "edit": {
70
+ "insertText": "\nexport async function generateStaticParams() {\n return [];\n}\n",
71
+ "position": "beforeExport"
72
+ }
73
+ },
74
+ {
75
+ "title": "Wrap with Suspense boundary",
76
+ "kind": "refactor",
77
+ "description": "Wraps the selected async component with a React Suspense boundary and loading fallback.",
78
+ "pattern": "<\\w+.*/>|<\\w+.*>.*</\\w+>",
79
+ "edit": {
80
+ "wrapWith": "<Suspense fallback={<Loading />}>",
81
+ "wrapEnd": "</Suspense>",
82
+ "import": "import { Suspense } from 'react';"
83
+ }
84
+ },
85
+ {
86
+ "title": "Add loading.tsx file",
87
+ "kind": "source",
88
+ "description": "Creates a loading.tsx file in the current route segment directory for streaming.",
89
+ "pattern": "page\\.(tsx|jsx|ts|js)$",
90
+ "edit": {
91
+ "createFile": "loading.tsx",
92
+ "content": "export default function Loading() {\n return <div>Loading...</div>;\n}\n"
93
+ }
94
+ },
95
+ {
96
+ "title": "Add error.tsx file",
97
+ "kind": "source",
98
+ "description": "Creates an error.tsx file in the current route segment directory for error handling.",
99
+ "pattern": "page\\.(tsx|jsx|ts|js)$",
100
+ "edit": {
101
+ "createFile": "error.tsx",
102
+ "content": "'use client';\n\nexport default function Error({\n error,\n reset,\n}: {\n error: Error & { digest?: string };\n reset: () => void;\n}) {\n return (\n <div>\n <h2>Something went wrong!</h2>\n <button onClick={() => reset()}>Try again</button>\n </div>\n );\n}\n"
103
+ }
104
+ },
105
+ {
106
+ "title": "Convert getServerSideProps to App Router",
107
+ "kind": "refactor",
108
+ "description": "Converts Pages Router getServerSideProps to App Router async Server Component with fetch.",
109
+ "pattern": "getServerSideProps",
110
+ "edit": {
111
+ "convertPattern": "getServerSideProps",
112
+ "replacement": "async-server-component",
113
+ "fetchOptions": "{ cache: 'no-store' }"
114
+ }
115
+ },
116
+ {
117
+ "title": "Convert API Route to Route Handler",
118
+ "kind": "refactor",
119
+ "description": "Converts Pages Router API route (req, res) to App Router Route Handler with NextRequest/NextResponse.",
120
+ "pattern": "NextApiRequest|NextApiResponse|req\\.method|res\\.status",
121
+ "edit": {
122
+ "convertPattern": "api-route-to-route-handler",
123
+ "importReplace": {
124
+ "from": "import type { NextApiRequest, NextApiResponse } from 'next';",
125
+ "to": "import { NextRequest, NextResponse } from 'next/server';"
126
+ }
127
+ }
128
+ },
129
+ {
130
+ "title": "Add revalidation to fetch",
131
+ "kind": "quickfix",
132
+ "description": "Adds next.revalidate or next.tags option to an existing fetch call.",
133
+ "pattern": "fetch\\([^)]+\\)(?!.*next:)",
134
+ "edit": {
135
+ "appendToFetch": ", { next: { revalidate: 3600 } }"
136
+ }
137
+ },
138
+ {
139
+ "title": "Optimize Image component",
140
+ "kind": "quickfix",
141
+ "description": "Converts HTML <img> tag to Next.js <Image> component with optimization props.",
142
+ "pattern": "<img\\s",
143
+ "edit": {
144
+ "replaceTag": "Image",
145
+ "addImport": "import Image from 'next/image';",
146
+ "requiredProps": ["width", "height", "alt"]
147
+ }
148
+ },
149
+ {
150
+ "title": "Add middleware matcher",
151
+ "kind": "quickfix",
152
+ "description": "Adds or updates the config.matcher export in middleware.ts for route matching.",
153
+ "pattern": "export\\s+function\\s+middleware",
154
+ "edit": {
155
+ "insertText": "\nexport const config = {\n matcher: ['/((?!api|_next/static|_next/image|favicon.ico).*)'],\n};\n",
156
+ "position": "bottom"
157
+ }
158
+ },
159
+ {
160
+ "title": "Convert to dynamic import",
161
+ "kind": "refactor",
162
+ "description": "Converts a static import to a dynamic import using next/dynamic for code splitting.",
163
+ "pattern": "import\\s+\\w+\\s+from\\s+'[^']+'",
164
+ "edit": {
165
+ "convertPattern": "static-to-dynamic",
166
+ "addImport": "import dynamic from 'next/dynamic';"
167
+ }
168
+ },
169
+ {
170
+ "title": "Add route segment config",
171
+ "kind": "source",
172
+ "description": "Adds route segment configuration exports (dynamic, revalidate, runtime, etc.).",
173
+ "pattern": "page\\.(tsx|jsx|ts|js)|route\\.(tsx|jsx|ts|js)|layout\\.(tsx|jsx|ts|js)",
174
+ "edit": {
175
+ "insertText": "export const dynamic = 'auto';\nexport const revalidate = false;\n",
176
+ "position": "afterImports"
177
+ }
178
+ },
179
+ {
180
+ "title": "Organize Next.js imports",
181
+ "kind": "source.organizeImports",
182
+ "description": "Organizes imports with next/* imports first, then third-party, then local imports.",
183
+ "pattern": "import.*from\\s+'next/",
184
+ "edit": {
185
+ "sortOrder": ["next/*", "react", "third-party", "local"]
186
+ }
187
+ }
188
+ ],
189
+ "providedCodeActionKinds": [
190
+ "quickfix",
191
+ "refactor",
192
+ "refactor.extract",
193
+ "refactor.inline",
194
+ "source",
195
+ "source.fixAll",
196
+ "source.organizeImports"
197
+ ]
198
+ }