@voxgig/sdkgen 1.3.13 → 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 +11 -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 +12 -2
  397. package/src/tsconfig.json +2 -0
  398. package/project/.sdk/tm/zig/build.zig.zon +0 -11
@@ -0,0 +1,139 @@
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 { cppVarName } from './utility_cpp'
10
+
11
+
12
+ // A type-correct C++ literal for a field's canonical type.
13
+ function cppLit(type: any): string {
14
+ const k = canonKey(type)
15
+ if ('INTEGER' === k || 'NUMBER' === k) return 'Value(1)'
16
+ if ('BOOLEAN' === k) return 'Value(true)'
17
+ if ('ARRAY' === k) return 'vlist()'
18
+ if ('OBJECT' === k) return 'vmap()'
19
+ return 'Value("example")'
20
+ }
21
+
22
+
23
+ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
24
+ const { target, ctx$: { model } } = props
25
+
26
+ const entity = getModelPath(model, `main.${KIT}.entity`)
27
+ // Pick an entity with a real op (prefer a read op) — never fabricate a
28
+ // `load` on an op-less entity. primaryOp is null only when NO entity
29
+ // exposes any op (a direct()-only SDK).
30
+ const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
31
+ const acc = exampleEntity ? cppVarName(exampleEntity.name) : 'entity'
32
+ const eVar = acc
33
+ // Model-driven id key: null when the entity has no id-like field.
34
+ const idF = exampleEntity ? entityIdField(exampleEntity) : null
35
+ const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
36
+ let testArg = 'Value::undef()'
37
+ if (exampleEntity && isMatchOp) {
38
+ testArg = idF ? `vmap({{"${idF}", Value("test01")}})` : 'Value::undef()'
39
+ } else if (exampleEntity && ('create' === primaryOp || 'update' === primaryOp)) {
40
+ const items = opRequestShape(exampleEntity, primaryOp).items
41
+ .filter((it: any) => it.name !== idF && it.name !== 'id')
42
+ const required = items.filter((it: any) => !it.optional)
43
+ const chosen = required.length ? required : items.slice(0, 3)
44
+ testArg = `vmap({${chosen.map((it: any) => `{"${it.name}", ${cppLit(it.type)}}`).join(', ')}})`
45
+ }
46
+
47
+ // The op-driven test-mode line, shown only when the SDK has an entity op.
48
+ // A direct()-only SDK (no ops anywhere) shows a direct() call instead.
49
+ const testModeExample = primaryOp
50
+ ? `// Entity ops return the bare record and throw on error.
51
+ Value ${eVar} = client->${acc}()->${primaryOp}(${testArg}, Value::undef());
52
+ // ${eVar} contains the mock response record
53
+ std::cout << Struct::jsonify(${eVar}) << std::endl;`
54
+ : `Value result = client->direct(vmap({
55
+ {"path", Value("/api/resource")},
56
+ {"method", Value("GET")},
57
+ }));
58
+ std::cout << Struct::jsonify(result) << std::endl;`
59
+
60
+ const apikeyEnvLine = isAuthActive(model)
61
+ ? `\n${envName(model)}_APIKEY=<your-key>`
62
+ : ''
63
+
64
+ Content(`### Make a direct HTTP request
65
+
66
+ For endpoints not covered by entity methods:
67
+
68
+ \`\`\`cpp
69
+ Value result = client->direct(vmap({
70
+ {"path", Value("/api/resource/{id}")},
71
+ {"method", Value("GET")},
72
+ {"params", vmap({{"id", Value("example")}})},
73
+ }));
74
+
75
+ if (getp(result, "ok") == Value(true)) {
76
+ std::cout << Helpers::toInt(getp(result, "status")) << std::endl; // 200
77
+ std::cout << Struct::jsonify(getp(result, "data")) << std::endl; // response body
78
+ } else {
79
+ // A non-2xx response carries status + data (the error body); a
80
+ // transport-level failure carries err instead. Only one is present.
81
+ std::cerr << Helpers::toInt(getp(result, "status")) << " "
82
+ << Struct::jsonify(getp(result, "err")) << std::endl;
83
+ }
84
+ \`\`\`
85
+
86
+ \`direct()\` is the escape hatch: it never throws — branch on
87
+ \`getp(result, "ok")\`.
88
+
89
+ ### Prepare a request without sending it
90
+
91
+ \`\`\`cpp
92
+ // prepare() returns the fetch definition and throws on error.
93
+ Value fetchdef = client->prepare(vmap({
94
+ {"path", Value("/api/resource/{id}")},
95
+ {"method", Value("DELETE")},
96
+ {"params", vmap({{"id", Value("example")}})},
97
+ }));
98
+
99
+ std::cout << Struct::stringify(getp(fetchdef, "url")) << std::endl;
100
+ std::cout << Struct::stringify(getp(fetchdef, "method")) << std::endl;
101
+ std::cout << Struct::jsonify(getp(fetchdef, "headers")) << std::endl;
102
+ \`\`\`
103
+
104
+ ### Use test mode
105
+
106
+ Create a mock client for unit testing — no server required. The test
107
+ feature installs an in-memory mock transport:
108
+
109
+ \`\`\`cpp
110
+ auto client = ${model.const.Name}SDK::testSDK();
111
+
112
+ ${testModeExample}
113
+ \`\`\`
114
+
115
+ You can seed the mock store by passing test options — see the generated
116
+ \`test/\` suite for worked examples.
117
+
118
+ ### Run live tests
119
+
120
+ Create a \`.env.local\` file at the project root:
121
+
122
+ \`\`\`
123
+ ${envName(model)}_TEST_LIVE=TRUE${apikeyEnvLine}
124
+ \`\`\`
125
+
126
+ Then build and run the test suite:
127
+
128
+ \`\`\`bash
129
+ cd ${target.name} && make test
130
+ \`\`\`
131
+
132
+ `)
133
+
134
+ })
135
+
136
+
137
+ export {
138
+ ReadmeHowto
139
+ }
@@ -0,0 +1,42 @@
1
+
2
+ import { cmp, Content, repoInfo } from '@voxgig/sdkgen'
3
+
4
+
5
+ const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
6
+ const { target, ctx$ } = props
7
+ const { model } = ctx$
8
+
9
+ // The C++ SDK is header-only: there is no package registry to install from.
10
+ // Consumers vendor the source tree (or add it as a submodule) and put the
11
+ // SDK directory on the compiler include path. The git release tag
12
+ // (`cpp/vX.Y.Z`) is the unit of distribution.
13
+ const { releasesUrl } = repoInfo(model)
14
+
15
+ Content(`The ${target.title} SDK is **header-only** — there is no package to install
16
+ from a registry. Vendor the \`cpp/\` directory into your project (or add the
17
+ repository as a git submodule) and put it on your compiler's include path.
18
+ Releases are cut as the git tag \`${target.name}/vX.Y.Z\` (see
19
+ [Releases](${releasesUrl})).
20
+
21
+ \`\`\`bash
22
+ # Add the SDK as a submodule (or copy the cpp/ directory into your tree).
23
+ git submodule add <repo-url> third_party/${model.const.Name.toLowerCase()}-sdk
24
+ \`\`\`
25
+
26
+ Then include the umbrella header and compile with C++17:
27
+
28
+ \`\`\`cpp
29
+ #include "core/sdk.hpp"
30
+ \`\`\`
31
+
32
+ \`\`\`bash
33
+ g++ -std=c++17 -Ithird_party/${model.const.Name.toLowerCase()}-sdk/cpp your_app.cpp -o your_app
34
+ \`\`\`
35
+
36
+ `)
37
+ })
38
+
39
+
40
+ export {
41
+ ReadmeInstall
42
+ }
@@ -0,0 +1,69 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { cppVarName } from './utility_cpp'
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 — a header-only,
22
+ entity-oriented client following idiomatic modern C++ (C++17) conventions.
23
+
24
+ `)
25
+
26
+ // Emphasise the entity-oriented design: the SDK surfaces the API as
27
+ // capitalised, semantic Entities with a small, uniform verb set rather
28
+ // than raw URL paths and query strings. The example entity accessor is
29
+ // derived from the model, never hardcoded.
30
+ const entity = getModelPath(model, `main.${KIT}.entity`)
31
+ const exampleEntity = Object.values(entity || {})
32
+ .find((e: any) => e.active !== false) as any
33
+ const example = exampleEntity
34
+ ? `for example \`client->${cppVarName(exampleEntity.name)}()\` — each`
35
+ : 'each'
36
+
37
+ // Model-driven op list — only the operations the active entities actually
38
+ // expose (a read-only entity has just list+load); never claim
39
+ // create/update/remove exist when no entity has them.
40
+ const CANON_OPS = ['list', 'load', 'create', 'update', 'remove']
41
+ const opSet = new Set<string>()
42
+ Object.values(entity || {}).forEach((e: any) => {
43
+ if (!e || e.active === false) return
44
+ Object.keys(e.op || {}).forEach((o: string) => {
45
+ if (e.op[o] && e.op[o].active !== false) opSet.add(o)
46
+ })
47
+ })
48
+ const opNames = CANON_OPS.filter((o) => opSet.has(o))
49
+ .concat([...opSet].filter((o) => !CANON_OPS.includes(o)))
50
+ const opList = (opNames.length ? opNames : ['list', 'load'])
51
+ .map((o) => '`' + o + '`').join(', ')
52
+
53
+ Content(`The SDK exposes the API as capitalised, semantic **Entities** — ${example}
54
+ carrying a small, uniform set of operations (${opList}) instead of raw URL
55
+ paths and query strings. You work with named resources and verbs, which
56
+ keeps the cognitive load low. Every value flows through a single dynamic
57
+ \`sdk::Value\` type (a JSON-like variant), so there is no schema-driven code to
58
+ regenerate when the API changes.
59
+
60
+ > Other languages, the CLI, and MCP server live alongside this one — see
61
+ > the [top-level README](../README.md).
62
+
63
+ `)
64
+ })
65
+
66
+
67
+ export {
68
+ ReadmeIntro
69
+ }
@@ -0,0 +1,155 @@
1
+
2
+ import { cmp, each, Content, isAuthActive } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { cppVarName } from './utility_cpp'
10
+
11
+
12
+ const ReadmeModel = cmp(function ReadmeModel(props: any) {
13
+ const { target, ctx$: { model } } = props
14
+
15
+ const entity = getModelPath(model, `main.${KIT}.entity`)
16
+ const entityList = each(entity).filter((e: any) => e.active !== false)
17
+
18
+ // Model-driven op rows for the shared entity interface: emit a
19
+ // load/list/create/update/remove row only for operations at least one active
20
+ // entity actually exposes — never document an operation no entity has.
21
+ const opUnion = new Set<string>()
22
+ entityList.forEach((e: any) => Object.keys(e.op || {})
23
+ .forEach((o: string) => { if (e.op[o] && e.op[o].active !== false) opUnion.add(o) }))
24
+ const opRowDefs: Record<string, string> = {
25
+ load: '| `load` | `(reqmatch, ctrl) -> Value` | Load a single entity by match criteria. Throws on error. |',
26
+ list: '| `list` | `(reqmatch, ctrl) -> Value` | List entities matching the criteria (a Value list). Throws on error. |',
27
+ create: '| `create` | `(reqdata, ctrl) -> Value` | Create a new entity. Throws on error. |',
28
+ update: '| `update` | `(reqdata, ctrl) -> Value` | Update an existing entity. Throws on error. |',
29
+ remove: '| `remove` | `(reqmatch, ctrl) -> Value` | Remove an entity. Throws on error. |',
30
+ }
31
+ const opRows = ['load', 'list', 'create', 'update', 'remove']
32
+ .filter((o) => opUnion.has(o)).map((o) => opRowDefs[o]).join('\n')
33
+
34
+ const apikeyOptionRow = isAuthActive(model)
35
+ ? '| `apikey` | `std::string` | API key for authentication. |\n'
36
+ : ''
37
+
38
+ Content(`### ${model.const.Name}SDK
39
+
40
+ \`\`\`cpp
41
+ #include "core/sdk.hpp"
42
+
43
+ using namespace sdk;
44
+
45
+ auto client = std::make_shared<${model.const.Name}SDK>(options);
46
+ \`\`\`
47
+
48
+ Creates a new SDK client. \`options\` is an \`sdk::Value\` map.
49
+
50
+ | Option | Type | Description |
51
+ | --- | --- | --- |
52
+ ${apikeyOptionRow}| \`base\` | \`std::string\` | Base URL of the API server. |
53
+ | \`prefix\` | \`std::string\` | URL path prefix prepended to all requests. |
54
+ | \`suffix\` | \`std::string\` | URL path suffix appended to all requests. |
55
+ | \`feature\` | \`Value\` | Feature activation flags. |
56
+ | \`system\` | \`Value\` | System overrides. |
57
+
58
+ ### testSDK
59
+
60
+ \`\`\`cpp
61
+ auto client = ${model.const.Name}SDK::testSDK(testopts, sdkopts);
62
+ \`\`\`
63
+
64
+ Creates a test-mode client with mock transport. Both arguments may be
65
+ \`Value::undef()\`; a no-arg \`${model.const.Name}SDK::testSDK()\` overload is
66
+ also provided.
67
+
68
+ ### ${model.const.Name}SDK methods
69
+
70
+ | Method | Signature | Description |
71
+ | --- | --- | --- |
72
+ | \`optionsMap\` | \`() -> Value\` | Deep copy of current SDK options. |
73
+ | \`getUtility\` | \`() -> UtilityPtr\` | Copy of the SDK utility object. |
74
+ | \`prepare\` | \`(fetchargs) -> Value\` | Build an HTTP request definition without sending. Throws on error. |
75
+ | \`direct\` | \`(fetchargs) -> Value\` | Build and send an HTTP request. Returns a result Value (branch on \`ok\`). |
76
+ `)
77
+
78
+ each(entityList, (ent: any) => {
79
+ const acc = cppVarName(ent.name)
80
+ const article = /^[aeiou]/i.test(ent.Name) ? 'an' : 'a'
81
+ Content(`| \`${acc}\` | \`(entopts) -> std::shared_ptr<${ent.Name}Entity>\` | Create ${article} ${ent.Name} entity instance. |
82
+ `)
83
+ })
84
+
85
+ Content(`
86
+ ### Entity interface
87
+
88
+ All entities share the same interface.
89
+
90
+ | Method | Signature | Description |
91
+ | --- | --- | --- |
92
+ ${opRows}
93
+ | \`data\` | \`(arg) -> Value\` | Get (no arg) or set (with arg) entity data. |
94
+ | \`match\` | \`(arg) -> Value\` | Get (no arg) or set (with arg) entity match criteria. |
95
+ | \`make\` | \`() -> EntityPtr\` | Create a new instance with the same options. |
96
+ | \`getName\` | \`() -> std::string\` | Return the entity name. |
97
+
98
+ ### Result shape
99
+
100
+ Entity operations return the bare result data (a map \`Value\` for
101
+ single-entity ops, a list \`Value\` for \`list\`) and throw
102
+ \`sdk::SdkErrorPtr\` on error. Wrap calls in \`try\`/\`catch\` to handle
103
+ failures.
104
+
105
+ The \`direct()\` escape hatch never throws — it returns a result \`Value\`
106
+ you branch on via \`getp(result, "ok")\`:
107
+
108
+ | Key | Type | Description |
109
+ | --- | --- | --- |
110
+ | \`ok\` | \`bool\` | \`true\` if the HTTP status is 2xx. |
111
+ | \`status\` | \`int\` | HTTP status code. |
112
+ | \`headers\` | \`Value\` | Response headers. |
113
+ | \`data\` | \`Value\` | Parsed JSON response body. |
114
+
115
+ On error, \`ok\` is \`false\` and \`err\` contains the error value.
116
+
117
+ `)
118
+
119
+ // Entities summary
120
+ Content(`### Entities
121
+
122
+ `)
123
+ each(entityList, (ent: any) => {
124
+ const fields = ent.fields || []
125
+ const opnames = Object.keys(ent.op || {})
126
+ const ops = ent.op || {}
127
+ const points = each(ops).map((op: any) =>
128
+ op.points ? each(op.points) : []
129
+ ).flat()
130
+ const path = points.length > 0 ? (points[0] as any).orig || '' : ''
131
+
132
+ Content(`#### ${ent.Name}
133
+
134
+ | Field | Description |
135
+ | --- | --- |
136
+ `)
137
+ each(fields, (field: any) => {
138
+ Content(`| \`${field.name}\` | ${field.short || ''} |
139
+ `)
140
+ })
141
+
142
+ Content(`
143
+ Operations: ${opnames.map((n: string) => n.charAt(0).toUpperCase() + n.slice(1)).join(', ')}.
144
+
145
+ API path: \`${path}\`
146
+
147
+ `)
148
+ })
149
+
150
+ })
151
+
152
+
153
+ export {
154
+ ReadmeModel
155
+ }
@@ -0,0 +1,62 @@
1
+
2
+ import { cmp, each, Content, envName, isAuthActive } from '@voxgig/sdkgen'
3
+
4
+
5
+ const ReadmeOptions = cmp(function ReadmeOptions(props: any) {
6
+ const { target } = props
7
+ const { model } = props.ctx$
8
+
9
+ const publishedOptions = each(target.options).filter((option: any) =>
10
+ option.publish && ('apikey' !== option.name || isAuthActive(model)))
11
+ if (0 === publishedOptions.length) {
12
+ return
13
+ }
14
+
15
+ Content(`
16
+
17
+ ## Options
18
+
19
+ Pass options as an \`sdk::Value\` map when constructing a client:
20
+
21
+ `)
22
+
23
+ const hasApikey = publishedOptions.some((o: any) => 'apikey' === o.name)
24
+
25
+ Content(`\`\`\`cpp
26
+ ${hasApikey ? `const char* apikey = std::getenv("${envName(model)}_APIKEY");
27
+ ` : ''}auto client = std::make_shared<${model.Name}SDK>(vmap({
28
+ `)
29
+
30
+ publishedOptions.map((option: any) => {
31
+ if ('apikey' === option.name) {
32
+ Content(` {"${option.name}", Value(apikey ? apikey : "")},
33
+ `)
34
+ }
35
+ else {
36
+ Content(` // {"${option.name}", ${option.kind === 'string' ? 'Value("...")' : 'Value(...)'}},
37
+ `)
38
+ }
39
+ })
40
+
41
+ Content(`}));
42
+ \`\`\`
43
+
44
+ `)
45
+
46
+ Content(`| Option | Type | Description |
47
+ | --- | --- | --- |
48
+ `)
49
+
50
+ publishedOptions.map((option: any) => {
51
+ Content(`| \`${option.name}\` | \`${option.kind}\` | ${option.short} |
52
+ `)
53
+ })
54
+
55
+ Content(`
56
+ `)
57
+ })
58
+
59
+
60
+ export {
61
+ ReadmeOptions
62
+ }