@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
@@ -1,35 +1,185 @@
1
- {
2
- "language": "shell",
3
- "inlineCompletions": [
4
- {
5
- "triggerPattern": "^\\\\s*#!\\\\s*$",
6
- "insertText": "#!/bin/sh\nset -e\n\n${1:# script body}",
7
- "description": "Shell script shebang",
8
- "completeBracketPairs": true
9
- },
10
- {
11
- "triggerPattern": "^\\\\s*if\\\\s*$",
12
- "insertText": "if [ ${1:condition} ]; then\n\t${2:# commands}\nelse\n\t${3:# commands}\nfi",
13
- "description": "If conditional",
14
- "completeBracketPairs": true
15
- },
16
- {
17
- "triggerPattern": "^\\\\s*for\\\\s*$",
18
- "insertText": "for ${1:item} in ${2:list}; do\n\t${3:# commands}\ndone",
19
- "description": "For loop",
20
- "completeBracketPairs": true
21
- },
22
- {
23
- "triggerPattern": "^\\\\s*function\\\\s*$",
24
- "insertText": "${1:function_name}() {\n\t${2:# body}\n}",
25
- "description": "Function definition",
26
- "completeBracketPairs": true
27
- },
28
- {
29
- "triggerPattern": "^\\\\s*case\\\\s*$",
30
- "insertText": "case ${1:\"\\$variable\"} in\n\t${2:pattern1})\n\t\t${3:# commands}\n\t\t;;\n\t${4:pattern2})\n\t\t${5:# commands}\n\t\t;;\n\t*)\n\t\t${6:# default}\n\t\t;;\nesac",
31
- "description": "Case statement",
32
- "completeBracketPairs": true
33
- }
34
- ]
35
- }
1
+ {
2
+ "language": "shell",
3
+ "inlineCompletions": [
4
+ {
5
+ "triggerPattern": "^\\\\s*#!\\\\s*$",
6
+ "insertText": "#!/bin/sh\nset -e\n\n${1:# script body}",
7
+ "description": "Shell script shebang",
8
+ "completeBracketPairs": true
9
+ },
10
+ {
11
+ "triggerPattern": "^\\\\s*if\\\\s*$",
12
+ "insertText": "if [ ${1:condition} ]; then\n\t${2:# commands}\nelse\n\t${3:# commands}\nfi",
13
+ "description": "If conditional",
14
+ "completeBracketPairs": true
15
+ },
16
+ {
17
+ "triggerPattern": "^\\\\s*for\\\\s*$",
18
+ "insertText": "for ${1:item} in ${2:list}; do\n\t${3:# commands}\ndone",
19
+ "description": "For loop",
20
+ "completeBracketPairs": true
21
+ },
22
+ {
23
+ "triggerPattern": "^\\\\s*function\\\\s*$",
24
+ "insertText": "${1:function_name}() {\n\t${2:# body}\n}",
25
+ "description": "Function definition",
26
+ "completeBracketPairs": true
27
+ },
28
+ {
29
+ "triggerPattern": "^\\\\s*case\\\\s*$",
30
+ "insertText": "case ${1:\"\\$variable\"} in\n\t${2:pattern1})\n\t\t${3:# commands}\n\t\t;;\n\t${4:pattern2})\n\t\t${5:# commands}\n\t\t;;\n\t*)\n\t\t${6:# default}\n\t\t;;\nesac",
31
+ "description": "Case statement",
32
+ "completeBracketPairs": true
33
+ },
34
+ {
35
+ "triggerPattern": "^\\s*if\\s*$",
36
+ "insertText": "if [[ ${1:condition} ]]; then\n\t${2:command}\nfi",
37
+ "description": "If statement",
38
+ "completeBracketPairs": true
39
+ },
40
+ {
41
+ "triggerPattern": "^\\s*if\\s*\\[\\[.*\\]\\];\\s*then\\s*$",
42
+ "insertText": "\n\t${1:command}\nelse\n\t${2:command}\nfi",
43
+ "description": "If-else body",
44
+ "completeBracketPairs": true
45
+ },
46
+ {
47
+ "triggerPattern": "^\\s*elif\\s*$",
48
+ "insertText": "elif [[ ${1:condition} ]]; then\n\t${2:command}",
49
+ "description": "Elif clause",
50
+ "completeBracketPairs": true
51
+ },
52
+ {
53
+ "triggerPattern": "^\\s*for\\s*$",
54
+ "insertText": "for ${1:item} in ${2:list}; do\n\t${3:command}\ndone",
55
+ "description": "For-in loop",
56
+ "completeBracketPairs": true
57
+ },
58
+ {
59
+ "triggerPattern": "^\\s*for\\s*\\(\\(\\s*$",
60
+ "insertText": "for (( ${1:i}=0; ${1:i}<${2:n}; ${1:i}++ )); do\n\t${3:command}\ndone",
61
+ "description": "C-style for loop",
62
+ "completeBracketPairs": true
63
+ },
64
+ {
65
+ "triggerPattern": "^\\s*while\\s*$",
66
+ "insertText": "while [[ ${1:condition} ]]; do\n\t${2:command}\ndone",
67
+ "description": "While loop",
68
+ "completeBracketPairs": true
69
+ },
70
+ {
71
+ "triggerPattern": "^\\s*while\\s+IFS=\\s*$",
72
+ "insertText": "while IFS= read -r ${1:line}; do\n\t${2:echo \"$line\"}\ndone < \"${3:file}\"",
73
+ "description": "Read file line by line",
74
+ "completeBracketPairs": true
75
+ },
76
+ {
77
+ "triggerPattern": "^\\s*until\\s*$",
78
+ "insertText": "until [[ ${1:condition} ]]; do\n\t${2:command}\ndone",
79
+ "description": "Until loop",
80
+ "completeBracketPairs": true
81
+ },
82
+ {
83
+ "triggerPattern": "^\\s*case\\s*$",
84
+ "insertText": "case ${1:\"$variable\"} in\n\t${2:pattern1})\n\t\t${3:command}\n\t\t;;\n\t${4:pattern2})\n\t\t${5:command}\n\t\t;;\n\t*)\n\t\t${6:echo \"Unknown option\"}\n\t\t;;\nesac",
85
+ "description": "Case statement",
86
+ "completeBracketPairs": true
87
+ },
88
+ {
89
+ "triggerPattern": "^\\s*select\\s*$",
90
+ "insertText": "select ${1:opt} in ${2:option1 option2 option3}; do\n\tcase \"$${1:opt}\" in\n\t\t${3:option1}) ${4:command} ;;\n\t\t*) echo \"Invalid\" ;;\n\tesac\ndone",
91
+ "description": "Select menu",
92
+ "completeBracketPairs": true
93
+ },
94
+ {
95
+ "triggerPattern": "^\\s*function\\s+\\w+\\s*$",
96
+ "insertText": "() {\n\tlocal ${1:arg}=\"$1\"\n\t${2:command}\n}",
97
+ "description": "Function body",
98
+ "completeBracketPairs": true
99
+ },
100
+ {
101
+ "triggerPattern": "^\\s*\\w+\\(\\)\\s*$",
102
+ "insertText": "{\n\tlocal ${1:arg}=\"$1\"\n\t${2:command}\n}",
103
+ "description": "Function body (parens form)",
104
+ "completeBracketPairs": true
105
+ },
106
+ {
107
+ "triggerPattern": "^#!/usr/bin/env\\s+bash\\s*$",
108
+ "insertText": "\nset -euo pipefail\nIFS=$'\\\\n\\\\t'\n\n${1:main() \\{\n\t$2\n\\}}\n\nmain \"$@\"",
109
+ "description": "Strict mode script template",
110
+ "completeBracketPairs": true
111
+ },
112
+ {
113
+ "triggerPattern": "^\\s*trap\\s*$",
114
+ "insertText": "trap '${1:cleanup}' EXIT ERR INT TERM",
115
+ "description": "Trap cleanup handler",
116
+ "completeBracketPairs": false
117
+ },
118
+ {
119
+ "triggerPattern": "^\\s*getopts\\s*$",
120
+ "insertText": "while getopts \":${1:hv}\" opt; do\n\tcase \"$opt\" in\n\t\th) usage; exit 0 ;;\n\t\tv) echo \"$VERSION\"; exit 0 ;;\n\t\t\\?) echo \"Invalid option: -$OPTARG\" >&2; exit 1 ;;\n\t\t:) echo \"Option -$OPTARG requires an argument\" >&2; exit 1 ;;\n\tesac\ndone\nshift $((OPTIND - 1))",
121
+ "description": "Getopts argument parsing loop",
122
+ "completeBracketPairs": true
123
+ },
124
+ {
125
+ "triggerPattern": "^\\s*read\\s+-r\\s*$",
126
+ "insertText": "read -r -p \"${1:Enter value}: \" ${2:variable}",
127
+ "description": "Read with prompt",
128
+ "completeBracketPairs": false
129
+ },
130
+ {
131
+ "triggerPattern": "^\\s*(?:local\\s+)?tmpdir=\\s*$",
132
+ "insertText": "$(mktemp -d)\ntrap 'rm -rf \"$tmpdir\"' EXIT",
133
+ "description": "Create temp directory with cleanup",
134
+ "completeBracketPairs": false
135
+ },
136
+ {
137
+ "triggerPattern": "^\\s*log\\s*$",
138
+ "insertText": "log() {\n\tlocal level=\"$1\"; shift\n\tprintf '[%s] [%s] %s\\n' \"$(date '+%Y-%m-%d %H:%M:%S')\" \"$level\" \"$*\" >&2\n}",
139
+ "description": "Logging function template",
140
+ "completeBracketPairs": true
141
+ },
142
+ {
143
+ "triggerPattern": "^\\s*die\\s*$",
144
+ "insertText": "die() { echo \"ERROR: $*\" >&2; exit 1; }",
145
+ "description": "Die/error function",
146
+ "completeBracketPairs": true
147
+ },
148
+ {
149
+ "triggerPattern": "^\\s*usage\\s*$",
150
+ "insertText": "usage() {\n\tcat <<-EOF\n\tUsage: $(basename \"$0\") [OPTIONS] ${1:ARGS}\n\n\tOptions:\n\t -h, --help Show this help message\n\t -v, --version Show version\n\t ${2:-f, --file Input file}\n\tEOF\n}",
151
+ "description": "Usage/help function template",
152
+ "completeBracketPairs": true
153
+ },
154
+ {
155
+ "triggerPattern": "^\\s*(?:declare\\s+-[aA]|\\w+=\\()\\s*$",
156
+ "insertText": "(\n\t${1:\"element1\"}\n\t${2:\"element2\"}\n\t${3:\"element3\"}\n)",
157
+ "description": "Array initialization",
158
+ "completeBracketPairs": true
159
+ },
160
+ {
161
+ "triggerPattern": "^\\s*(?:if|\\[\\[).*command\\s+-v\\s*$",
162
+ "insertText": "command -v ${1:cmd} &>/dev/null; then\n\t${2:echo \"$1 is available\"}\nelse\n\techo \"Error: ${1:cmd} is required but not installed.\" >&2\n\texit 1\nfi",
163
+ "description": "Check if command exists",
164
+ "completeBracketPairs": true
165
+ },
166
+ {
167
+ "triggerPattern": "^\\s*find\\s*$",
168
+ "insertText": "find ${1:.} -type ${2:f} -name \"${3:*.txt}\" ${4:-exec echo {} \\;}",
169
+ "description": "Find command template",
170
+ "completeBracketPairs": false
171
+ },
172
+ {
173
+ "triggerPattern": "^\\s*(?:cat|echo).*<<\\s*$",
174
+ "insertText": "EOF\n${1:content}\nEOF",
175
+ "description": "Here-document body",
176
+ "completeBracketPairs": false
177
+ },
178
+ {
179
+ "triggerPattern": "^\\s*mapfile\\s*$",
180
+ "insertText": "mapfile -t ${1:lines} < \"${2:file}\"",
181
+ "description": "Read file into array",
182
+ "completeBracketPairs": false
183
+ }
184
+ ]
185
+ }
@@ -0,0 +1,411 @@
1
+ {
2
+ "language": "tailwindcss",
3
+ "inlineCompletions": [
4
+ {
5
+ "triggerPattern": "flex\\s+",
6
+ "insertText": "flex items-center justify-center",
7
+ "description": "Common flex centering pattern — centers items both vertically and horizontally.",
8
+ "completeBracketPairs": true
9
+ },
10
+ {
11
+ "triggerPattern": "flex\\s+items-center\\s+",
12
+ "insertText": "flex items-center justify-between",
13
+ "description": "Flex row with vertically centered items spaced between — common navbar/header layout.",
14
+ "completeBracketPairs": true
15
+ },
16
+ {
17
+ "triggerPattern": "grid\\s+",
18
+ "insertText": "grid grid-cols-3 gap-4",
19
+ "description": "3-column responsive grid with gap — common card/gallery layout pattern.",
20
+ "completeBracketPairs": true
21
+ },
22
+ {
23
+ "triggerPattern": "grid\\s+grid-cols-",
24
+ "insertText": "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",
25
+ "description": "Responsive grid: 1 column on mobile, 2 on tablet, 3 on desktop.",
26
+ "completeBracketPairs": true
27
+ },
28
+ {
29
+ "triggerPattern": "rounded-",
30
+ "insertText": "rounded-lg shadow-md p-6 bg-white",
31
+ "description": "Card component pattern — rounded corners, shadow, padding, white background.",
32
+ "completeBracketPairs": true
33
+ },
34
+ {
35
+ "triggerPattern": "px-\\d+\\s+py-",
36
+ "insertText": "px-4 py-2 bg-blue-500 text-white rounded-lg hover:bg-blue-600 transition",
37
+ "description": "Button component pattern — padded, colored, rounded with hover transition.",
38
+ "completeBracketPairs": true
39
+ },
40
+ {
41
+ "triggerPattern": "dark:",
42
+ "insertText": "dark:bg-gray-800 dark:text-white",
43
+ "description": "Common dark mode background and text color pairing.",
44
+ "completeBracketPairs": true
45
+ },
46
+ {
47
+ "triggerPattern": "hover:",
48
+ "insertText": "hover:bg-blue-600 hover:shadow-lg transition duration-200",
49
+ "description": "Interactive hover state with background change, shadow, and smooth transition.",
50
+ "completeBracketPairs": true
51
+ },
52
+ {
53
+ "triggerPattern": "focus:",
54
+ "insertText": "focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2",
55
+ "description": "Accessible focus ring pattern — removes outline, adds visible ring indicator.",
56
+ "completeBracketPairs": true
57
+ },
58
+ {
59
+ "triggerPattern": "min-h-screen",
60
+ "insertText": "min-h-screen flex flex-col",
61
+ "description": "Full-height page layout pattern with flex column for sticky footer.",
62
+ "completeBracketPairs": true
63
+ },
64
+ {
65
+ "triggerPattern": "@tailwind\\s+",
66
+ "insertText": "@tailwind base;\n@tailwind components;\n@tailwind utilities;",
67
+ "description": "Standard Tailwind CSS entry point — includes all three directive layers.",
68
+ "completeBracketPairs": true
69
+ },
70
+ {
71
+ "triggerPattern": "@layer\\s+components\\s*\\{",
72
+ "insertText": "@layer components {\n .btn {\n @apply px-4 py-2 rounded-lg font-medium transition;\n }\n}",
73
+ "description": "Component layer with reusable button class using @apply.",
74
+ "completeBracketPairs": true
75
+ },
76
+ {
77
+ "triggerPattern": "container\\s+",
78
+ "insertText": "container mx-auto px-4",
79
+ "description": "Centered container with horizontal padding — common page wrapper pattern.",
80
+ "completeBracketPairs": true
81
+ },
82
+ {
83
+ "triggerPattern": "bg-gradient",
84
+ "insertText": "bg-gradient-to-r from-blue-500 to-purple-600",
85
+ "description": "Horizontal gradient background from blue to purple.",
86
+ "completeBracketPairs": true
87
+ },
88
+ {
89
+ "triggerPattern": "sr-only",
90
+ "insertText": "sr-only",
91
+ "description": "Screen-reader only — visually hides element while keeping it accessible.",
92
+ "completeBracketPairs": true
93
+ },
94
+
95
+ {
96
+ "triggerPattern": "flex\\s+flex-col\\s+",
97
+ "insertText": "flex flex-col min-h-screen",
98
+ "description": "Full-height flex column layout — common for page shell with sticky header/footer.",
99
+ "completeBracketPairs": true
100
+ },
101
+ {
102
+ "triggerPattern": "flex\\s+items-center\\s+gap-",
103
+ "insertText": "flex items-center gap-4 p-4",
104
+ "description": "Flex row with centered items, gap, and padding — toolbar/action bar pattern.",
105
+ "completeBracketPairs": true
106
+ },
107
+ {
108
+ "triggerPattern": "grid\\s+grid-cols-1\\s+",
109
+ "insertText": "grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6",
110
+ "description": "Responsive grid: 1→2→3→4 columns across breakpoints — product/card grid.",
111
+ "completeBracketPairs": true
112
+ },
113
+ {
114
+ "triggerPattern": "grid\\s+grid-cols-12",
115
+ "insertText": "grid grid-cols-12 gap-4",
116
+ "description": "12-column layout grid with gap — traditional columnar layout.",
117
+ "completeBracketPairs": true
118
+ },
119
+ {
120
+ "triggerPattern": "absolute\\s+",
121
+ "insertText": "absolute inset-0",
122
+ "description": "Absolute position filling parent — overlay pattern.",
123
+ "completeBracketPairs": true
124
+ },
125
+ {
126
+ "triggerPattern": "absolute\\s+inset-0\\s+",
127
+ "insertText": "absolute inset-0 flex items-center justify-center bg-black/50",
128
+ "description": "Centered overlay with semi-transparent background — modal backdrop.",
129
+ "completeBracketPairs": true
130
+ },
131
+ {
132
+ "triggerPattern": "fixed\\s+",
133
+ "insertText": "fixed inset-x-0 top-0 z-50",
134
+ "description": "Fixed top bar — sticky header/navbar pattern.",
135
+ "completeBracketPairs": true
136
+ },
137
+ {
138
+ "triggerPattern": "fixed\\s+bottom-",
139
+ "insertText": "fixed bottom-4 right-4 z-50",
140
+ "description": "Fixed bottom-right FAB — floating action button pattern.",
141
+ "completeBracketPairs": true
142
+ },
143
+ {
144
+ "triggerPattern": "sticky\\s+",
145
+ "insertText": "sticky top-0 z-40 bg-white/80 backdrop-blur-sm",
146
+ "description": "Sticky header with glass morphism — frosted glass navbar.",
147
+ "completeBracketPairs": true
148
+ },
149
+ {
150
+ "triggerPattern": "relative\\s+overflow-",
151
+ "insertText": "relative overflow-hidden rounded-lg",
152
+ "description": "Relative container with hidden overflow and rounding — image card pattern.",
153
+ "completeBracketPairs": true
154
+ },
155
+
156
+ {
157
+ "triggerPattern": "max-w-\\w+\\s+mx-",
158
+ "insertText": "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8",
159
+ "description": "Responsive centered container — standard page width wrapper with responsive padding.",
160
+ "completeBracketPairs": true
161
+ },
162
+ {
163
+ "triggerPattern": "w-full\\s+max-",
164
+ "insertText": "w-full max-w-md mx-auto",
165
+ "description": "Centered card/form wrapper — medium-width centered content.",
166
+ "completeBracketPairs": true
167
+ },
168
+ {
169
+ "triggerPattern": "aspect-",
170
+ "insertText": "aspect-video rounded-lg overflow-hidden",
171
+ "description": "Video container — 16:9 ratio with rounded corners and clipped overflow.",
172
+ "completeBracketPairs": true
173
+ },
174
+
175
+ {
176
+ "triggerPattern": "px-\\d+\\s+py-\\d+\\s+",
177
+ "insertText": "px-6 py-3 bg-blue-600 text-white font-medium rounded-lg shadow-sm hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 transition-colors",
178
+ "description": "Fully accessible button — padded, colored, rounded with hover, focus ring, and transition.",
179
+ "completeBracketPairs": true
180
+ },
181
+ {
182
+ "triggerPattern": "border\\s+rounded-",
183
+ "insertText": "border rounded-lg p-4 bg-white shadow-sm hover:shadow-md transition-shadow",
184
+ "description": "Interactive card — bordered, rounded, padded with hover shadow lift.",
185
+ "completeBracketPairs": true
186
+ },
187
+ {
188
+ "triggerPattern": "bg-white\\s+rounded-",
189
+ "insertText": "bg-white rounded-xl shadow-lg p-6 space-y-4",
190
+ "description": "Card component — white background, large rounded corners, shadow, spaced content.",
191
+ "completeBracketPairs": true
192
+ },
193
+ {
194
+ "triggerPattern": "bg-white\\s+dark:",
195
+ "insertText": "bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100",
196
+ "description": "Dark mode adaptive — light/dark background and text pair.",
197
+ "completeBracketPairs": true
198
+ },
199
+
200
+ {
201
+ "triggerPattern": "hover:scale-",
202
+ "insertText": "hover:scale-105 transition-transform duration-200",
203
+ "description": "Hover zoom effect — subtle scale up with smooth transition.",
204
+ "completeBracketPairs": true
205
+ },
206
+ {
207
+ "triggerPattern": "hover:bg-\\w+\\s+",
208
+ "insertText": "hover:bg-blue-700 active:bg-blue-800 focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 transition-colors",
209
+ "description": "Full interactive state stack — hover, active, and focus-visible states with transition.",
210
+ "completeBracketPairs": true
211
+ },
212
+ {
213
+ "triggerPattern": "group\\s+",
214
+ "insertText": "group relative cursor-pointer",
215
+ "description": "Group parent setup — enables group-hover/group-focus on children.",
216
+ "completeBracketPairs": true
217
+ },
218
+ {
219
+ "triggerPattern": "group-hover:",
220
+ "insertText": "group-hover:opacity-100 group-hover:translate-y-0 transition-all duration-200 opacity-0 translate-y-2",
221
+ "description": "Group hover reveal — element slides up and fades in when parent is hovered.",
222
+ "completeBracketPairs": true
223
+ },
224
+ {
225
+ "triggerPattern": "peer\\s+",
226
+ "insertText": "peer",
227
+ "description": "Peer sibling marker — enables peer-* variants on subsequent siblings.",
228
+ "completeBracketPairs": true
229
+ },
230
+ {
231
+ "triggerPattern": "peer-checked:",
232
+ "insertText": "peer-checked:bg-blue-600 peer-checked:text-white peer-checked:border-blue-600 transition-colors",
233
+ "description": "Peer checked state — styled label/toggle that reacts to checkbox state.",
234
+ "completeBracketPairs": true
235
+ },
236
+ {
237
+ "triggerPattern": "peer-focus:",
238
+ "insertText": "peer-focus:text-blue-600 peer-focus:text-sm peer-focus:-translate-y-5 transition-all",
239
+ "description": "Floating label pattern — label moves up and changes color when input is focused.",
240
+ "completeBracketPairs": true
241
+ },
242
+ {
243
+ "triggerPattern": "disabled:",
244
+ "insertText": "disabled:opacity-50 disabled:cursor-not-allowed disabled:pointer-events-none",
245
+ "description": "Disabled state — reduces opacity and disables interaction.",
246
+ "completeBracketPairs": true
247
+ },
248
+ {
249
+ "triggerPattern": "aria-",
250
+ "insertText": "aria-expanded:rotate-180 transition-transform duration-200",
251
+ "description": "ARIA expanded rotation — icon rotates when element is expanded (accordion/dropdown).",
252
+ "completeBracketPairs": true
253
+ },
254
+
255
+ {
256
+ "triggerPattern": "sm:flex\\s+",
257
+ "insertText": "sm:flex sm:items-center sm:justify-between",
258
+ "description": "Responsive flex row from sm — stack on mobile, row with space-between on tablet+.",
259
+ "completeBracketPairs": true
260
+ },
261
+ {
262
+ "triggerPattern": "md:grid-cols-",
263
+ "insertText": "md:grid-cols-2 lg:grid-cols-3",
264
+ "description": "Responsive grid columns — 2 columns on tablet, 3 on desktop.",
265
+ "completeBracketPairs": true
266
+ },
267
+ {
268
+ "triggerPattern": "lg:flex-row\\s+",
269
+ "insertText": "lg:flex-row flex-col",
270
+ "description": "Responsive direction — column on mobile/tablet, row on desktop.",
271
+ "completeBracketPairs": true
272
+ },
273
+ {
274
+ "triggerPattern": "hidden\\s+sm:",
275
+ "insertText": "hidden sm:block",
276
+ "description": "Mobile-hidden — hidden on mobile, visible from sm breakpoint.",
277
+ "completeBracketPairs": true
278
+ },
279
+ {
280
+ "triggerPattern": "sm:hidden",
281
+ "insertText": "sm:hidden",
282
+ "description": "Desktop-hidden — visible on mobile only.",
283
+ "completeBracketPairs": true
284
+ },
285
+ {
286
+ "triggerPattern": "text-sm\\s+sm:",
287
+ "insertText": "text-sm sm:text-base md:text-lg lg:text-xl",
288
+ "description": "Responsive typography — text scales up across breakpoints.",
289
+ "completeBracketPairs": true
290
+ },
291
+ {
292
+ "triggerPattern": "p-4\\s+sm:",
293
+ "insertText": "p-4 sm:p-6 md:p-8 lg:p-12",
294
+ "description": "Responsive padding — padding increases across breakpoints.",
295
+ "completeBracketPairs": true
296
+ },
297
+ {
298
+ "triggerPattern": "gap-4\\s+sm:",
299
+ "insertText": "gap-4 sm:gap-6 md:gap-8",
300
+ "description": "Responsive gap — gap size increases across breakpoints.",
301
+ "completeBracketPairs": true
302
+ },
303
+
304
+ {
305
+ "triggerPattern": "@layer\\s+base\\s*\\{",
306
+ "insertText": "@layer base {\n html {\n @apply scroll-smooth antialiased;\n }\n body {\n @apply bg-white text-gray-900 dark:bg-gray-950 dark:text-gray-100;\n }\n}",
307
+ "description": "Base layer with global defaults — smooth scroll, antialiased text, dark mode body.",
308
+ "completeBracketPairs": true
309
+ },
310
+ {
311
+ "triggerPattern": "@layer\\s+utilities\\s*\\{",
312
+ "insertText": "@layer utilities {\n .text-balance {\n text-wrap: balance;\n }\n .no-scrollbar::-webkit-scrollbar {\n display: none;\n }\n .no-scrollbar {\n -ms-overflow-style: none;\n scrollbar-width: none;\n }\n}",
313
+ "description": "Utility layer with custom utilities — balanced text wrap and hidden scrollbar.",
314
+ "completeBracketPairs": true
315
+ },
316
+
317
+ {
318
+ "triggerPattern": "before:content-",
319
+ "insertText": "before:content-[''] before:absolute before:inset-0",
320
+ "description": "Before pseudo-element overlay — empty content, absolutely positioned to fill parent.",
321
+ "completeBracketPairs": true
322
+ },
323
+ {
324
+ "triggerPattern": "after:content-",
325
+ "insertText": "after:content-[''] after:absolute after:bottom-0 after:left-0 after:h-0.5 after:w-full after:bg-blue-500 after:scale-x-0 hover:after:scale-x-100 after:transition-transform",
326
+ "description": "Animated underline — expanding line on hover using ::after pseudo-element.",
327
+ "completeBracketPairs": true
328
+ },
329
+
330
+ {
331
+ "triggerPattern": "motion-safe:",
332
+ "insertText": "motion-safe:animate-bounce motion-reduce:animate-none",
333
+ "description": "Accessible animation — bounces for users who allow motion, static for those who don't.",
334
+ "completeBracketPairs": true
335
+ },
336
+ {
337
+ "triggerPattern": "print:",
338
+ "insertText": "print:hidden",
339
+ "description": "Print-hidden — hides element when printing.",
340
+ "completeBracketPairs": true
341
+ },
342
+ {
343
+ "triggerPattern": "placeholder:text-",
344
+ "insertText": "placeholder:text-gray-400 placeholder:italic",
345
+ "description": "Styled placeholder — gray italic placeholder text.",
346
+ "completeBracketPairs": true
347
+ },
348
+ {
349
+ "triggerPattern": "file:",
350
+ "insertText": "file:mr-4 file:py-2 file:px-4 file:rounded-lg file:border-0 file:bg-blue-50 file:text-blue-700 file:font-medium hover:file:bg-blue-100 file:cursor-pointer",
351
+ "description": "Styled file input button — rounded, colored file selector button with hover.",
352
+ "completeBracketPairs": true
353
+ },
354
+ {
355
+ "triggerPattern": "selection:",
356
+ "insertText": "selection:bg-blue-200 selection:text-blue-900",
357
+ "description": "Custom text selection — blue highlight with dark text.",
358
+ "completeBracketPairs": true
359
+ },
360
+ {
361
+ "triggerPattern": "marker:",
362
+ "insertText": "marker:text-blue-500",
363
+ "description": "Custom list markers — blue bullet points.",
364
+ "completeBracketPairs": true
365
+ },
366
+
367
+ {
368
+ "triggerPattern": "snap-x\\s+",
369
+ "insertText": "snap-x snap-mandatory overflow-x-auto flex gap-4 scroll-smooth",
370
+ "description": "Horizontal scroll snap carousel — flex row with mandatory snap points.",
371
+ "completeBracketPairs": true
372
+ },
373
+ {
374
+ "triggerPattern": "snap-start\\s+",
375
+ "insertText": "snap-start shrink-0 w-80",
376
+ "description": "Carousel item — snaps to start, doesn't shrink, fixed width.",
377
+ "completeBracketPairs": true
378
+ },
379
+ {
380
+ "triggerPattern": "backdrop-blur-",
381
+ "insertText": "backdrop-blur-md bg-white/30 dark:bg-gray-900/30",
382
+ "description": "Glass morphism — frosted glass effect with backdrop blur and semi-transparent background.",
383
+ "completeBracketPairs": true
384
+ },
385
+
386
+ {
387
+ "triggerPattern": "odd:",
388
+ "insertText": "odd:bg-gray-50 even:bg-white",
389
+ "description": "Striped rows — alternating row backgrounds for tables/lists.",
390
+ "completeBracketPairs": true
391
+ },
392
+ {
393
+ "triggerPattern": "first:",
394
+ "insertText": "first:mt-0 last:mb-0",
395
+ "description": "Boundary margin reset — removes top margin from first and bottom margin from last child.",
396
+ "completeBracketPairs": true
397
+ },
398
+ {
399
+ "triggerPattern": "data-\\[",
400
+ "insertText": "data-[state=open]:animate-in data-[state=closed]:animate-out",
401
+ "description": "Data state animations — animate in/out based on open/closed data attribute.",
402
+ "completeBracketPairs": true
403
+ },
404
+ {
405
+ "triggerPattern": "has-\\[",
406
+ "insertText": "has-[:checked]:bg-blue-50 has-[:checked]:ring-2 has-[:checked]:ring-blue-500",
407
+ "description": "Parent styling from child state — parent highlights when child checkbox is checked.",
408
+ "completeBracketPairs": true
409
+ }
410
+ ]
411
+ }
@@ -12,6 +12,18 @@
12
12
  "insertText": "interface ${1:Name} {\n\t${2:property}: ${3:type};\n}",
