@voxgig/sdkgen 1.3.14 → 1.3.17

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 (398) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/action.js.map +1 -1
  3. package/dist/action/feature.js.map +1 -1
  4. package/dist/action/target.js.map +1 -1
  5. package/dist/cmp/AgentGuide.js.map +1 -1
  6. package/dist/cmp/AgentGuideContent.js.map +1 -1
  7. package/dist/cmp/AgentGuideFeature.js.map +1 -1
  8. package/dist/cmp/AgentGuideTop.js.map +1 -1
  9. package/dist/cmp/Changelog.js.map +1 -1
  10. package/dist/cmp/Deploy.js.map +1 -1
  11. package/dist/cmp/Entity.js.map +1 -1
  12. package/dist/cmp/Feature.js.map +1 -1
  13. package/dist/cmp/FeatureHook.js.map +1 -1
  14. package/dist/cmp/License.js.map +1 -1
  15. package/dist/cmp/Main.js.map +1 -1
  16. package/dist/cmp/Readme.js.map +1 -1
  17. package/dist/cmp/ReadmeEntity.js.map +1 -1
  18. package/dist/cmp/ReadmeErrors.js +1 -1
  19. package/dist/cmp/ReadmeErrors.js.map +1 -1
  20. package/dist/cmp/ReadmeExplanation.js +2 -2
  21. package/dist/cmp/ReadmeExplanation.js.map +1 -1
  22. package/dist/cmp/ReadmeHowto.js.map +1 -1
  23. package/dist/cmp/ReadmeInstall.js.map +1 -1
  24. package/dist/cmp/ReadmeIntro.js.map +1 -1
  25. package/dist/cmp/ReadmeModel.js.map +1 -1
  26. package/dist/cmp/ReadmeOptions.js.map +1 -1
  27. package/dist/cmp/ReadmeQuick.js.map +1 -1
  28. package/dist/cmp/ReadmeRef.js.map +1 -1
  29. package/dist/cmp/ReadmeTop.js +1 -1
  30. package/dist/cmp/ReadmeTop.js.map +1 -1
  31. package/dist/cmp/Security.js.map +1 -1
  32. package/dist/cmp/Test.js.map +1 -1
  33. package/dist/helpers/buildIdNames.js.map +1 -1
  34. package/dist/helpers/canonType.d.ts +3 -2
  35. package/dist/helpers/canonType.js +107 -24
  36. package/dist/helpers/canonType.js.map +1 -1
  37. package/dist/helpers/collectDeps.js.map +1 -1
  38. package/dist/helpers/getMatchEntries.js.map +1 -1
  39. package/dist/helpers/naming.d.ts +5 -1
  40. package/dist/helpers/naming.js +37 -0
  41. package/dist/helpers/naming.js.map +1 -1
  42. package/dist/helpers/opExample.d.ts +1 -1
  43. package/dist/helpers/opExample.js +37 -20
  44. package/dist/helpers/opExample.js.map +1 -1
  45. package/dist/helpers/opShape.d.ts +3 -1
  46. package/dist/helpers/opShape.js +91 -3
  47. package/dist/helpers/opShape.js.map +1 -1
  48. package/dist/helpers/packageMeta.js.map +1 -1
  49. package/dist/sdkgen.d.ts +3 -3
  50. package/dist/sdkgen.js +7 -1
  51. package/dist/sdkgen.js.map +1 -1
  52. package/dist/tsconfig.tsbuildinfo +1 -1
  53. package/dist/types.js.map +1 -1
  54. package/dist/utility.js.map +1 -1
  55. package/package.json +7 -6
  56. package/project/.sdk/model/target/haskell.aontu +6 -3
  57. package/project/.sdk/model/target/zig.aontu +12 -2
  58. package/project/.sdk/src/cmp/c/Config_c.ts +16 -4
  59. package/project/.sdk/src/cmp/c/EntityTypes_c.ts +168 -0
  60. package/project/.sdk/src/cmp/c/Main_c.ts +4 -0
  61. package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +192 -0
  62. package/project/.sdk/src/cmp/c/ReadmeExamplesTest_c.ts +152 -0
  63. package/project/.sdk/src/cmp/c/ReadmeExplanation_c.ts +55 -0
  64. package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +168 -0
  65. package/project/.sdk/src/cmp/c/ReadmeInstall_c.ts +52 -0
  66. package/project/.sdk/src/cmp/c/ReadmeIntro_c.ts +67 -0
  67. package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +151 -0
  68. package/project/.sdk/src/cmp/c/ReadmeOptions_c.ts +65 -0
  69. package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +225 -0
  70. package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +398 -0
  71. package/project/.sdk/src/cmp/c/ReadmeTopHowto_c.ts +24 -0
  72. package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +104 -0
  73. package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +86 -0
  74. package/project/.sdk/src/cmp/c/TestEntity_c.ts +10 -0
  75. package/project/.sdk/src/cmp/c/Test_c.ts +4 -0
  76. package/project/.sdk/src/cmp/c/utility_c.ts +8 -2
  77. package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +182 -0
  78. package/project/.sdk/src/cmp/clojure/ReadmeExamplesTest_clojure.ts +54 -0
  79. package/project/.sdk/src/cmp/clojure/ReadmeExplanation_clojure.ts +44 -0
  80. package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +144 -0
  81. package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +51 -0
  82. package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +66 -0
  83. package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +156 -0
  84. package/project/.sdk/src/cmp/clojure/ReadmeOptions_clojure.ts +61 -0
  85. package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +210 -0
  86. package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +409 -0
  87. package/project/.sdk/src/cmp/clojure/ReadmeTopHowto_clojure.ts +24 -0
  88. package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +98 -0
  89. package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +78 -0
  90. package/project/.sdk/src/cmp/clojure/TestDirect_clojure.ts +58 -0
  91. package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +79 -0
  92. package/project/.sdk/src/cmp/clojure/Test_clojure.ts +21 -65
  93. package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +174 -0
  94. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +5 -0
  95. package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +170 -0
  96. package/project/.sdk/src/cmp/cpp/ReadmeExplanation_cpp.ts +45 -0
  97. package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +139 -0
  98. package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +42 -0
  99. package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +69 -0
  100. package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +155 -0
  101. package/project/.sdk/src/cmp/cpp/ReadmeOptions_cpp.ts +62 -0
  102. package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +234 -0
  103. package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +387 -0
  104. package/project/.sdk/src/cmp/cpp/ReadmeTopHowto_cpp.ts +24 -0
  105. package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +95 -0
  106. package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +70 -0
  107. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +5 -1
  108. package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +196 -0
  109. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +6 -0
  110. package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +174 -0
  111. package/project/.sdk/src/cmp/csharp/ReadmeExamplesTest_csharp.ts +198 -0
  112. package/project/.sdk/src/cmp/csharp/ReadmeExplanation_csharp.ts +42 -0
  113. package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +168 -0
  114. package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +41 -0
  115. package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +65 -0
  116. package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +148 -0
  117. package/project/.sdk/src/cmp/csharp/ReadmeOptions_csharp.ts +60 -0
  118. package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +219 -0
  119. package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +390 -0
  120. package/project/.sdk/src/cmp/csharp/ReadmeTopHowto_csharp.ts +25 -0
  121. package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +92 -0
  122. package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +77 -0
  123. package/project/.sdk/src/cmp/csharp/Test_csharp.ts +4 -0
  124. package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +43 -29
  125. package/project/.sdk/src/cmp/dart/Entity_dart.ts +8 -0
  126. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +166 -0
  127. package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +238 -0
  128. package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +53 -0
  129. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +151 -0
  130. package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +59 -0
  131. package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +65 -0
  132. package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +151 -0
  133. package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +63 -0
  134. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +214 -0
  135. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +381 -0
  136. package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +24 -0
  137. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +95 -0
  138. package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +78 -0
  139. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +52 -0
  140. package/project/.sdk/src/cmp/dart/Test_dart.ts +6 -0
  141. package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +1 -3
  142. package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +1 -40
  143. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +3 -3
  144. package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +165 -0
  145. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +4 -0
  146. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
  147. package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +163 -0
  148. package/project/.sdk/src/cmp/elixir/ReadmeExamplesTest_elixir.ts +126 -0
  149. package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +55 -0
  150. package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +149 -0
  151. package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +67 -0
  152. package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +66 -0
  153. package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +150 -0
  154. package/project/.sdk/src/cmp/elixir/ReadmeOptions_elixir.ts +62 -0
  155. package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +198 -0
  156. package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +333 -0
  157. package/project/.sdk/src/cmp/elixir/ReadmeTopHowto_elixir.ts +26 -0
  158. package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +79 -0
  159. package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +68 -0
  160. package/project/.sdk/src/cmp/elixir/Test_elixir.ts +4 -0
  161. package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +4 -0
  162. package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +4 -0
  163. package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +4 -0
  164. package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -0
  165. package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +4 -0
  166. package/project/.sdk/src/cmp/elixir/utility_elixir.ts +32 -0
  167. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +12 -3
  168. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +6 -1
  169. package/project/.sdk/src/cmp/go/TestEntity_go.ts +10 -3
  170. package/project/.sdk/src/cmp/go/utility_go.ts +3 -2
  171. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +240 -43
  172. package/project/.sdk/src/cmp/go-cli/fragment/main.fragment.go +27 -5
  173. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +191 -30
  174. package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +181 -0
  175. package/project/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +125 -0
  176. package/project/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +48 -0
  177. package/project/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +168 -0
  178. package/project/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +51 -0
  179. package/project/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +67 -0
  180. package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +160 -0
  181. package/project/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +74 -0
  182. package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +237 -0
  183. package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +405 -0
  184. package/project/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +31 -0
  185. package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +104 -0
  186. package/project/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +80 -0
  187. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +27 -2
  188. package/project/.sdk/src/cmp/java/EntityTypes_java.ts +207 -0
  189. package/project/.sdk/src/cmp/java/Main_java.ts +6 -0
  190. package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +175 -0
  191. package/project/.sdk/src/cmp/java/ReadmeExamplesTest_java.ts +186 -0
  192. package/project/.sdk/src/cmp/java/ReadmeExplanation_java.ts +46 -0
  193. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +156 -0
  194. package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +52 -0
  195. package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +66 -0
  196. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +150 -0
  197. package/project/.sdk/src/cmp/java/ReadmeOptions_java.ts +61 -0
  198. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +230 -0
  199. package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +388 -0
  200. package/project/.sdk/src/cmp/java/ReadmeTopHowto_java.ts +23 -0
  201. package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +103 -0
  202. package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +77 -0
  203. package/project/.sdk/src/cmp/java/Test_java.ts +4 -0
  204. package/project/.sdk/src/cmp/js/EntityTypes_js.ts +25 -8
  205. package/project/.sdk/src/cmp/js/MainEntity_js.ts +4 -2
  206. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +4 -4
  207. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +13 -4
  208. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +4 -4
  209. package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +5 -5
  210. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +4 -4
  211. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +4 -4
  212. package/project/.sdk/src/cmp/js/TestDirect_js.ts +6 -5
  213. package/project/.sdk/src/cmp/js/TestEntity_js.ts +7 -2
  214. package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +0 -31
  215. package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +201 -0
  216. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +6 -0
  217. package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +175 -0
  218. package/project/.sdk/src/cmp/kotlin/ReadmeExamplesTest_kotlin.ts +173 -0
  219. package/project/.sdk/src/cmp/kotlin/ReadmeExplanation_kotlin.ts +47 -0
  220. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +154 -0
  221. package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +50 -0
  222. package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +66 -0
  223. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +150 -0
  224. package/project/.sdk/src/cmp/kotlin/ReadmeOptions_kotlin.ts +61 -0
  225. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +230 -0
  226. package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +387 -0
  227. package/project/.sdk/src/cmp/kotlin/ReadmeTopHowto_kotlin.ts +23 -0
  228. package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +104 -0
  229. package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +77 -0
  230. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +4 -0
  231. package/project/.sdk/src/cmp/lua/Config_lua.ts +1 -1
  232. package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +19 -5
  233. package/project/.sdk/src/cmp/lua/Main_lua.ts +14 -2
  234. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +2 -2
  235. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +6 -1
  236. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +3 -3
  237. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -2
  238. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +2 -2
  239. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +7 -2
  240. package/project/.sdk/src/cmp/lua/Test_lua.ts +1 -1
  241. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +2 -0
  242. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +180 -0
  243. package/project/.sdk/src/cmp/ocaml/ReadmeExamplesTest_ocaml.ts +111 -0
  244. package/project/.sdk/src/cmp/ocaml/ReadmeExplanation_ocaml.ts +46 -0
  245. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +147 -0
  246. package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +44 -0
  247. package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +68 -0
  248. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +155 -0
  249. package/project/.sdk/src/cmp/ocaml/ReadmeOptions_ocaml.ts +59 -0
  250. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +205 -0
  251. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +402 -0
  252. package/project/.sdk/src/cmp/ocaml/ReadmeTopHowto_ocaml.ts +25 -0
  253. package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +86 -0
  254. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +79 -0
  255. package/project/.sdk/src/cmp/ocaml/Test_ocaml.ts +4 -0
  256. package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +181 -0
  257. package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +354 -0
  258. package/project/.sdk/src/cmp/perl/ReadmeExplanation_perl.ts +43 -0
  259. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +149 -0
  260. package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +47 -0
  261. package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +66 -0
  262. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +150 -0
  263. package/project/.sdk/src/cmp/perl/ReadmeOptions_perl.ts +59 -0
  264. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +216 -0
  265. package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +399 -0
  266. package/project/.sdk/src/cmp/perl/ReadmeTopHowto_perl.ts +24 -0
  267. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +91 -0
  268. package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +83 -0
  269. package/project/.sdk/src/cmp/perl/Test_perl.ts +4 -0
  270. package/project/.sdk/src/cmp/php/EntityTypes_php.ts +23 -6
  271. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +6 -1
  272. package/project/.sdk/src/cmp/php/TestEntity_php.ts +7 -2
  273. package/project/.sdk/src/cmp/py/EntityTypes_py.ts +32 -7
  274. package/project/.sdk/src/cmp/py/Entity_py.ts +2 -10
  275. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +2 -2
  276. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +8 -3
  277. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +3 -3
  278. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -2
  279. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +2 -2
  280. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +2 -2
  281. package/project/.sdk/src/cmp/py/TestEntity_py.ts +7 -2
  282. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +19 -5
  283. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +2 -2
  284. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +8 -3
  285. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +3 -3
  286. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -2
  287. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
  288. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +2 -2
  289. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +7 -2
  290. package/project/.sdk/src/cmp/rust/EntityBase_rust.ts +4 -0
  291. package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +152 -0
  292. package/project/.sdk/src/cmp/rust/Entity_rust.ts +1 -1
  293. package/project/.sdk/src/cmp/rust/Main_rust.ts +5 -0
  294. package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +163 -0
  295. package/project/.sdk/src/cmp/rust/ReadmeExamplesTest_rust.ts +132 -0
  296. package/project/.sdk/src/cmp/rust/ReadmeExplanation_rust.ts +44 -0
  297. package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +142 -0
  298. package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +49 -0
  299. package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +66 -0
  300. package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +153 -0
  301. package/project/.sdk/src/cmp/rust/ReadmeOptions_rust.ts +60 -0
  302. package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +212 -0
  303. package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +384 -0
  304. package/project/.sdk/src/cmp/rust/ReadmeTopHowto_rust.ts +24 -0
  305. package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +95 -0
  306. package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +81 -0
  307. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +10 -0
  308. package/project/.sdk/src/cmp/rust/Test_rust.ts +4 -0
  309. package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +202 -0
  310. package/project/.sdk/src/cmp/scala/Main_scala.ts +6 -0
  311. package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +175 -0
  312. package/project/.sdk/src/cmp/scala/ReadmeExamplesTest_scala.ts +163 -0
  313. package/project/.sdk/src/cmp/scala/ReadmeExplanation_scala.ts +49 -0
  314. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +155 -0
  315. package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +58 -0
  316. package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +66 -0
  317. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +150 -0
  318. package/project/.sdk/src/cmp/scala/ReadmeOptions_scala.ts +61 -0
  319. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +230 -0
  320. package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +388 -0
  321. package/project/.sdk/src/cmp/scala/ReadmeTopHowto_scala.ts +23 -0
  322. package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +104 -0
  323. package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +77 -0
  324. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +38 -10
  325. package/project/.sdk/src/cmp/scala/Test_scala.ts +8 -0
  326. package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +152 -0
  327. package/project/.sdk/src/cmp/swift/Main_swift.ts +5 -0
  328. package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +176 -0
  329. package/project/.sdk/src/cmp/swift/ReadmeExamplesTest_swift.ts +170 -0
  330. package/project/.sdk/src/cmp/swift/ReadmeExplanation_swift.ts +49 -0
  331. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +159 -0
  332. package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +58 -0
  333. package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +64 -0
  334. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +149 -0
  335. package/project/.sdk/src/cmp/swift/ReadmeOptions_swift.ts +62 -0
  336. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +232 -0
  337. package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +387 -0
  338. package/project/.sdk/src/cmp/swift/ReadmeTopHowto_swift.ts +24 -0
  339. package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +105 -0
  340. package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +77 -0
  341. package/project/.sdk/src/cmp/swift/Test_swift.ts +4 -0
  342. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +19 -5
  343. package/project/.sdk/src/cmp/ts/MainEntity_ts.ts +4 -2
  344. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +4 -4
  345. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +14 -4
  346. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +29 -11
  347. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +5 -5
  348. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +4 -4
  349. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +4 -4
  350. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +13 -11
  351. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +18 -2
  352. package/project/.sdk/src/cmp/zig/Config_zig.ts +22 -4
  353. package/project/.sdk/src/cmp/zig/Entity_zig.ts +1 -1
  354. package/project/.sdk/src/cmp/zig/Main_zig.ts +10 -4
  355. package/project/.sdk/src/cmp/zig/Package_zig.ts +53 -0
  356. package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +188 -0
  357. package/project/.sdk/src/cmp/zig/ReadmeExamplesTest_zig.ts +58 -0
  358. package/project/.sdk/src/cmp/zig/ReadmeExplanation_zig.ts +45 -0
  359. package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +143 -0
  360. package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +54 -0
  361. package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +66 -0
  362. package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +152 -0
  363. package/project/.sdk/src/cmp/zig/ReadmeOptions_zig.ts +60 -0
  364. package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +211 -0
  365. package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +400 -0
  366. package/project/.sdk/src/cmp/zig/ReadmeTopHowto_zig.ts +24 -0
  367. package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +96 -0
  368. package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +82 -0
  369. package/project/.sdk/src/cmp/zig/TestDirect_zig.ts +66 -0
  370. package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +79 -0
  371. package/project/.sdk/src/cmp/zig/Test_zig.ts +17 -61
  372. package/project/.sdk/tm/clojure/src/voxgig/struct.clj +1 -1
  373. package/project/.sdk/tm/cpp/test/feature_test.cpp +19 -0
  374. package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +4 -1
  375. package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +7 -1
  376. package/project/.sdk/tm/elixir/lib/utility/struct/voxgig_struct.ex +1 -1
  377. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +7 -1
  378. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +3 -1
  379. package/project/.sdk/tm/haskell/test/Harness.hs +8 -3
  380. package/project/.sdk/tm/js/Makefile +1 -1
  381. package/project/.sdk/tm/js/jsconfig.json +12 -0
  382. package/project/.sdk/tm/ocaml/Makefile +5 -1
  383. package/project/.sdk/tm/php/utility/struct/Struct.php +1 -1
  384. package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +1 -1
  385. package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +1 -1
  386. package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +8 -59
  387. package/project/.sdk/tm/ts/Makefile +1 -1
  388. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -1
  389. package/src/cmp/ReadmeErrors.ts +2 -2
  390. package/src/cmp/ReadmeExplanation.ts +3 -3
  391. package/src/cmp/ReadmeTop.ts +2 -2
  392. package/src/helpers/canonType.ts +116 -25
  393. package/src/helpers/naming.ts +47 -0
  394. package/src/helpers/opExample.ts +43 -20
  395. package/src/helpers/opShape.ts +102 -3
  396. package/src/sdkgen.ts +8 -2
  397. package/src/tsconfig.json +2 -0
  398. package/project/.sdk/tm/zig/build.zig.zon +0 -11
