@enjoys/context-engine 1.3.1 → 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 (221) hide show
  1. package/data/codeActions/angular.json +126 -0
  2. package/data/codeActions/nestjs.json +124 -0
  3. package/data/codeActions/nextjs.json +198 -0
  4. package/data/codeActions/react.json +154 -0
  5. package/data/codeActions/shadcn.json +112 -0
  6. package/data/codeActions/shell.json +169 -26
  7. package/data/codeLens/angular.json +22 -0
  8. package/data/codeLens/nestjs.json +21 -0
  9. package/data/codeLens/nextjs.json +117 -0
  10. package/data/codeLens/react.json +89 -0
  11. package/data/codeLens/shadcn.json +89 -0
  12. package/data/codeLens/shell.json +59 -17
  13. package/data/codeLens/tailwindcss.json +56 -0
  14. package/data/color/angular.json +21 -0
  15. package/data/color/nestjs.json +18 -0
  16. package/data/color/nextjs.json +22 -0
  17. package/data/color/react.json +93 -0
  18. package/data/color/shadcn.json +66 -0
  19. package/data/color/shell.json +106 -80
  20. package/data/commands/angular.json +312 -0
  21. package/data/commands/manifest.json +5 -0
  22. package/data/commands/nestjs.json +273 -0
  23. package/data/commands/nextjs.json +123 -0
  24. package/data/commands/react.json +210 -0
  25. package/data/commands/shadcn.json +410 -0
  26. package/data/commands/shell.json +571 -41
  27. package/data/completion/angular.json +1490 -0
  28. package/data/completion/css.json +793 -0
  29. package/data/completion/nestjs.json +1454 -0
  30. package/data/completion/nextjs.json +1373 -0
  31. package/data/completion/react.json +1319 -0
  32. package/data/completion/shadcn.json +1202 -0
  33. package/data/completion/shell.json +2446 -510
  34. package/data/declaration/angular.json +46 -0
  35. package/data/declaration/nestjs.json +47 -0
  36. package/data/declaration/nextjs.json +274 -0
  37. package/data/declaration/react.json +199 -0
  38. package/data/declaration/shadcn.json +211 -0
  39. package/data/declaration/shell.json +343 -24
  40. package/data/declaration/tailwindcss.json +72 -0
  41. package/data/definition/angular.json +670 -0
  42. package/data/definition/nestjs.json +684 -0
  43. package/data/definition/nextjs.json +439 -0
  44. package/data/definition/react.json +397 -0
  45. package/data/definition/shadcn.json +99 -0
  46. package/data/definition/shell.json +820 -0
  47. package/data/documentHighlight/angular.json +414 -0
  48. package/data/documentHighlight/css.json +77 -2
  49. package/data/documentHighlight/nestjs.json +115 -0
  50. package/data/documentHighlight/nextjs.json +212 -0
  51. package/data/documentHighlight/react.json +119 -0
  52. package/data/documentHighlight/shadcn.json +168 -0
  53. package/data/documentHighlight/shell.json +664 -334
  54. package/data/documentHighlight/tailwindcss.json +105 -10
  55. package/data/documentRangeFormatting/angular.json +45 -0
  56. package/data/documentRangeFormatting/nestjs.json +17 -0
  57. package/data/documentRangeFormatting/nextjs.json +17 -0
  58. package/data/documentRangeFormatting/react.json +78 -0
  59. package/data/documentRangeFormatting/shadcn.json +45 -0
  60. package/data/documentRangeFormatting/shell.json +120 -53
  61. package/data/documentSymbol/angular.json +180 -0
  62. package/data/documentSymbol/nestjs.json +152 -0
  63. package/data/documentSymbol/nextjs.json +159 -0
  64. package/data/documentSymbol/react.json +145 -0
  65. package/data/documentSymbol/shadcn.json +131 -0
  66. package/data/documentSymbol/shell.json +166 -26
  67. package/data/documentSymbol/tailwindcss.json +49 -0
  68. package/data/foldingRange/angular.json +99 -0
  69. package/data/foldingRange/nestjs.json +26 -0
  70. package/data/foldingRange/nextjs.json +26 -0
  71. package/data/foldingRange/react.json +120 -0
  72. package/data/foldingRange/shadcn.json +93 -0
  73. package/data/foldingRange/shell.json +106 -46
  74. package/data/formatting/angular.json +21 -0
  75. package/data/formatting/nestjs.json +23 -0
  76. package/data/formatting/nextjs.json +23 -0
  77. package/data/formatting/react.json +71 -0
  78. package/data/formatting/shadcn.json +61 -0
  79. package/data/formatting/shell.json +103 -19
  80. package/data/hover/angular.json +455 -0
  81. package/data/hover/css.json +232 -0
  82. package/data/hover/nestjs.json +296 -0
  83. package/data/hover/nextjs.json +305 -0
  84. package/data/hover/react.json +173 -0
  85. package/data/hover/shadcn.json +450 -0
  86. package/data/hover/shell.json +684 -75
  87. package/data/implementation/angular.json +22 -0
  88. package/data/implementation/nestjs.json +24 -0
  89. package/data/implementation/nextjs.json +137 -0
  90. package/data/implementation/react.json +125 -0
  91. package/data/implementation/shadcn.json +89 -0
  92. package/data/implementation/shell.json +59 -3
  93. package/data/inlayHints/angular.json +24 -0
  94. package/data/inlayHints/nestjs.json +24 -0
  95. package/data/inlayHints/nextjs.json +143 -0
  96. package/data/inlayHints/react.json +177 -0
  97. package/data/inlayHints/shadcn.json +109 -0
  98. package/data/inlayHints/shell.json +223 -35
  99. package/data/inlineCompletions/angular.json +135 -0
  100. package/data/inlineCompletions/nestjs.json +25 -0
  101. package/data/inlineCompletions/nextjs.json +179 -0
  102. package/data/inlineCompletions/react.json +203 -0
  103. package/data/inlineCompletions/shadcn.json +115 -0
  104. package/data/inlineCompletions/shell.json +185 -35
  105. package/data/linkedEditingRange/angular.json +23 -0
  106. package/data/linkedEditingRange/nestjs.json +10 -0
  107. package/data/linkedEditingRange/nextjs.json +11 -0
  108. package/data/linkedEditingRange/react.json +75 -0
  109. package/data/linkedEditingRange/shadcn.json +23 -0
  110. package/data/linkedEditingRange/shell.json +25 -25
  111. package/data/links/angular.json +95 -0
  112. package/data/links/nestjs.json +130 -0
  113. package/data/links/nextjs.json +91 -0
  114. package/data/links/react.json +75 -0
  115. package/data/links/shadcn.json +98 -0
  116. package/data/links/shell.json +56 -0
  117. package/data/links/tailwindcss.json +25 -0
  118. package/data/manifest.json +339 -152
  119. package/data/onTypeFormatting/angular.json +14 -0
  120. package/data/onTypeFormatting/nestjs.json +16 -0
  121. package/data/onTypeFormatting/nextjs.json +17 -0
  122. package/data/onTypeFormatting/react.json +127 -0
  123. package/data/onTypeFormatting/shadcn.json +54 -0
  124. package/data/onTypeFormatting/shell.json +72 -68
  125. package/data/rangeSemanticTokens/angular.json +140 -0
  126. package/data/rangeSemanticTokens/nestjs.json +27 -0
  127. package/data/rangeSemanticTokens/nextjs.json +28 -0
  128. package/data/rangeSemanticTokens/react.json +216 -0
  129. package/data/rangeSemanticTokens/shadcn.json +140 -0
  130. package/data/rangeSemanticTokens/shell.json +247 -69
  131. package/data/rangeSemanticTokens/tailwindcss.json +99 -8
  132. package/data/references/angular.json +26 -0
  133. package/data/references/nestjs.json +24 -0
  134. package/data/references/nextjs.json +178 -0
  135. package/data/references/react.json +192 -0
  136. package/data/references/shadcn.json +101 -0
  137. package/data/references/shell.json +323 -92
  138. package/data/references/tailwindcss.json +66 -0
  139. package/data/rename/angular.json +131 -0
  140. package/data/rename/nestjs.json +32 -0
  141. package/data/rename/nextjs.json +31 -0
  142. package/data/rename/react.json +88 -0
  143. package/data/rename/shadcn.json +79 -0
  144. package/data/rename/shell.json +101 -31
  145. package/data/selectionRange/angular.json +95 -0
  146. package/data/selectionRange/nestjs.json +21 -0
  147. package/data/selectionRange/nextjs.json +22 -0
  148. package/data/selectionRange/react.json +87 -0
  149. package/data/selectionRange/shadcn.json +89 -0
  150. package/data/selectionRange/shell.json +65 -35
  151. package/data/semanticTokens/angular.json +198 -0
  152. package/data/semanticTokens/nestjs.json +35 -0
  153. package/data/semanticTokens/nextjs.json +38 -0
  154. package/data/semanticTokens/react.json +215 -0
  155. package/data/semanticTokens/shadcn.json +180 -0
  156. package/data/semanticTokens/shell.json +238 -65
  157. package/data/signatureHelp/angular.json +182 -0
  158. package/data/signatureHelp/nestjs.json +128 -0
  159. package/data/signatureHelp/nextjs.json +127 -0
  160. package/data/signatureHelp/react.json +281 -0
  161. package/data/signatureHelp/shadcn.json +237 -0
  162. package/data/signatureHelp/shell.json +797 -104
  163. package/data/typeDefinition/angular.json +362 -0
  164. package/data/typeDefinition/nestjs.json +334 -0
  165. package/data/typeDefinition/nextjs.json +285 -0
  166. package/data/typeDefinition/react.json +236 -0
  167. package/data/typeDefinition/shadcn.json +292 -0
  168. package/data/typeDefinition/shell.json +104 -40
  169. package/package.json +1 -1
  170. package/data/codeActions/bash.json +0 -169
  171. package/data/codeActions/zsh.json +0 -49
  172. package/data/codeLens/bash.json +0 -75
  173. package/data/codeLens/zsh.json +0 -19
  174. package/data/color/bash.json +0 -100
  175. package/data/color/zsh.json +0 -80
  176. package/data/commands/bash.json +0 -102
  177. package/data/commands/zsh.json +0 -166
  178. package/data/completion/bash.json +0 -1184
  179. package/data/completion/zsh.json +0 -973
  180. package/data/declaration/bash.json +0 -301
  181. package/data/declaration/zsh.json +0 -205
  182. package/data/definition/bash.json +0 -565
  183. package/data/definition/zsh.json +0 -350
  184. package/data/documentHighlight/bash.json +0 -393
  185. package/data/documentHighlight/zsh.json +0 -266
  186. package/data/documentRangeFormatting/bash.json +0 -41
  187. package/data/documentRangeFormatting/zsh.json +0 -59
  188. package/data/documentSymbol/bash.json +0 -124
  189. package/data/documentSymbol/zsh.json +0 -26
  190. package/data/foldingRange/bash.json +0 -76
  191. package/data/foldingRange/zsh.json +0 -46
  192. package/data/formatting/bash.json +0 -88
  193. package/data/formatting/zsh.json +0 -28
  194. package/data/hover/bash.json +0 -579
  195. package/data/hover/zsh.json +0 -96
  196. package/data/implementation/bash.json +0 -44
  197. package/data/implementation/zsh.json +0 -41
  198. package/data/inlayHints/bash.json +0 -207
  199. package/data/inlayHints/zsh.json +0 -43
  200. package/data/inlineCompletions/bash.json +0 -155
  201. package/data/inlineCompletions/zsh.json +0 -17
  202. package/data/linkedEditingRange/bash.json +0 -25
  203. package/data/linkedEditingRange/zsh.json +0 -25
  204. package/data/links/bash.json +0 -56
  205. package/data/links/zsh.json +0 -15
  206. package/data/onTypeFormatting/bash.json +0 -68
  207. package/data/onTypeFormatting/zsh.json +0 -68
  208. package/data/rangeSemanticTokens/bash.json +0 -90
  209. package/data/rangeSemanticTokens/zsh.json +0 -76
  210. package/data/references/bash.json +0 -221
  211. package/data/references/zsh.json +0 -166
  212. package/data/rename/bash.json +0 -37
  213. package/data/rename/zsh.json +0 -31
  214. package/data/selectionRange/bash.json +0 -35
  215. package/data/selectionRange/zsh.json +0 -35
  216. package/data/semanticTokens/bash.json +0 -71
  217. package/data/semanticTokens/zsh.json +0 -71
  218. package/data/signatureHelp/bash.json +0 -111
  219. package/data/signatureHelp/zsh.json +0 -118
  220. package/data/typeDefinition/bash.json +0 -95
  221. package/data/typeDefinition/zsh.json +0 -40