13
13
  "description": "Interface",
14
14
  "completeBracketPairs": true
15
+ },
16
+ {
17
+ "triggerPattern": "^\\\\s*rfc\\\\s*$",
18
+ "insertText": "type ${1:Props} = { ${2:label}: ${3:string} };\n\nexport function ${4:Component}({ ${2:label} }: ${1:Props}) {\n\treturn (\n\t\t<div className=\"${5}\">${6}</div>\n\t);\n}",
19
+ "description": "React function component (TSX)",
20
+ "completeBracketPairs": true
21
+ },
22
+ {
23
+ "triggerPattern": "^\\\\s*useState\\\\s*$",
24
+ "insertText": "const [${1:state}, set${2:State}] = useState<${3:Type}>(${4:initial});",
25
+ "description": "Typed useState hook",
26
+ "completeBracketPairs": true
15
27
  }
16
28
  ]
17
29
  }
@@ -0,0 +1,23 @@
1
+ {
2
+ "language": "angular",
3
+ "linkedEditingPatterns": [
4
+ {
5
+ "name": "htmlTagPair",
6
+ "openPattern": "<([a-zA-Z][a-zA-Z0-9-]*)(?:\\s[^>]*)?>",
7
+ "closePattern": "</([a-zA-Z][a-zA-Z0-9-]*)\\s*>",
8
+ "description": "Link opening and closing HTML element tags in Angular component templates for synchronized renaming"
9
+ },
10
+ {
11
+ "name": "templateLiteralTagPair",
12
+ "openPattern": "<([a-zA-Z][a-zA-Z0-9-]*)(?:\\s[^>]*)?>",
13
+ "closePattern": "</([a-zA-Z][a-zA-Z0-9-]*)\\s*>",
14
+ "description": "Link opening and closing tags within inline template literals defined in @Component metadata"
15
+ },
16
+ {
17
+ "name": "componentSelectorReference",
18
+ "openPattern": "selector\\s*:\\s*['\"]([a-zA-Z][a-zA-Z0-9-]*)['\"]",
19
+ "closePattern": "</?([a-zA-Z][a-zA-Z0-9-]*)",
20
+ "description": "Link Angular component selector string in @Component metadata with its usage as an HTML tag in parent templates"
21
+ }
22
+ ]
23
+ }