@enjoys/context-engine 1.2.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/data/codeActions/angular.json +126 -0
  2. package/data/codeActions/css.json +111 -0
  3. package/data/codeActions/nestjs.json +124 -0
  4. package/data/codeActions/nextjs.json +198 -0
  5. package/data/codeActions/react.json +154 -0
  6. package/data/codeActions/shadcn.json +112 -0
  7. package/data/codeActions/shell.json +169 -26
  8. package/data/codeActions/tailwindcss.json +76 -0
  9. package/data/codeLens/angular.json +22 -0
  10. package/data/codeLens/css.json +68 -0
  11. package/data/codeLens/nestjs.json +21 -0
  12. package/data/codeLens/nextjs.json +117 -0
  13. package/data/codeLens/react.json +89 -0
  14. package/data/codeLens/shadcn.json +89 -0
  15. package/data/codeLens/shell.json +59 -17
  16. package/data/codeLens/tailwindcss.json +103 -0
  17. package/data/color/angular.json +21 -0
  18. package/data/color/css.json +124 -0
  19. package/data/color/nestjs.json +18 -0
  20. package/data/color/nextjs.json +22 -0
  21. package/data/color/react.json +93 -0
  22. package/data/color/shadcn.json +66 -0
  23. package/data/color/shell.json +106 -80
  24. package/data/color/tailwindcss.json +53 -0
  25. package/data/commands/angular.json +312 -0
  26. package/data/commands/css.json +41 -0
  27. package/data/commands/manifest.json +734 -727
  28. package/data/commands/nestjs.json +273 -0
  29. package/data/commands/nextjs.json +123 -0
  30. package/data/commands/react.json +210 -0
  31. package/data/commands/shadcn.json +410 -0
  32. package/data/commands/shell.json +571 -41
  33. package/data/commands/tailwindcss.json +53 -0
  34. package/data/completion/angular.json +1490 -0
  35. package/data/completion/css.json +1176 -0
  36. package/data/completion/javascript.json +27 -0
  37. package/data/completion/nestjs.json +1454 -0
  38. package/data/completion/nextjs.json +1373 -0
  39. package/data/completion/react.json +1319 -0
  40. package/data/completion/redis-cli.json +1 -1
  41. package/data/completion/shadcn.json +1202 -0
  42. package/data/completion/shell.json +2446 -510
  43. package/data/completion/tailwindcss.json +284 -0
  44. package/data/completion/typescript.json +27 -0
  45. package/data/declaration/angular.json +46 -0
  46. package/data/declaration/css.json +59 -0
  47. package/data/declaration/nestjs.json +47 -0
  48. package/data/declaration/nextjs.json +274 -0
  49. package/data/declaration/react.json +199 -0
  50. package/data/declaration/shadcn.json +211 -0
  51. package/data/declaration/shell.json +343 -24
  52. package/data/declaration/tailwindcss.json +137 -0
  53. package/data/definition/angular.json +670 -0
  54. package/data/definition/css.json +115 -0
  55. package/data/definition/nestjs.json +684 -0
  56. package/data/definition/nextjs.json +439 -0
  57. package/data/definition/react.json +397 -0
  58. package/data/definition/redis-cli.json +1 -1
  59. package/data/definition/shadcn.json +99 -0
  60. package/data/definition/shell.json +820 -0
  61. package/data/definition/tailwindcss.json +115 -0
  62. package/data/documentHighlight/angular.json +414 -0
  63. package/data/documentHighlight/css.json +125 -0
  64. package/data/documentHighlight/nestjs.json +115 -0
  65. package/data/documentHighlight/nextjs.json +212 -0
  66. package/data/documentHighlight/react.json +119 -0
  67. package/data/documentHighlight/shadcn.json +168 -0
  68. package/data/documentHighlight/shell.json +664 -334
  69. package/data/documentHighlight/tailwindcss.json +160 -0
  70. package/data/documentRangeFormatting/angular.json +45 -0
  71. package/data/documentRangeFormatting/css.json +101 -0
  72. package/data/documentRangeFormatting/nestjs.json +17 -0
  73. package/data/documentRangeFormatting/nextjs.json +17 -0
  74. package/data/documentRangeFormatting/react.json +78 -0
  75. package/data/documentRangeFormatting/shadcn.json +45 -0
  76. package/data/documentRangeFormatting/shell.json +120 -53
  77. package/data/documentRangeFormatting/tailwindcss.json +55 -0
  78. package/data/documentSymbol/angular.json +180 -0
  79. package/data/documentSymbol/css.json +96 -0
  80. package/data/documentSymbol/nestjs.json +152 -0
  81. package/data/documentSymbol/nextjs.json +159 -0
  82. package/data/documentSymbol/react.json +145 -0
  83. package/data/documentSymbol/shadcn.json +131 -0
  84. package/data/documentSymbol/shell.json +166 -26
  85. package/data/documentSymbol/tailwindcss.json +110 -0
  86. package/data/foldingRange/angular.json +99 -0
  87. package/data/foldingRange/css.json +66 -0
  88. package/data/foldingRange/nestjs.json +26 -0
  89. package/data/foldingRange/nextjs.json +26 -0
  90. package/data/foldingRange/react.json +120 -0
  91. package/data/foldingRange/shadcn.json +93 -0
  92. package/data/foldingRange/shell.json +106 -46
  93. package/data/foldingRange/tailwindcss.json +60 -0
  94. package/data/formatting/angular.json +21 -0
  95. package/data/formatting/css.json +73 -0
  96. package/data/formatting/nestjs.json +23 -0
  97. package/data/formatting/nextjs.json +23 -0
  98. package/data/formatting/react.json +71 -0
  99. package/data/formatting/shadcn.json +61 -0
  100. package/data/formatting/shell.json +103 -19
  101. package/data/formatting/tailwindcss.json +48 -0
  102. package/data/hover/angular.json +455 -0
  103. package/data/hover/css.json +300 -0
  104. package/data/hover/nestjs.json +296 -0
  105. package/data/hover/nextjs.json +305 -0
  106. package/data/hover/react.json +173 -0
  107. package/data/hover/redis-cli.json +1 -1
  108. package/data/hover/shadcn.json +450 -0
  109. package/data/hover/shell.json +684 -75
  110. package/data/hover/tailwindcss.json +968 -0
  111. package/data/implementation/angular.json +22 -0
  112. package/data/implementation/css.json +65 -0
  113. package/data/implementation/nestjs.json +24 -0
  114. package/data/implementation/nextjs.json +137 -0
  115. package/data/implementation/react.json +125 -0
  116. package/data/implementation/shadcn.json +89 -0
  117. package/data/implementation/shell.json +59 -3
  118. package/data/implementation/tailwindcss.json +59 -0
  119. package/data/inlayHints/angular.json +24 -0
  120. package/data/inlayHints/css.json +87 -0
  121. package/data/inlayHints/nestjs.json +24 -0
  122. package/data/inlayHints/nextjs.json +143 -0
  123. package/data/inlayHints/react.json +177 -0
  124. package/data/inlayHints/shadcn.json +109 -0
  125. package/data/inlayHints/shell.json +223 -35
  126. package/data/inlayHints/tailwindcss.json +111 -0
  127. package/data/inlineCompletions/angular.json +135 -0
  128. package/data/inlineCompletions/css.json +125 -0
  129. package/data/inlineCompletions/javascript.json +12 -0
  130. package/data/inlineCompletions/nestjs.json +25 -0
  131. package/data/inlineCompletions/nextjs.json +179 -0
  132. package/data/inlineCompletions/react.json +203 -0
  133. package/data/inlineCompletions/shadcn.json +115 -0
  134. package/data/inlineCompletions/shell.json +185 -35
  135. package/data/inlineCompletions/tailwindcss.json +411 -0
  136. package/data/inlineCompletions/typescript.json +12 -0
  137. package/data/linkedEditingRange/angular.json +23 -0
  138. package/data/linkedEditingRange/css.json +40 -0
  139. package/data/linkedEditingRange/nestjs.json +10 -0
  140. package/data/linkedEditingRange/nextjs.json +11 -0
  141. package/data/linkedEditingRange/react.json +75 -0
  142. package/data/linkedEditingRange/shadcn.json +23 -0
  143. package/data/linkedEditingRange/shell.json +25 -25
  144. package/data/linkedEditingRange/tailwindcss.json +30 -0
  145. package/data/links/angular.json +95 -0
  146. package/data/links/css.json +55 -0
  147. package/data/links/nestjs.json +130 -0
  148. package/data/links/nextjs.json +91 -0
  149. package/data/links/react.json +75 -0
  150. package/data/links/shadcn.json +98 -0
  151. package/data/links/shell.json +56 -0
  152. package/data/links/tailwindcss.json +65 -0
  153. package/data/manifest.json +399 -150
  154. package/data/onTypeFormatting/angular.json +14 -0
  155. package/data/onTypeFormatting/css.json +82 -0
  156. package/data/onTypeFormatting/nestjs.json +16 -0
  157. package/data/onTypeFormatting/nextjs.json +17 -0
  158. package/data/onTypeFormatting/react.json +127 -0
  159. package/data/onTypeFormatting/shadcn.json +54 -0
  160. package/data/onTypeFormatting/shell.json +72 -68
  161. package/data/onTypeFormatting/tailwindcss.json +63 -0
  162. package/data/rangeSemanticTokens/angular.json +140 -0
  163. package/data/rangeSemanticTokens/css.json +125 -0
  164. package/data/rangeSemanticTokens/nestjs.json +27 -0
  165. package/data/rangeSemanticTokens/nextjs.json +28 -0
  166. package/data/rangeSemanticTokens/react.json +216 -0
  167. package/data/rangeSemanticTokens/shadcn.json +140 -0
  168. package/data/rangeSemanticTokens/shell.json +247 -69
  169. package/data/rangeSemanticTokens/tailwindcss.json +186 -0
  170. package/data/references/angular.json +26 -0
  171. package/data/references/css.json +65 -0
  172. package/data/references/nestjs.json +24 -0
  173. package/data/references/nextjs.json +178 -0
  174. package/data/references/react.json +192 -0
  175. package/data/references/shadcn.json +101 -0
  176. package/data/references/shell.json +323 -92
  177. package/data/references/tailwindcss.json +125 -0
  178. package/data/rename/angular.json +131 -0
  179. package/data/rename/css.json +91 -0
  180. package/data/rename/nestjs.json +32 -0
  181. package/data/rename/nextjs.json +31 -0
  182. package/data/rename/react.json +88 -0
  183. package/data/rename/shadcn.json +79 -0
  184. package/data/rename/shell.json +101 -31
  185. package/data/rename/tailwindcss.json +58 -0
  186. package/data/selectionRange/angular.json +95 -0
  187. package/data/selectionRange/css.json +55 -0
  188. package/data/selectionRange/nestjs.json +21 -0
  189. package/data/selectionRange/nextjs.json +22 -0
  190. package/data/selectionRange/react.json +87 -0
  191. package/data/selectionRange/shadcn.json +89 -0
  192. package/data/selectionRange/shell.json +65 -35
  193. package/data/selectionRange/tailwindcss.json +35 -0
  194. package/data/semanticTokens/angular.json +198 -0
  195. package/data/semanticTokens/css.json +107 -0
  196. package/data/semanticTokens/nestjs.json +35 -0
  197. package/data/semanticTokens/nextjs.json +38 -0
  198. package/data/semanticTokens/react.json +215 -0
  199. package/data/semanticTokens/shadcn.json +180 -0
  200. package/data/semanticTokens/shell.json +238 -65
  201. package/data/semanticTokens/tailwindcss.json +161 -0
  202. package/data/signatureHelp/angular.json +182 -0
  203. package/data/signatureHelp/css.json +137 -0
  204. package/data/signatureHelp/nestjs.json +128 -0
  205. package/data/signatureHelp/nextjs.json +127 -0
  206. package/data/signatureHelp/react.json +281 -0
  207. package/data/signatureHelp/shadcn.json +237 -0
  208. package/data/signatureHelp/shell.json +797 -104
  209. package/data/signatureHelp/tailwindcss.json +64 -0
  210. package/data/typeDefinition/angular.json +362 -0
  211. package/data/typeDefinition/css.json +53 -0
  212. package/data/typeDefinition/nestjs.json +334 -0
  213. package/data/typeDefinition/nextjs.json +285 -0
  214. package/data/typeDefinition/react.json +236 -0
  215. package/data/typeDefinition/shadcn.json +292 -0
  216. package/data/typeDefinition/shell.json +104 -40
  217. package/data/typeDefinition/tailwindcss.json +47 -0
  218. package/package.json +1 -1
  219. package/data/codeActions/bash.json +0 -169
  220. package/data/codeActions/zsh.json +0 -49
  221. package/data/codeLens/bash.json +0 -75
  222. package/data/codeLens/zsh.json +0 -19
  223. package/data/color/bash.json +0 -100
  224. package/data/color/zsh.json +0 -80
  225. package/data/commands/bash.json +0 -102
  226. package/data/commands/zsh.json +0 -166
  227. package/data/completion/bash.json +0 -1184
  228. package/data/completion/zsh.json +0 -973
  229. package/data/declaration/bash.json +0 -301
  230. package/data/declaration/zsh.json +0 -205
  231. package/data/definition/bash.json +0 -565
  232. package/data/definition/zsh.json +0 -350
  233. package/data/documentHighlight/bash.json +0 -393
  234. package/data/documentHighlight/zsh.json +0 -266
  235. package/data/documentRangeFormatting/bash.json +0 -41
  236. package/data/documentRangeFormatting/zsh.json +0 -59
  237. package/data/documentSymbol/bash.json +0 -124
  238. package/data/documentSymbol/zsh.json +0 -26
  239. package/data/foldingRange/bash.json +0 -76
  240. package/data/foldingRange/zsh.json +0 -46
  241. package/data/formatting/bash.json +0 -88
  242. package/data/formatting/zsh.json +0 -28
  243. package/data/hover/bash.json +0 -579
  244. package/data/hover/zsh.json +0 -96
  245. package/data/implementation/bash.json +0 -44
  246. package/data/implementation/zsh.json +0 -41
  247. package/data/inlayHints/bash.json +0 -207
  248. package/data/inlayHints/zsh.json +0 -43
  249. package/data/inlineCompletions/bash.json +0 -155
  250. package/data/inlineCompletions/zsh.json +0 -17
  251. package/data/linkedEditingRange/bash.json +0 -25
  252. package/data/linkedEditingRange/zsh.json +0 -25
  253. package/data/links/bash.json +0 -56
  254. package/data/links/zsh.json +0 -15
  255. package/data/onTypeFormatting/bash.json +0 -68
  256. package/data/onTypeFormatting/zsh.json +0 -68
  257. package/data/rangeSemanticTokens/bash.json +0 -90
  258. package/data/rangeSemanticTokens/zsh.json +0 -76
  259. package/data/references/bash.json +0 -221
  260. package/data/references/zsh.json +0 -166
  261. package/data/rename/bash.json +0 -37
  262. package/data/rename/zsh.json +0 -31
  263. package/data/selectionRange/bash.json +0 -35
  264. package/data/selectionRange/zsh.json +0 -35
  265. package/data/semanticTokens/bash.json +0 -71
  266. package/data/semanticTokens/zsh.json +0 -71
  267. package/data/signatureHelp/bash.json +0 -111
  268. package/data/signatureHelp/zsh.json +0 -118
  269. package/data/typeDefinition/bash.json +0 -95
  270. package/data/typeDefinition/zsh.json +0 -40