@@ -0,0 +1,186 @@
1
+
2
+ import { cmp, File, Content } from '@voxgig/sdkgen'
3
+
4
+ import { javaPackage } from './utility_java'
5
+
6
+
7
+ // Emits test/ReadmeExamplesTest.java — a JUnit PRESENCE + STRUCTURE gate over
8
+ // every ```java fenced block in the repository ROOT README.md, the
9
+ // per-language java/README.md, AND the per-language java/REFERENCE.md.
10
+ //
11
+ // SCOPE NOTE (deliberate, documented): the Python/TS/Go equivalents EXECUTE and
12
+ // type-check every documented block. That is infeasible here — the generated
13
+ // Java SDK compiles with plain `javac`/Maven only (no in-process Java compiler
14
+ // dependency wired into the test classpath), so a test cannot compile-and-run
15
+ // arbitrary doc snippets at test time. This gate therefore guarantees the
16
+ // weaker-but-real invariant that keeps the docs honest as the generator evolves:
17
+ // 1. every doc exists and contains at least one ```java block (nothing was
18
+ // dropped);
19
+ // 2. every ```java block is structurally well-formed — its braces,
20
+ // parentheses and brackets balance (catches a truncated or malformed
21
+ // generated snippet).
22
+ // A per-doc summary line makes the coverage visible in the test output.
23
+ //
24
+ // The emitted Java is written WITHOUT literal backticks (the fence marker is
25
+ // built at runtime as String.valueOf((char) 96).repeat(3)) so this TS template
26
+ // literal stays clean.
27
+ const ReadmeExamplesTest = cmp(function ReadmeExamplesTest(props: any) {
28
+ const { target, ctx$: { model } } = props
29
+
30
+ const Name = model.const.Name
31
+ const javapackage = props.javapackage || javaPackage(model)
32
+
33
+ File({ name: 'ReadmeExamplesTest.' + target.ext }, () => {
34
+ Content(`package ${javapackage}.sdktest;
35
+
36
+ // ${Name} SDK — documentation java-examples PRESENCE + STRUCTURE gate.
37
+ //
38
+ // GUARANTEE (see ReadmeExamplesTest_java.ts for why this is a structure gate
39
+ // and not an execute gate): every java example in the docs is accounted for.
40
+ // This JUnit class is a completeness gate over every ${'```'}java fenced code
41
+ // block in three documents:
42
+ // - the repository ROOT README.md (one directory above this module),
43
+ // - the per-language java/README.md,
44
+ // - the per-language java/REFERENCE.md.
45
+ //
46
+ // Checks, PER DOCUMENT:
47
+ // 1. PRESENCE: the doc exists and holds at least one java block.
48
+ // 2. STRUCTURE: every java block's braces / parens / brackets balance, so a
49
+ // truncated or malformed generated snippet fails loudly.
50
+ //
51
+ // GENERATED by @voxgig/sdkgen — do not edit by hand.
52
+
53
+ import static org.junit.jupiter.api.Assertions.assertTrue;
54
+
55
+ import java.io.IOException;
56
+ import java.nio.file.Files;
57
+ import java.nio.file.Path;
58
+ import java.util.ArrayDeque;
59
+ import java.util.ArrayList;
60
+ import java.util.Deque;
61
+ import java.util.List;
62
+ import java.util.Map;
63
+
64
+ import org.junit.jupiter.api.Test;
65
+
66
+ public class ReadmeExamplesTest {
67
+
68
+ // The three documents to scan, resolved relative to the Maven module
69
+ // directory (the working directory when surefire runs the tests). Each row
70
+ // is {label, relative path}.
71
+ private static String[][] docs() {
72
+ return new String[][] {
73
+ { "root README", ".." + java.io.File.separator + "README.md" },
74
+ { "java README.md", "README.md" },
75
+ { "java REFERENCE.md", "REFERENCE.md" },
76
+ };
77
+ }
78
+
79
+ // Extract every java fenced block. Split on the triple-backtick fence:
80
+ // odd-indexed segments are the inside of a fenced block (info string on the
81
+ // first line, then the code). Only blocks whose info string is exactly
82
+ // "java" are returned.
83
+ private static List<String> javaBlocks(String text) {
84
+ String fence = String.valueOf((char) 96).repeat(3);
85
+ String[] parts = text.split(java.util.regex.Pattern.quote(fence), -1);
86
+ List<String> blocks = new ArrayList<>();
87
+ for (int i = 1; i < parts.length; i += 2) {
88
+ String seg = parts[i];
89
+ int nl = seg.indexOf('\\n');
90
+ String info = (nl < 0 ? seg : seg.substring(0, nl)).trim();
91
+ if (info.equals("java")) {
92
+ blocks.add(nl < 0 ? "" : seg.substring(nl + 1));
93
+ }
94
+ }
95
+ return blocks;
96
+ }
97
+
98
+ private static String readDoc(Path path, String label) {
99
+ assertTrue(Files.exists(path), label + " not found: " + path);
100
+ try {
101
+ return Files.readString(path);
102
+ }
103
+ catch (IOException e) {
104
+ throw new RuntimeException("failed to read " + label + ": " + path, e);
105
+ }
106
+ }
107
+
108
+ // True when every open/close delimiter balances (ignores the subtlety of
109
+ // delimiters inside string literals — a generated snippet never nests an
110
+ // unbalanced delimiter in a string, and this catches truncation).
111
+ private static boolean balanced(String block) {
112
+ Deque<Character> stack = new ArrayDeque<>();
113
+ Map<Character, Character> pairs =
114
+ Map.of('(', ')', '[', ']', '{', '}');
115
+ for (int i = 0; i < block.length(); i++) {
116
+ char ch = block.charAt(i);
117
+ if (pairs.containsKey(ch)) {
118
+ stack.push(pairs.get(ch));
119
+ }
120
+ else if (ch == ')' || ch == ']' || ch == '}') {
121
+ if (stack.isEmpty() || stack.pop() != ch) {
122
+ return false;
123
+ }
124
+ }
125
+ }
126
+ return stack.isEmpty();
127
+ }
128
+
129
+ @Test
130
+ public void rootReadmeHasJavaBlocks() {
131
+ String[] doc = docs()[0];
132
+ List<String> blocks = javaBlocks(readDoc(Path.of(doc[1]), doc[0]));
133
+ assertTrue(blocks.size() > 0,
134
+ "expected at least one java block in " + doc[0]);
135
+ }
136
+
137
+ @Test
138
+ public void localReadmeHasJavaBlocks() {
139
+ String[] doc = docs()[1];
140
+ List<String> blocks = javaBlocks(readDoc(Path.of(doc[1]), doc[0]));
141
+ assertTrue(blocks.size() > 0,
142
+ "expected at least one java block in " + doc[0]);
143
+ }
144
+
145
+ @Test
146
+ public void referenceHasJavaBlocks() {
147
+ String[] doc = docs()[2];
148
+ List<String> blocks = javaBlocks(readDoc(Path.of(doc[1]), doc[0]));
149
+ assertTrue(blocks.size() > 0,
150
+ "expected at least one java block in " + doc[0]);
151
+ }
152
+
153
+ @Test
154
+ public void allJavaBlocksAreStructurallyBalanced() {
155
+ List<String> failures = new ArrayList<>();
156
+ for (String[] doc : docs()) {
157
+ Path path = Path.of(doc[1]);
158
+ if (!Files.exists(path)) {
159
+ continue;
160
+ }
161
+ List<String> blocks = javaBlocks(readDoc(path, doc[0]));
162
+ int balancedCount = 0;
163
+ for (int i = 0; i < blocks.size(); i++) {
164
+ if (balanced(blocks.get(i))) {
165
+ balancedCount++;
166
+ }
167
+ else {
168
+ failures.add(doc[0] + " java block #" + i +
169
+ " has unbalanced delimiters:\\n\\n" + blocks.get(i));
170
+ }
171
+ }
172
+ System.out.println(
173
+ "[readme-examples] " + doc[0] + " java blocks: total=" +
174
+ blocks.size() + " balanced=" + balancedCount);
175
+ }
176
+ assertTrue(failures.isEmpty(), String.join("\\n\\n", failures));
177
+ }
178
+ }
179
+ `)
180
+ })
181
+ })
182
+
183
+
184
+ export {
185
+ ReadmeExamplesTest
186
+ }
@@ -0,0 +1,46 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+ import { javaPackage } from './utility_java'
5
+
6
+
7
+ const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
8
+ const { target, ctx$: { model } } = props
9
+
10
+ const pkg = javaPackage(model)
11
+
12
+ Content(`### Data as maps
13
+
14
+ The Java SDK uses a loose object model — \`Map<String, Object>\` throughout —
15
+ rather than a bespoke typed class per endpoint. This mirrors the dynamic
16
+ nature of the API and keeps the SDK flexible: no regeneration is needed when
17
+ the API schema changes.
18
+
19
+ Use \`Helpers.toMapAny(value)\` to safely coerce a value to a
20
+ \`Map<String, Object>\`. A \`${model.const.Name}Types.java\` module of reference
21
+ \`record\` types is also generated for editor documentation.
22
+
23
+ ### Project structure
24
+
25
+ \`\`\`
26
+ java/
27
+ ├── pom.xml -- Maven project (compiles core/, utility/, feature/, entity/)
28
+ ├── core/ -- Main SDK client, config, entity base, error type
29
+ ├── entity/ -- Entity implementations
30
+ ├── feature/ -- Built-in features (Base, Test, Log, ...)
31
+ ├── utility/ -- Utility functions and the vendored struct library
32
+ └── test/ -- JUnit test suites
33
+ \`\`\`
34
+
35
+ The main client class (\`${model.const.Name}SDK\`, package \`${pkg}.core\`)
36
+ exposes the entity accessors. Reference entity or utility types directly only
37
+ when needed.
38
+
39
+ `)
40
+
41
+ })
42
+
43
+
44
+ export {
45
+ ReadmeExplanation
46
+ }
@@ -0,0 +1,156 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { javaVarName } from './utility_java'
10
+
11
+
12
+ // A type-correct Java literal for a field's canonical type.
13
+ function javaLit(type: any): string {
14
+ const k = canonKey(type)
15
+ if ('INTEGER' === k) return '1L'
16
+ if ('NUMBER' === k) return '1.0'
17
+ if ('BOOLEAN' === k) return 'true'
18
+ if ('ARRAY' === k) return 'List.of()'
19
+ if ('OBJECT' === k) return 'Map.of()'
20
+ return '"example"'
21
+ }
22
+
23
+
24
+ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
25
+ const { target, ctx$: { model } } = props
26
+
27
+ const SDK = model.const.Name + 'SDK'
28
+
29
+ const entity = getModelPath(model, `main.${KIT}.entity`)
30
+ // Pick an entity with a real op (prefer a read op). primaryOp is null only
31
+ // when NO entity exposes any op (a direct()-only SDK).
32
+ const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
33
+ const eVar = exampleEntity ? javaVarName(exampleEntity.name) : 'entity'
34
+ const accessor = exampleEntity ? javaVarName(exampleEntity.name) : 'entity'
35
+ // Model-driven id key: null when the entity has no id-like field, so a
36
+ // match op takes an empty match.
37
+ const idF = exampleEntity ? entityIdField(exampleEntity) : null
38
+ const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
39
+ let testArg = 'null'
40
+ if (exampleEntity && isMatchOp) {
41
+ testArg = idF ? `Map.of("${idF}", "test01")` : 'null'
42
+ } else if (exampleEntity && ('create' === primaryOp || 'update' === primaryOp)) {
43
+ const items = opRequestShape(exampleEntity, primaryOp).items
44
+ .filter((it: any) => it.name !== idF && it.name !== 'id')
45
+ const required = items.filter((it: any) => !it.optional)
46
+ const chosen = required.length ? required : items.slice(0, 3)
47
+ testArg = `Map.of(${chosen.map((it: any) =>
48
+ `"${it.name}", ${javaLit(it.type)}`).join(', ')})`
49
+ }
50
+
51
+ // The op-driven test-mode line, shown only when the SDK has an entity op.
52
+ // A direct()-only SDK (no ops anywhere) shows a direct() call instead.
53
+ const testModeExample = primaryOp
54
+ ? `// Entity ops return the bare record and raise on error.
55
+ Object ${eVar} = client.${accessor}(null).${primaryOp}(${testArg}, null);
56
+ // ${eVar} holds the mock response record
57
+ System.out.println(${eVar});`
58
+ : `Map<String, Object> result = client.direct(Map.of(
59
+ "path", "/api/resource",
60
+ "method", "GET"));
61
+ System.out.println(result);`
62
+
63
+ const apikeyEnvLine = isAuthActive(model)
64
+ ? `\n${envName(model)}_APIKEY=<your-key>`
65
+ : ''
66
+
67
+ Content(`### Make a direct HTTP request
68
+
69
+ For endpoints not covered by entity methods:
70
+
71
+ \`\`\`java
72
+ Map<String, Object> result = client.direct(Map.of(
73
+ "path", "/api/resource/{id}",
74
+ "method", "GET",
75
+ "params", Map.of("id", "example")));
76
+
77
+ if (Boolean.TRUE.equals(result.get("ok"))) {
78
+ System.out.println(result.get("status")); // 200
79
+ System.out.println(result.get("data")); // response body
80
+ }
81
+ else {
82
+ // A non-2xx response carries status + data (the error body); a
83
+ // transport-level failure carries err instead. Only one is present, so
84
+ // read both — an absent key simply reads as null.
85
+ System.out.println(result.get("status") + " " + result.get("err"));
86
+ }
87
+ \`\`\`
88
+
89
+ ### Prepare a request without sending it
90
+
91
+ \`\`\`java
92
+ // prepare() returns the fetch definition and raises on error.
93
+ Map<String, Object> fetchdef = client.prepare(Map.of(
94
+ "path", "/api/resource/{id}",
95
+ "method", "DELETE",
96
+ "params", Map.of("id", "example")));
97
+
98
+ System.out.println(fetchdef.get("url"));
99
+ System.out.println(fetchdef.get("method"));
100
+ System.out.println(fetchdef.get("headers"));
101
+ \`\`\`
102
+
103
+ ### Use test mode
104
+
105
+ Create a mock client for unit testing — no server required:
106
+
107
+ \`\`\`java
108
+ ${SDK} client = ${SDK}.testSDK(null, null);
109
+
110
+ ${testModeExample}
111
+ \`\`\`
112
+
113
+ ### Use a custom fetch function
114
+
115
+ Replace the HTTP transport with your own \`BiFunction\`:
116
+
117
+ \`\`\`java
118
+ java.util.function.BiFunction<String, Map<String, Object>, Object> mockFetch =
119
+ (url, init) -> {
120
+ Map<String, Object> res = new java.util.LinkedHashMap<>();
121
+ res.put("status", 200);
122
+ res.put("statusText", "OK");
123
+ res.put("headers", new java.util.LinkedHashMap<String, Object>());
124
+ res.put("json", (java.util.function.Supplier<Object>) () ->
125
+ Map.of("id", "mock01"));
126
+ return res;
127
+ };
128
+
129
+ Map<String, Object> options = new java.util.LinkedHashMap<>();
130
+ options.put("base", "http://localhost:8080");
131
+ options.put("system", Map.of("fetch", mockFetch));
132
+ ${SDK} client = new ${SDK}(options);
133
+ \`\`\`
134
+
135
+ ### Run live tests
136
+
137
+ Create a \`.env.local\` file at the project root:
138
+
139
+ \`\`\`
140
+ ${envName(model)}_TEST_LIVE=TRUE${apikeyEnvLine}
141
+ \`\`\`
142
+
143
+ Then run:
144
+
145
+ \`\`\`bash
146
+ cd java && mvn test
147
+ \`\`\`
148
+
149
+ `)
150
+
151
+ })
152
+
153
+
154
+ export {
155
+ ReadmeHowto
156
+ }
@@ -0,0 +1,52 @@
1
+
2
+ import { cmp, Content, isPublished, repoInfo } from '@voxgig/sdkgen'
3
+
4
+ import { mavenGroupId } from './utility_java'
5
+
6
+
7
+ const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
8
+ const { target, ctx$ } = props
9
+ const { model } = ctx$
10
+
11
+ const groupId = mavenGroupId(model)
12
+ const artifactId = `${model.name}-sdk`
13
+
14
+ if (isPublished(model, target.name)) {
15
+ Content(`Add the dependency to your \`pom.xml\`:
16
+
17
+ \`\`\`xml
18
+ <dependency>
19
+ <groupId>${groupId}</groupId>
20
+ <artifactId>${artifactId}</artifactId>
21
+ <version>0.0.1</version>
22
+ </dependency>
23
+ \`\`\`
24
+
25
+ Or build and install from a source checkout:
26
+
27
+ \`\`\`bash
28
+ cd java && mvn install
29
+ \`\`\`
30
+
31
+ `)
32
+ return
33
+ }
34
+
35
+ // Publish pending: not yet on Maven Central. Install from the git release
36
+ // tag or from a local source checkout built with Maven.
37
+ const { releasesUrl } = repoInfo(model)
38
+ Content(`This package is not yet published to Maven Central. Install it from the GitHub
39
+ release tag (\`${target.name}/vX.Y.Z\`, see [Releases](${releasesUrl})) or
40
+ from a source checkout — build the library with Maven:
41
+
42
+ \`\`\`bash
43
+ cd java && mvn install
44
+ \`\`\`
45
+
46
+ `)
47
+ })
48
+
49
+
50
+ export {
51
+ ReadmeInstall
52
+ }
@@ -0,0 +1,66 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { javaVarName } from './utility_java'
10
+
11
+
12
+ const ReadmeIntro = cmp(function ReadmeIntro(props: any) {
13
+ const { target, ctx$: { model } } = props
14
+ const info = (model.main && model.main.kit && model.main.kit.info) || {}
15
+ const tagline = info.tagline || ''
16
+
17
+ Content(`# ${model.Name} ${target.title} SDK
18
+
19
+ ${tagline}
20
+
21
+ The ${target.title} SDK for the ${model.Name} API — an entity-oriented client following idiomatic Java conventions.
22
+
23
+ `)
24
+
25
+ // Emphasise the entity-oriented design: the SDK surfaces the API as
26
+ // capitalised, semantic Entities with a small, uniform verb set rather
27
+ // than raw URL paths and query strings. The example entity name is
28
+ // derived from the model, never hardcoded.
29
+ const entity = getModelPath(model, `main.${KIT}.entity`)
30
+ const exampleEntity = Object.values(entity || {})
31
+ .find((e: any) => e.active !== false) as any
32
+ const example = exampleEntity
33
+ ? `for example \`client.${javaVarName(exampleEntity.name)}(null)\` — each`
34
+ : 'each'
35
+
36
+ // Model-driven op list — only the operations the active entities actually
37
+ // expose (a read-only entity has just list+load); never claim
38
+ // create/update/remove exist when no entity has them.
39
+ const CANON_OPS = ['list', 'load', 'create', 'update', 'remove']
40
+ const opSet = new Set<string>()
41
+ Object.values(entity || {}).forEach((e: any) => {
42
+ if (!e || e.active === false) return
43
+ Object.keys(e.op || {}).forEach((o: string) => {
44
+ if (e.op[o] && e.op[o].active !== false) opSet.add(o)
45
+ })
46
+ })
47
+ const opNames = CANON_OPS.filter((o) => opSet.has(o))
48
+ .concat([...opSet].filter((o) => !CANON_OPS.includes(o)))
49
+ const opList = (opNames.length ? opNames : ['list', 'load'])
50
+ .map((o) => '`' + o + '`').join(', ')
51
+
52
+ Content(`The SDK exposes the API as capitalised, semantic **Entities** — ${example}
53
+ carrying a small, uniform set of operations (${opList}) instead of raw URL
54
+ paths and query strings. You work with named resources and verbs, which
55
+ keeps the cognitive load low.
56
+
57
+ > Other languages, the CLI, and MCP server live alongside this one — see
58
+ > the [top-level README](../README.md).
59
+
60
+ `)
61
+ })
62
+
63
+
64
+ export {
65
+ ReadmeIntro
66
+ }
@@ -0,0 +1,150 @@
1
+
2
+ import { cmp, each, Content, isAuthActive } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { javaVarName } from './utility_java'
10
+
11
+
12
+ const ReadmeModel = cmp(function ReadmeModel(props: any) {
13
+ const { target, ctx$: { model } } = props
14
+
15
+ const SDK = model.const.Name + 'SDK'
16
+
17
+ const entity = getModelPath(model, `main.${KIT}.entity`)
18
+ const entityList = each(entity).filter((e: any) => e.active !== false)
19
+
20
+ // Model-driven op rows for the shared entity interface: emit a
21
+ // load/list/create/update/remove row only for operations at least one active
22
+ // entity actually exposes — never document an operation no entity has.
23
+ const opUnion = new Set<string>()
24
+ entityList.forEach((e: any) => Object.keys(e.op || {})
25
+ .forEach((o: string) => { if (e.op[o] && e.op[o].active !== false) opUnion.add(o) }))
26
+ const opRowDefs: Record<string, string> = {
27
+ load: '| `load` | `(reqmatch, ctrl) -> Object` | Load a single entity by match criteria. Raises on error. |',
28
+ list: '| `list` | `(reqmatch, ctrl) -> Object` | List entities matching the criteria (an aggregate list). Raises on error. |',
29
+ create: '| `create` | `(reqdata, ctrl) -> Object` | Create a new entity. Raises on error. |',
30
+ update: '| `update` | `(reqdata, ctrl) -> Object` | Update an existing entity. Raises on error. |',
31
+ remove: '| `remove` | `(reqmatch, ctrl) -> Object` | Remove an entity. Raises on error. |',
32
+ }
33
+ const opRows = ['load', 'list', 'create', 'update', 'remove']
34
+ .filter((o) => opUnion.has(o)).map((o) => opRowDefs[o]).join('\n')
35
+
36
+ const apikeyOptionRow = isAuthActive(model)
37
+ ? '| `apikey` | `String` | API key for authentication. |\n'
38
+ : ''
39
+
40
+ Content(`### ${SDK}
41
+
42
+ \`\`\`java
43
+ ${SDK} client = new ${SDK}(options);
44
+ \`\`\`
45
+
46
+ Creates a new SDK client. \`options\` is a \`Map<String, Object>\`.
47
+
48
+ | Option | Type | Description |
49
+ | --- | --- | --- |
50
+ ${apikeyOptionRow}| \`base\` | \`String\` | Base URL of the API server. |
51
+ | \`prefix\` | \`String\` | URL path prefix prepended to all requests. |
52
+ | \`suffix\` | \`String\` | URL path suffix appended to all requests. |
53
+ | \`feature\` | \`Map\` | Feature activation flags. |
54
+ | \`extend\` | \`List\` | Additional Feature instances to load. |
55
+ | \`system\` | \`Map\` | System overrides (e.g. custom \`fetch\` function). |
56
+
57
+ ### testSDK
58
+
59
+ \`\`\`java
60
+ ${SDK} client = ${SDK}.testSDK(testopts, sdkopts);
61
+ \`\`\`
62
+
63
+ Creates a test-mode client with mock transport. Both arguments may be \`null\`.
64
+
65
+ ### ${SDK} methods
66
+
67
+ | Method | Signature | Description |
68
+ | --- | --- | --- |
69
+ | \`optionsMap\` | \`() -> Map\` | Deep copy of current SDK options. |
70
+ | \`getUtility\` | \`() -> Utility\` | Copy of the SDK utility object. |
71
+ | \`prepare\` | \`(fetchargs) -> Map\` | Build an HTTP request definition without sending. Raises on error. |
72
+ | \`direct\` | \`(fetchargs) -> Map\` | Build and send an HTTP request. Returns a result map (branch on \`ok\`). |
73
+ `)
74
+
75
+ each(entityList, (ent: any) => {
76
+ const article = /^[aeiou]/i.test(ent.Name) ? 'an' : 'a'
77
+ Content(`| \`${javaVarName(ent.name)}\` | \`(entopts) -> SdkEntity\` | Create ${article} ${ent.Name} entity instance. |
78
+ `)
79
+ })
80
+
81
+ Content(`
82
+ ### Entity interface
83
+
84
+ All entities share the same interface.
85
+
86
+ | Method | Signature | Description |
87
+ | --- | --- | --- |
88
+ ${opRows}
89
+ | \`data\` | \`(newdata...) -> Object\` | Get or set entity data. |
90
+ | \`match\` | \`(newmatch...) -> Object\` | Get or set entity match criteria. |
91
+ | \`make\` | \`() -> Entity\` | Create a new instance with the same options. |
92
+ | \`getName\` | \`() -> String\` | Return the entity name. |
93
+
94
+ ### Result shape
95
+
96
+ Entity operations return the bare result data (a \`Map\` for single-entity
97
+ ops, an aggregate \`List\` for \`list\`) as \`Object\` and raise on error. Wrap
98
+ calls in \`try\`/\`catch\` to handle failures.
99
+
100
+ The \`direct()\` escape hatch never raises — it returns a result
101
+ \`Map<String, Object>\` you branch on via \`result.get("ok")\`:
102
+
103
+ | Key | Type | Description |
104
+ | --- | --- | --- |
105
+ | \`ok\` | \`Boolean\` | \`true\` if the HTTP status is 2xx. |
106
+ | \`status\` | \`int\` | HTTP status code. |
107
+ | \`headers\` | \`Map\` | Response headers. |
108
+ | \`data\` | \`Object\` | Parsed JSON response body. |
109
+
110
+ On error, \`ok\` is \`false\` and \`err\` contains the error value.
111
+
112
+ `)
113
+
114
+ // Entities summary
115
+ Content(`### Entities
116
+
117
+ `)
118
+ each(entityList, (ent: any) => {
119
+ const fields = ent.fields || []
120
+ const opnames = Object.keys(ent.op || {})
121
+ const ops = ent.op || {}
122
+ const points = each(ops).map((op: any) =>
123
+ op.points ? each(op.points) : []
124
+ ).flat()
125
+ const path = points.length > 0 ? (points[0] as any).orig || '' : ''
126
+
127
+ Content(`#### ${ent.Name}
128
+
129
+ | Field | Description |
130
+ | --- | --- |
131
+ `)
132
+ each(fields, (field: any) => {
133
+ Content(`| \`${field.name}\` | ${field.short || ''} |
134
+ `)
135
+ })
136
+
137
+ Content(`
138
+ Operations: ${opnames.join(', ')}.
139
+
140
+ API path: \`${path}\`
141
+
142
+ `)
143
+ })
144
+
145
+ })
146
+
147
+
148
+ export {
149
+ ReadmeModel
150
+ }