@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.
- package/data/codeActions/angular.json +126 -0
- package/data/codeActions/css.json +111 -0
- package/data/codeActions/nestjs.json +124 -0
- package/data/codeActions/nextjs.json +198 -0
- package/data/codeActions/react.json +154 -0
- package/data/codeActions/shadcn.json +112 -0
- package/data/codeActions/shell.json +169 -26
- package/data/codeActions/tailwindcss.json +76 -0
- package/data/codeLens/angular.json +22 -0
- package/data/codeLens/css.json +68 -0
- package/data/codeLens/nestjs.json +21 -0
- package/data/codeLens/nextjs.json +117 -0
- package/data/codeLens/react.json +89 -0
- package/data/codeLens/shadcn.json +89 -0
- package/data/codeLens/shell.json +59 -17
- package/data/codeLens/tailwindcss.json +103 -0
- package/data/color/angular.json +21 -0
- package/data/color/css.json +124 -0
- package/data/color/nestjs.json +18 -0
- package/data/color/nextjs.json +22 -0
- package/data/color/react.json +93 -0
- package/data/color/shadcn.json +66 -0
- package/data/color/shell.json +106 -80
- package/data/color/tailwindcss.json +53 -0
- package/data/commands/angular.json +312 -0
- package/data/commands/css.json +41 -0
- package/data/commands/manifest.json +734 -727
- package/data/commands/nestjs.json +273 -0
- package/data/commands/nextjs.json +123 -0
- package/data/commands/react.json +210 -0
- package/data/commands/shadcn.json +410 -0
- package/data/commands/shell.json +571 -41
- package/data/commands/tailwindcss.json +53 -0
- package/data/completion/angular.json +1490 -0
- package/data/completion/css.json +1176 -0
- package/data/completion/javascript.json +27 -0
- package/data/completion/nestjs.json +1454 -0
- package/data/completion/nextjs.json +1373 -0
- package/data/completion/react.json +1319 -0
- package/data/completion/redis-cli.json +1 -1
- package/data/completion/shadcn.json +1202 -0
- package/data/completion/shell.json +2446 -510
- package/data/completion/tailwindcss.json +284 -0
- package/data/completion/typescript.json +27 -0
- package/data/declaration/angular.json +46 -0
- package/data/declaration/css.json +59 -0
- package/data/declaration/nestjs.json +47 -0
- package/data/declaration/nextjs.json +274 -0
- package/data/declaration/react.json +199 -0
- package/data/declaration/shadcn.json +211 -0
- package/data/declaration/shell.json +343 -24
- package/data/declaration/tailwindcss.json +137 -0
- package/data/definition/angular.json +670 -0
- package/data/definition/css.json +115 -0
- package/data/definition/nestjs.json +684 -0
- package/data/definition/nextjs.json +439 -0
- package/data/definition/react.json +397 -0
- package/data/definition/redis-cli.json +1 -1
- package/data/definition/shadcn.json +99 -0
- package/data/definition/shell.json +820 -0
- package/data/definition/tailwindcss.json +115 -0
- package/data/documentHighlight/angular.json +414 -0
- package/data/documentHighlight/css.json +125 -0
- package/data/documentHighlight/nestjs.json +115 -0
- package/data/documentHighlight/nextjs.json +212 -0
- package/data/documentHighlight/react.json +119 -0
- package/data/documentHighlight/shadcn.json +168 -0
- package/data/documentHighlight/shell.json +664 -334
- package/data/documentHighlight/tailwindcss.json +160 -0
- package/data/documentRangeFormatting/angular.json +45 -0
- package/data/documentRangeFormatting/css.json +101 -0
- package/data/documentRangeFormatting/nestjs.json +17 -0
- package/data/documentRangeFormatting/nextjs.json +17 -0
- package/data/documentRangeFormatting/react.json +78 -0
- package/data/documentRangeFormatting/shadcn.json +45 -0
- package/data/documentRangeFormatting/shell.json +120 -53
- package/data/documentRangeFormatting/tailwindcss.json +55 -0
- package/data/documentSymbol/angular.json +180 -0
- package/data/documentSymbol/css.json +96 -0
- package/data/documentSymbol/nestjs.json +152 -0
- package/data/documentSymbol/nextjs.json +159 -0
- package/data/documentSymbol/react.json +145 -0
- package/data/documentSymbol/shadcn.json +131 -0
- package/data/documentSymbol/shell.json +166 -26
- package/data/documentSymbol/tailwindcss.json +110 -0
- package/data/foldingRange/angular.json +99 -0
- package/data/foldingRange/css.json +66 -0
- package/data/foldingRange/nestjs.json +26 -0
- package/data/foldingRange/nextjs.json +26 -0
- package/data/foldingRange/react.json +120 -0
- package/data/foldingRange/shadcn.json +93 -0
- package/data/foldingRange/shell.json +106 -46
- package/data/foldingRange/tailwindcss.json +60 -0
- package/data/formatting/angular.json +21 -0
- package/data/formatting/css.json +73 -0
- package/data/formatting/nestjs.json +23 -0
- package/data/formatting/nextjs.json +23 -0
- package/data/formatting/react.json +71 -0
- package/data/formatting/shadcn.json +61 -0
- package/data/formatting/shell.json +103 -19
- package/data/formatting/tailwindcss.json +48 -0
- package/data/hover/angular.json +455 -0
- package/data/hover/css.json +300 -0
- package/data/hover/nestjs.json +296 -0
- package/data/hover/nextjs.json +305 -0
- package/data/hover/react.json +173 -0
- package/data/hover/redis-cli.json +1 -1
- package/data/hover/shadcn.json +450 -0
- package/data/hover/shell.json +684 -75
- package/data/hover/tailwindcss.json +968 -0
- package/data/implementation/angular.json +22 -0
- package/data/implementation/css.json +65 -0
- package/data/implementation/nestjs.json +24 -0
- package/data/implementation/nextjs.json +137 -0
- package/data/implementation/react.json +125 -0
- package/data/implementation/shadcn.json +89 -0
- package/data/implementation/shell.json +59 -3
- package/data/implementation/tailwindcss.json +59 -0
- package/data/inlayHints/angular.json +24 -0
- package/data/inlayHints/css.json +87 -0
- package/data/inlayHints/nestjs.json +24 -0
- package/data/inlayHints/nextjs.json +143 -0
- package/data/inlayHints/react.json +177 -0
- package/data/inlayHints/shadcn.json +109 -0
- package/data/inlayHints/shell.json +223 -35
- package/data/inlayHints/tailwindcss.json +111 -0
- package/data/inlineCompletions/angular.json +135 -0
- package/data/inlineCompletions/css.json +125 -0
- package/data/inlineCompletions/javascript.json +12 -0
- package/data/inlineCompletions/nestjs.json +25 -0
- package/data/inlineCompletions/nextjs.json +179 -0
- package/data/inlineCompletions/react.json +203 -0
- package/data/inlineCompletions/shadcn.json +115 -0
- package/data/inlineCompletions/shell.json +185 -35
- package/data/inlineCompletions/tailwindcss.json +411 -0
- package/data/inlineCompletions/typescript.json +12 -0
- package/data/linkedEditingRange/angular.json +23 -0
- package/data/linkedEditingRange/css.json +40 -0
- package/data/linkedEditingRange/nestjs.json +10 -0
- package/data/linkedEditingRange/nextjs.json +11 -0
- package/data/linkedEditingRange/react.json +75 -0
- package/data/linkedEditingRange/shadcn.json +23 -0
- package/data/linkedEditingRange/shell.json +25 -25
- package/data/linkedEditingRange/tailwindcss.json +30 -0
- package/data/links/angular.json +95 -0
- package/data/links/css.json +55 -0
- package/data/links/nestjs.json +130 -0
- package/data/links/nextjs.json +91 -0
- package/data/links/react.json +75 -0
- package/data/links/shadcn.json +98 -0
- package/data/links/shell.json +56 -0
- package/data/links/tailwindcss.json +65 -0
- package/data/manifest.json +399 -150
- package/data/onTypeFormatting/angular.json +14 -0
- package/data/onTypeFormatting/css.json +82 -0
- package/data/onTypeFormatting/nestjs.json +16 -0
- package/data/onTypeFormatting/nextjs.json +17 -0
- package/data/onTypeFormatting/react.json +127 -0
- package/data/onTypeFormatting/shadcn.json +54 -0
- package/data/onTypeFormatting/shell.json +72 -68
- package/data/onTypeFormatting/tailwindcss.json +63 -0
- package/data/rangeSemanticTokens/angular.json +140 -0
- package/data/rangeSemanticTokens/css.json +125 -0
- package/data/rangeSemanticTokens/nestjs.json +27 -0
- package/data/rangeSemanticTokens/nextjs.json +28 -0
- package/data/rangeSemanticTokens/react.json +216 -0
- package/data/rangeSemanticTokens/shadcn.json +140 -0
- package/data/rangeSemanticTokens/shell.json +247 -69
- package/data/rangeSemanticTokens/tailwindcss.json +186 -0
- package/data/references/angular.json +26 -0
- package/data/references/css.json +65 -0
- package/data/references/nestjs.json +24 -0
- package/data/references/nextjs.json +178 -0
- package/data/references/react.json +192 -0
- package/data/references/shadcn.json +101 -0
- package/data/references/shell.json +323 -92
- package/data/references/tailwindcss.json +125 -0
- package/data/rename/angular.json +131 -0
- package/data/rename/css.json +91 -0
- package/data/rename/nestjs.json +32 -0
- package/data/rename/nextjs.json +31 -0
- package/data/rename/react.json +88 -0
- package/data/rename/shadcn.json +79 -0
- package/data/rename/shell.json +101 -31
- package/data/rename/tailwindcss.json +58 -0
- package/data/selectionRange/angular.json +95 -0
- package/data/selectionRange/css.json +55 -0
- package/data/selectionRange/nestjs.json +21 -0
- package/data/selectionRange/nextjs.json +22 -0
- package/data/selectionRange/react.json +87 -0
- package/data/selectionRange/shadcn.json +89 -0
- package/data/selectionRange/shell.json +65 -35
- package/data/selectionRange/tailwindcss.json +35 -0
- package/data/semanticTokens/angular.json +198 -0
- package/data/semanticTokens/css.json +107 -0
- package/data/semanticTokens/nestjs.json +35 -0
- package/data/semanticTokens/nextjs.json +38 -0
- package/data/semanticTokens/react.json +215 -0
- package/data/semanticTokens/shadcn.json +180 -0
- package/data/semanticTokens/shell.json +238 -65
- package/data/semanticTokens/tailwindcss.json +161 -0
- package/data/signatureHelp/angular.json +182 -0
- package/data/signatureHelp/css.json +137 -0
- package/data/signatureHelp/nestjs.json +128 -0
- package/data/signatureHelp/nextjs.json +127 -0
- package/data/signatureHelp/react.json +281 -0
- package/data/signatureHelp/shadcn.json +237 -0
- package/data/signatureHelp/shell.json +797 -104
- package/data/signatureHelp/tailwindcss.json +64 -0
- package/data/typeDefinition/angular.json +362 -0
- package/data/typeDefinition/css.json +53 -0
- package/data/typeDefinition/nestjs.json +334 -0
- package/data/typeDefinition/nextjs.json +285 -0
- package/data/typeDefinition/react.json +236 -0
- package/data/typeDefinition/shadcn.json +292 -0
- package/data/typeDefinition/shell.json +104 -40
- package/data/typeDefinition/tailwindcss.json +47 -0
- package/package.json +1 -1
- package/data/codeActions/bash.json +0 -169
- package/data/codeActions/zsh.json +0 -49
- package/data/codeLens/bash.json +0 -75
- package/data/codeLens/zsh.json +0 -19
- package/data/color/bash.json +0 -100
- package/data/color/zsh.json +0 -80
- package/data/commands/bash.json +0 -102
- package/data/commands/zsh.json +0 -166
- package/data/completion/bash.json +0 -1184
- package/data/completion/zsh.json +0 -973
- package/data/declaration/bash.json +0 -301
- package/data/declaration/zsh.json +0 -205
- package/data/definition/bash.json +0 -565
- package/data/definition/zsh.json +0 -350
- package/data/documentHighlight/bash.json +0 -393
- package/data/documentHighlight/zsh.json +0 -266
- package/data/documentRangeFormatting/bash.json +0 -41
- package/data/documentRangeFormatting/zsh.json +0 -59
- package/data/documentSymbol/bash.json +0 -124
- package/data/documentSymbol/zsh.json +0 -26
- package/data/foldingRange/bash.json +0 -76
- package/data/foldingRange/zsh.json +0 -46
- package/data/formatting/bash.json +0 -88
- package/data/formatting/zsh.json +0 -28
- package/data/hover/bash.json +0 -579
- package/data/hover/zsh.json +0 -96
- package/data/implementation/bash.json +0 -44
- package/data/implementation/zsh.json +0 -41
- package/data/inlayHints/bash.json +0 -207
- package/data/inlayHints/zsh.json +0 -43
- package/data/inlineCompletions/bash.json +0 -155
- package/data/inlineCompletions/zsh.json +0 -17
- package/data/linkedEditingRange/bash.json +0 -25
- package/data/linkedEditingRange/zsh.json +0 -25
- package/data/links/bash.json +0 -56
- package/data/links/zsh.json +0 -15
- package/data/onTypeFormatting/bash.json +0 -68
- package/data/onTypeFormatting/zsh.json +0 -68
- package/data/rangeSemanticTokens/bash.json +0 -90
- package/data/rangeSemanticTokens/zsh.json +0 -76
- package/data/references/bash.json +0 -221
- package/data/references/zsh.json +0 -166
- package/data/rename/bash.json +0 -37
- package/data/rename/zsh.json +0 -31
- package/data/selectionRange/bash.json +0 -35
- package/data/selectionRange/zsh.json +0 -35
- package/data/semanticTokens/bash.json +0 -71
- package/data/semanticTokens/zsh.json +0 -71
- package/data/signatureHelp/bash.json +0 -111
- package/data/signatureHelp/zsh.json +0 -118
- package/data/typeDefinition/bash.json +0 -95
- 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
|
+
}
|