@@ -0,0 +1,143 @@
1
+ {
2
+ "language": "nextjs",
3
+ "inlayHintPatterns": [
4
+ {
5
+ "pattern": "(?:const|let|var)\\s+(\\w+)\\s*=\\s*(?!\\{|\\[|\\(|function|class|new)(.+)",
6
+ "kind": 1,
7
+ "label": ": ${inferredType}",
8
+ "position": "afterIdentifier",
9
+ "paddingLeft": false,
10
+ "paddingRight": true,
11
+ "description": "Infer type for variable assignments"
12
+ },
13
+ {
14
+ "pattern": "const\\s+\\[(\\w+),\\s*set\\w+\\]\\s*=\\s*useState\\(([^)]*?)\\)",
15
+ "kind": 1,
16
+ "label": ": ${inferredType}",
17
+ "position": "afterIdentifier",
18
+ "paddingLeft": false,
19
+ "paddingRight": true,
20
+ "description": "Infer useState generic type from initial value"
21
+ },
22
+ {
23
+ "pattern": "const\\s+(router)\\s*=\\s*useRouter\\(\\)",
24
+ "kind": 1,
25
+ "label": ": AppRouterInstance",
26
+ "position": "afterIdentifier",
27
+ "paddingLeft": false,
28
+ "paddingRight": true,
29
+ "description": "Show useRouter return type"
30
+ },
31
+ {
32
+ "pattern": "const\\s+(pathname)\\s*=\\s*usePathname\\(\\)",
33
+ "kind": 1,
34
+ "label": ": string",
35
+ "position": "afterIdentifier",
36
+ "paddingLeft": false,
37
+ "paddingRight": true,
38
+ "description": "Show usePathname return type"
39
+ },
40
+ {
41
+ "pattern": "const\\s+(searchParams)\\s*=\\s*useSearchParams\\(\\)",
42
+ "kind": 1,
43
+ "label": ": ReadonlyURLSearchParams",
44
+ "position": "afterIdentifier",
45
+ "paddingLeft": false,
46
+ "paddingRight": true,
47
+ "description": "Show useSearchParams return type"
48
+ },
49
+ {
50
+ "pattern": "export\\s+default\\s+(?:async\\s+)?function\\s+\\w+\\(\\s*\\{\\s*(params)\\s*\\}",
51
+ "kind": 1,
52
+ "label": ": { [key: string]: string | string[] }",
53
+ "position": "afterIdentifier",
54
+ "paddingLeft": false,
55
+ "paddingRight": true,
56
+ "description": "Annotate params type in page components"
57
+ },
58
+ {
59
+ "pattern": "export\\s+default\\s+(?:async\\s+)?function\\s+\\w+\\(\\s*\\{[^}]*(searchParams)[^}]*\\}",
60
+ "kind": 1,
61
+ "label": ": { [key: string]: string | string[] | undefined }",
62
+ "position": "afterIdentifier",
63
+ "paddingLeft": false,
64
+ "paddingRight": true,
65
+ "description": "Annotate searchParams type in page components"
66
+ },
67
+ {
68
+ "pattern": "const\\s+(\\w+)\\s*=\\s*await\\s+fetch\\(",
69
+ "kind": 1,
70
+ "label": ": Response",
71
+ "position": "afterIdentifier",
72
+ "paddingLeft": false,
73
+ "paddingRight": true,
74
+ "description": "Show fetch response type"
75
+ },
76
+ {
77
+ "pattern": "async\\s+function\\s+\\w+Action\\([^)]*\\)\\s*(?::\\s*Promise<([^>]+)>)?",
78
+ "kind": 1,
79
+ "label": "=> Promise<void>",
80
+ "position": "afterParameters",
81
+ "paddingLeft": true,
82
+ "paddingRight": false,
83
+ "description": "Show server action return type"
84
+ },
85
+ {
86
+ "pattern": "\\b(?:redirect|notFound|revalidatePath|revalidateTag)\\(([^,)]+)",
87
+ "kind": 2,
88
+ "label": "url:",
89
+ "position": "beforeArgument",
90
+ "paddingLeft": false,
91
+ "paddingRight": true,
92
+ "description": "Parameter name hints at call sites"
93
+ },
94
+ {
95
+ "pattern": "export\\s+(?:async\\s+)?function\\s+(?:GET|POST|PUT|PATCH|DELETE)\\s*\\(\\s*(\\w+)",
96
+ "kind": 1,
97
+ "label": ": NextRequest",
98
+ "position": "afterIdentifier",
99
+ "paddingLeft": false,
100
+ "paddingRight": true,
101
+ "description": "Annotate route handler request parameter type"
102
+ },
103
+ {
104
+ "pattern": "export\\s+(?:async\\s+)?function\\s+(?:GET|POST|PUT|PATCH|DELETE)\\s*\\([^,]+,\\s*\\{\\s*(params)\\s*\\}",
105
+ "kind": 1,
106
+ "label": ": { [key: string]: string }",
107
+ "position": "afterIdentifier",
108
+ "paddingLeft": false,
109
+ "paddingRight": true,
110
+ "description": "Annotate route handler context params type"
111
+ }
112
+ ],
113
+ "typeInferenceRules": {
114
+ "string": {
115
+ "pattern": "^[\"'`]",
116
+ "type": "string"
117
+ },
118
+ "number": {
119
+ "pattern": "^\\d+\\.?\\d*$",
120
+ "type": "number"
121
+ },
122
+ "boolean": {
123
+ "pattern": "^(true|false)$",
124
+ "type": "boolean"
125
+ },
126
+ "array": {
127
+ "pattern": "^\\[",
128
+ "type": "Array<unknown>"
129
+ },
130
+ "null": {
131
+ "pattern": "^null$",
132
+ "type": "null"
133
+ },
134
+ "object": {
135
+ "pattern": "^\\{",
136
+ "type": "Record<string, unknown>"
137
+ },
138
+ "jsx": {
139
+ "pattern": "^<[A-Z]",
140
+ "type": "JSX.Element"
141
+ }
142
+ }
143
+ }
@@ -0,0 +1,177 @@
1
+ {
2
+ "language": "react",
3
+ "inlayHintPatterns": [
4
+ {
5
+ "pattern": "const\\s+\\[(\\w+),\\s*(\\w+)\\]\\s*=\\s*useState\\s*\\(([^)]*?)\\)",
6
+ "hints": [
7
+ {
8
+ "position": "after:captureGroup:1",
9
+ "label": ": S",
10
+ "description": "Inferred state type from initial value",
11
+ "kind": "type"
12
+ },
13
+ {
14
+ "position": "after:captureGroup:2",
15
+ "label": ": Dispatch<SetStateAction<S>>",
16
+ "description": "State setter function type",
17
+ "kind": "type"
18
+ }
19
+ ]
20
+ },
21
+ {
22
+ "pattern": "const\\s+(\\w+)\\s*=\\s*useRef\\s*\\(([^)]*?)\\)",
23
+ "hints": [
24
+ {
25
+ "position": "after:captureGroup:1",
26
+ "label": ": MutableRefObject<T>",
27
+ "description": "Ref object type inferred from initial value",
28
+ "kind": "type"
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ "pattern": "const\\s+(\\w+)\\s*=\\s*useMemo\\s*\\(\\s*\\(\\)\\s*=>",
34
+ "hints": [
35
+ {
36
+ "position": "after:captureGroup:1",
37
+ "label": ": T",
38
+ "description": "Memoized value type inferred from factory return",
39
+ "kind": "type"
40
+ }
41
+ ]
42
+ },
43
+ {
44
+ "pattern": "const\\s+(\\w+)\\s*=\\s*useCallback\\s*\\(",
45
+ "hints": [
46
+ {
47
+ "position": "after:captureGroup:1",
48
+ "label": ": T",
49
+ "description": "Memoized callback type inferred from function",
50
+ "kind": "type"
51
+ }
52
+ ]
53
+ },
54
+ {
55
+ "pattern": "const\\s+(\\w+)\\s*=\\s*useContext\\s*\\((\\w+)\\)",
56
+ "hints": [
57
+ {
58
+ "position": "after:captureGroup:1",
59
+ "label": ": ContextType",
60
+ "description": "Context value type from provider",
61
+ "kind": "type"
62
+ }
63
+ ]
64
+ },
65
+ {
66
+ "pattern": "const\\s+\\[(\\w+),\\s*(\\w+)\\]\\s*=\\s*useReducer\\s*\\(",
67
+ "hints": [
68
+ {
69
+ "position": "after:captureGroup:1",
70
+ "label": ": State",
71
+ "description": "Reducer state type",
72
+ "kind": "type"
73
+ },
74
+ {
75
+ "position": "after:captureGroup:2",
76
+ "label": ": Dispatch<Action>",
77
+ "description": "Reducer dispatch function",
78
+ "kind": "type"
79
+ }
80
+ ]
81
+ },
82
+ {
83
+ "pattern": "const\\s+(\\w+)\\s*=\\s*useId\\s*\\(\\)",
84
+ "hints": [
85
+ {
86
+ "position": "after:captureGroup:1",
87
+ "label": ": string",
88
+ "description": "Unique ID string",
89
+ "kind": "type"
90
+ }
91
+ ]
92
+ },
93
+ {
94
+ "pattern": "const\\s+\\[(\\w+),\\s*(\\w+)\\]\\s*=\\s*useTransition\\s*\\(\\)",
95
+ "hints": [
96
+ {
97
+ "position": "after:captureGroup:1",
98
+ "label": ": boolean",
99
+ "description": "Pending transition state",
100
+ "kind": "type"
101
+ },
102
+ {
103
+ "position": "after:captureGroup:2",
104
+ "label": ": TransitionStartFunction",
105
+ "description": "Function to start a transition",
106
+ "kind": "type"
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "pattern": "const\\s+(\\w+)\\s*=\\s*useDeferredValue\\s*\\(([^)]+)\\)",
112
+ "hints": [
113
+ {
114
+ "position": "after:captureGroup:1",
115
+ "label": ": T",
116
+ "description": "Deferred value type, same as input",
117
+ "kind": "type"
118
+ }
119
+ ]
120
+ },
121
+ {
122
+ "pattern": "useEffect\\s*\\(\\s*\\(\\)\\s*=>\\s*\\{[^}]*\\}\\s*,\\s*\\[([^\\]]*)\\]",
123
+ "hints": [
124
+ {
125
+ "position": "before:captureGroup:1",
126
+ "label": "deps: ",
127
+ "description": "Dependency array for the effect",
128
+ "kind": "parameter"
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ "pattern": "useMemo\\s*\\(\\s*\\(\\)\\s*=>[^,]*,\\s*\\[([^\\]]*)\\]",
134
+ "hints": [
135
+ {
136
+ "position": "before:captureGroup:1",
137
+ "label": "deps: ",
138
+ "description": "Dependency array for memoization",
139
+ "kind": "parameter"
140
+ }
141
+ ]
142
+ },
143
+ {
144
+ "pattern": "useCallback\\s*\\([^,]*,\\s*\\[([^\\]]*)\\]",
145
+ "hints": [
146
+ {
147
+ "position": "before:captureGroup:1",
148
+ "label": "deps: ",
149
+ "description": "Dependency array for callback memoization",
150
+ "kind": "parameter"
151
+ }
152
+ ]
153
+ },
154
+ {
155
+ "pattern": "(?:function|const)\\s+([A-Z][a-zA-Z0-9]*)\\s*(?::\\s*React\\.FC<(\\w+)>)?\\s*(?:=\\s*)?\\(([^)]*?)\\)",
156
+ "hints": [
157
+ {
158
+ "position": "before:captureGroup:3",
159
+ "label": "props: ",
160
+ "description": "Component props parameter",
161
+ "kind": "parameter"
162
+ }
163
+ ]
164
+ },
165
+ {
166
+ "pattern": "const\\s+(\\w+)\\s*=\\s*useSyncExternalStore\\s*\\(",
167
+ "hints": [
168
+ {
169
+ "position": "after:captureGroup:1",
170
+ "label": ": Snapshot",
171
+ "description": "External store snapshot type",
172
+ "kind": "type"
173
+ }
174
+ ]
175
+ }
176
+ ]
177
+ }
@@ -0,0 +1,109 @@
1
+ {
2
+ "language": "shadcn",
3
+ "inlayHintPatterns": [
4
+ {
5
+ "pattern": "const\\s+(\\w+Variants?)\\s*=\\s*cva\\(",
6
+ "captureGroup": 1,
7
+ "label": ": (props?: VariantProps) => string",
8
+ "kind": 1,
9
+ "tooltip": "cva() returns a function that accepts variant props and returns a class string",
10
+ "position": "after"
11
+ },
12
+ {
13
+ "pattern": "\\bcn\\(([^)]+)\\)",
14
+ "captureGroup": 0,
15
+ "label": ": string",
16
+ "kind": 1,
17
+ "tooltip": "cn() returns a merged Tailwind CSS class string",
18
+ "position": "after"
19
+ },
20
+ {
21
+ "pattern": "const\\s+\\{\\s*(toast).*\\}\\s*=\\s*useToast\\(",
22
+ "captureGroup": 1,
23
+ "label": ": (props: ToastProps) => { id, dismiss, update }",
24
+ "kind": 1,
25
+ "tooltip": "toast() creates a new toast notification and returns control handles",
26
+ "position": "after"
27
+ },
28
+ {
29
+ "pattern": "const\\s+(\\w+)\\s*=\\s*useFormField\\(",
30
+ "captureGroup": 1,
31
+ "label": ": { id, name, formItemId, formDescriptionId, formMessageId, invalid, isDirty, isTouched, error }",
32
+ "kind": 1,
33
+ "tooltip": "useFormField() returns form field state and accessibility IDs",
34
+ "position": "after"
35
+ },
36
+ {
37
+ "pattern": "variant=[\"'](\\w+)[\"']",
38
+ "captureGroup": 1,
39
+ "label": ": VariantProps[\"variant\"]",
40
+ "kind": 1,
41
+ "tooltip": "Variant prop value from the component's cva definition",
42
+ "position": "after"
43
+ },
44
+ {
45
+ "pattern": "React\\.forwardRef<(\\w+),\\s*(\\w+)>",
46
+ "captureGroup": 1,
47
+ "label": ": React.Ref<$1>",
48
+ "kind": 1,
49
+ "tooltip": "Ref type forwarded to the underlying DOM element",
50
+ "position": "after"
51
+ },
52
+ {
53
+ "pattern": "<FormField[^>]*render=\\{\\(\\{\\s*field\\s*\\}\\)",
54
+ "captureGroup": 0,
55
+ "label": ": ControllerRenderProps<TFieldValues>",
56
+ "kind": 1,
57
+ "tooltip": "field object contains value, onChange, onBlur, name, and ref",
58
+ "position": "after"
59
+ },
60
+ {
61
+ "pattern": "z\\.infer<typeof\\s+(\\w+)>",
62
+ "captureGroup": 1,
63
+ "label": ": inferred type",
64
+ "kind": 1,
65
+ "tooltip": "Type inferred from the referenced zod schema",
66
+ "position": "after"
67
+ },
68
+ {
69
+ "pattern": "accessorKey:\\s*[\"'](\\w+)[\"']",
70
+ "captureGroup": 1,
71
+ "label": ": keyof TData",
72
+ "kind": 1,
73
+ "tooltip": "Column accessor key typed to a property of the row data",
74
+ "position": "after"
75
+ }
76
+ ],
77
+ "typeInferenceRules": [
78
+ {
79
+ "pattern": "const\\s+\\w+\\s*=\\s*cva\\(",
80
+ "inferredType": "(props?: VariantProps<typeof variants>) => string",
81
+ "description": "cva() call infers a variant function type based on the provided config"
82
+ },
83
+ {
84
+ "pattern": "useForm<z\\.infer<typeof\\s+(\\w+)>>",
85
+ "inferredType": "UseFormReturn<z.infer<typeof $1>>",
86
+ "description": "useForm infers form type from zod schema via z.infer"
87
+ },
88
+ {
89
+ "pattern": "useReactTable\\(\\{",
90
+ "inferredType": "Table<TData>",
91
+ "description": "useReactTable returns a Table instance typed to the data shape"
92
+ },
93
+ {
94
+ "pattern": "const\\s+\\{\\s*toast\\s*,?\\s*toasts\\s*\\}\\s*=\\s*useToast\\(",
95
+ "inferredType": "{ toast: ToastFunction; toasts: Toast[]; dismiss: (id?: string) => void }",
96
+ "description": "useToast hook returns toast action and current toasts array"
97
+ },
98
+ {
99
+ "pattern": "React\\.forwardRef<(\\w+),\\s*(\\w+)>",
100
+ "inferredType": "React.ForwardRefExoticComponent<$2 & React.RefAttributes<$1>>",
101
+ "description": "forwardRef infers an exotic component type from element and props generics"
102
+ },
103
+ {
104
+ "pattern": "const\\s+\\w+\\s*=\\s*useFormField\\(",
105
+ "inferredType": "{ id: string; name: string; formItemId: string; formDescriptionId: string; formMessageId: string; invalid: boolean; isDirty: boolean; isTouched: boolean; error?: FieldError }",
106
+ "description": "useFormField returns form field context with validation state"
107
+ }
108
+ ]
109
+ }
@@ -1,35 +1,223 @@
1
- {
2
- "language": "shell",
3
- "inlayHintPatterns": [
4
- {
5
- "pattern": "(\\w+)\\s*=\\s*",
6
- "kind": 1,
7
- "label": ": {type}",
8
- "position": "after_value",
9
- "paddingLeft": true,
10
- "description": "Show inferred types for shell variable assignments"
11
- }
12
- ],
13
- "typeInferenceRules": {
14
- "string_literal": {
15
- "pattern": "['\"].*['\"]",
16
- "type": "string"
17
- },
18
- "number_literal": {
19
- "pattern": "^\\d+$",
20
- "type": "integer"
21
- },
22
- "array_literal": {
23
- "pattern": "\\(.*\\)",
24
- "type": "array"
25
- },
26
- "boolean_literal": {
27
- "pattern": "\\b(true|false)\\b",
28
- "type": "string"
29
- },
30
- "path_literal": {
31
- "pattern": "(/[\\w.-]+)+",
32
- "type": "path"
33
- }
34
- }
35
- }
1
+ {
2
+ "language": "shell",
3
+ "inlayHintPatterns": [
4
+ {
5
+ "pattern": "(\\w+)\\s*=\\s*",
6
+ "kind": 1,
7
+ "label": ": {type}",
8
+ "position": "after_value",
9
+ "paddingLeft": true,
10
+ "description": "Show inferred types for shell variable assignments"
11
+ },
12
+ {
13
+ "pattern": "(?:local|declare)\\s+(?:-\\w+\\s+)*(\\w+)\\s*=\\s*(.+)",
14
+ "kind": 1,
15
+ "label": ": {inferred_type}",
16
+ "position": "after_capture_1",
17
+ "paddingLeft": true,
18
+ "description": "Show inferred type for variable assignments"
19
+ },
20
+ {
21
+ "pattern": "(\\w+)\\s+(\\$\\{?[^}\\s]+\\}?(?:\\s+\\$\\{?[^}\\s]+\\}?)*)",
22
+ "kind": 2,
23
+ "label": "{param_name}:",
24
+ "position": "before_each_arg",
25
+ "paddingRight": true,
26
+ "description": "Show parameter names at call sites for known functions"
27
+ },
28
+ {
29
+ "pattern": "declare\\s+-([aAilurnx]+)\\s+(\\w+)",
30
+ "kind": 1,
31
+ "label": ": {attribute_description}",
32
+ "position": "after_capture_2",
33
+ "paddingLeft": true,
34
+ "description": "Show attribute description for declare flags"
35
+ },
36
+ {
37
+ "pattern": "\\$\\{(\\w+):?[-+=?]",
38
+ "kind": 1,
39
+ "label": "expansion: {expansion_type}",
40
+ "position": "after_capture_1",
41
+ "paddingLeft": true,
42
+ "description": "Show parameter expansion type"
43
+ },
44
+ {
45
+ "pattern": "exit\\s+(\\d+)",
46
+ "kind": 1,
47
+ "label": ": {exit_meaning}",
48
+ "position": "after_capture_1",
49
+ "paddingLeft": true,
50
+ "description": "Show meaning of exit status code"
51
+ },
52
+ {
53
+ "pattern": "trap\\s+['\"][^'\"]+['\"]\\s+(\\w+)",
54
+ "kind": 1,
55
+ "label": ": signal {signal_number}",
56
+ "position": "after_capture_1",
57
+ "paddingLeft": true,
58
+ "description": "Show signal number for trap signal name"
59
+ },
60
+ {
61
+ "pattern": "\\$\\(\\((.+)\\)\\)",
62
+ "kind": 1,
63
+ "label": "= {result}",
64
+ "position": "after_match",
65
+ "paddingLeft": true,
66
+ "description": "Show arithmetic result for constant expressions"
67
+ },
68
+ {
69
+ "pattern": "chmod\\s+(\\d{3,4})\\s+",
70
+ "kind": 1,
71
+ "label": ": {permission_string}",
72
+ "position": "after_capture_1",
73
+ "paddingLeft": true,
74
+ "description": "Show symbolic permission for numeric chmod"
75
+ },
76
+ {
77
+ "pattern": "umask\\s+(\\d{3,4})",
78
+ "kind": 1,
79
+ "label": ": effective {effective_perms}",
80
+ "position": "after_capture_1",
81
+ "paddingLeft": true,
82
+ "description": "Show effective permissions for umask value"
83
+ },
84
+ {
85
+ "pattern": "\\breturn\\s+(\\d+)",
86
+ "kind": 1,
87
+ "label": ": {return_meaning}",
88
+ "position": "after_capture_1",
89
+ "paddingLeft": true,
90
+ "description": "Show meaning of return status code"
91
+ },
92
+ {
93
+ "pattern": "\\bkill\\s+-(?:s\\s+)?(\\d+|[A-Z]+)\\s+",
94
+ "kind": 1,
95
+ "label": ": {signal_description}",
96
+ "position": "after_capture_1",
97
+ "paddingLeft": true,
98
+ "description": "Show signal description"
99
+ },
100
+ {
101
+ "pattern": "\\btest\\s+(-[a-zA-Z])\\s+",
102
+ "kind": 1,
103
+ "label": ": {test_description}",
104
+ "position": "after_capture_1",
105
+ "paddingLeft": true,
106
+ "description": "Show test operator meaning"
107
+ }
108
+ ],
109
+ "typeInferenceRules": {
110
+ "string_literal": {
111
+ "pattern": "['\"].*['\"]",
112
+ "type": "string"
113
+ },
114
+ "number_literal": {
115
+ "pattern": "^\\d+$",
116
+ "type": "integer"
117
+ },
118
+ "array_literal": {
119
+ "pattern": "\\(.*\\)",
120
+ "type": "array"
121
+ },
122
+ "boolean_literal": {
123
+ "pattern": "\\b(true|false)\\b",
124
+ "type": "string"
125
+ },
126
+ "path_literal": {
127
+ "pattern": "(/[\\w.-]+)+",
128
+ "type": "path"
129
+ },
130
+ "command_substitution": {
131
+ "pattern": "^\\$\\(.*\\)$",
132
+ "type": "string (from command)"
133
+ },
134
+ "arithmetic": {
135
+ "pattern": "^\\$\\(\\(.*\\)\\)$",
136
+ "type": "integer"
137
+ },
138
+ "boolean_pattern": {
139
+ "pattern": "^(true|false|0|1)$",
140
+ "type": "boolean (exit status)"
141
+ },
142
+ "variable_reference": {
143
+ "pattern": "^\\$\\{?\\w+\\}?$",
144
+ "type": "string (variable)"
145
+ },
146
+ "process_substitution": {
147
+ "pattern": "^<\\(.*\\)$|^>\\(.*\\)$",
148
+ "type": "file descriptor"
149
+ },
150
+ "heredoc": {
151
+ "pattern": "^<<-?\\s*\\w+",
152
+ "type": "string (heredoc)"
153
+ },
154
+ "null_literal": {
155
+ "pattern": "\\\\b(null)\\\\b",
156
+ "type": "null"
157
+ }
158
+ },
159
+ "attributeDescriptions": {
160
+ "a": "indexed array",
161
+ "A": "associative array",
162
+ "i": "integer",
163
+ "l": "lowercase",
164
+ "u": "uppercase",
165
+ "r": "readonly",
166
+ "x": "exported",
167
+ "n": "nameref",
168
+ "t": "trace"
169
+ },
170
+ "exitStatusMeanings": {
171
+ "0": "success",
172
+ "1": "general error",
173
+ "2": "misuse of builtin",
174
+ "126": "not executable",
175
+ "127": "command not found",
176
+ "128": "invalid exit argument",
177
+ "130": "killed by SIGINT (Ctrl+C)",
178
+ "137": "killed by SIGKILL",
179
+ "143": "killed by SIGTERM"
180
+ },
181
+ "signalDescriptions": {
182
+ "1": "HUP - hangup / reload",
183
+ "2": "INT - interrupt (Ctrl+C)",
184
+ "3": "QUIT - core dump",
185
+ "9": "KILL - force kill (uncatchable)",
186
+ "13": "PIPE - broken pipe",
187
+ "15": "TERM - graceful termination",
188
+ "17": "CHLD - child status change",
189
+ "18": "CONT - continue stopped process",
190
+ "19": "STOP - stop (uncatchable)",
191
+ "20": "TSTP - terminal stop (Ctrl+Z)",
192
+ "SIGHUP": "hangup / reload",
193
+ "SIGINT": "interrupt (Ctrl+C)",
194
+ "SIGQUIT": "quit with core dump",
195
+ "SIGKILL": "force kill (uncatchable)",
196
+ "SIGTERM": "graceful termination",
197
+ "SIGSTOP": "stop (uncatchable)",
198
+ "SIGCONT": "continue stopped process",
199
+ "SIGTSTP": "terminal stop (Ctrl+Z)",
200
+ "EXIT": "shell exit (pseudo-signal)",
201
+ "ERR": "command failure (with set -e)",
202
+ "DEBUG": "before each command",
203
+ "RETURN": "after function/source return"
204
+ },
205
+ "testOperatorDescriptions": {
206
+ "-f": "is regular file",
207
+ "-d": "is directory",
208
+ "-e": "exists (any type)",
209
+ "-s": "exists and non-empty",
210
+ "-r": "is readable",
211
+ "-w": "is writable",
212
+ "-x": "is executable",
213
+ "-L": "is symlink",
214
+ "-h": "is symlink",
215
+ "-p": "is named pipe",
216
+ "-S": "is socket",
217
+ "-b": "is block device",
218
+ "-c": "is character device",
219
+ "-z": "string is empty",
220
+ "-n": "string is non-empty",
221
+ "-t": "fd is open terminal"
222
+ }
223
+ }