@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,23 @@
1
+ {
2
+ "language": "nestjs",
3
+ "formatting": {
4
+ "defaultTabSize": 2,
5
+ "defaultInsertSpaces": true,
6
+ "rules": [
7
+ { "description": "Remove trailing whitespace", "pattern": "\\s+$", "replacement": "" },
8
+ { "description": "Space after keywords", "pattern": "\\b(if|for|while|switch|catch|return)\\(", "replacement": "$1 (" },
9
+ { "description": "Space before opening brace", "pattern": "\\)\\{", "replacement": ") {" },
10
+ { "description": "Consistent arrow spacing", "pattern": "=>\\{", "replacement": "=> {" },
11
+ { "description": "Space after decorator parenthesis", "pattern": "@(\\w+)\\( ", "replacement": "@$1(" },
12
+ { "description": "Remove multiple blank lines", "pattern": "\\n{3,}", "replacement": "\\n\\n" },
13
+ { "description": "Semicolon enforcement", "pattern": "(?<![;{}*/])\\s*$", "replacement": ";" },
14
+ { "description": "Trailing comma in multiline objects", "pattern": "(\\S)\\n(\\s*[}\\]])", "replacement": "$1,\\n$2" },
15
+ { "description": "Normalize line endings", "pattern": "\\r\\n", "replacement": "\\n" },
16
+ { "description": "Consistent inject spacing", "pattern": "private\\s+readonly\\s+", "replacement": "private readonly " }
17
+ ],
18
+ "indentation": {
19
+ "increasePattern": "(?:\\{[^}]*$|\\([^)]*$|=>\\s*$|@Module\\(\\{|@Controller\\(|class\\s+\\w+[^{]*\\{)",
20
+ "decreasePattern": "^\\s*[}\\)\\]]|^\\s*\\)\\s*;?\\s*$"
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "language": "nextjs",
3
+ "formatting": {
4
+ "defaultTabSize": 2,
5
+ "defaultInsertSpaces": true,
6
+ "rules": [
7
+ { "description": "Remove trailing whitespace", "pattern": "\\s+$", "replacement": "" },
8
+ { "description": "Space after keywords", "pattern": "\\b(if|for|while|switch|catch|return)\\(", "replacement": "$1 (" },
9
+ { "description": "Space before opening brace", "pattern": "\\)\\{", "replacement": ") {" },
10
+ { "description": "Consistent arrow function spacing", "pattern": "=>\\{", "replacement": "=> {" },
11
+ { "description": "Space after commas in JSX props", "pattern": "(\\w)=\\{", "replacement": "$1={" },
12
+ { "description": "Remove multiple blank lines", "pattern": "\\n{3,}", "replacement": "\\n\\n" },
13
+ { "description": "Normalize imports", "pattern": "import\\s+\\{\\s*(\\S+)\\s*\\}", "replacement": "import { $1 }" },
14
+ { "description": "Semicolon enforcement", "pattern": "(?<!;|\\{|\\}|\\*\\/)\\s*$", "replacement": ";" },
15
+ { "description": "JSX self-closing space", "pattern": "(\\w)\\/>", "replacement": "$1 />" },
16
+ { "description": "Normalize line endings", "pattern": "\\r\\n", "replacement": "\\n" }
17
+ ],
18
+ "indentation": {
19
+ "increasePattern": "(?:\\{[^}]*$|\\([^)]*$|<[^/][^>]*[^/]>\\s*$|=>\\s*$)",
20
+ "decreasePattern": "^\\s*[}\\)\\]]|^\\s*<\\/|^\\s*\\/>|^\\s*\\)\\s*;?\\s*$"
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "language": "react",
3
+ "formatting": {
4
+ "defaultTabSize": 2,
5
+ "defaultInsertSpaces": true,
6
+ "rules": [
7
+ {
8
+ "description": "Self-closing JSX tags for void elements",
9
+ "pattern": "<(\\w+)([^>]*)><\\/\\1>",
10
+ "replacement": "<$1$2 />"
11
+ },
12
+ {
13
+ "description": "Consistent JSX expression spacing",
14
+ "pattern": "\\{\\s+([^}]+?)\\s+\\}",
15
+ "replacement": "{$1}"
16
+ },
17
+ {
18
+ "description": "Arrow function component spacing",
19
+ "pattern": "=\\s*\\(([^)]*?)\\)\\s*=>\\s*\\{",
20
+ "replacement": "= ($1) => {"
21
+ },
22
+ {
23
+ "description": "JSX prop alignment on multiple lines",
24
+ "pattern": "<(\\w+)\\s+([\\s\\S]*?)\\s*\\/?>",
25
+ "replacement": "<$1\n $2\n/>"
26
+ },
27
+ {
28
+ "description": "Import statement sorting - React imports first",
29
+ "pattern": "import\\s+(?!React)(.*)\\s+from\\s+['\"]react['\"]",
30
+ "replacement": "import React, { $1 } from 'react'"
31
+ },
32
+ {
33
+ "description": "Normalize JSX boolean props",
34
+ "pattern": "(\\w+)=\\{true\\}",
35
+ "replacement": "$1"
36
+ },
37
+ {
38
+ "description": "Consistent hook dependency array formatting",
39
+ "pattern": "\\},\\s*\\[([^\\]]+)\\]\\s*\\)",
40
+ "replacement": "}, [$1])"
41
+ },
42
+ {
43
+ "description": "Normalize event handler naming",
44
+ "pattern": "on(\\w+)=\\{\\(\\)\\s*=>\\s*([^}]+)\\}",
45
+ "replacement": "on$1={() => $2}"
46
+ },
47
+ {
48
+ "description": "Trim trailing whitespace in JSX content",
49
+ "pattern": "(>)\\s+(\\S)",
50
+ "replacement": "$1$2"
51
+ },
52
+ {
53
+ "description": "Consistent return statement with JSX parentheses",
54
+ "pattern": "return\\s+(<[A-Z])",
55
+ "replacement": "return (\n $1"
56
+ }
57
+ ],
58
+ "indentation": {
59
+ "component": 0,
60
+ "jsx": 2,
61
+ "jsxAttributes": 2,
62
+ "jsxChildren": 2,
63
+ "hookBody": 2,
64
+ "switchCase": 2,
65
+ "objectLiteral": 2,
66
+ "arrayLiteral": 2,
67
+ "functionBody": 2,
68
+ "conditionalExpression": 2
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "language": "shadcn",
3
+ "formattingRules": [
4
+ {
5
+ "context": "JSX props",
6
+ "rule": "Align props vertically when more than two props are present, one per line",
7
+ "description": "Multi-prop JSX elements should have each prop on its own line, aligned with the first prop"
8
+ },
9
+ {
10
+ "context": "className strings",
11
+ "rule": "Use template literals or cn() for dynamic class names; keep static strings as plain string literals",
12
+ "description": "Static class strings stay as double-quoted literals; dynamic classes use cn() calls"
13
+ },
14
+ {
15
+ "context": "cn() arguments",
16
+ "rule": "Place each argument on its own line when there are more than two arguments",
17
+ "description": "Multi-argument cn() calls should have each argument on a separate line for readability"
18
+ },
19
+ {
20
+ "context": "cva() variant objects",
21
+ "rule": "Format variant keys and values with each variant axis as a separate block, values indented within",
22
+ "description": "The variants object in cva() should clearly delineate each axis (variant, size) as indented blocks"
23
+ },
24
+ {
25
+ "context": "Import grouping",
26
+ "rule": "Group imports in order: React/Next → third-party (Radix, zod, react-hook-form) → @/components/ui/* → @/lib/utils → relative imports",
27
+ "description": "Imports should follow a consistent grouping order with blank lines between groups"
28
+ },
29
+ {
30
+ "context": "Component prop ordering",
31
+ "rule": "Order props: ref → key → variant/size → className → event handlers → spread props → children",
32
+ "description": "Maintain consistent prop ordering across shadcn components"
33
+ },
34
+ {
35
+ "context": "Variant definition alignment",
36
+ "rule": "Align variant class strings to the same indentation level within a cva() definition",
37
+ "description": "Variant value strings should be visually aligned for quick scanning"
38
+ },
39
+ {
40
+ "context": "Form field nesting",
41
+ "rule": "Nest FormItem > FormLabel > FormControl > FormDescription > FormMessage with consistent 2-space indentation",
42
+ "description": "Form field sub-components follow a strict nesting hierarchy"
43
+ },
44
+ {
45
+ "context": "Tailwind class ordering",
46
+ "rule": "Order Tailwind classes: layout (flex, grid) → sizing (w, h) → spacing (p, m) → typography → colors → borders → effects → states (hover, focus)",
47
+ "description": "Follow a consistent Tailwind utility class ordering convention"
48
+ },
49
+ {
50
+ "context": "Multi-line JSX",
51
+ "rule": "Indent JSX children by 2 spaces; closing tags align with opening tags",
52
+ "description": "JSX blocks use 2-space indentation with closing tags at the same level as their opening counterpart"
53
+ }
54
+ ],
55
+ "indentation": {
56
+ "useTabs": false,
57
+ "tabSize": 2,
58
+ "trimTrailingWhitespace": true,
59
+ "insertFinalNewline": true
60
+ }
61
+ }
@@ -1,19 +1,103 @@
1
- {
2
- "language": "shell",
3
- "formatting": {
4
- "defaultTabSize": 4,
5
- "defaultInsertSpaces": true,
6
- "rules": [
7
- {
8
- "description": "Remove trailing whitespace",
9
- "pattern": "\\s+$",
10
- "replacement": ""
11
- },
12
- {
13
- "description": "Normalize line endings",
14
- "pattern": "\\r\\n",
15
- "replacement": "\\n"
16
- }
17
- ]
18
- }
19
- }
1
+ {
2
+ "language": "shell",
3
+ "formatting": {
4
+ "defaultTabSize": 4,
5
+ "defaultInsertSpaces": true,
6
+ "rules": [
7
+ {
8
+ "description": "Remove trailing whitespace",
9
+ "pattern": "\\s+$",
10
+ "replacement": ""
11
+ },
12
+ {
13
+ "description": "Normalize line endings",
14
+ "pattern": "\\r\\n",
15
+ "replacement": "\\n"
16
+ },
17
+ {
18
+ "description": "Ensure single space after keywords",
19
+ "pattern": "\\b(if|elif|while|until|for|case|select)\\(",
20
+ "replacement": "$1 ("
21
+ },
22
+ {
23
+ "description": "Ensure space inside [[ ]] brackets",
24
+ "pattern": "\\[\\[(\\S)",
25
+ "replacement": "[[ $1"
26
+ },
27
+ {
28
+ "description": "Ensure space inside [[ ]] closing",
29
+ "pattern": "(\\S)\\]\\]",
30
+ "replacement": "$1 ]]"
31
+ },
32
+ {
33
+ "description": "Space after # in comments (except shebang)",
34
+ "pattern": "^(\\s*)#([^!\\s#])",
35
+ "replacement": "$1# $2"
36
+ },
37
+ {
38
+ "description": "Remove spaces around = in variable assignment",
39
+ "pattern": "(\\w+)\\s*=\\s*([^=])",
40
+ "replacement": "$1=$2"
41
+ },
42
+ {
43
+ "description": "Single blank line between functions",
44
+ "pattern": "\\}\\n{3,}(?=\\w+\\s*\\(\\)|function\\s)",
45
+ "replacement": "}\n\n"
46
+ },
47
+ {
48
+ "description": "Ensure space after ; in compound commands",
49
+ "pattern": ";(\\w)",
50
+ "replacement": "; $1"
51
+ },
52
+ {
53
+ "description": "Normalize then/do placement (same line)",
54
+ "pattern": "\\b(if|elif|while|until|for)\\b(.+)\\n\\s*\\b(then|do)\\b",
55
+ "replacement": "$1$2; $3"
56
+ },
57
+ {
58
+ "description": "Ensure newline before fi/done/esac",
59
+ "pattern": ";\\s*(fi|done|esac)\\b",
60
+ "replacement": "\n$1"
61
+ },
62
+ {
63
+ "description": "Normalize heredoc indentation for <<-",
64
+ "pattern": "<<-\\s*(\\w+)",
65
+ "replacement": "<<-\t$1"
66
+ },
67
+ {
68
+ "description": "No space before semicolons",
69
+ "pattern": "\\s+;",
70
+ "replacement": ";"
71
+ },
72
+ {
73
+ "description": "Ensure space around pipe operators",
74
+ "pattern": "(\\S)\\|(\\S)",
75
+ "replacement": "$1 | $2"
76
+ },
77
+ {
78
+ "description": "Ensure space around redirections",
79
+ "pattern": "(\\w)(>>?|<<?)(?=[^<>&])(\\S)",
80
+ "replacement": "$1 $2 $3"
81
+ },
82
+ {
83
+ "description": "Remove trailing whitespace",
84
+ "pattern": "\\\\s+$",
85
+ "replacement": ""
86
+ },
87
+ {
88
+ "description": "Ensure single space after keywords",
89
+ "pattern": "\\\\b(if|for|while|until|case|select)\\\\(",
90
+ "replacement": "$1 ("
91
+ },
92
+ {
93
+ "description": "Normalize line endings",
94
+ "pattern": "\\\\r\\\\n",
95
+ "replacement": "\\n"
96
+ }
97
+ ],
98
+ "indentation": {
99
+ "increasePattern": "(?:then|do|else|elif\\s.*then|\\{|\\()\\s*(?:#.*)?$|^\\s*(?:if|elif|while|until|for|select)\\b.*[^;]$",
100
+ "decreasePattern": "^\\s*(?:fi|done|else|elif|esac|\\}|\\))\\b"
101
+ }
102
+ }
103
+ }
@@ -0,0 +1,48 @@
1
+ {
2
+ "language": "tailwindcss",
3
+ "formatting": {
4
+ "defaultTabSize": 2,
5
+ "defaultInsertSpaces": true,
6
+ "rules": [
7
+ {
8
+ "description": "Sort utility classes in @apply rules following recommended order (layout, spacing, sizing, typography, backgrounds, borders, effects, transitions)",
9
+ "pattern": "@apply\\s+([\\w\\s:/-]+);",
10
+ "replacement": "@apply ${sorted_classes};"
11
+ },
12
+ {
13
+ "description": "Normalize spacing in @apply directives to single spaces between classes",
14
+ "pattern": "@apply\\s{2,}|@apply\\s+([\\w:-]+)\\s{2,}",
15
+ "replacement": "@apply ${1} "
16
+ },
17
+ {
18
+ "description": "Ensure @tailwind directives are ordered: base, components, utilities",
19
+ "pattern": "@tailwind\\s+(utilities|components|base)\\s*;",
20
+ "replacement": "@tailwind ${ordered_layer};"
21
+ },
22
+ {
23
+ "description": "Add blank line between @layer blocks for readability",
24
+ "pattern": "(\\})(\\s*)(@layer)",
25
+ "replacement": "${1}\n\n${3}"
26
+ },
27
+ {
28
+ "description": "Normalize @layer block formatting with consistent indentation",
29
+ "pattern": "@layer\\s+(\\w+)\\s*\\{\\s*",
30
+ "replacement": "@layer ${1} {\n "
31
+ },
32
+ {
33
+ "description": "Ensure semicolons after @apply and @tailwind directives",
34
+ "pattern": "(@apply\\s+[\\w\\s:/-]+)\\s*$",
35
+ "replacement": "${1};"
36
+ },
37
+ {
38
+ "description": "Format @config directive with consistent quoting",
39
+ "pattern": "@config\\s+\"([^\"]+)\"\\s*;",
40
+ "replacement": "@config '${1}';"
41
+ }
42
+ ],
43
+ "indentation": {
44
+ "increasePattern": "\\{\\s*$|@layer\\s+\\w+\\s*\\{",
45
+ "decreasePattern": "^\\s*\\}"
46
+ }
47
+ }
48
+ }