@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,154 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "react",
|
|
3
|
+
"codeActions": [
|
|
4
|
+
{
|
|
5
|
+
"title": "Extract JSX to new component",
|
|
6
|
+
"kind": "refactor.extract",
|
|
7
|
+
"description": "Extracts the selected JSX into a new React functional component and replaces the selection with the new component tag",
|
|
8
|
+
"pattern": "<[A-Za-z][^>]*>[\\s\\S]*</[A-Za-z][^>]*>",
|
|
9
|
+
"isPreferred": true
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"title": "Extract custom hook",
|
|
13
|
+
"kind": "refactor.extract",
|
|
14
|
+
"description": "Extracts selected stateful logic (useState, useEffect, etc.) into a new custom hook function prefixed with 'use'",
|
|
15
|
+
"pattern": "const\\s+\\[.*\\]\\s*=\\s*useState|useEffect\\s*\\(",
|
|
16
|
+
"isPreferred": true
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "Wrap with React.memo",
|
|
20
|
+
"kind": "refactor",
|
|
21
|
+
"description": "Wraps the component with React.memo() for performance optimization by preventing unnecessary re-renders when props are unchanged",
|
|
22
|
+
"pattern": "(export\\s+)?(const|function)\\s+[A-Z][a-zA-Z]*",
|
|
23
|
+
"isPreferred": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"title": "Wrap with Suspense boundary",
|
|
27
|
+
"kind": "refactor",
|
|
28
|
+
"description": "Wraps selected JSX with a React.Suspense boundary and a fallback loading component",
|
|
29
|
+
"pattern": "<[A-Z][a-zA-Z]*",
|
|
30
|
+
"isPreferred": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "Wrap with ErrorBoundary",
|
|
34
|
+
"kind": "refactor",
|
|
35
|
+
"description": "Wraps selected JSX with an ErrorBoundary component to catch rendering errors in the subtree",
|
|
36
|
+
"pattern": "<[A-Z][a-zA-Z]*",
|
|
37
|
+
"isPreferred": false
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"title": "Convert class component to function component",
|
|
41
|
+
"kind": "refactor",
|
|
42
|
+
"description": "Converts a class-based React component to a functional component with hooks (useState for state, useEffect for lifecycle methods)",
|
|
43
|
+
"pattern": "class\\s+\\w+\\s+extends\\s+(React\\.)?Component",
|
|
44
|
+
"isPreferred": true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"title": "Wrap callback with useCallback",
|
|
48
|
+
"kind": "refactor",
|
|
49
|
+
"description": "Wraps an inline function or arrow function passed as a prop with useCallback to memoize it and prevent unnecessary child re-renders",
|
|
50
|
+
"pattern": "\\w+\\s*=\\s*\\{\\s*(\\(|function)",
|
|
51
|
+
"isPreferred": false
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"title": "Wrap value with useMemo",
|
|
55
|
+
"kind": "refactor",
|
|
56
|
+
"description": "Wraps a computed value with useMemo to memoize the result and avoid expensive recalculations on every render",
|
|
57
|
+
"pattern": "const\\s+\\w+\\s*=\\s*(?!use)",
|
|
58
|
+
"isPreferred": false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"title": "Organize imports",
|
|
62
|
+
"kind": "source.organizeImports",
|
|
63
|
+
"description": "Sorts and groups React imports: React first, then third-party modules, then local imports, removing any unused imports",
|
|
64
|
+
"pattern": "^import\\s+",
|
|
65
|
+
"isPreferred": true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"title": "Fix missing key prop in list",
|
|
69
|
+
"kind": "quickfix",
|
|
70
|
+
"description": "Adds a unique key prop to JSX elements rendered inside a .map() call to fix the 'Each child in a list should have a unique key prop' warning",
|
|
71
|
+
"pattern": "\\.map\\s*\\([^)]*\\)\\s*=>\\s*<",
|
|
72
|
+
"isPreferred": true
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"title": "Fix missing dependency in useEffect",
|
|
76
|
+
"kind": "quickfix",
|
|
77
|
+
"description": "Adds missing variables to the useEffect dependency array based on the variables used inside the effect callback",
|
|
78
|
+
"pattern": "useEffect\\s*\\([^,]+,\\s*\\[",
|
|
79
|
+
"isPreferred": true
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"title": "Convert to controlled component",
|
|
83
|
+
"kind": "refactor",
|
|
84
|
+
"description": "Converts an uncontrolled form input to a controlled component by adding value and onChange props bound to state",
|
|
85
|
+
"pattern": "<input|<textarea|<select",
|
|
86
|
+
"isPreferred": false
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"title": "Wrap with forwardRef",
|
|
90
|
+
"kind": "refactor",
|
|
91
|
+
"description": "Wraps the component with React.forwardRef to allow parent components to access a child ref",
|
|
92
|
+
"pattern": "(export\\s+)?(const|function)\\s+[A-Z][a-zA-Z]*",
|
|
93
|
+
"isPreferred": false
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"title": "Add displayName",
|
|
97
|
+
"kind": "quickfix",
|
|
98
|
+
"description": "Adds a displayName static property to the component for better debugging in React DevTools",
|
|
99
|
+
"pattern": "(React\\.memo|React\\.forwardRef|memo|forwardRef)\\s*\\(",
|
|
100
|
+
"isPreferred": false
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"title": "Convert to lazy-loaded component",
|
|
104
|
+
"kind": "refactor",
|
|
105
|
+
"description": "Converts a static import of a component to a dynamic import using React.lazy() for code splitting",
|
|
106
|
+
"pattern": "import\\s+\\w+\\s+from",
|
|
107
|
+
"isPreferred": false
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"title": "Add error boundary wrapper",
|
|
111
|
+
"kind": "quickfix",
|
|
112
|
+
"description": "Adds try-catch pattern in async handlers or wraps components with error boundaries for better error handling",
|
|
113
|
+
"pattern": "async\\s+|await\\s+|throw\\s+",
|
|
114
|
+
"isPreferred": false
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"title": "Fix all auto-fixable issues",
|
|
118
|
+
"kind": "source.fixAll",
|
|
119
|
+
"description": "Applies all automatic fixes including missing keys, unused imports, missing dependencies, and formatting issues",
|
|
120
|
+
"pattern": ".*",
|
|
121
|
+
"isPreferred": false
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"title": "Extract inline styles to object",
|
|
125
|
+
"kind": "refactor.extract",
|
|
126
|
+
"description": "Extracts inline style objects from JSX elements into a named constant for better readability and reusability",
|
|
127
|
+
"pattern": "style\\s*=\\s*\\{\\{",
|
|
128
|
+
"isPreferred": false
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"title": "Convert useState to useReducer",
|
|
132
|
+
"kind": "refactor",
|
|
133
|
+
"description": "Converts multiple related useState calls into a single useReducer with typed actions for complex state management",
|
|
134
|
+
"pattern": "const\\s+\\[\\w+,\\s*set\\w+\\]\\s*=\\s*useState",
|
|
135
|
+
"isPreferred": false
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"title": "Add TypeScript types to component props",
|
|
139
|
+
"kind": "quickfix",
|
|
140
|
+
"description": "Generates a TypeScript interface for the component props based on prop usage within the component",
|
|
141
|
+
"pattern": "(const|function)\\s+[A-Z]\\w*\\s*=?\\s*\\(",
|
|
142
|
+
"isPreferred": false
|
|
143
|
+
}
|
|
144
|
+
],
|
|
145
|
+
"providedCodeActionKinds": [
|
|
146
|
+
"quickfix",
|
|
147
|
+
"refactor",
|
|
148
|
+
"refactor.extract",
|
|
149
|
+
"refactor.inline",
|
|
150
|
+
"source",
|
|
151
|
+
"source.fixAll",
|
|
152
|
+
"source.organizeImports"
|
|
153
|
+
]
|
|
154
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "shadcn",
|
|
3
|
+
"codeActions": [
|
|
4
|
+
{
|
|
5
|
+
"title": "Add component import from @/components/ui",
|
|
6
|
+
"kind": "quickfix",
|
|
7
|
+
"description": "Add missing import statement for a shadcn/ui component from @/components/ui/*",
|
|
8
|
+
"pattern": "<(Accordion|Alert|Avatar|Badge|Button|Calendar|Card|Carousel|Checkbox|Collapsible|Command|ContextMenu|Dialog|Drawer|DropdownMenu|Form|HoverCard|Input|Label|Menubar|NavigationMenu|Pagination|Popover|Progress|RadioGroup|ScrollArea|Select|Separator|Sheet|Skeleton|Slider|Switch|Table|Tabs|Textarea|Toast|Toaster|Toggle|ToggleGroup|Tooltip)",
|
|
9
|
+
"isPreferred": true
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"title": "Convert className string to cn() utility",
|
|
13
|
+
"kind": "refactor.rewrite",
|
|
14
|
+
"description": "Replace static className string with cn() utility for conditional class merging",
|
|
15
|
+
"pattern": "className=\"[^\"]+\"",
|
|
16
|
+
"isPreferred": false
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "Convert to variant prop",
|
|
20
|
+
"kind": "refactor.rewrite",
|
|
21
|
+
"description": "Extract inline classes to a cva() variant definition",
|
|
22
|
+
"pattern": "className=\\{cn\\(",
|
|
23
|
+
"isPreferred": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"title": "Extract to shadcn/ui component",
|
|
27
|
+
"kind": "refactor.extract",
|
|
28
|
+
"description": "Extract selected JSX into a separate reusable shadcn/ui-styled component",
|
|
29
|
+
"pattern": "<(div|section|article)\\s+className=",
|
|
30
|
+
"isPreferred": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "Add form validation with zod",
|
|
34
|
+
"kind": "quickfix",
|
|
35
|
+
"description": "Add zod schema validation and react-hook-form integration to a form",
|
|
36
|
+
"pattern": "<form\\s",
|
|
37
|
+
"isPreferred": false
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"title": "Wrap with TooltipProvider",
|
|
41
|
+
"kind": "quickfix",
|
|
42
|
+
"description": "Wrap Tooltip component with required TooltipProvider ancestor",
|
|
43
|
+
"pattern": "<Tooltip[^P]",
|
|
44
|
+
"isPreferred": true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"title": "Add toast notification",
|
|
48
|
+
"kind": "source.addImport",
|
|
49
|
+
"description": "Import useToast hook and add toast notification call",
|
|
50
|
+
"pattern": "\\btoast\\b|\\buseToast\\b",
|
|
51
|
+
"isPreferred": false
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"title": "Add dark mode support",
|
|
55
|
+
"kind": "refactor.rewrite",
|
|
56
|
+
"description": "Add dark mode CSS variables and class-based dark mode toggle support",
|
|
57
|
+
"pattern": ":root\\s*\\{|@layer\\s+base",
|
|
58
|
+
"isPreferred": false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"title": "Import from @/components/ui",
|
|
62
|
+
"kind": "source.addImport",
|
|
63
|
+
"description": "Add import statement for shadcn/ui component from the @/components/ui directory",
|
|
64
|
+
"pattern": "\\b(Button|Card|Dialog|Sheet|Form|Input|Select|Table|Tabs|Badge)\\b",
|
|
65
|
+
"isPreferred": false
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"title": "Add missing variant props",
|
|
69
|
+
"kind": "quickfix",
|
|
70
|
+
"description": "Add variant and size props to a shadcn/ui component missing them",
|
|
71
|
+
"pattern": "<(Button|Badge|Alert|Toggle)\\s*(?!.*variant)[^>]*>",
|
|
72
|
+
"isPreferred": false
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"title": "Organize component imports",
|
|
76
|
+
"kind": "source.organizeImports",
|
|
77
|
+
"description": "Sort and group shadcn/ui component imports by module path",
|
|
78
|
+
"pattern": "from\\s+['\"]@/components/ui/",
|
|
79
|
+
"isPreferred": true
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"title": "Convert to controlled component",
|
|
83
|
+
"kind": "refactor.rewrite",
|
|
84
|
+
"description": "Convert uncontrolled component to controlled with React state",
|
|
85
|
+
"pattern": "defaultValue=|defaultChecked=",
|
|
86
|
+
"isPreferred": false
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"title": "Add asChild prop for composition",
|
|
90
|
+
"kind": "quickfix",
|
|
91
|
+
"description": "Add asChild prop to Radix UI trigger component for element composition",
|
|
92
|
+
"pattern": "<(DialogTrigger|AlertDialogTrigger|PopoverTrigger|DropdownMenuTrigger|SheetTrigger|TooltipTrigger)(?!.*asChild)",
|
|
93
|
+
"isPreferred": false
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"title": "Add Toaster to layout",
|
|
97
|
+
"kind": "quickfix",
|
|
98
|
+
"description": "Add <Toaster /> component to the root layout file for toast notifications to work",
|
|
99
|
+
"pattern": "useToast|\\btoast\\(",
|
|
100
|
+
"isPreferred": false
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"providedCodeActionKinds": [
|
|
104
|
+
"quickfix",
|
|
105
|
+
"refactor",
|
|
106
|
+
"refactor.extract",
|
|
107
|
+
"refactor.rewrite",
|
|
108
|
+
"source",
|
|
109
|
+
"source.addImport",
|
|
110
|
+
"source.organizeImports"
|
|
111
|
+
]
|
|
112
|
+
}
|
|
@@ -1,26 +1,169 @@
|
|
|
1
|
-
{
|
|
2
|
-
"language": "shell",
|
|
3
|
-
"codeActions": [
|
|
4
|
-
{
|
|
5
|
-
"title": "Extract to variable",
|
|
6
|
-
"kind": "refactor.extract",
|
|
7
|
-
"description": "Extract expression into a variable",
|
|
8
|
-
"pattern": ".*",
|
|
9
|
-
"isPreferred": false
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"title": "Fix all auto-fixable problems",
|
|
13
|
-
"kind": "source.fixAll",
|
|
14
|
-
"description": "Apply all available quick-fixes",
|
|
15
|
-
"pattern": ".*",
|
|
16
|
-
"isPreferred": false
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
1
|
+
{
|
|
2
|
+
"language": "shell",
|
|
3
|
+
"codeActions": [
|
|
4
|
+
{
|
|
5
|
+
"title": "Extract to variable",
|
|
6
|
+
"kind": "refactor.extract",
|
|
7
|
+
"description": "Extract expression into a variable",
|
|
8
|
+
"pattern": ".*",
|
|
9
|
+
"isPreferred": false
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"title": "Fix all auto-fixable problems",
|
|
13
|
+
"kind": "source.fixAll",
|
|
14
|
+
"description": "Apply all available quick-fixes",
|
|
15
|
+
"pattern": ".*",
|
|
16
|
+
"isPreferred": false
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "Add 'set -euo pipefail' header",
|
|
20
|
+
"kind": "source",
|
|
21
|
+
"description": "Add strict mode header (set -euo pipefail) to the beginning of the script for safer execution",
|
|
22
|
+
"pattern": "^#!/",
|
|
23
|
+
"isPreferred": true
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"title": "Add shebang line",
|
|
27
|
+
"kind": "source",
|
|
28
|
+
"description": "Add #!/usr/bin/env bash shebang as the first line of the script",
|
|
29
|
+
"pattern": "^[^#]",
|
|
30
|
+
"isPreferred": true
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "Organize source/import statements",
|
|
34
|
+
"kind": "source.organizeImports",
|
|
35
|
+
"description": "Sort and deduplicate source/. statements at the top of the script",
|
|
36
|
+
"pattern": "\\bsource\\b|^\\s*\\.\\s+",
|
|
37
|
+
"isPreferred": true
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"title": "Inline variable",
|
|
41
|
+
"kind": "refactor.inline",
|
|
42
|
+
"description": "Replace variable with its value at all usage sites",
|
|
43
|
+
"pattern": "\\blocal\\b|^\\s*\\w+=",
|
|
44
|
+
"isPreferred": false
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"title": "Convert to function keyword syntax",
|
|
48
|
+
"kind": "refactor.rewrite",
|
|
49
|
+
"description": "Convert name() { } to function name() { } syntax",
|
|
50
|
+
"pattern": "^\\s*\\w+\\s*\\(\\s*\\)",
|
|
51
|
+
"isPreferred": false
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"title": "Convert to POSIX function syntax",
|
|
55
|
+
"kind": "refactor.rewrite",
|
|
56
|
+
"description": "Convert function name() { } to name() { } (POSIX-compatible) syntax",
|
|
57
|
+
"pattern": "^\\s*function\\s+\\w+",
|
|
58
|
+
"isPreferred": false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"title": "Convert backticks to $() syntax",
|
|
62
|
+
"kind": "quickfix",
|
|
63
|
+
"description": "Replace legacy backtick command substitution with modern $(command) syntax",
|
|
64
|
+
"pattern": "`[^`]+`",
|
|
65
|
+
"isPreferred": true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"title": "Convert [ ] to [[ ]]",
|
|
69
|
+
"kind": "quickfix",
|
|
70
|
+
"description": "Replace POSIX test brackets with bash extended test brackets for safer evaluation",
|
|
71
|
+
"pattern": "\\[\\s+.*\\s+\\]",
|
|
72
|
+
"isPreferred": false
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"title": "Quote unquoted variable",
|
|
76
|
+
"kind": "quickfix",
|
|
77
|
+
"description": "Add double quotes around unquoted variable expansion to prevent word splitting and globbing",
|
|
78
|
+
"pattern": "\\$\\w+|\\$\\{\\w+\\}",
|
|
79
|
+
"isPreferred": true
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"title": "Add missing 'local' keyword",
|
|
83
|
+
"kind": "quickfix",
|
|
84
|
+
"description": "Add 'local' keyword to variable assignments inside functions to prevent global scope pollution",
|
|
85
|
+
"pattern": "^\\s*\\w+=(?!.*\\bexport\\b)",
|
|
86
|
+
"isPreferred": false
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"title": "Replace echo with printf",
|
|
90
|
+
"kind": "refactor.rewrite",
|
|
91
|
+
"description": "Replace echo with printf for more portable and predictable output formatting",
|
|
92
|
+
"pattern": "\\becho\\b",
|
|
93
|
+
"isPreferred": false
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"title": "Add error handling to command",
|
|
97
|
+
"kind": "quickfix",
|
|
98
|
+
"description": "Add || { echo 'Error' >&2; exit 1; } error handling to a command",
|
|
99
|
+
"pattern": "^\\s*\\w+",
|
|
100
|
+
"isPreferred": false
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"title": "Convert to here-document",
|
|
104
|
+
"kind": "refactor.rewrite",
|
|
105
|
+
"description": "Convert multiple echo/printf statements into a single here-document (<<EOF)",
|
|
106
|
+
"pattern": "\\becho\\b|\\bprintf\\b",
|
|
107
|
+
"isPreferred": false
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"title": "Wrap in if-check for command existence",
|
|
111
|
+
"kind": "refactor.rewrite",
|
|
112
|
+
"description": "Wrap command in 'if command -v cmd &>/dev/null; then ... fi' to check availability",
|
|
113
|
+
"pattern": "^\\s*\\w+",
|
|
114
|
+
"isPreferred": false
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"title": "Convert arithmetic to (( )) syntax",
|
|
118
|
+
"kind": "quickfix",
|
|
119
|
+
"description": "Replace expr or let with modern (( )) arithmetic syntax",
|
|
120
|
+
"pattern": "\\bexpr\\b|\\blet\\b",
|
|
121
|
+
"isPreferred": true
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"title": "Add trap for cleanup on exit",
|
|
125
|
+
"kind": "source",
|
|
126
|
+
"description": "Add a trap command to clean up temporary files or resources on script exit",
|
|
127
|
+
"pattern": "\\bmktemp\\b|\\btmp\\b",
|
|
128
|
+
"isPreferred": false
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"title": "Convert to array iteration",
|
|
132
|
+
"kind": "refactor.rewrite",
|
|
133
|
+
"description": "Convert whitespace-separated variable to proper array with safe iteration",
|
|
134
|
+
"pattern": "\\bfor\\s+\\w+\\s+in\\s+\\$",
|
|
135
|
+
"isPreferred": false
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"title": "Add input validation",
|
|
139
|
+
"kind": "quickfix",
|
|
140
|
+
"description": "Add parameter count check and usage message at the top of the script or function",
|
|
141
|
+
"pattern": "\\$1|\\$\\{1",
|
|
142
|
+
"isPreferred": false
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"title": "Convert to getopts argument parsing",
|
|
146
|
+
"kind": "refactor.rewrite",
|
|
147
|
+
"description": "Replace manual argument parsing with getopts-based option handling loop",
|
|
148
|
+
"pattern": "\\$1|\\$\\{1|\\bshift\\b",
|
|
149
|
+
"isPreferred": false
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"title": "Organize imports",
|
|
153
|
+
"kind": "source.organizeImports",
|
|
154
|
+
"description": "Sort and clean up source/./autoload/zmodload statements",
|
|
155
|
+
"pattern": "\\\\bsource\\\\b|\\\\b\\.\\\\b|\\\\bautoload\\\\b|\\\\bzmodload\\\\b",
|
|
156
|
+
"isPreferred": true
|
|
157
|
+
}
|
|
158
|
+
],
|
|
159
|
+
"providedCodeActionKinds": [
|
|
160
|
+
"quickfix",
|
|
161
|
+
"refactor",
|
|
162
|
+
"refactor.extract",
|
|
163
|
+
"source",
|
|
164
|
+
"source.fixAll",
|
|
165
|
+
"refactor.inline",
|
|
166
|
+
"refactor.rewrite",
|
|
167
|
+
"source.organizeImports"
|
|
168
|
+
]
|
|
169
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "tailwindcss",
|
|
3
|
+
"codeActions": [
|
|
4
|
+
{
|
|
5
|
+
"title": "Sort Tailwind CSS classes (Headwind order)",
|
|
6
|
+
"kind": "source.sortTailwindClasses",
|
|
7
|
+
"description": "Reorders Tailwind utility classes following the recommended Headwind/Prettier-plugin-tailwindcss sort order for consistency.",
|
|
8
|
+
"pattern": "class\\s*=\\s*[\"'][^\"']*[\"']",
|
|
9
|
+
"isPreferred": true
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"title": "Extract classes to @apply component",
|
|
13
|
+
"kind": "refactor.extract.apply",
|
|
14
|
+
"description": "Extracts selected Tailwind utility classes into a reusable CSS component using @apply directive.",
|
|
15
|
+
"pattern": "class\\s*=\\s*[\"']([^\"']{20,})[\"']",
|
|
16
|
+
"isPreferred": false
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"title": "Convert arbitrary value to theme config",
|
|
20
|
+
"kind": "refactor.rewrite",
|
|
21
|
+
"description": "Converts an arbitrary value like `bg-[#1da1f2]` or `w-[200px]` to a named theme value in tailwind.config.js.",
|
|
22
|
+
"pattern": "\\w+-\\[[^\\]]+\\]",
|
|
23
|
+
"isPreferred": false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"title": "Group responsive variants",
|
|
27
|
+
"kind": "refactor.organize",
|
|
28
|
+
"description": "Groups utility classes by responsive breakpoint prefix (sm:, md:, lg:, xl:, 2xl:) for better readability.",
|
|
29
|
+
"pattern": "(?:sm|md|lg|xl|2xl):[\\w-]+",
|
|
30
|
+
"isPreferred": false
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"title": "Remove duplicate Tailwind classes",
|
|
34
|
+
"kind": "quickfix.removeDuplicates",
|
|
35
|
+
"description": "Detects and removes duplicate utility classes within a class attribute.",
|
|
36
|
+
"pattern": "class\\s*=\\s*[\"'][^\"']*[\"']",
|
|
37
|
+
"isPreferred": true
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"title": "Convert @apply to inline utilities",
|
|
41
|
+
"kind": "refactor.inline",
|
|
42
|
+
"description": "Replaces an @apply rule with the individual utility classes inlined directly in the HTML class attribute.",
|
|
43
|
+
"pattern": "@apply\\s+[\\w\\s:-]+;",
|
|
44
|
+
"isPreferred": false
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"title": "Convert inline utilities to @apply",
|
|
48
|
+
"kind": "refactor.extract.apply",
|
|
49
|
+
"description": "Extracts inline Tailwind utility classes from a class attribute into a new CSS rule using @apply.",
|
|
50
|
+
"pattern": "class\\s*=\\s*[\"']([^\"']{30,})[\"']",
|
|
51
|
+
"isPreferred": false
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"title": "Wrap in responsive variant",
|
|
55
|
+
"kind": "refactor.wrap",
|
|
56
|
+
"description": "Wraps selected utility classes with a responsive breakpoint prefix (sm:, md:, lg:, xl:, 2xl:).",
|
|
57
|
+
"pattern": "[\\w-]+",
|
|
58
|
+
"isPreferred": false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"title": "Add dark mode variant",
|
|
62
|
+
"kind": "refactor.wrap",
|
|
63
|
+
"description": "Adds dark: prefix to selected utility classes for dark mode support.",
|
|
64
|
+
"pattern": "(?:bg|text|border|ring|shadow)-[\\w-]+",
|
|
65
|
+
"isPreferred": false
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"title": "Convert to arbitrary value",
|
|
69
|
+
"kind": "refactor.rewrite",
|
|
70
|
+
"description": "Converts a standard utility value to an arbitrary value notation, e.g. `p-4` to `p-[1rem]`.",
|
|
71
|
+
"pattern": "\\w+-\\d+",
|
|
72
|
+
"isPreferred": false
|
|
73
|
+
}
|
|
74
|
+
],
|
|
75
|
+
"providedCodeActionKinds": ["quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source"]
|
|
76
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "angular",
|
|
3
|
+
"codeLensPatterns": [
|
|
4
|
+
{ "pattern": "@Component\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Component: ${1}", "tooltip": "Angular component class" },
|
|
5
|
+
{ "pattern": "@Injectable\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Service: ${1}", "tooltip": "Angular injectable service" },
|
|
6
|
+
{ "pattern": "@NgModule\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Module: ${1}", "tooltip": "Angular NgModule" },
|
|
7
|
+
{ "pattern": "@Directive\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Directive: ${1}", "tooltip": "Angular directive class" },
|
|
8
|
+
{ "pattern": "@Pipe\\s*\\([^)]*\\)\\s*(?:export\\s+)?class\\s+(\\w+)", "captureGroup": 1, "title": "Pipe: ${1}", "tooltip": "Angular pipe class" },
|
|
9
|
+
{ "pattern": "(ngOnInit|ngOnDestroy|ngOnChanges|ngAfterViewInit|ngAfterContentInit|ngDoCheck)\\s*\\(", "captureGroup": 1, "title": "Lifecycle: ${1}", "tooltip": "Angular lifecycle hook method" },
|
|
10
|
+
{ "pattern": "\\{\\s*path:\\s*['\"]([^'\"]+)['\"].*?component:\\s*(\\w+)", "captureGroup": 1, "title": "Route: /${1}", "tooltip": "Route configuration path" },
|
|
11
|
+
{ "pattern": "(?:canActivate|canDeactivate|canMatch)(?:Fn)?.*?=.*?\\(", "captureGroup": 0, "title": "Guard", "tooltip": "Route guard definition" },
|
|
12
|
+
{ "pattern": "(?:HttpInterceptorFn|implements\\s+HttpInterceptor).*", "captureGroup": 0, "title": "Interceptor", "tooltip": "HTTP interceptor definition" },
|
|
13
|
+
{ "pattern": "describe\\s*\\(\\s*['\"]([^'\"]+)['\"]", "captureGroup": 1, "title": "Test Suite: ${1}", "tooltip": "Test describe block" },
|
|
14
|
+
{ "pattern": "\\bit\\s*\\(\\s*['\"]([^'\"]+)['\"]", "captureGroup": 1, "title": "Test: ${1}", "tooltip": "Individual test case" },
|
|
15
|
+
{ "pattern": "@Input\\s*\\([^)]*\\)\\s+(\\w+)", "captureGroup": 1, "title": "Input: ${1}", "tooltip": "Component input property" },
|
|
16
|
+
{ "pattern": "@Output\\s*\\([^)]*\\)\\s+(\\w+)", "captureGroup": 1, "title": "Output: ${1}", "tooltip": "Component output event" },
|
|
17
|
+
{ "pattern": "(\\w+)\\s*=\\s*signal\\s*(?:<[^>]*>)?\\s*\\(", "captureGroup": 1, "title": "Signal: ${1}", "tooltip": "Angular signal declaration" },
|
|
18
|
+
{ "pattern": "(\\w+)\\s*=\\s*effect\\s*\\(", "captureGroup": 1, "title": "Effect: ${1}", "tooltip": "Angular effect registration" },
|
|
19
|
+
{ "pattern": "(\\w+)\\s*=\\s*computed\\s*\\(", "captureGroup": 1, "title": "Computed: ${1}", "tooltip": "Angular computed signal declaration" },
|
|
20
|
+
{ "pattern": "(\\w+)\\s*=\\s*input(?:\\.required)?\\s*(?:<[^>]*>)?\\s*\\(", "captureGroup": 1, "title": "Signal Input: ${1}", "tooltip": "Signal-based input property" }
|
|
21
|
+
]
|
|
22
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "css",
|
|
3
|
+
"codeLensPatterns": [
|
|
4
|
+
{
|
|
5
|
+
"pattern": "^([.#]?[a-zA-Z][a-zA-Z0-9_-]*(?:\\s*[>+~]\\s*[.#]?[a-zA-Z][a-zA-Z0-9_-]*)*(?:\\s*,\\s*[.#]?[a-zA-Z][a-zA-Z0-9_-]*)*)\\s*\\{",
|
|
6
|
+
"captureGroup": 1,
|
|
7
|
+
"commandId": "css.showSelectorInfo",
|
|
8
|
+
"title": "Selector: ${1} — Show specificity & matched elements",
|
|
9
|
+
"description": "Displays specificity calculation, inheritance chain, and approximate element match count for this CSS selector rule."
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"pattern": "@media\\s+([^{]+)\\{",
|
|
13
|
+
"captureGroup": 1,
|
|
14
|
+
"commandId": "css.showMediaQueryInfo",
|
|
15
|
+
"title": "Media: ${1} — Show breakpoint details",
|
|
16
|
+
"description": "Shows the media query condition, applicable viewport ranges, and the number of rules contained within this @media block."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"pattern": "@keyframes\\s+([a-zA-Z][a-zA-Z0-9_-]*)\\s*\\{",
|
|
20
|
+
"captureGroup": 1,
|
|
21
|
+
"commandId": "css.showKeyframesUsage",
|
|
22
|
+
"title": "Animation: ${1} — Find usages",
|
|
23
|
+
"description": "Shows all elements referencing this @keyframes animation by animation-name property across the stylesheet."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"pattern": "--([a-zA-Z][a-zA-Z0-9_-]*)\\s*:",
|
|
27
|
+
"captureGroup": 1,
|
|
28
|
+
"commandId": "css.showCustomPropertyUsage",
|
|
29
|
+
"title": "Variable: --${1} — Find references",
|
|
30
|
+
"description": "Counts and lists all var(--${1}) references across stylesheets to show where this custom property is consumed."
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"pattern": "@font-face\\s*\\{[^}]*font-family\\s*:\\s*['\"]?([^'\";}]+)",
|
|
34
|
+
"captureGroup": 1,
|
|
35
|
+
"commandId": "css.showFontFaceUsage",
|
|
36
|
+
"title": "Font: ${1} — Find usages",
|
|
37
|
+
"description": "Lists all elements using this @font-face defined font-family across stylesheets."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"pattern": "@layer\\s+([a-zA-Z][a-zA-Z0-9_-]*)\\s*[{;]",
|
|
41
|
+
"captureGroup": 1,
|
|
42
|
+
"commandId": "css.showLayerInfo",
|
|
43
|
+
"title": "Layer: ${1} — Show cascade order",
|
|
44
|
+
"description": "Displays cascade layer ordering and the number of rules assigned to this layer across all stylesheets."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"pattern": "@import\\s+(?:url\\()?['\"]?([^'\"\\)]+)",
|
|
48
|
+
"captureGroup": 1,
|
|
49
|
+
"commandId": "css.openImportedFile",
|
|
50
|
+
"title": "Import: ${1} — Open file",
|
|
51
|
+
"description": "Opens the imported CSS file for viewing or editing."
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"pattern": "@supports\\s+([^{]+)\\{",
|
|
55
|
+
"captureGroup": 1,
|
|
56
|
+
"commandId": "css.showSupportsInfo",
|
|
57
|
+
"title": "Feature Query: ${1} — Show browser support",
|
|
58
|
+
"description": "Displays browser compatibility information for the queried CSS feature."
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"pattern": "@container\\s+(?:([a-zA-Z][a-zA-Z0-9_-]*)\\s+)?\\(",
|
|
62
|
+
"captureGroup": 1,
|
|
63
|
+
"commandId": "css.showContainerInfo",
|
|
64
|
+
"title": "Container Query — Show container details",
|
|
65
|
+
"description": "Shows the container query condition and identifies the matching container element by name or proximity."
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"language": "nestjs",
|
|
3
|
+
"codeLensPatterns": [
|
|
4
|
+
{ "pattern": "@Controller\\(['\"]?([^'\"\\)]*)['\"]?\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Controller Routes", "description": "Show all routes in this controller" },
|
|
5
|
+
{ "pattern": "@(Get|Post|Put|Patch|Delete|Head|Options|All)\\(['\"]?([^'\"\\)]*)['\"]?\\)", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Find References", "description": "Find all references to this endpoint" },
|
|
6
|
+
{ "pattern": "@Injectable\\(\\)", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Find Injections", "description": "Find where this service is injected" },
|
|
7
|
+
{ "pattern": "@Module\\(", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Module Dependencies", "description": "Show module dependency graph" },
|
|
8
|
+
{ "pattern": "class\\s+(\\w+)\\s+implements\\s+CanActivate", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Guard Usages", "description": "Find where this guard is used" },
|
|
9
|
+
{ "pattern": "class\\s+(\\w+)\\s+implements\\s+PipeTransform", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Pipe Usages", "description": "Find where this pipe is used" },
|
|
10
|
+
{ "pattern": "class\\s+(\\w+)\\s+implements\\s+NestInterceptor", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Interceptor Usages", "description": "Find interceptor usages" },
|
|
11
|
+
{ "pattern": "@Catch\\(([^)]*)\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Filter Usages", "description": "Find exception filter usages" },
|
|
12
|
+
{ "pattern": "@WebSocketGateway\\(", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Gateway Events", "description": "Show gateway message handlers" },
|
|
13
|
+
{ "pattern": "@SubscribeMessage\\(['\"]([^'\"]+)['\"]\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Message Handler", "description": "Find message pattern usages" },
|
|
14
|
+
{ "pattern": "describe\\(['\"]([^'\"]+)['\"]", "captureGroup": 1, "commandId": "testing.runAtCursor", "title": "Run Tests", "description": "Run test suite" },
|
|
15
|
+
{ "pattern": "it\\(['\"]([^'\"]+)['\"]", "captureGroup": 1, "commandId": "testing.runAtCursor", "title": "Run Test", "description": "Run this test case" },
|
|
16
|
+
{ "pattern": "@Cron\\(['\"]([^'\"]+)['\"]\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Scheduled Task", "description": "Cron schedule info" },
|
|
17
|
+
{ "pattern": "@Entity\\(['\"]?([^'\"\\)]*)['\"]?\\)", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Entity References", "description": "Find entity usages" },
|
|
18
|
+
{ "pattern": "class\\s+(\\w+)\\s+implements\\s+NestMiddleware", "captureGroup": 1, "commandId": "editor.action.referenceSearch.trigger", "title": "Middleware Usages", "description": "Find middleware registrations" },
|
|
19
|
+
{ "pattern": "async\\s+bootstrap\\(\\)", "captureGroup": 0, "commandId": "editor.action.referenceSearch.trigger", "title": "Application Entry", "description": "Main bootstrap function" }
|
|
20
|
+
]
|
|
21
|
+
}
|