@@ -0,0 +1,87 @@
1
+ {
2
+ "language": "css",
3
+ "inlayHintPatterns": [
4
+ {
5
+ "pattern": "([.#]?[a-zA-Z_][a-zA-Z0-9_-]*(?:\\s*[>+~]\\s*[.#]?[a-zA-Z_][a-zA-Z0-9_-]*)*)\\s*\\{",
6
+ "kind": "type",
7
+ "label": "specificity: (${id}, ${class}, ${type})",
8
+ "position": "after",
9
+ "description": "Displays the computed specificity of a CSS selector as an (ID, Class, Type) tuple. Helps understand cascade priority."
10
+ },
11
+ {
12
+ "pattern": "#([0-9a-fA-F]{3,8})\\b",
13
+ "kind": "type",
14
+ "label": "■ ${color}",
15
+ "position": "after",
16
+ "description": "Shows a color swatch preview inline after hex color values for visual identification."
17
+ },
18
+ {
19
+ "pattern": ":\\s*(-?\\d+(\\.\\d+)?)px\\b",
20
+ "kind": "type",
21
+ "label": "${rem}rem",
22
+ "position": "after",
23
+ "description": "Displays the rem equivalent of pixel values (assumes 16px base). Example: 24px → 1.5rem."
24
+ },
25
+ {
26
+ "pattern": ":\\s*(-?\\d+(\\.\\d+)?)rem\\b",
27
+ "kind": "type",
28
+ "label": "${px}px",
29
+ "position": "after",
30
+ "description": "Displays the pixel equivalent of rem values (assumes 16px base). Example: 1.5rem → 24px."
31
+ },
32
+ {
33
+ "pattern": "margin:\\s*([^;]+);",
34
+ "kind": "type",
35
+ "label": "↑${top} →${right} ↓${bottom} ←${left}",
36
+ "position": "after",
37
+ "description": "Expands margin shorthand to show computed values for each side (top, right, bottom, left)."
38
+ },
39
+ {
40
+ "pattern": "padding:\\s*([^;]+);",
41
+ "kind": "type",
42
+ "label": "↑${top} →${right} ↓${bottom} ←${left}",
43
+ "position": "after",
44
+ "description": "Expands padding shorthand to show computed values for each side (top, right, bottom, left)."
45
+ },
46
+ {
47
+ "pattern": "z-index:\\s*(-?\\d+)",
48
+ "kind": "type",
49
+ "label": "stacking layer: ${level}",
50
+ "position": "after",
51
+ "description": "Indicates the relative stacking layer of the z-index value within the current stacking context."
52
+ },
53
+ {
54
+ "pattern": "transition:\\s*([^;]+);",
55
+ "kind": "type",
56
+ "label": "⏱ ${totalDuration}",
57
+ "position": "after",
58
+ "description": "Shows the total transition duration including delay for quick reference."
59
+ },
60
+ {
61
+ "pattern": "animation:\\s*([^;]+);",
62
+ "kind": "type",
63
+ "label": "⏱ ${duration} × ${iterations}",
64
+ "position": "after",
65
+ "description": "Shows animation duration and iteration count for quick reference."
66
+ },
67
+ {
68
+ "pattern": "grid-template-columns:\\s*repeat\\((\\d+|auto-fill|auto-fit),\\s*([^)]+)\\)",
69
+ "kind": "type",
70
+ "label": "${count} columns",
71
+ "position": "after",
72
+ "description": "Shows the number of grid columns generated by repeat() for easier visualization."
73
+ },
74
+ {
75
+ "pattern": "font-size:\\s*clamp\\(([^,]+),\\s*([^,]+),\\s*([^)]+)\\)",
76
+ "kind": "type",
77
+ "label": "min: ${1}, preferred: ${2}, max: ${3}",
78
+ "position": "after",
79
+ "description": "Breaks down clamp() function parameters for fluid font-size declarations."
80
+ }
81
+ ],
82
+ "typeInferenceRules": {
83
+ "specificity": "Computed as (count of #id selectors, count of .class/:pseudo-class/[attribute] selectors, count of element/::pseudo-element selectors)",
84
+ "pxToRem": "Divide pixel value by 16 (default browser font-size)",
85
+ "shorthandExpansion": "1 value = all sides; 2 values = vertical|horizontal; 3 values = top|horizontal|bottom; 4 values = top|right|bottom|left"
86
+ }
87
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "language": "nestjs",
3
+ "inlayHintPatterns": [
4
+ { "pattern": "constructor\\((?:private|protected|public)\\s+(?:readonly\\s+)?(\\w+):\\s*(\\w+)", "kind": 1, "label": ": {type}", "position": "after_capture_1", "paddingLeft": true, "description": "Show injected service types" },
5
+ { "pattern": "@(Body|Param|Query|Headers)\\((?:['\"]([^'\"]+)['\"])?\\)\\s+(\\w+)", "kind": 2, "label": "{param_name}:", "position": "before_capture_3", "paddingRight": true, "description": "Show decorator parameter source" },
6
+ { "pattern": "(\\w+)\\s*=\\s*(?:await\\s+)?this\\.(\\w+Service)\\.(\\w+)\\(", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Infer service method return type" },
7
+ { "pattern": "(?:const|let)\\s+(\\w+)\\s*=\\s*(?:await\\s+)?this\\.configService\\.get(?:<[^>]+>)?\\(['\"]([^'\"]+)['\"]\\)", "kind": 1, "label": ": {config_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Config value type hint" },
8
+ { "pattern": "@HttpCode\\((\\d+)\\)", "kind": 2, "label": "HTTP {status}", "position": "after_capture_1", "paddingLeft": true, "description": "HTTP status code meaning" },
9
+ { "pattern": "@(Get|Post|Put|Patch|Delete)\\(['\"]([^'\"]*)['\"]\\)", "kind": 2, "label": "{method} {path}", "position": "after_capture_0", "paddingLeft": true, "description": "Full route path hint" },
10
+ { "pattern": "\\bnew\\s+(\\w+Exception)\\(", "kind": 1, "label": "extends HttpException", "position": "after_capture_1", "paddingLeft": true, "description": "Exception class hierarchy" },
11
+ { "pattern": "module\\.get<(\\w+)>\\((\\w+)\\)", "kind": 1, "label": ": {type}", "position": "after_capture_0", "paddingLeft": true, "description": "Testing module.get return type" },
12
+ { "pattern": "(\\w+)\\s*=\\s*(.+)", "kind": 1, "label": ": {inferred_type}", "position": "after_capture_1", "paddingLeft": true, "description": "Variable type inference" }
13
+ ],
14
+ "typeInferenceRules": {
15
+ "string_literal": { "pattern": "['\"].*['\"]", "type": "string" },
16
+ "number_literal": { "pattern": "\\d+(\\.\\d+)?", "type": "number" },
17
+ "boolean_literal": { "pattern": "\\b(true|false)\\b", "type": "boolean" },
18
+ "array_literal": { "pattern": "\\[.*\\]", "type": "array" },
19
+ "object_literal": { "pattern": "\\{.*\\}", "type": "object" },
20
+ "null_literal": { "pattern": "\\b(null|undefined)\\b", "type": "null" },
21
+ "new_instance": { "pattern": "new\\s+(\\w+)\\(", "type": "{capture_1}" },
22
+ "await_expression": { "pattern": "await\\s+", "type": "Promise<unknown>" }
23
+ }
24
+ }
@@ -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
+ }