@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,45 +1,290 @@
1
1
  {
2
2
  "language": "protobuf",
3
3
  "hovers": {
4
+ "syntax": {
5
+ "contents": [
6
+ {
7
+ "value": "```protobuf\nsyntax = \"proto3\";\n```\n**syntax** declares the protobuf version. Use `proto3` for modern projects. `proto2` has required fields and different defaults."
8
+ }
9
+ ]
10
+ },
4
11
  "message": {
5
12
  "contents": [
6
13
  {
7
- "value": "```protobuf\nmessage User {\n string name = 1;\n int32 age = 2;\n repeated string tags = 3;\n map<string, string> metadata = 4;\n optional string bio = 5;\n}\n```\n**message** defines structured data. Field numbers (1, 2, etc.) are used in binary encoding - never reuse deleted numbers."
14
+ "value": "```protobuf\nmessage User {\n string name = 1;\n int32 age = 2;\n repeated string tags = 3;\n map<string, string> metadata = 4;\n optional string bio = 5;\n}\n```\n**message** defines structured data. Field numbers identify fields in binary encoding never reuse deleted numbers."
8
15
  }
9
16
  ]
10
17
  },
11
18
  "service": {
12
19
  "contents": [
13
20
  {
14
- "value": "```protobuf\nservice UserService {\n rpc GetUser(GetUserRequest) returns (User);\n rpc ListUsers(ListUsersRequest) returns (stream User); // server stream\n rpc Upload(stream Chunk) returns (UploadResponse); // client stream\n rpc Chat(stream Msg) returns (stream Msg); // bidirectional\n}\n```\n**service** defines gRPC endpoints. Four patterns: unary, server streaming, client streaming, bidirectional."
21
+ "value": "```protobuf\nservice UserService {\n rpc GetUser(GetUserRequest) returns (User);\n rpc ListUsers(ListUsersRequest) returns (stream User);\n rpc Upload(stream Chunk) returns (UploadResponse);\n rpc Chat(stream Msg) returns (stream Msg);\n}\n```\n**service** defines gRPC endpoints. Four patterns: unary, server streaming, client streaming, bidirectional."
22
+ }
23
+ ]
24
+ },
25
+ "rpc": {
26
+ "contents": [
27
+ {
28
+ "value": "```protobuf\nrpc GetUser(GetUserRequest) returns (User);\nrpc ListUsers(Empty) returns (stream User);\n```\n**rpc** defines a remote procedure call within a service. Input and output are message types. `stream` enables streaming."
15
29
  }
16
30
  ]
17
31
  },
18
32
  "enum": {
19
33
  "contents": [
20
34
  {
21
- "value": "```protobuf\nenum Status {\n STATUS_UNSPECIFIED = 0; // must have 0 value\n STATUS_ACTIVE = 1;\n STATUS_INACTIVE = 2;\n}\n```\n**enum** defines named constants. The zero value is required and should be UNSPECIFIED. Use the type name as prefix convention."
35
+ "value": "```protobuf\nenum Status {\n STATUS_UNSPECIFIED = 0;\n STATUS_ACTIVE = 1;\n STATUS_INACTIVE = 2;\n}\n```\n**enum** defines named constants. Zero value is required and should be UNSPECIFIED. Use type name as prefix."
36
+ }
37
+ ]
38
+ },
39
+ "oneof": {
40
+ "contents": [
41
+ {
42
+ "value": "```protobuf\nmessage SearchResult {\n oneof result {\n User user = 1;\n Group group = 2;\n string error = 3;\n }\n}\n```\n**oneof** enforces that at most one field in the group is set. Setting one clears the others. Saves memory."
43
+ }
44
+ ]
45
+ },
46
+ "repeated": {
47
+ "contents": [
48
+ {
49
+ "value": "```protobuf\nmessage User {\n repeated string tags = 1;\n repeated Address addresses = 2;\n}\n```\n**repeated** marks a field as a list (zero or more elements). Order is preserved. Can contain scalars or messages."
50
+ }
51
+ ]
52
+ },
53
+ "map": {
54
+ "contents": [
55
+ {
56
+ "value": "```protobuf\nmessage Config {\n map<string, string> properties = 1;\n map<int32, Feature> features = 2;\n}\n```\n**map** defines key-value pairs. Keys must be integral or string types. Values can be any type except another map."
57
+ }
58
+ ]
59
+ },
60
+ "optional": {
61
+ "contents": [
62
+ {
63
+ "value": "```protobuf\nmessage User {\n optional string nickname = 1;\n optional int32 age = 2;\n}\n```\n**optional** (proto3) enables presence tracking. Without it, default values are indistinguishable from unset fields."
64
+ }
65
+ ]
66
+ },
67
+ "reserved": {
68
+ "contents": [
69
+ {
70
+ "value": "```protobuf\nmessage Example {\n reserved 5, 10 to 12;\n reserved \"old_field\", \"legacy\";\n}\n```\n**reserved** prevents reuse of deleted field numbers or names. Protects against data corruption from old messages."
71
+ }
72
+ ]
73
+ },
74
+ "import": {
75
+ "contents": [
76
+ {
77
+ "value": "```protobuf\nimport \"google/protobuf/timestamp.proto\";\nimport \"other/messages.proto\";\nimport public \"shared/types.proto\";\n```\n**import** includes definitions from other .proto files. `import public` re-exports the imported definitions."
78
+ }
79
+ ]
80
+ },
81
+ "package": {
82
+ "contents": [
83
+ {
84
+ "value": "```protobuf\npackage mycompany.myproject.v1;\n```\n**package** namespaces messages to avoid naming conflicts. Maps to language-specific packages (Java package, C++ namespace)."
85
+ }
86
+ ]
87
+ },
88
+ "option": {
89
+ "contents": [
90
+ {
91
+ "value": "```protobuf\noption java_package = \"com.example.proto\";\noption go_package = \"github.com/user/repo/pb\";\noption java_multiple_files = true;\n```\n**option** configures code generation. Language-specific options control package names, output structure, etc."
22
92
  }
23
93
  ]
24
94
  },
25
95
  "field_numbers": {
26
96
  "contents": [
27
97
  {
28
- "value": "```protobuf\nmessage Example {\n string name = 1; // 1-15: one byte (use for frequent fields)\n int32 count = 2; // 16-2047: two bytes\n // 19000-19999: reserved by protobuf\n \n reserved 5, 10 to 12; // reserve deleted field numbers\n reserved \"old_field_name\"; // reserve deleted field names\n}\n```\n**Field numbers** identify fields in the binary format. Use 1-15 for frequently-used fields (more efficient encoding). Never reuse numbers."
98
+ "value": "```protobuf\nmessage Example {\n string name = 1; // 1-15: one byte (frequent fields)\n int32 count = 16; // 16-2047: two bytes\n // 19000-19999: reserved by protobuf\n}\n```\n**Field numbers** identify fields in binary format. Use 1-15 for frequent fields (more efficient). Never reuse numbers."
29
99
  }
30
100
  ]
31
101
  },
32
102
  "well_known_types": {
33
103
  "contents": [
34
104
  {
35
- "value": "```protobuf\nimport \"google/protobuf/timestamp.proto\";\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobuf/empty.proto\";\nimport \"google/protobuf/wrappers.proto\";\nimport \"google/protobuf/any.proto\";\nimport \"google/protobuf/struct.proto\";\n```\n**Well-known types** are pre-defined utility messages. Timestamp for dates, Empty for no-data responses, wrappers for nullable scalars."
105
+ "value": "```protobuf\nimport \"google/protobuf/timestamp.proto\";\nimport \"google/protobuf/duration.proto\";\nimport \"google/protobuf/empty.proto\";\nimport \"google/protobuf/wrappers.proto\";\nimport \"google/protobuf/any.proto\";\nimport \"google/protobuf/struct.proto\";\n```\n**Well-known types** are standard utility messages. Timestamp for dates, Empty for void, wrappers for nullable scalars."
36
106
  }
37
107
  ]
38
108
  },
39
109
  "scalar_types": {
40
110
  "contents": [
41
111
  {
42
- "value": "```protobuf\n// Numeric:\ndouble, float // floating point\nint32, int64 // variable-length signed\nuint32, uint64 // variable-length unsigned\nsint32, sint64 // efficient for negatives\nfixed32, fixed64 // fixed-length unsigned\nsfixed32, sfixed64 // fixed-length signed\n\n// Other:\nbool // true/false\nstring // UTF-8 text\nbytes // raw bytes\n```\n**Scalar types** - choose based on value range and encoding efficiency."
112
+ "value": "```protobuf\n// Numeric: double, float, int32, int64, uint32, uint64\n// sint32, sint64 (efficient for negatives)\n// fixed32, fixed64, sfixed32, sfixed64\n// Other: bool, string, bytes\n```\n**Scalar types** choose based on value range and encoding efficiency."
113
+ }
114
+ ]
115
+ },
116
+ "Timestamp": {
117
+ "contents": [
118
+ {
119
+ "value": "```protobuf\nimport \"google/protobuf/timestamp.proto\";\n\nmessage Event {\n string name = 1;\n google.protobuf.Timestamp created_at = 2;\n}\n```\n**Timestamp** represents a point in time with seconds and nanoseconds since Unix epoch."
120
+ }
121
+ ]
122
+ },
123
+ "Duration": {
124
+ "contents": [
125
+ {
126
+ "value": "```protobuf\nimport \"google/protobuf/duration.proto\";\n\nmessage Config {\n google.protobuf.Duration timeout = 1;\n}\n```\n**Duration** represents a signed length of time with seconds and nanoseconds."
127
+ }
128
+ ]
129
+ },
130
+ "Any": {
131
+ "contents": [
132
+ {
133
+ "value": "```protobuf\nimport \"google/protobuf/any.proto\";\n\nmessage Response {\n google.protobuf.Any data = 1;\n}\n```\n**Any** wraps an arbitrary message with a type URL. Use for polymorphic fields when the type isn't known at compile time."
134
+ }
135
+ ]
136
+ },
137
+ "Empty": {
138
+ "contents": [
139
+ {
140
+ "value": "```protobuf\nimport \"google/protobuf/empty.proto\";\n\nservice MyService {\n rpc Ping(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\n```\n**Empty** represents a message with no fields. Use for RPCs with no meaningful request/response."
141
+ }
142
+ ]
143
+ },
144
+ "Struct": {
145
+ "contents": [
146
+ {
147
+ "value": "```protobuf\nimport \"google/protobuf/struct.proto\";\n\nmessage Config {\n google.protobuf.Struct metadata = 1; // arbitrary JSON-like data\n}\n```\n**Struct** represents untyped JSON-like data. Use when the schema is dynamic or unknown at compile time."
148
+ }
149
+ ]
150
+ },
151
+ "FieldMask": {
152
+ "contents": [
153
+ {
154
+ "value": "```protobuf\nimport \"google/protobuf/field_mask.proto\";\n\nmessage UpdateUserRequest {\n User user = 1;\n google.protobuf.FieldMask update_mask = 2;\n}\n```\n**FieldMask** specifies which fields to update in a partial update request. Standard pattern for PATCH operations."
155
+ }
156
+ ]
157
+ },
158
+ "Wrapper": {
159
+ "contents": [
160
+ {
161
+ "value": "```protobuf\nimport \"google/protobuf/wrappers.proto\";\n\nmessage Config {\n google.protobuf.Int32Value max_retries = 1;\n google.protobuf.StringValue label = 2;\n}\n```\n**Wrapper types** (Int32Value, StringValue, etc.) provide nullable scalars. Absent wrapper = null, present = has value."
162
+ }
163
+ ]
164
+ },
165
+ "double": {
166
+ "contents": [
167
+ {
168
+ "value": "```protobuf\nmessage Point {\n double latitude = 1;\n double longitude = 2;\n}\n```\n**double** is a 64-bit IEEE 754 floating point number. Use for precise decimal values."
169
+ }
170
+ ]
171
+ },
172
+ "float": {
173
+ "contents": [
174
+ {
175
+ "value": "```protobuf\nmessage Sensor {\n float temperature = 1;\n}\n```\n**float** is a 32-bit IEEE 754 floating point. Less precise than double but uses less space."
176
+ }
177
+ ]
178
+ },
179
+ "int32": {
180
+ "contents": [
181
+ {
182
+ "value": "```protobuf\nmessage Item {\n int32 quantity = 1;\n}\n```\n**int32** is a variable-length signed 32-bit integer. Inefficient for negative numbers — use `sint32` for those."
183
+ }
184
+ ]
185
+ },
186
+ "int64": {
187
+ "contents": [
188
+ {
189
+ "value": "```protobuf\nmessage File {\n int64 size_bytes = 1;\n}\n```\n**int64** is a variable-length signed 64-bit integer. Use for large values like file sizes or timestamps."
190
+ }
191
+ ]
192
+ },
193
+ "uint32": {
194
+ "contents": [
195
+ {
196
+ "value": "```protobuf\nmessage Config {\n uint32 port = 1;\n}\n```\n**uint32** is a variable-length unsigned 32-bit integer. Use for values that are always non-negative."
197
+ }
198
+ ]
199
+ },
200
+ "bool": {
201
+ "contents": [
202
+ {
203
+ "value": "```protobuf\nmessage Feature {\n bool enabled = 1;\n}\n```\n**bool** represents true/false. Default value is false in proto3."
204
+ }
205
+ ]
206
+ },
207
+ "string": {
208
+ "contents": [
209
+ {
210
+ "value": "```protobuf\nmessage User {\n string name = 1;\n string email = 2;\n}\n```\n**string** must be valid UTF-8 encoded text. Use `bytes` for arbitrary binary data."
211
+ }
212
+ ]
213
+ },
214
+ "bytes": {
215
+ "contents": [
216
+ {
217
+ "value": "```protobuf\nmessage File {\n bytes content = 1;\n}\n```\n**bytes** holds arbitrary binary data. No UTF-8 requirement. Use for file contents, hashes, etc."
218
+ }
219
+ ]
220
+ },
221
+ "stream": {
222
+ "contents": [
223
+ {
224
+ "value": "```protobuf\nservice Chat {\n rpc Send(stream Message) returns (stream Message);\n}\n```\n**stream** enables streaming in RPCs. Can be on request (client streaming), response (server streaming), or both (bidirectional)."
225
+ }
226
+ ]
227
+ },
228
+ "extend": {
229
+ "contents": [
230
+ {
231
+ "value": "```protobuf\n// Proto2 only:\nextend google.protobuf.MethodOptions {\n optional string auth_level = 50000;\n}\n```\n**extend** adds custom fields to existing messages (proto2). In proto3, use custom options with extensions."
232
+ }
233
+ ]
234
+ },
235
+ "deprecated": {
236
+ "contents": [
237
+ {
238
+ "value": "```protobuf\nmessage User {\n string name = 1;\n string old_email = 2 [deprecated = true];\n string email = 3;\n}\n```\n**[deprecated = true]** marks a field as deprecated. Generates deprecation warnings in client code."
239
+ }
240
+ ]
241
+ },
242
+ "json_name": {
243
+ "contents": [
244
+ {
245
+ "value": "```protobuf\nmessage User {\n string user_name = 1 [json_name = \"userName\"];\n}\n```\n**[json_name]** overrides the JSON field name. By default, proto field names use camelCase in JSON."
246
+ }
247
+ ]
248
+ },
249
+ "default_values": {
250
+ "contents": [
251
+ {
252
+ "value": "```protobuf\n// Proto3 default values:\n// string: \"\" int32: 0 bool: false\n// enum: first value (0)\n// message: null repeated: empty list\n// bytes: empty bytes\n```\n**Default values** in proto3 are always zero/empty. There's no way to distinguish \"not set\" from default without `optional`."
253
+ }
254
+ ]
255
+ },
256
+ "nested_message": {
257
+ "contents": [
258
+ {
259
+ "value": "```protobuf\nmessage Order {\n message LineItem {\n string product = 1;\n int32 quantity = 2;\n }\n repeated LineItem items = 1;\n}\n```\n**Nested messages** are defined inside another message. Referenced as `Order.LineItem` from outside."
260
+ }
261
+ ]
262
+ },
263
+ "encoding": {
264
+ "contents": [
265
+ {
266
+ "value": "```protobuf\n// Wire types:\n// 0: Varint (int32, int64, uint32, uint64, sint32, sint64, bool, enum)\n// 1: 64-bit (fixed64, sfixed64, double)\n// 2: Length-delimited (string, bytes, messages, repeated)\n// 5: 32-bit (fixed32, sfixed32, float)\n```\n**Wire format** uses 5 wire types for binary encoding. Varint encoding makes small numbers compact."
267
+ }
268
+ ]
269
+ },
270
+ "sint32": {
271
+ "contents": [
272
+ {
273
+ "value": "```protobuf\nmessage Delta {\n sint32 offset = 1;\n}\n```\n**sint32** uses ZigZag encoding, making negative values much more compact than `int32`. Use when values are frequently negative."
274
+ }
275
+ ]
276
+ },
277
+ "fixed64": {
278
+ "contents": [
279
+ {
280
+ "value": "```protobuf\nmessage Hash {\n fixed64 value = 1;\n}\n```\n**fixed64** is always 8 bytes. More efficient than `int64` when values are frequently > 2^56."
281
+ }
282
+ ]
283
+ },
284
+ "option_custom": {
285
+ "contents": [
286
+ {
287
+ "value": "```protobuf\nimport \"google/protobuf/descriptor.proto\";\n\nextend google.protobuf.FieldOptions {\n optional bool sensitive = 50000;\n}\n\nmessage User {\n string password = 1 [(sensitive) = true];\n}\n```\n**Custom options** extend built-in options for fields, messages, services, etc. Use high field numbers (50000+)."
43
288
  }
44
289
  ]
45
290
  }