@enjoys/context-engine 1.4.1 → 1.4.2

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 (424) hide show
  1. package/data/codeLens/awk.json +1 -1
  2. package/data/codeLens/azcli.json +10 -10
  3. package/data/codeLens/c.json +1 -1
  4. package/data/codeLens/caddy.json +1 -1
  5. package/data/codeLens/crontab.json +1 -1
  6. package/data/codeLens/doctest.json +10 -10
  7. package/data/codeLens/hcl.json +1 -1
  8. package/data/codeLens/html.json +1 -1
  9. package/data/codeLens/lua.json +1 -1
  10. package/data/codeLens/nginx.json +1 -1
  11. package/data/codeLens/pla.json +10 -10
  12. package/data/codeLens/xml.json +1 -1
  13. package/data/commands/angular.json +670 -312
  14. package/data/commands/c.json +30 -30
  15. package/data/commands/cpp.json +30 -30
  16. package/data/commands/crontab.json +25 -30
  17. package/data/commands/cypher.json +26 -30
  18. package/data/commands/dockerfile.json +26 -2
  19. package/data/commands/doctest.json +23 -24
  20. package/data/commands/dotenv.json +24 -11
  21. package/data/commands/ecl.json +26 -30
  22. package/data/commands/flow9.json +24 -24
  23. package/data/commands/freemarker2.json +24 -18
  24. package/data/commands/graphql.json +25 -11
  25. package/data/commands/html.json +25 -11
  26. package/data/commands/ini.json +26 -12
  27. package/data/commands/javascript.json +29 -30
  28. package/data/commands/less.json +25 -29
  29. package/data/commands/lexon.json +23 -11
  30. package/data/commands/liquid.json +26 -11
  31. package/data/commands/m3.json +26 -12
  32. package/data/commands/manifest.json +35 -731
  33. package/data/commands/markdown.json +26 -12
  34. package/data/commands/mdx.json +23 -10
  35. package/data/commands/mips.json +26 -18
  36. package/data/commands/msdax.json +23 -11
  37. package/data/commands/nestjs.json +516 -273
  38. package/data/commands/nextjs.json +250 -123
  39. package/data/commands/objective-c.json +26 -24
  40. package/data/commands/pascal.json +27 -24
  41. package/data/commands/pascaligo.json +26 -24
  42. package/data/commands/perl.json +30 -30
  43. package/data/commands/pla.json +23 -11
  44. package/data/commands/postiats.json +26 -24
  45. package/data/commands/powerquery.json +23 -11
  46. package/data/commands/powershell.json +28 -30
  47. package/data/commands/protobuf.json +27 -30
  48. package/data/commands/qsharp.json +26 -30
  49. package/data/commands/razor.json +25 -29
  50. package/data/commands/react.json +244 -210
  51. package/data/commands/redshift.json +27 -18
  52. package/data/commands/restructuredtext.json +29 -30
  53. package/data/commands/sb.json +23 -11
  54. package/data/commands/scheme.json +25 -18
  55. package/data/commands/scss.json +26 -29
  56. package/data/commands/shadcn.json +564 -410
  57. package/data/commands/sol.json +27 -30
  58. package/data/commands/sparql.json +25 -11
  59. package/data/commands/sql.json +16 -2
  60. package/data/commands/ssh_config.json +31 -30
  61. package/data/commands/st.json +23 -11
  62. package/data/commands/systemverilog.json +26 -24
  63. package/data/commands/tailwindcss.json +60 -53
  64. package/data/commands/tcl.json +23 -18
  65. package/data/commands/toml.json +25 -11
  66. package/data/commands/twig.json +23 -10
  67. package/data/commands/vb.json +27 -24
  68. package/data/commands/wgsl.json +24 -11
  69. package/data/commands/yaml.json +29 -30
  70. package/data/completion/awk.json +906 -202
  71. package/data/completion/azcli.json +886 -237
  72. package/data/completion/bicep.json +862 -367
  73. package/data/completion/crontab.json +906 -202
  74. package/data/completion/dotenv.json +895 -169
  75. package/data/completion/graphql.json +895 -180
  76. package/data/completion/hcl.json +906 -191
  77. package/data/completion/ini.json +906 -136
  78. package/data/completion/json.json +895 -169
  79. package/data/completion/lexon.json +856 -295
  80. package/data/completion/makefile.json +906 -202
  81. package/data/completion/markdown.json +906 -224
  82. package/data/completion/mdx.json +895 -87
  83. package/data/completion/mips.json +872 -377
  84. package/data/completion/perl.json +961 -202
  85. package/data/completion/pla.json +895 -154
  86. package/data/completion/powershell.json +906 -224
  87. package/data/completion/protobuf.json +884 -180
  88. package/data/completion/ssh_config.json +906 -158
  89. package/data/completion/xml.json +906 -158
  90. package/data/definition/abap.json +127 -1
  91. package/data/definition/apex.json +97 -1
  92. package/data/definition/coffee.json +51 -1
  93. package/data/definition/dart.json +105 -1
  94. package/data/definition/elixir.json +115 -1
  95. package/data/definition/flow9.json +208 -1
  96. package/data/definition/freemarker2.json +283 -1
  97. package/data/definition/html.json +853 -558
  98. package/data/definition/java.json +1127 -183
  99. package/data/definition/kotlin.json +72 -1
  100. package/data/definition/r.json +692 -83
  101. package/data/definition/ruby.json +789 -669
  102. package/data/definition/rust.json +852 -206
  103. package/data/definition/sb.json +339 -1
  104. package/data/definition/st.json +367 -1
  105. package/data/documentRangeFormatting/nestjs.json +57 -17
  106. package/data/documentRangeFormatting/nextjs.json +57 -17
  107. package/data/documentRangeFormatting/react.json +82 -78
  108. package/data/documentSymbol/abap.json +54 -12
  109. package/data/documentSymbol/apex.json +40 -10
  110. package/data/documentSymbol/awk.json +15 -1
  111. package/data/documentSymbol/bicep.json +39 -39
  112. package/data/documentSymbol/c.json +1 -1
  113. package/data/documentSymbol/clojure.json +46 -46
  114. package/data/documentSymbol/css.json +96 -96
  115. package/data/documentSymbol/dart.json +109 -19
  116. package/data/documentSymbol/dockerfile.json +1 -1
  117. package/data/documentSymbol/elixir.json +39 -39
  118. package/data/documentSymbol/go.json +1 -1
  119. package/data/documentSymbol/graphql.json +1 -1
  120. package/data/documentSymbol/hcl.json +1 -1
  121. package/data/documentSymbol/html.json +29 -1
  122. package/data/documentSymbol/java.json +1 -1
  123. package/data/documentSymbol/javascript.json +1 -1
  124. package/data/documentSymbol/julia.json +46 -46
  125. package/data/documentSymbol/kotlin.json +74 -14
  126. package/data/documentSymbol/less.json +25 -25
  127. package/data/documentSymbol/lua.json +22 -1
  128. package/data/documentSymbol/makefile.json +15 -1
  129. package/data/documentSymbol/markdown.json +36 -1
  130. package/data/documentSymbol/mysql.json +32 -32
  131. package/data/documentSymbol/nginx.json +1 -1
  132. package/data/documentSymbol/pascal.json +46 -46
  133. package/data/documentSymbol/perl.json +1 -1
  134. package/data/documentSymbol/pgsql.json +39 -39
  135. package/data/documentSymbol/php.json +1 -1
  136. package/data/documentSymbol/powershell.json +1 -1
  137. package/data/documentSymbol/protobuf.json +1 -1
  138. package/data/documentSymbol/python.json +1 -1
  139. package/data/documentSymbol/r.json +67 -67
  140. package/data/documentSymbol/redshift.json +60 -18
  141. package/data/documentSymbol/ruby.json +1 -1
  142. package/data/documentSymbol/rust.json +1 -1
  143. package/data/documentSymbol/scala.json +116 -20
  144. package/data/documentSymbol/scheme.json +25 -25
  145. package/data/documentSymbol/scss.json +39 -39
  146. package/data/documentSymbol/shell.json +1 -1
  147. package/data/documentSymbol/sql.json +1 -1
  148. package/data/documentSymbol/swift.json +88 -16
  149. package/data/documentSymbol/typescript.json +1 -1
  150. package/data/documentSymbol/vb.json +53 -53
  151. package/data/documentSymbol/yaml.json +1 -1
  152. package/data/foldingRange/angular.json +100 -99
  153. package/data/foldingRange/nestjs.json +94 -26
  154. package/data/foldingRange/nextjs.json +94 -26
  155. package/data/foldingRange/react.json +118 -120
  156. package/data/foldingRange/shadcn.json +94 -93
  157. package/data/formatting/abap.json +19 -11
  158. package/data/formatting/angular.json +63 -21
  159. package/data/formatting/apex.json +19 -11
  160. package/data/formatting/awk.json +1 -1
  161. package/data/formatting/azcli.json +18 -18
  162. package/data/formatting/bicep.json +18 -18
  163. package/data/formatting/c.json +1 -1
  164. package/data/formatting/caddy.json +1 -1
  165. package/data/formatting/cameligo.json +18 -18
  166. package/data/formatting/clojure.json +18 -18
  167. package/data/formatting/coffee.json +18 -18
  168. package/data/formatting/cpp.json +1 -1
  169. package/data/formatting/crontab.json +1 -1
  170. package/data/formatting/csharp.json +1 -1
  171. package/data/formatting/css.json +73 -73
  172. package/data/formatting/cypher.json +18 -18
  173. package/data/formatting/dart.json +43 -15
  174. package/data/formatting/docker-compose.json +24 -24
  175. package/data/formatting/dockerfile.json +1 -1
  176. package/data/formatting/doctest.json +18 -18
  177. package/data/formatting/dotenv.json +1 -1
  178. package/data/formatting/ecl.json +18 -18
  179. package/data/formatting/elixir.json +43 -18
  180. package/data/formatting/flow9.json +18 -18
  181. package/data/formatting/freemarker2.json +18 -18
  182. package/data/formatting/go.json +1 -1
  183. package/data/formatting/graphql.json +1 -1
  184. package/data/formatting/hcl.json +26 -1
  185. package/data/formatting/html.json +26 -1
  186. package/data/formatting/ini.json +1 -1
  187. package/data/formatting/java.json +1 -1
  188. package/data/formatting/javascript.json +1 -1
  189. package/data/formatting/julia.json +18 -18
  190. package/data/formatting/kotlin.json +33 -13
  191. package/data/formatting/less.json +48 -18
  192. package/data/formatting/lexon.json +18 -18
  193. package/data/formatting/liquid.json +18 -18
  194. package/data/formatting/lua.json +1 -1
  195. package/data/formatting/m3.json +18 -18
  196. package/data/formatting/makefile.json +1 -1
  197. package/data/formatting/markdown.json +26 -1
  198. package/data/formatting/mdx.json +18 -18
  199. package/data/formatting/mips.json +18 -18
  200. package/data/formatting/msdax.json +18 -18
  201. package/data/formatting/mysql.json +43 -18
  202. package/data/formatting/nginx.json +1 -1
  203. package/data/formatting/objective-c.json +18 -18
  204. package/data/formatting/pascal.json +18 -18
  205. package/data/formatting/pascaligo.json +18 -18
  206. package/data/formatting/perl.json +1 -1
  207. package/data/formatting/pgsql.json +43 -18
  208. package/data/formatting/php.json +1 -1
  209. package/data/formatting/pla.json +18 -18
  210. package/data/formatting/postiats.json +18 -18
  211. package/data/formatting/powerquery.json +18 -18
  212. package/data/formatting/powershell.json +1 -1
  213. package/data/formatting/protobuf.json +1 -1
  214. package/data/formatting/python.json +1 -1
  215. package/data/formatting/qsharp.json +18 -18
  216. package/data/formatting/r.json +32 -32
  217. package/data/formatting/razor.json +18 -18
  218. package/data/formatting/redis-cli.json +1 -1
  219. package/data/formatting/redis.json +18 -18
  220. package/data/formatting/redshift.json +43 -18
  221. package/data/formatting/restructuredtext.json +18 -18
  222. package/data/formatting/ruby.json +1 -1
  223. package/data/formatting/rust.json +1 -1
  224. package/data/formatting/sb.json +18 -18
  225. package/data/formatting/scala.json +48 -16
  226. package/data/formatting/scheme.json +18 -18
  227. package/data/formatting/scss.json +48 -18
  228. package/data/formatting/shadcn.json +63 -61
  229. package/data/formatting/shell.json +1 -1
  230. package/data/formatting/sol.json +18 -18
  231. package/data/formatting/sparql.json +18 -18
  232. package/data/formatting/sql.json +1 -1
  233. package/data/formatting/ssh_config.json +1 -1
  234. package/data/formatting/st.json +18 -18
  235. package/data/formatting/swift.json +58 -18
  236. package/data/formatting/systemd.json +1 -1
  237. package/data/formatting/systemverilog.json +18 -18
  238. package/data/formatting/tcl.json +18 -18
  239. package/data/formatting/toml.json +1 -1
  240. package/data/formatting/twig.json +18 -18
  241. package/data/formatting/typescript.json +1 -1
  242. package/data/formatting/vb.json +18 -18
  243. package/data/formatting/wgsl.json +18 -18
  244. package/data/formatting/xml.json +26 -1
  245. package/data/formatting/yaml.json +1 -1
  246. package/data/hover/apex.json +281 -6
  247. package/data/hover/awk.json +251 -6
  248. package/data/hover/crontab.json +251 -6
  249. package/data/hover/dotenv.json +242 -4
  250. package/data/hover/graphql.json +251 -6
  251. package/data/hover/lexon.json +250 -5
  252. package/data/hover/markdown.json +226 -9
  253. package/data/hover/mdx.json +250 -5
  254. package/data/hover/perl.json +251 -6
  255. package/data/hover/pla.json +264 -5
  256. package/data/hover/powershell.json +252 -7
  257. package/data/hover/protobuf.json +251 -6
  258. package/data/hover/redis.json +355 -40
  259. package/data/hover/ssh_config.json +251 -6
  260. package/data/hover/xml.json +231 -7
  261. package/data/inlineCompletions/c.json +49 -1
  262. package/data/inlineCompletions/cpp.json +61 -1
  263. package/data/inlineCompletions/csharp.json +73 -1
  264. package/data/inlineCompletions/css.json +125 -125
  265. package/data/inlineCompletions/dart.json +136 -26
  266. package/data/inlineCompletions/elixir.json +34 -34
  267. package/data/inlineCompletions/go.json +67 -1
  268. package/data/inlineCompletions/html.json +1 -1
  269. package/data/inlineCompletions/java.json +67 -1
  270. package/data/inlineCompletions/javascript.json +97 -1
  271. package/data/inlineCompletions/kotlin.json +88 -18
  272. package/data/inlineCompletions/less.json +76 -28
  273. package/data/inlineCompletions/lua.json +37 -1
  274. package/data/inlineCompletions/mysql.json +34 -34
  275. package/data/inlineCompletions/pgsql.json +34 -34
  276. package/data/inlineCompletions/php.json +43 -1
  277. package/data/inlineCompletions/python.json +73 -1
  278. package/data/inlineCompletions/ruby.json +49 -1
  279. package/data/inlineCompletions/rust.json +61 -1
  280. package/data/inlineCompletions/scala.json +130 -25
  281. package/data/inlineCompletions/scss.json +34 -34
  282. package/data/inlineCompletions/shell.json +1 -1
  283. package/data/inlineCompletions/sql.json +43 -1
  284. package/data/inlineCompletions/swift.json +112 -22
  285. package/data/inlineCompletions/typescript.json +97 -1
  286. package/data/linkedEditingRange/azcli.json +6 -6
  287. package/data/linkedEditingRange/crontab.json +6 -6
  288. package/data/linkedEditingRange/docker-compose.json +6 -6
  289. package/data/linkedEditingRange/doctest.json +6 -6
  290. package/data/linkedEditingRange/dotenv.json +13 -6
  291. package/data/linkedEditingRange/ini.json +13 -6
  292. package/data/linkedEditingRange/json.json +13 -6
  293. package/data/linkedEditingRange/lexon.json +6 -6
  294. package/data/linkedEditingRange/mips.json +6 -6
  295. package/data/linkedEditingRange/msdax.json +6 -6
  296. package/data/linkedEditingRange/nestjs.json +18 -10
  297. package/data/linkedEditingRange/nextjs.json +24 -11
  298. package/data/linkedEditingRange/pla.json +6 -6
  299. package/data/linkedEditingRange/react.json +74 -75
  300. package/data/linkedEditingRange/redis-cli.json +6 -6
  301. package/data/linkedEditingRange/redis.json +6 -6
  302. package/data/linkedEditingRange/ssh_config.json +6 -6
  303. package/data/linkedEditingRange/systemd.json +6 -6
  304. package/data/linkedEditingRange/toml.json +13 -6
  305. package/data/linkedEditingRange/wgsl.json +6 -6
  306. package/data/linkedEditingRange/xml.json +13 -13
  307. package/data/linkedEditingRange/yaml.json +13 -6
  308. package/data/onTypeFormatting/angular.json +63 -14
  309. package/data/onTypeFormatting/nestjs.json +64 -16
  310. package/data/onTypeFormatting/nextjs.json +72 -17
  311. package/data/onTypeFormatting/react.json +148 -127
  312. package/data/onTypeFormatting/shadcn.json +63 -54
  313. package/data/rangeSemanticTokens/angular.json +196 -140
  314. package/data/rangeSemanticTokens/nestjs.json +195 -27
  315. package/data/rangeSemanticTokens/nextjs.json +199 -28
  316. package/data/rangeSemanticTokens/react.json +77 -216
  317. package/data/rangeSemanticTokens/shadcn.json +203 -140
  318. package/data/rename/angular.json +121 -131
  319. package/data/rename/nestjs.json +122 -32
  320. package/data/rename/nextjs.json +116 -31
  321. package/data/rename/react.json +133 -88
  322. package/data/rename/shadcn.json +73 -79
  323. package/data/selectionRange/abap.json +58 -34
  324. package/data/selectionRange/angular.json +126 -95
  325. package/data/selectionRange/apex.json +58 -34
  326. package/data/selectionRange/awk.json +56 -34
  327. package/data/selectionRange/azcli.json +43 -24
  328. package/data/selectionRange/bicep.json +56 -34
  329. package/data/selectionRange/c.json +62 -39
  330. package/data/selectionRange/caddy.json +53 -34
  331. package/data/selectionRange/cameligo.json +56 -34
  332. package/data/selectionRange/clojure.json +57 -34
  333. package/data/selectionRange/coffee.json +59 -34
  334. package/data/selectionRange/cpp.json +73 -44
  335. package/data/selectionRange/crontab.json +39 -29
  336. package/data/selectionRange/csharp.json +69 -39
  337. package/data/selectionRange/css.json +95 -55
  338. package/data/selectionRange/cypher.json +57 -34
  339. package/data/selectionRange/dart.json +65 -34
  340. package/data/selectionRange/docker-compose.json +54 -34
  341. package/data/selectionRange/dockerfile.json +56 -34
  342. package/data/selectionRange/doctest.json +47 -24
  343. package/data/selectionRange/dotenv.json +33 -24
  344. package/data/selectionRange/ecl.json +58 -34
  345. package/data/selectionRange/elixir.json +63 -34
  346. package/data/selectionRange/flow9.json +57 -34
  347. package/data/selectionRange/freemarker2.json +58 -34
  348. package/data/selectionRange/go.json +64 -39
  349. package/data/selectionRange/graphql.json +58 -34
  350. package/data/selectionRange/hcl.json +56 -34
  351. package/data/selectionRange/html.json +63 -34
  352. package/data/selectionRange/ini.json +38 -24
  353. package/data/selectionRange/java.json +68 -39
  354. package/data/selectionRange/javascript.json +65 -39
  355. package/data/selectionRange/julia.json +65 -39
  356. package/data/selectionRange/kotlin.json +68 -39
  357. package/data/selectionRange/less.json +58 -34
  358. package/data/selectionRange/lexon.json +38 -24
  359. package/data/selectionRange/liquid.json +58 -34
  360. package/data/selectionRange/lua.json +59 -34
  361. package/data/selectionRange/m3.json +57 -34
  362. package/data/selectionRange/makefile.json +53 -34
  363. package/data/selectionRange/markdown.json +57 -34
  364. package/data/selectionRange/mdx.json +63 -34
  365. package/data/selectionRange/mips.json +43 -29
  366. package/data/selectionRange/msdax.json +52 -34
  367. package/data/selectionRange/mysql.json +51 -34
  368. package/data/selectionRange/nestjs.json +35 -21
  369. package/data/selectionRange/nextjs.json +35 -22
  370. package/data/selectionRange/nginx.json +53 -34
  371. package/data/selectionRange/objective-c.json +64 -39
  372. package/data/selectionRange/pascal.json +53 -34
  373. package/data/selectionRange/pascaligo.json +57 -34
  374. package/data/selectionRange/perl.json +59 -34
  375. package/data/selectionRange/pgsql.json +50 -34
  376. package/data/selectionRange/php.json +65 -39
  377. package/data/selectionRange/pla.json +52 -29
  378. package/data/selectionRange/postiats.json +61 -34
  379. package/data/selectionRange/powerquery.json +56 -34
  380. package/data/selectionRange/powershell.json +65 -39
  381. package/data/selectionRange/protobuf.json +58 -34
  382. package/data/selectionRange/python.json +66 -39
  383. package/data/selectionRange/qsharp.json +62 -39
  384. package/data/selectionRange/r.json +57 -34
  385. package/data/selectionRange/razor.json +63 -34
  386. package/data/selectionRange/react.json +103 -87
  387. package/data/selectionRange/redis-cli.json +38 -24
  388. package/data/selectionRange/redis.json +38 -24
  389. package/data/selectionRange/redshift.json +49 -34
  390. package/data/selectionRange/restructuredtext.json +58 -34
  391. package/data/selectionRange/ruby.json +65 -39
  392. package/data/selectionRange/rust.json +73 -44
  393. package/data/selectionRange/sb.json +43 -29
  394. package/data/selectionRange/scala.json +65 -39
  395. package/data/selectionRange/scheme.json +52 -34
  396. package/data/selectionRange/scss.json +58 -34
  397. package/data/selectionRange/shadcn.json +120 -89
  398. package/data/selectionRange/shell.json +1 -1
  399. package/data/selectionRange/sol.json +63 -39
  400. package/data/selectionRange/sparql.json +58 -34
  401. package/data/selectionRange/sql.json +50 -34
  402. package/data/selectionRange/ssh_config.json +37 -29
  403. package/data/selectionRange/st.json +49 -29
  404. package/data/selectionRange/swift.json +73 -44
  405. package/data/selectionRange/systemd.json +47 -34
  406. package/data/selectionRange/systemverilog.json +62 -39
  407. package/data/selectionRange/tailwindcss.json +49 -34
  408. package/data/selectionRange/tcl.json +57 -34
  409. package/data/selectionRange/toml.json +49 -29
  410. package/data/selectionRange/twig.json +58 -34
  411. package/data/selectionRange/typescript.json +75 -44
  412. package/data/selectionRange/vb.json +59 -39
  413. package/data/selectionRange/wgsl.json +61 -34
  414. package/data/selectionRange/xml.json +51 -34
  415. package/data/selectionRange/yaml.json +54 -34
  416. package/data/semanticTokens/angular.json +269 -198
  417. package/data/semanticTokens/nestjs.json +245 -35
  418. package/data/semanticTokens/nextjs.json +265 -38
  419. package/data/semanticTokens/react.json +230 -215
  420. package/data/semanticTokens/shadcn.json +235 -180
  421. package/data/signatureHelp/nestjs.json +201 -128
  422. package/data/signatureHelp/nextjs.json +185 -127
  423. package/data/signatureHelp/react.json +285 -281
  424. package/package.json +1 -1
@@ -1,192 +1,907 @@
1
- {
2
- "language": "hcl",
3
- "completions": [
4
- {
5
- "label": "resource",
6
- "kind": 15,
7
- "detail": "Terraform resource",
8
- "documentation": {
9
- "value": "Define an infrastructure resource to create and manage."
10
- },
11
- "insertText": "resource \"${1:aws_instance}\" \"${2:name}\" {\n ${3:ami = \"ami-0c55b159cbfafe1f0\"}\n ${4:instance_type = \"t2.micro\"}\n}",
12
- "insertTextRules": 4,
13
- "sortText": "00_resource"
14
- },
15
- {
16
- "label": "variable",
17
- "kind": 15,
18
- "detail": "Input variable",
19
- "documentation": {
20
- "value": "Declare an input variable for the module."
21
- },
22
- "insertText": "variable \"${1:name}\" {\n description = \"${2:Description}\"\n type = ${3:string}\n default = \"${4:default_value}\"\n}",
23
- "insertTextRules": 4,
24
- "sortText": "00_variable"
25
- },
26
- {
27
- "label": "output",
28
- "kind": 15,
29
- "detail": "Output value",
30
- "documentation": {
31
- "value": "Declare an output value to expose from the module."
32
- },
33
- "insertText": "output \"${1:name}\" {\n description = \"${2:Description}\"\n value = ${3:resource.name.attribute}\n}",
34
- "insertTextRules": 4,
35
- "sortText": "00_output"
36
- },
37
- {
38
- "label": "data",
39
- "kind": 15,
40
- "detail": "Data source",
41
- "documentation": {
42
- "value": "Reference an existing resource or external data source."
43
- },
44
- "insertText": "data \"${1:aws_ami}\" \"${2:name}\" {\n ${3:most_recent = true}\n\n filter {\n name = \"${4:name}\"\n values = [\"${5:value}\"]\n }\n}",
45
- "insertTextRules": 4,
46
- "sortText": "00_data"
47
- },
48
- {
49
- "label": "provider",
50
- "kind": 15,
51
- "detail": "Provider configuration",
52
- "documentation": {
53
- "value": "Configure a Terraform provider (AWS, GCP, Azure, etc.)."
54
- },
55
- "insertText": "provider \"${1:aws}\" {\n region = \"${2:us-east-1}\"\n}",
56
- "insertTextRules": 4,
57
- "sortText": "01_provider"
58
- },
59
- {
60
- "label": "terraform block",
61
- "kind": 15,
62
- "detail": "Terraform settings",
63
- "documentation": {
64
- "value": "Configure Terraform settings including required providers and backend."
65
- },
66
- "insertText": "terraform {\n required_version = \">= ${1:1.0}\"\n\n required_providers {\n ${2:aws} = {\n source = \"hashicorp/${2:aws}\"\n version = \"~> ${3:5.0}\"\n }\n }\n\n backend \"${4:s3}\" {\n bucket = \"${5:my-terraform-state}\"\n key = \"${6:terraform.tfstate}\"\n region = \"${7:us-east-1}\"\n }\n}",
67
- "insertTextRules": 4,
68
- "sortText": "01_terraform"
69
- },
70
- {
71
- "label": "module",
72
- "kind": 15,
73
- "detail": "Module call",
74
- "documentation": {
75
- "value": "Call a reusable Terraform module."
76
- },
77
- "insertText": "module \"${1:name}\" {\n source = \"${2:./modules/example}\"\n version = \"${3:1.0.0}\"\n\n ${4:variable_name} = ${5:value}\n}",
78
- "insertTextRules": 4,
79
- "sortText": "01_module"
80
- },
81
- {
82
- "label": "locals",
83
- "kind": 15,
84
- "detail": "Local values",
85
- "documentation": {
86
- "value": "Define local values for reuse within a module."
87
- },
88
- "insertText": "locals {\n ${1:name} = ${2:value}\n}",
89
- "insertTextRules": 4,
90
- "sortText": "01_locals"
91
- },
92
- {
93
- "label": "for_each",
94
- "kind": 14,
95
- "detail": "for_each meta-argument",
96
- "documentation": {
97
- "value": "Create multiple instances of a resource from a map or set."
98
- },
99
- "insertText": "for_each = ${1:var.items}\n\n ${2:name} = each.key\n ${3:value} = each.value",
100
- "insertTextRules": 4,
101
- "sortText": "02_foreach"
102
- },
103
- {
104
- "label": "count",
105
- "kind": 14,
106
- "detail": "count meta-argument",
107
- "documentation": {
108
- "value": "Create a specific number of resource instances."
109
- },
110
- "insertText": "count = ${1:var.instance_count}",
111
- "insertTextRules": 4,
112
- "sortText": "02_count"
113
- },
114
- {
115
- "label": "dynamic block",
116
- "kind": 15,
117
- "detail": "Dynamic block",
118
- "documentation": {
119
- "value": "Generate repeated nested blocks dynamically."
120
- },
121
- "insertText": "dynamic \"${1:block_name}\" {\n for_each = ${2:var.items}\n content {\n ${3:key} = ${1:block_name}.value\n }\n}",
122
- "insertTextRules": 4,
123
- "sortText": "02_dynamic"
124
- },
125
- {
126
- "label": "lifecycle",
127
- "kind": 15,
128
- "detail": "Lifecycle block",
129
- "documentation": {
130
- "value": "Customize resource lifecycle behavior."
131
- },
132
- "insertText": "lifecycle {\n ${1:create_before_destroy = true}\n}",
133
- "insertTextRules": 4,
134
- "sortText": "02_lifecycle"
135
- },
136
- {
137
- "label": "provisioner",
138
- "kind": 15,
139
- "detail": "Provisioner",
140
- "documentation": {
141
- "value": "Execute actions on the local or remote machine."
142
- },
143
- "insertText": "provisioner \"${1:remote-exec}\" {\n inline = [\n \"${2:sudo apt-get update}\",\n ]\n}",
144
- "insertTextRules": 4,
145
- "sortText": "03_provisioner"
146
- },
147
- {
148
- "label": "tags",
149
- "kind": 15,
150
- "detail": "Resource tags",
151
- "documentation": {
152
- "value": "Common tags block for cloud resources."
153
- },
154
- "insertText": "tags = {\n Name = \"${1:my-resource}\"\n Environment = \"${2:production}\"\n ManagedBy = \"terraform\"\n}",
155
- "insertTextRules": 4,
156
- "sortText": "03_tags"
157
- },
158
- {
159
- "label": "aws_instance",
160
- "kind": 15,
161
- "detail": "AWS EC2 instance",
162
- "documentation": {
163
- "value": "AWS EC2 instance resource."
164
- },
165
- "insertText": "resource \"aws_instance\" \"${1:web}\" {\n ami = \"${2:ami-0c55b159cbfafe1f0}\"\n instance_type = \"${3:t2.micro}\"\n key_name = \"${4:my-key}\"\n\n tags = {\n Name = \"${1:web}\"\n }\n}",
166
- "insertTextRules": 4,
167
- "sortText": "04_ec2"
168
- },
169
- {
170
- "label": "aws_s3_bucket",
171
- "kind": 15,
172
- "detail": "AWS S3 bucket",
173
- "documentation": {
174
- "value": "AWS S3 bucket resource."
175
- },
176
- "insertText": "resource \"aws_s3_bucket\" \"${1:bucket}\" {\n bucket = \"${2:my-bucket-name}\"\n\n tags = {\n Name = \"${2:my-bucket-name}\"\n }\n}",
177
- "insertTextRules": 4,
178
- "sortText": "04_s3"
179
- },
180
- {
181
- "label": "aws_security_group",
182
- "kind": 15,
183
- "detail": "AWS security group",
184
- "documentation": {
185
- "value": "AWS security group with ingress/egress rules."
186
- },
187
- "insertText": "resource \"aws_security_group\" \"${1:sg}\" {\n name = \"${2:allow-web}\"\n description = \"${3:Allow web traffic}\"\n vpc_id = ${4:aws_vpc.main.id}\n\n ingress {\n from_port = ${5:80}\n to_port = ${5:80}\n protocol = \"tcp\"\n cidr_blocks = [\"0.0.0.0/0\"]\n }\n\n egress {\n from_port = 0\n to_port = 0\n protocol = \"-1\"\n cidr_blocks = [\"0.0.0.0/0\"]\n }\n}",
188
- "insertTextRules": 4,
189
- "sortText": "04_sg"
190
- }
191
- ]
1
+ {
2
+ "language": "hcl",
3
+ "completions": [
4
+ {
5
+ "label": "resource",
6
+ "kind": 15,
7
+ "detail": "Terraform resource",
8
+ "documentation": {
9
+ "value": "Define an infrastructure resource to create and manage."
10
+ },
11
+ "insertText": "resource \"${1:aws_instance}\" \"${2:name}\" {\n ${3:ami = \"ami-0c55b159cbfafe1f0\"}\n ${4:instance_type = \"t2.micro\"}\n}",
12
+ "insertTextRules": 4,
13
+ "sortText": "00_resource"
14
+ },
15
+ {
16
+ "label": "variable",
17
+ "kind": 15,
18
+ "detail": "Input variable",
19
+ "documentation": {
20
+ "value": "Declare an input variable for the module."
21
+ },
22
+ "insertText": "variable \"${1:name}\" {\n description = \"${2:Description}\"\n type = ${3:string}\n default = \"${4:default_value}\"\n}",
23
+ "insertTextRules": 4,
24
+ "sortText": "00_variable"
25
+ },
26
+ {
27
+ "label": "output",
28
+ "kind": 15,
29
+ "detail": "Output value",
30
+ "documentation": {
31
+ "value": "Declare an output value to expose from the module."
32
+ },
33
+ "insertText": "output \"${1:name}\" {\n description = \"${2:Description}\"\n value = ${3:resource.name.attribute}\n}",
34
+ "insertTextRules": 4,
35
+ "sortText": "00_output"
36
+ },
37
+ {
38
+ "label": "data",
39
+ "kind": 15,
40
+ "detail": "Data source",
41
+ "documentation": {
42
+ "value": "Reference an existing resource or external data source."
43
+ },
44
+ "insertText": "data \"${1:aws_ami}\" \"${2:name}\" {\n ${3:most_recent = true}\n\n filter {\n name = \"${4:name}\"\n values = [\"${5:value}\"]\n }\n}",
45
+ "insertTextRules": 4,
46
+ "sortText": "00_data"
47
+ },
48
+ {
49
+ "label": "provider",
50
+ "kind": 15,
51
+ "detail": "Provider configuration",
52
+ "documentation": {
53
+ "value": "Configure a Terraform provider (AWS, GCP, Azure, etc.)."
54
+ },
55
+ "insertText": "provider \"${1:aws}\" {\n region = \"${2:us-east-1}\"\n}",
56
+ "insertTextRules": 4,
57
+ "sortText": "01_provider"
58
+ },
59
+ {
60
+ "label": "terraform block",
61
+ "kind": 15,
62
+ "detail": "Terraform settings",
63
+ "documentation": {
64
+ "value": "Configure Terraform settings including required providers and backend."
65
+ },
66
+ "insertText": "terraform {\n required_version = \">= ${1:1.0}\"\n\n required_providers {\n ${2:aws} = {\n source = \"hashicorp/${2:aws}\"\n version = \"~> ${3:5.0}\"\n }\n }\n\n backend \"${4:s3}\" {\n bucket = \"${5:my-terraform-state}\"\n key = \"${6:terraform.tfstate}\"\n region = \"${7:us-east-1}\"\n }\n}",
67
+ "insertTextRules": 4,
68
+ "sortText": "01_terraform"
69
+ },
70
+ {
71
+ "label": "module",
72
+ "kind": 15,
73
+ "detail": "Module call",
74
+ "documentation": {
75
+ "value": "Call a reusable Terraform module."
76
+ },
77
+ "insertText": "module \"${1:name}\" {\n source = \"${2:./modules/example}\"\n version = \"${3:1.0.0}\"\n\n ${4:variable_name} = ${5:value}\n}",
78
+ "insertTextRules": 4,
79
+ "sortText": "01_module"
80
+ },
81
+ {
82
+ "label": "locals",
83
+ "kind": 15,
84
+ "detail": "Local values",
85
+ "documentation": {
86
+ "value": "Define local values for reuse within a module."
87
+ },
88
+ "insertText": "locals {\n ${1:name} = ${2:value}\n}",
89
+ "insertTextRules": 4,
90
+ "sortText": "01_locals"
91
+ },
92
+ {
93
+ "label": "for_each",
94
+ "kind": 14,
95
+ "detail": "for_each meta-argument",
96
+ "documentation": {
97
+ "value": "Create multiple instances of a resource from a map or set."
98
+ },
99
+ "insertText": "for_each = ${1:var.items}\n\n ${2:name} = each.key\n ${3:value} = each.value",
100
+ "insertTextRules": 4,
101
+ "sortText": "02_foreach"
102
+ },
103
+ {
104
+ "label": "count",
105
+ "kind": 14,
106
+ "detail": "count meta-argument",
107
+ "documentation": {
108
+ "value": "Create a specific number of resource instances."
109
+ },
110
+ "insertText": "count = ${1:var.instance_count}",
111
+ "insertTextRules": 4,
112
+ "sortText": "02_count"
113
+ },
114
+ {
115
+ "label": "dynamic block",
116
+ "kind": 15,
117
+ "detail": "Dynamic block",
118
+ "documentation": {
119
+ "value": "Generate repeated nested blocks dynamically."
120
+ },
121
+ "insertText": "dynamic \"${1:block_name}\" {\n for_each = ${2:var.items}\n content {\n ${3:key} = ${1:block_name}.value\n }\n}",
122
+ "insertTextRules": 4,
123
+ "sortText": "02_dynamic"
124
+ },
125
+ {
126
+ "label": "lifecycle",
127
+ "kind": 15,
128
+ "detail": "Lifecycle block",
129
+ "documentation": {
130
+ "value": "Customize resource lifecycle behavior."
131
+ },
132
+ "insertText": "lifecycle {\n ${1:create_before_destroy = true}\n}",
133
+ "insertTextRules": 4,
134
+ "sortText": "02_lifecycle"
135
+ },
136
+ {
137
+ "label": "provisioner",
138
+ "kind": 15,
139
+ "detail": "Provisioner",
140
+ "documentation": {
141
+ "value": "Execute actions on the local or remote machine."
142
+ },
143
+ "insertText": "provisioner \"${1:remote-exec}\" {\n inline = [\n \"${2:sudo apt-get update}\",\n ]\n}",
144
+ "insertTextRules": 4,
145
+ "sortText": "03_provisioner"
146
+ },
147
+ {
148
+ "label": "tags",
149
+ "kind": 15,
150
+ "detail": "Resource tags",
151
+ "documentation": {
152
+ "value": "Common tags block for cloud resources."
153
+ },
154
+ "insertText": "tags = {\n Name = \"${1:my-resource}\"\n Environment = \"${2:production}\"\n ManagedBy = \"terraform\"\n}",
155
+ "insertTextRules": 4,
156
+ "sortText": "03_tags"
157
+ },
158
+ {
159
+ "label": "aws_instance",
160
+ "kind": 15,
161
+ "detail": "AWS EC2 instance",
162
+ "documentation": {
163
+ "value": "AWS EC2 instance resource."
164
+ },
165
+ "insertText": "resource \"aws_instance\" \"${1:web}\" {\n ami = \"${2:ami-0c55b159cbfafe1f0}\"\n instance_type = \"${3:t2.micro}\"\n key_name = \"${4:my-key}\"\n\n tags = {\n Name = \"${1:web}\"\n }\n}",
166
+ "insertTextRules": 4,
167
+ "sortText": "04_ec2"
168
+ },
169
+ {
170
+ "label": "aws_s3_bucket",
171
+ "kind": 15,
172
+ "detail": "AWS S3 bucket",
173
+ "documentation": {
174
+ "value": "AWS S3 bucket resource."
175
+ },
176
+ "insertText": "resource \"aws_s3_bucket\" \"${1:bucket}\" {\n bucket = \"${2:my-bucket-name}\"\n\n tags = {\n Name = \"${2:my-bucket-name}\"\n }\n}",
177
+ "insertTextRules": 4,
178
+ "sortText": "04_s3"
179
+ },
180
+ {
181
+ "label": "aws_security_group",
182
+ "kind": 15,
183
+ "detail": "AWS security group",
184
+ "documentation": {
185
+ "value": "AWS security group with ingress/egress rules."
186
+ },
187
+ "insertText": "resource \"aws_security_group\" \"${1:sg}\" {\n name = \"${2:allow-web}\"\n description = \"${3:Allow web traffic}\"\n vpc_id = ${4:aws_vpc.main.id}\n\n ingress {\n from_port = ${5:80}\n to_port = ${5:80}\n protocol = \"tcp\"\n cidr_blocks = [\"0.0.0.0/0\"]\n }\n\n egress {\n from_port = 0\n to_port = 0\n protocol = \"-1\"\n cidr_blocks = [\"0.0.0.0/0\"]\n }\n}",
188
+ "insertTextRules": 4,
189
+ "sortText": "04_sg"
190
+ },
191
+ {
192
+ "label": "lookup",
193
+ "kind": 1,
194
+ "detail": "lookup()",
195
+ "documentation": {
196
+ "value": "Look up a value in a map."
197
+ },
198
+ "insertText": "lookup(${1:map}, \"${2:key}\", ${3:default})",
199
+ "insertTextRules": 4,
200
+ "sortText": "01_fn"
201
+ },
202
+ {
203
+ "label": "merge",
204
+ "kind": 1,
205
+ "detail": "merge()",
206
+ "documentation": {
207
+ "value": "Merge maps."
208
+ },
209
+ "insertText": "merge(${1:map1}, ${2:map2})",
210
+ "insertTextRules": 4,
211
+ "sortText": "01_fn"
212
+ },
213
+ {
214
+ "label": "concat",
215
+ "kind": 1,
216
+ "detail": "concat()",
217
+ "documentation": {
218
+ "value": "Concatenate lists."
219
+ },
220
+ "insertText": "concat(${1:list1}, ${2:list2})",
221
+ "insertTextRules": 4,
222
+ "sortText": "01_fn"
223
+ },
224
+ {
225
+ "label": "element",
226
+ "kind": 1,
227
+ "detail": "element()",
228
+ "documentation": {
229
+ "value": "Get element by index."
230
+ },
231
+ "insertText": "element(${1:list}, ${2:index})",
232
+ "insertTextRules": 4,
233
+ "sortText": "01_fn"
234
+ },
235
+ {
236
+ "label": "length",
237
+ "kind": 1,
238
+ "detail": "length()",
239
+ "documentation": {
240
+ "value": "Get collection length."
241
+ },
242
+ "insertText": "length(${1:collection})",
243
+ "insertTextRules": 4,
244
+ "sortText": "01_fn"
245
+ },
246
+ {
247
+ "label": "toset",
248
+ "kind": 1,
249
+ "detail": "toset()",
250
+ "documentation": {
251
+ "value": "Convert to set."
252
+ },
253
+ "insertText": "toset(${1:list})",
254
+ "insertTextRules": 4,
255
+ "sortText": "01_fn"
256
+ },
257
+ {
258
+ "label": "tolist",
259
+ "kind": 1,
260
+ "detail": "tolist()",
261
+ "documentation": {
262
+ "value": "Convert to list."
263
+ },
264
+ "insertText": "tolist(${1:set})",
265
+ "insertTextRules": 4,
266
+ "sortText": "01_fn"
267
+ },
268
+ {
269
+ "label": "tomap",
270
+ "kind": 1,
271
+ "detail": "tomap()",
272
+ "documentation": {
273
+ "value": "Convert to map."
274
+ },
275
+ "insertText": "tomap(${1:obj})",
276
+ "insertTextRules": 4,
277
+ "sortText": "01_fn"
278
+ },
279
+ {
280
+ "label": "flatten",
281
+ "kind": 1,
282
+ "detail": "flatten()",
283
+ "documentation": {
284
+ "value": "Flatten nested lists."
285
+ },
286
+ "insertText": "flatten(${1:list})",
287
+ "insertTextRules": 4,
288
+ "sortText": "01_fn"
289
+ },
290
+ {
291
+ "label": "distinct",
292
+ "kind": 1,
293
+ "detail": "distinct()",
294
+ "documentation": {
295
+ "value": "Remove duplicates."
296
+ },
297
+ "insertText": "distinct(${1:list})",
298
+ "insertTextRules": 4,
299
+ "sortText": "01_fn"
300
+ },
301
+ {
302
+ "label": "keys",
303
+ "kind": 1,
304
+ "detail": "keys()",
305
+ "documentation": {
306
+ "value": "Get map keys."
307
+ },
308
+ "insertText": "keys(${1:map})",
309
+ "insertTextRules": 4,
310
+ "sortText": "01_fn"
311
+ },
312
+ {
313
+ "label": "values",
314
+ "kind": 1,
315
+ "detail": "values()",
316
+ "documentation": {
317
+ "value": "Get map values."
318
+ },
319
+ "insertText": "values(${1:map})",
320
+ "insertTextRules": 4,
321
+ "sortText": "01_fn"
322
+ },
323
+ {
324
+ "label": "join",
325
+ "kind": 1,
326
+ "detail": "join()",
327
+ "documentation": {
328
+ "value": "Join strings."
329
+ },
330
+ "insertText": "join(\"${1:,}\", ${2:list})",
331
+ "insertTextRules": 4,
332
+ "sortText": "01_fn"
333
+ },
334
+ {
335
+ "label": "split",
336
+ "kind": 1,
337
+ "detail": "split()",
338
+ "documentation": {
339
+ "value": "Split string."
340
+ },
341
+ "insertText": "split(\"${1:,}\", ${2:string})",
342
+ "insertTextRules": 4,
343
+ "sortText": "01_fn"
344
+ },
345
+ {
346
+ "label": "lower",
347
+ "kind": 1,
348
+ "detail": "lower()",
349
+ "documentation": {
350
+ "value": "Lowercase string."
351
+ },
352
+ "insertText": "lower(${1:string})",
353
+ "insertTextRules": 4,
354
+ "sortText": "01_fn"
355
+ },
356
+ {
357
+ "label": "upper",
358
+ "kind": 1,
359
+ "detail": "upper()",
360
+ "documentation": {
361
+ "value": "Uppercase string."
362
+ },
363
+ "insertText": "upper(${1:string})",
364
+ "insertTextRules": 4,
365
+ "sortText": "01_fn"
366
+ },
367
+ {
368
+ "label": "replace",
369
+ "kind": 1,
370
+ "detail": "replace()",
371
+ "documentation": {
372
+ "value": "Replace in string."
373
+ },
374
+ "insertText": "replace(${1:string}, \"${2:old}\", \"${3:new}\")",
375
+ "insertTextRules": 4,
376
+ "sortText": "01_fn"
377
+ },
378
+ {
379
+ "label": "regex",
380
+ "kind": 1,
381
+ "detail": "regex()",
382
+ "documentation": {
383
+ "value": "Regex replace."
384
+ },
385
+ "insertText": "regex(\"${1:pattern}\", ${2:string}, \"${3:replace}\")",
386
+ "insertTextRules": 4,
387
+ "sortText": "01_fn"
388
+ },
389
+ {
390
+ "label": "trimspace",
391
+ "kind": 1,
392
+ "detail": "trimspace()",
393
+ "documentation": {
394
+ "value": "Trim whitespace."
395
+ },
396
+ "insertText": "trimspace(${1:string})",
397
+ "insertTextRules": 4,
398
+ "sortText": "01_fn"
399
+ },
400
+ {
401
+ "label": "format",
402
+ "kind": 1,
403
+ "detail": "format()",
404
+ "documentation": {
405
+ "value": "Format string."
406
+ },
407
+ "insertText": "format(\"${1:%s-%s}\", ${2:var.a}, ${3:var.b})",
408
+ "insertTextRules": 4,
409
+ "sortText": "01_fn"
410
+ },
411
+ {
412
+ "label": "formatlist",
413
+ "kind": 1,
414
+ "detail": "formatlist()",
415
+ "documentation": {
416
+ "value": "Format each list element."
417
+ },
418
+ "insertText": "formatlist(\"${1:%s-instance}\", ${2:list})",
419
+ "insertTextRules": 4,
420
+ "sortText": "01_fn"
421
+ },
422
+ {
423
+ "label": "cidrsubnet",
424
+ "kind": 1,
425
+ "detail": "cidrsubnet()",
426
+ "documentation": {
427
+ "value": "Calculate CIDR subnet."
428
+ },
429
+ "insertText": "cidrsubnet(${1:var.vpc_cidr}, ${2:8}, ${3:count.index})",
430
+ "insertTextRules": 4,
431
+ "sortText": "01_fn"
432
+ },
433
+ {
434
+ "label": "file",
435
+ "kind": 1,
436
+ "detail": "file()",
437
+ "documentation": {
438
+ "value": "Read file contents."
439
+ },
440
+ "insertText": "file(\"${1:path/to/file}\")",
441
+ "insertTextRules": 4,
442
+ "sortText": "01_fn"
443
+ },
444
+ {
445
+ "label": "templatefile",
446
+ "kind": 1,
447
+ "detail": "templatefile()",
448
+ "documentation": {
449
+ "value": "Render template file."
450
+ },
451
+ "insertText": "templatefile(\"${1:templates/config.tpl}\", {\n ${2:var1} = ${3:value1}\n})",
452
+ "insertTextRules": 4,
453
+ "sortText": "01_fn"
454
+ },
455
+ {
456
+ "label": "jsonencode",
457
+ "kind": 1,
458
+ "detail": "jsonencode()",
459
+ "documentation": {
460
+ "value": "Encode value as JSON."
461
+ },
462
+ "insertText": "jsonencode(${1:value})",
463
+ "insertTextRules": 4,
464
+ "sortText": "01_fn"
465
+ },
466
+ {
467
+ "label": "jsondecode",
468
+ "kind": 1,
469
+ "detail": "jsondecode()",
470
+ "documentation": {
471
+ "value": "Decode JSON string."
472
+ },
473
+ "insertText": "jsondecode(${1:string})",
474
+ "insertTextRules": 4,
475
+ "sortText": "01_fn"
476
+ },
477
+ {
478
+ "label": "base64encode",
479
+ "kind": 1,
480
+ "detail": "base64encode()",
481
+ "documentation": {
482
+ "value": "Base64 encode."
483
+ },
484
+ "insertText": "base64encode(${1:string})",
485
+ "insertTextRules": 4,
486
+ "sortText": "01_fn"
487
+ },
488
+ {
489
+ "label": "base64decode",
490
+ "kind": 1,
491
+ "detail": "base64decode()",
492
+ "documentation": {
493
+ "value": "Base64 decode."
494
+ },
495
+ "insertText": "base64decode(${1:string})",
496
+ "insertTextRules": 4,
497
+ "sortText": "01_fn"
498
+ },
499
+ {
500
+ "label": "try",
501
+ "kind": 1,
502
+ "detail": "try()",
503
+ "documentation": {
504
+ "value": "Try expression with fallback."
505
+ },
506
+ "insertText": "try(${1:expression}, ${2:fallback})",
507
+ "insertTextRules": 4,
508
+ "sortText": "01_fn"
509
+ },
510
+ {
511
+ "label": "can",
512
+ "kind": 1,
513
+ "detail": "can()",
514
+ "documentation": {
515
+ "value": "Test expression validity."
516
+ },
517
+ "insertText": "can(${1:expression})",
518
+ "insertTextRules": 4,
519
+ "sortText": "01_fn"
520
+ },
521
+ {
522
+ "label": "coalesce",
523
+ "kind": 1,
524
+ "detail": "coalesce()",
525
+ "documentation": {
526
+ "value": "First non-null value."
527
+ },
528
+ "insertText": "coalesce(${1:val1}, ${2:val2})",
529
+ "insertTextRules": 4,
530
+ "sortText": "01_fn"
531
+ },
532
+ {
533
+ "label": "one",
534
+ "kind": 1,
535
+ "detail": "one()",
536
+ "documentation": {
537
+ "value": "Get single element."
538
+ },
539
+ "insertText": "one(${1:set})",
540
+ "insertTextRules": 4,
541
+ "sortText": "01_fn"
542
+ },
543
+ {
544
+ "label": "aws_vpc",
545
+ "kind": 28,
546
+ "detail": "AWS VPC",
547
+ "documentation": {
548
+ "value": "AWS VPC resource."
549
+ },
550
+ "insertText": "resource \"aws_vpc\" \"${1:main}\" {\n cidr_block = \"${2:10.0.0.0/16}\"\n\n tags = {\n Name = \"${1:main}\"\n }\n}",
551
+ "insertTextRules": 4,
552
+ "sortText": "04_aws"
553
+ },
554
+ {
555
+ "label": "aws_subnet",
556
+ "kind": 28,
557
+ "detail": "AWS Subnet",
558
+ "documentation": {
559
+ "value": "AWS subnet resource."
560
+ },
561
+ "insertText": "resource \"aws_subnet\" \"${1:public}\" {\n vpc_id = aws_vpc.${2:main}.id\n cidr_block = \"${3:10.0.1.0/24}\"\n availability_zone = \"${4:us-east-1a}\"\n\n tags = {\n Name = \"${1:public}\"\n }\n}",
562
+ "insertTextRules": 4,
563
+ "sortText": "04_aws"
564
+ },
565
+ {
566
+ "label": "aws_iam_role",
567
+ "kind": 28,
568
+ "detail": "AWS IAM role",
569
+ "documentation": {
570
+ "value": "IAM role resource."
571
+ },
572
+ "insertText": "resource \"aws_iam_role\" \"${1:role}\" {\n name = \"${1:role}\"\n\n assume_role_policy = jsonencode({\n Version = \"2012-10-17\"\n Statement = [{\n Action = \"sts:AssumeRole\"\n Effect = \"Allow\"\n Principal = {\n Service = \"${2:lambda.amazonaws.com}\"\n }\n }]\n })\n}",
573
+ "insertTextRules": 4,
574
+ "sortText": "04_aws"
575
+ },
576
+ {
577
+ "label": "aws_lambda",
578
+ "kind": 28,
579
+ "detail": "AWS Lambda",
580
+ "documentation": {
581
+ "value": "Lambda function resource."
582
+ },
583
+ "insertText": "resource \"aws_lambda_function\" \"${1:func}\" {\n filename = \"${2:lambda.zip}\"\n function_name = \"${1:func}\"\n role = aws_iam_role.${3:role}.arn\n handler = \"${4:index.handler}\"\n runtime = \"${5:nodejs18.x}\"\n}",
584
+ "insertTextRules": 4,
585
+ "sortText": "04_aws"
586
+ },
587
+ {
588
+ "label": "aws_rds",
589
+ "kind": 28,
590
+ "detail": "AWS RDS",
591
+ "documentation": {
592
+ "value": "RDS database instance."
593
+ },
594
+ "insertText": "resource \"aws_db_instance\" \"${1:db}\" {\n identifier = \"${1:db}\"\n engine = \"${2:postgres}\"\n engine_version = \"${3:15}\"\n instance_class = \"${4:db.t3.micro}\"\n allocated_storage = ${5:20}\n db_name = \"${6:mydb}\"\n username = var.db_username\n password = var.db_password\n skip_final_snapshot = true\n}",
595
+ "insertTextRules": 4,
596
+ "sortText": "04_aws"
597
+ },
598
+ {
599
+ "label": "aws_lb",
600
+ "kind": 28,
601
+ "detail": "AWS ALB",
602
+ "documentation": {
603
+ "value": "Application Load Balancer."
604
+ },
605
+ "insertText": "resource \"aws_lb\" \"${1:alb}\" {\n name = \"${1:alb}\"\n internal = false\n load_balancer_type = \"application\"\n security_groups = [aws_security_group.${2:sg}.id]\n subnets = aws_subnet.${3:public}[*].id\n}",
606
+ "insertTextRules": 4,
607
+ "sortText": "04_aws"
608
+ },
609
+ {
610
+ "label": "aws_ecs_cluster",
611
+ "kind": 28,
612
+ "detail": "AWS ECS",
613
+ "documentation": {
614
+ "value": "ECS cluster resource."
615
+ },
616
+ "insertText": "resource \"aws_ecs_cluster\" \"${1:cluster}\" {\n name = \"${1:cluster}\"\n}",
617
+ "insertTextRules": 4,
618
+ "sortText": "04_aws"
619
+ },
620
+ {
621
+ "label": "azurerm_resource_group",
622
+ "kind": 28,
623
+ "detail": "Azure RG",
624
+ "documentation": {
625
+ "value": "Azure resource group."
626
+ },
627
+ "insertText": "resource \"azurerm_resource_group\" \"${1:rg}\" {\n name = \"${2:my-resources}\"\n location = \"${3:eastus}\"\n}",
628
+ "insertTextRules": 4,
629
+ "sortText": "04_azure"
630
+ },
631
+ {
632
+ "label": "google_compute_instance",
633
+ "kind": 28,
634
+ "detail": "GCP instance",
635
+ "documentation": {
636
+ "value": "Google Compute Engine instance."
637
+ },
638
+ "insertText": "resource \"google_compute_instance\" \"${1:vm}\" {\n name = \"${1:vm}\"\n machine_type = \"${2:e2-medium}\"\n zone = \"${3:us-central1-a}\"\n\n boot_disk {\n initialize_params {\n image = \"${4:debian-cloud/debian-11}\"\n }\n }\n\n network_interface {\n network = \"default\"\n access_config {}\n }\n}",
639
+ "insertTextRules": 4,
640
+ "sortText": "04_gcp"
641
+ },
642
+ {
643
+ "label": "conditional",
644
+ "kind": 28,
645
+ "detail": "Conditional expression",
646
+ "documentation": {
647
+ "value": "Ternary conditional."
648
+ },
649
+ "insertText": "${1:condition} ? ${2:true_val} : ${3:false_val}",
650
+ "insertTextRules": 4,
651
+ "sortText": "05_expr"
652
+ },
653
+ {
654
+ "label": "for expression",
655
+ "kind": 28,
656
+ "detail": "For expression",
657
+ "documentation": {
658
+ "value": "For expression."
659
+ },
660
+ "insertText": "[for ${1:item} in ${2:var.list} : ${3:item.name}]",
661
+ "insertTextRules": 4,
662
+ "sortText": "05_expr"
663
+ },
664
+ {
665
+ "label": "for map",
666
+ "kind": 28,
667
+ "detail": "For map expression",
668
+ "documentation": {
669
+ "value": "For creating a map."
670
+ },
671
+ "insertText": "{ for ${1:k}, ${2:v} in ${3:var.map} : ${1:k} => ${4:upper(v)} }",
672
+ "insertTextRules": 4,
673
+ "sortText": "05_expr"
674
+ },
675
+ {
676
+ "label": "for filtered",
677
+ "kind": 28,
678
+ "detail": "Filtered for",
679
+ "documentation": {
680
+ "value": "For with condition filter."
681
+ },
682
+ "insertText": "[for ${1:s} in ${2:var.list} : ${3:s} if ${4:s != \"\"}]",
683
+ "insertTextRules": 4,
684
+ "sortText": "05_expr"
685
+ },
686
+ {
687
+ "label": "splat",
688
+ "kind": 28,
689
+ "detail": "Splat expression",
690
+ "documentation": {
691
+ "value": "Splat to get all attributes."
692
+ },
693
+ "insertText": "${1:aws_instance.web}[*].${2:id}",
694
+ "insertTextRules": 4,
695
+ "sortText": "05_expr"
696
+ },
697
+ {
698
+ "label": "depends_on",
699
+ "kind": 28,
700
+ "detail": "Explicit dependency",
701
+ "documentation": {
702
+ "value": "Explicit resource dependency."
703
+ },
704
+ "insertText": "depends_on = [${1:aws_iam_role.role}]",
705
+ "insertTextRules": 4,
706
+ "sortText": "02_meta"
707
+ },
708
+ {
709
+ "label": "moved block",
710
+ "kind": 28,
711
+ "detail": "Moved refactor",
712
+ "documentation": {
713
+ "value": "Refactor resource address."
714
+ },
715
+ "insertText": "moved {\n from = ${1:aws_instance.old}\n to = ${2:aws_instance.new}\n}",
716
+ "insertTextRules": 4,
717
+ "sortText": "02_meta"
718
+ },
719
+ {
720
+ "label": "import block",
721
+ "kind": 28,
722
+ "detail": "Import existing",
723
+ "documentation": {
724
+ "value": "Import existing resource."
725
+ },
726
+ "insertText": "import {\n to = ${1:aws_instance.web}\n id = \"${2:i-1234567890abcdef}\"\n}",
727
+ "insertTextRules": 4,
728
+ "sortText": "02_meta"
729
+ },
730
+ {
731
+ "label": "check block",
732
+ "kind": 28,
733
+ "detail": "Check assertion",
734
+ "documentation": {
735
+ "value": "Continuous validation."
736
+ },
737
+ "insertText": "check \"${1:health_check}\" {\n data \"http\" \"health\" {\n url = \"${2:https://example.com/health}\"\n }\n assert {\n condition = data.http.health.status_code == 200\n error_message = \"${3:Health check failed}\"\n }\n}",
738
+ "insertTextRules": 4,
739
+ "sortText": "02_meta"
740
+ },
741
+ {
742
+ "label": "variable validation",
743
+ "kind": 28,
744
+ "detail": "Variable validation",
745
+ "documentation": {
746
+ "value": "Input variable with validation."
747
+ },
748
+ "insertText": "variable \"${1:name}\" {\n type = ${2:string}\n description = \"${3:Description}\"\n validation {\n condition = ${4:length(var.name) > 0}\n error_message = \"${5:Must not be empty.}\"\n }\n}",
749
+ "insertTextRules": 4,
750
+ "sortText": "00_var"
751
+ },
752
+ {
753
+ "label": "substr",
754
+ "kind": 1,
755
+ "detail": "substr()",
756
+ "documentation": {
757
+ "value": "Get substring."
758
+ },
759
+ "insertText": "substr(${1:string}, ${2:offset}, ${3:length})",
760
+ "insertTextRules": 4,
761
+ "sortText": "01_fn"
762
+ },
763
+ {
764
+ "label": "startswith",
765
+ "kind": 1,
766
+ "detail": "startswith()",
767
+ "documentation": {
768
+ "value": "String starts with."
769
+ },
770
+ "insertText": "startswith(${1:string}, \"${2:prefix}\")",
771
+ "insertTextRules": 4,
772
+ "sortText": "01_fn"
773
+ },
774
+ {
775
+ "label": "endswith",
776
+ "kind": 1,
777
+ "detail": "endswith()",
778
+ "documentation": {
779
+ "value": "String ends with."
780
+ },
781
+ "insertText": "endswith(${1:string}, \"${2:suffix}\")",
782
+ "insertTextRules": 4,
783
+ "sortText": "01_fn"
784
+ },
785
+ {
786
+ "label": "contains",
787
+ "kind": 1,
788
+ "detail": "contains()",
789
+ "documentation": {
790
+ "value": "Collection contains."
791
+ },
792
+ "insertText": "contains(${1:list}, \"${2:value}\")",
793
+ "insertTextRules": 4,
794
+ "sortText": "01_fn"
795
+ },
796
+ {
797
+ "label": "max",
798
+ "kind": 1,
799
+ "detail": "max()",
800
+ "documentation": {
801
+ "value": "Maximum value."
802
+ },
803
+ "insertText": "max(${1:values}...)",
804
+ "insertTextRules": 4,
805
+ "sortText": "01_fn"
806
+ },
807
+ {
808
+ "label": "min",
809
+ "kind": 1,
810
+ "detail": "min()",
811
+ "documentation": {
812
+ "value": "Minimum value."
813
+ },
814
+ "insertText": "min(${1:values}...)",
815
+ "insertTextRules": 4,
816
+ "sortText": "01_fn"
817
+ },
818
+ {
819
+ "label": "abs",
820
+ "kind": 1,
821
+ "detail": "abs()",
822
+ "documentation": {
823
+ "value": "Absolute value."
824
+ },
825
+ "insertText": "abs(${1:number})",
826
+ "insertTextRules": 4,
827
+ "sortText": "01_fn"
828
+ },
829
+ {
830
+ "label": "ceil",
831
+ "kind": 1,
832
+ "detail": "ceil()",
833
+ "documentation": {
834
+ "value": "Ceiling of number."
835
+ },
836
+ "insertText": "ceil(${1:number})",
837
+ "insertTextRules": 4,
838
+ "sortText": "01_fn"
839
+ },
840
+ {
841
+ "label": "floor",
842
+ "kind": 1,
843
+ "detail": "floor()",
844
+ "documentation": {
845
+ "value": "Floor of number."
846
+ },
847
+ "insertText": "floor(${1:number})",
848
+ "insertTextRules": 4,
849
+ "sortText": "01_fn"
850
+ },
851
+ {
852
+ "label": "signum",
853
+ "kind": 1,
854
+ "detail": "signum()",
855
+ "documentation": {
856
+ "value": "Sign of number (-1,0,1)."
857
+ },
858
+ "insertText": "signum(${1:number})",
859
+ "insertTextRules": 4,
860
+ "sortText": "01_fn"
861
+ },
862
+ {
863
+ "label": "parseint",
864
+ "kind": 1,
865
+ "detail": "parseint()",
866
+ "documentation": {
867
+ "value": "Parse string to int."
868
+ },
869
+ "insertText": "parseint(\"${1:FF}\", ${2:16})",
870
+ "insertTextRules": 4,
871
+ "sortText": "01_fn"
872
+ },
873
+ {
874
+ "label": "range",
875
+ "kind": 1,
876
+ "detail": "range()",
877
+ "documentation": {
878
+ "value": "Generate number range."
879
+ },
880
+ "insertText": "range(${1:max})",
881
+ "insertTextRules": 4,
882
+ "sortText": "01_fn"
883
+ },
884
+ {
885
+ "label": "variable map",
886
+ "kind": 28,
887
+ "detail": "Map variable",
888
+ "documentation": {
889
+ "value": "Variable with map type."
890
+ },
891
+ "insertText": "variable \"${1:tags}\" {\n type = map(string)\n default = {\n Environment = \"${2:dev}\"\n Project = \"${3:myproject}\"\n }\n}",
892
+ "insertTextRules": 4,
893
+ "sortText": "00_var"
894
+ },
895
+ {
896
+ "label": "variable list",
897
+ "kind": 28,
898
+ "detail": "List variable",
899
+ "documentation": {
900
+ "value": "Variable with list type."
901
+ },
902
+ "insertText": "variable \"${1:subnets}\" {\n type = list(string)\n default = [\"${2:10.0.1.0/24}\", \"${3:10.0.2.0/24}\"]\n}",
903
+ "insertTextRules": 4,
904
+ "sortText": "00_var"
905
+ }
906
+ ]
192
907
  }