@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,234 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityDataIdField, entityOps } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { cppVarName } from './utility_cpp'
11
+
12
+
13
+ const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
14
+ const { target, ctx$: { model } } = props
15
+
16
+ const entity = getModelPath(model, `main.${KIT}.entity`)
17
+
18
+ const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
19
+
20
+ // Find a nested entity if available: one with a parent chain
21
+ // (relations.ancestors), an active load op, and a required non-id load
22
+ // param to demonstrate (the parent key, e.g. page_id).
23
+ const nestedEntity = Object.values(entity).find((e: any) =>
24
+ e.active !== false &&
25
+ e.relations && e.relations.ancestors && 0 < e.relations.ancestors.length &&
26
+ entityOps(e).includes('load') &&
27
+ opRequestShape(e, 'load').items.some((it: any) =>
28
+ !it.optional && it.name !== entityIdField(e))
29
+ ) as any
30
+
31
+ const Name = model.const.Name
32
+ const authActive = isAuthActive(model)
33
+ const ctor = authActive
34
+ ? `const char* apikey = std::getenv("${envName(model)}_APIKEY");
35
+ auto client = std::make_shared<${Name}SDK>(vmap({
36
+ {"apikey", Value(apikey ? apikey : "")},
37
+ }));`
38
+ : `auto client = ${Name}SDK::create();`
39
+ const ctorIncludes = authActive
40
+ ? `#include <cstdlib>
41
+ #include "core/sdk.hpp"`
42
+ : `#include "core/sdk.hpp"`
43
+
44
+ Content(`### 1. Create a client
45
+
46
+ \`\`\`cpp
47
+ ${ctorIncludes}
48
+
49
+ using namespace sdk;
50
+
51
+ ${ctor}
52
+ \`\`\`
53
+
54
+ `)
55
+
56
+ // A type-correct C++ literal for a param: numeric/boolean/array/object
57
+ // params render a typed sdk::Value; strings render the quoted placeholder.
58
+ const cppLit = (type: any, placeholder: string = 'example'): string => {
59
+ const k = canonKey(type)
60
+ if ('INTEGER' === k || 'NUMBER' === k) return 'Value(1)'
61
+ if ('BOOLEAN' === k) return 'Value(true)'
62
+ if ('ARRAY' === k) return 'vlist()'
63
+ if ('OBJECT' === k) return 'vmap()'
64
+ return `Value("${placeholder}")`
65
+ }
66
+
67
+ if (exampleEntity) {
68
+ const eName = nom(exampleEntity, 'Name')
69
+ const article = /^[aeiou]/i.test(eName) ? 'an' : 'a'
70
+ // The client accessor is the entity's snake_case name (client->planet()).
71
+ const acc = cppVarName(exampleEntity.name)
72
+ const eVar = acc
73
+ const opnames = entityOps(exampleEntity)
74
+ // Model-driven id key: `idF` is the entity's id-like MATCH field name, or
75
+ // null when it has none. `dataIdF` is the id on the RETURNED record's data
76
+ // type — an entity can key its match on an id it does not carry as data.
77
+ const idF = entityIdField(exampleEntity)
78
+ const dataIdF = entityDataIdField(exampleEntity)
79
+
80
+ if (opnames.includes('list')) {
81
+ Content(`### 2. List ${eName.toLowerCase()} records
82
+
83
+ \`list()\` returns an \`sdk::Value\` list and throws \`sdk::SdkErrorPtr\`
84
+ on error — iterate it directly.
85
+
86
+ \`\`\`cpp
87
+ try {
88
+ Value ${eVar}s = client->${acc}()->list(Value::undef(), Value::undef());
89
+ for (const auto& ${eVar} : *${eVar}s.as_list()) {
90
+ std::cout << Struct::jsonify(${eVar}) << std::endl;
91
+ }
92
+ } catch (const SdkErrorPtr& err) {
93
+ std::cerr << "list failed: " << err->msg << std::endl;
94
+ }
95
+ \`\`\`
96
+
97
+ `)
98
+ }
99
+
100
+ if (nestedEntity) {
101
+ const neName = nom(nestedEntity, 'Name')
102
+ const neArticle = /^[aeiou]/i.test(neName) ? 'an' : 'a'
103
+ const neAcc = cppVarName(nestedEntity.name)
104
+ const neVar = neAcc
105
+
106
+ // Model-driven match: every REQUIRED load-match key — the same shape
107
+ // the runtime resolves path params from, so the example always works.
108
+ // Parent keys (e.g. page_id) first, the entity's own id last.
109
+ const neIdF = entityIdField(nestedEntity)
110
+ const neRequired = opRequestShape(nestedEntity, 'load').items
111
+ .filter((it: any) => !it.optional)
112
+ .sort((a: any, b: any) =>
113
+ (a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
114
+ const parentItem = neRequired.find((it: any) => it.name !== neIdF) as any
115
+ const parentParam = parentItem && parentItem.name
116
+ const parentName = parentParam ? parentParam.replace(/_id$/, '') : 'its parent'
117
+ const neMatch = neRequired.map((it: any) =>
118
+ `{"${it.name}", ${cppLit(it.type,
119
+ it.name === neIdF ? 'example_id' : 'example_' + it.name)}}`)
120
+
121
+ Content(`### 3. Load ${neArticle} ${neName.toLowerCase()}
122
+
123
+ ${neName} is nested under ${parentName}, so provide the \`${parentParam}\`.
124
+ \`load()\` returns the bare record and throws on error.
125
+
126
+ \`\`\`cpp
127
+ try {
128
+ Value ${neVar} = client->${neAcc}()->load(vmap({${neMatch.join(', ')}}), Value::undef());
129
+ std::cout << Struct::jsonify(${neVar}) << std::endl;
130
+ } catch (const SdkErrorPtr& err) {
131
+ std::cerr << "load failed: " << err->msg << std::endl;
132
+ }
133
+ \`\`\`
134
+
135
+ `)
136
+ }
137
+ else if (opnames.includes('load')) {
138
+ // Every REQUIRED load-match key (id first, then parent path params like
139
+ // page_id) — the same shape the runtime resolves path params from.
140
+ const loadRequired = opRequestShape(exampleEntity, 'load').items
141
+ .filter((it: any) => !it.optional || it.name === idF)
142
+ .sort((a: any, b: any) =>
143
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
144
+ const loadArg = 0 < loadRequired.length
145
+ ? `vmap({${loadRequired.map((it: any) =>
146
+ `{"${it.name}", ${cppLit(it.type,
147
+ it.name === idF ? 'example_id' : 'example_' + it.name)}}`).join(', ')}})`
148
+ : 'Value::undef()'
149
+
150
+ Content(`### 3. Load ${article} ${eName.toLowerCase()}
151
+
152
+ \`load()\` returns the bare record and throws on error.
153
+
154
+ \`\`\`cpp
155
+ try {
156
+ Value ${eVar} = client->${acc}()->load(${loadArg}, Value::undef());
157
+ std::cout << Struct::jsonify(${eVar}) << std::endl;
158
+ } catch (const SdkErrorPtr& err) {
159
+ std::cerr << "load failed: " << err->msg << std::endl;
160
+ }
161
+ \`\`\`
162
+
163
+ `)
164
+ }
165
+
166
+ // Model-driven example fields: derive the create/update body from the op
167
+ // shape (opRequestShape) so the docs reference REAL writable fields.
168
+ const examplePairs = (opname: string): string[] => {
169
+ const items = opRequestShape(exampleEntity, opname).items
170
+ .filter((it: any) => (it.name !== idF && it.name !== 'id') ||
171
+ ('create' === opname && !it.optional))
172
+ const required = items.filter((it: any) => !it.optional)
173
+ const optional = items.filter((it: any) => it.optional)
174
+ const chosen = 'create' === opname
175
+ ? (required.length ? required : items.slice(0, 2))
176
+ : required.concat(optional).slice(0, Math.max(2, required.length))
177
+ return chosen.map((it: any) => `{"${it.name}", ${cppLit(it.type, 'example_' + it.name)}}`)
178
+ }
179
+
180
+ // The id VALUE for an update/remove match: read off the returned `created`
181
+ // record only when its data type carries the id AND a create ran; otherwise
182
+ // a type-correct literal.
183
+ const idParamType = (opname: string): any => {
184
+ const it = opRequestShape(exampleEntity, opname).items.find((x: any) => x.name === idF)
185
+ return it && it.type
186
+ }
187
+ const idValueFor = (opname: string): string => (null != dataIdF && opnames.includes('create'))
188
+ ? `getp(created, "${dataIdF}")`
189
+ : cppLit(idParamType(opname), 'example_id')
190
+
191
+ if (opnames.includes('create') || opnames.includes('update') || opnames.includes('remove')) {
192
+ Content(`### 4. Create, update, and remove
193
+
194
+ \`\`\`cpp
195
+ `)
196
+ if (opnames.includes('create')) {
197
+ Content(`// Create — returns the bare created record.
198
+ Value created = client->${acc}()->create(vmap({${examplePairs('create').join(', ')}}), Value::undef());
199
+
200
+ `)
201
+ }
202
+ if (opnames.includes('update')) {
203
+ const updatePairs = (idF ? [`{"${idF}", ${idValueFor('update')}}`] : []).concat(examplePairs('update'))
204
+ const fromCreated = null != dataIdF && opnames.includes('create')
205
+ Content(`// Update${fromCreated ? " — reuse the created record's id" : ''}
206
+ client->${acc}()->update(vmap({${updatePairs.join(', ')}}), Value::undef());
207
+
208
+ `)
209
+ }
210
+ if (opnames.includes('remove')) {
211
+ // Every REQUIRED remove-match key: the id (off the created record
212
+ // when possible) plus parent keys like page_id.
213
+ const removePairs = opRequestShape(exampleEntity, 'remove').items
214
+ .filter((it: any) => !it.optional || it.name === idF)
215
+ .sort((a: any, b: any) =>
216
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
217
+ .map((it: any) => it.name === idF
218
+ ? `{"${it.name}", ${idValueFor('remove')}}`
219
+ : `{"${it.name}", ${cppLit(it.type, 'example_' + it.name)}}`)
220
+ Content(`// Remove
221
+ client->${acc}()->remove(${removePairs.length ? `vmap({${removePairs.join(', ')}})` : 'Value::undef()'}, Value::undef());
222
+ `)
223
+ }
224
+ Content(`\`\`\`
225
+
226
+ `)
227
+ }
228
+ }
229
+ })
230
+
231
+
232
+ export {
233
+ ReadmeQuick
234
+ }
@@ -0,0 +1,387 @@
1
+
2
+ import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, 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
+ // Type names come from the shared canonToType 'cpp' column (single source of truth).
13
+
14
+ // A type-correct C++ literal for a field's canonical type.
15
+ function cppLit(type: any, placeholder: string = 'example'): string {
16
+ const k = canonKey(type)
17
+ if ('INTEGER' === k || 'NUMBER' === k) return 'Value(1)'
18
+ if ('BOOLEAN' === k) return 'Value(true)'
19
+ if ('ARRAY' === k) return 'vlist()'
20
+ if ('OBJECT' === k) return 'vmap()'
21
+ return `Value("${placeholder}")`
22
+ }
23
+
24
+
25
+ const OP_SIGNATURES: Record<string, { sig: string, returns: string, desc: string }> = {
26
+ load: {
27
+ sig: 'load(reqmatch, ctrl) -> Value',
28
+ returns: 'the entity data',
29
+ desc: 'Load a single entity matching the given criteria. Returns the entity data and throws on error.',
30
+ },
31
+ list: {
32
+ sig: 'list(reqmatch, ctrl) -> Value',
33
+ returns: 'a list of entities',
34
+ desc: 'List entities matching the given criteria. The match is optional — pass `Value::undef()` to list all records. Returns a Value list and throws on error.',
35
+ },
36
+ create: {
37
+ sig: 'create(reqdata, ctrl) -> Value',
38
+ returns: 'the created entity data',
39
+ desc: 'Create a new entity with the given data. Returns the created entity data and throws on error.',
40
+ },
41
+ update: {
42
+ sig: 'update(reqdata, ctrl) -> Value',
43
+ returns: 'the updated entity data',
44
+ desc: 'Update an existing entity. The data must include the entity `id`. Returns the updated entity data and throws on error.',
45
+ },
46
+ remove: {
47
+ sig: 'remove(reqmatch, ctrl) -> Value',
48
+ returns: 'the removed entity data',
49
+ desc: 'Remove the entity matching the given criteria. Throws on error.',
50
+ },
51
+ }
52
+
53
+
54
+ const ReadmeRef = cmp(function ReadmeRef(props: any) {
55
+ const { target } = props
56
+ const { model } = props.ctx$
57
+
58
+ const entity = getModelPath(model, `main.${KIT}.entity`)
59
+ const feature = getModelPath(model, `main.${KIT}.feature`)
60
+
61
+ const publishedEntities = each(entity).filter((e: any) => e.active !== false)
62
+
63
+
64
+ File({ name: 'REFERENCE.md' }, () => {
65
+
66
+ Content(`# ${model.Name} ${target.title} SDK Reference
67
+
68
+ Complete API reference for the ${model.Name} ${target.title} SDK.
69
+
70
+
71
+ ## ${model.Name}SDK
72
+
73
+ ### Constructor
74
+
75
+ `)
76
+
77
+ Content(`\`\`\`cpp
78
+ #include "core/sdk.hpp"
79
+
80
+ using namespace sdk;
81
+
82
+ auto client = std::make_shared<${model.const.Name}SDK>(options);
83
+ \`\`\`
84
+
85
+ Create a new SDK client instance. \`options\` is an \`sdk::Value\` map.
86
+
87
+ **Parameters:**
88
+
89
+ | Name | Type | Description |
90
+ | --- | --- | --- |
91
+ | \`options\` | \`Value\` | SDK configuration options (a map). |
92
+ ${isAuthActive(model) ? '| `options["apikey"]` | `std::string` | API key for authentication. |\n' : ''}| \`options["base"]\` | \`std::string\` | Base URL for API requests. |
93
+ | \`options["prefix"]\` | \`std::string\` | URL prefix appended after base. |
94
+ | \`options["suffix"]\` | \`std::string\` | URL suffix appended after path. |
95
+ | \`options["headers"]\` | \`Value\` | Custom headers for all requests. |
96
+ | \`options["feature"]\` | \`Value\` | Feature configuration. |
97
+ | \`options["system"]\` | \`Value\` | System overrides. |
98
+
99
+ `)
100
+
101
+
102
+ Content(`
103
+ ### Static Methods
104
+
105
+ `)
106
+
107
+ Content(`#### \`${model.const.Name}SDK::testSDK(testopts, sdkopts)\`
108
+
109
+ Create a test client with mock features active. Both arguments may be
110
+ \`Value::undef()\`; a no-arg overload is also provided.
111
+
112
+ \`\`\`cpp
113
+ auto client = ${model.const.Name}SDK::testSDK();
114
+ \`\`\`
115
+
116
+ `)
117
+
118
+
119
+ Content(`
120
+ ### Instance Methods
121
+
122
+ `)
123
+
124
+
125
+ // Entity factory methods
126
+ publishedEntities.map((ent: any) => {
127
+ const acc = cppVarName(ent.name)
128
+ Content(`#### \`${acc}(entopts = Value::undef()) -> std::shared_ptr<${ent.Name}Entity>\`
129
+
130
+ Create a new \`${ent.Name}Entity\` instance bound to this client.
131
+
132
+ `)
133
+ })
134
+
135
+
136
+ Content(`#### \`optionsMap() -> Value\`
137
+
138
+ Return a deep copy of the current SDK options.
139
+
140
+ #### \`getUtility() -> UtilityPtr\`
141
+
142
+ Return a copy of the SDK utility object.
143
+
144
+ #### \`direct(fetchargs) -> Value\`
145
+
146
+ Make a direct HTTP request to any API endpoint. Returns a result \`Value\` with \`ok\`, \`status\`, \`headers\`, and \`data\` (or \`err\` on failure). This escape hatch never throws — branch on \`getp(result, "ok")\`.
147
+
148
+ **Parameters:**
149
+
150
+ | Name | Type | Description |
151
+ | --- | --- | --- |
152
+ | \`fetchargs["path"]\` | \`std::string\` | URL path with optional \`{param}\` placeholders. |
153
+ | \`fetchargs["method"]\` | \`std::string\` | HTTP method (default: \`"GET"\`). |
154
+ | \`fetchargs["params"]\` | \`Value\` | Path parameter values. |
155
+ | \`fetchargs["query"]\` | \`Value\` | Query string parameters. |
156
+ | \`fetchargs["headers"]\` | \`Value\` | Request headers (merged with defaults). |
157
+ | \`fetchargs["body"]\` | \`Value\` | Request body (maps are JSON-serialized). |
158
+
159
+ **Returns:** \`Value\` (result map)
160
+
161
+ #### \`prepare(fetchargs) -> Value\`
162
+
163
+ Prepare a fetch definition without sending. Returns the \`fetchdef\` and throws on error.
164
+
165
+ `)
166
+
167
+
168
+ // Entity reference sections
169
+ publishedEntities.map((ent: any) => {
170
+ const opnames = Object.keys(ent.op || {})
171
+ const fields = ent.fields || []
172
+ // Model-driven id key: null when this entity has no id-like field.
173
+ const idF = entityIdField(ent)
174
+ const acc = cppVarName(ent.name)
175
+
176
+ Content(`
177
+ ---
178
+
179
+ ## ${ent.Name}Entity
180
+
181
+ `)
182
+
183
+ if (ent.short) {
184
+ Content(`${ent.short}
185
+
186
+ `)
187
+ }
188
+
189
+ Content(`\`\`\`cpp
190
+ auto ${acc} = client->${acc}();
191
+ \`\`\`
192
+
193
+ `)
194
+
195
+
196
+ // Field schema
197
+ if (fields.length > 0) {
198
+ Content(`### Fields
199
+
200
+ | Field | Type | Required | Description |
201
+ | --- | --- | --- | --- |
202
+ `)
203
+ each(fields, (field: any) => {
204
+ const req = field.req ? 'Yes' : 'No'
205
+ const desc = field.short || ''
206
+ Content(`| \`${field.name}\` | \`${canonToType(field.type, target.name)}\` | ${req} | ${desc} |
207
+ `)
208
+ })
209
+
210
+ Content(`
211
+ `)
212
+
213
+ // Field operations breakdown
214
+ const hasFieldOps = fields.some((f: any) => f.op && Object.keys(f.op).length > 0)
215
+ if (hasFieldOps) {
216
+ const opcols = ['load', 'list', 'create', 'update', 'remove']
217
+ .filter((op: string) => opnames.includes(op) && ent.op[op]?.active !== false)
218
+ Content(`### Field Usage by Operation
219
+
220
+ | Field | ${opcols.join(' | ')} |
221
+ | --- | ${opcols.map(() => '---').join(' | ')} |
222
+ `)
223
+ each(fields, (field: any) => {
224
+ const fops = field.op || {}
225
+ const cols = opcols.map((op: string) => {
226
+ const fop = fops[op]
227
+ if (null == fop) return '-'
228
+ if (fop.active === false) return '-'
229
+ return 'Yes'
230
+ })
231
+ Content(`| \`${field.name}\` | ${cols.join(' | ')} |
232
+ `)
233
+ })
234
+
235
+ Content(`
236
+ `)
237
+ }
238
+ }
239
+
240
+
241
+ // Operation details
242
+ if (opnames.length > 0) {
243
+ Content(`### Operations
244
+
245
+ `)
246
+
247
+ opnames.map((opname: string) => {
248
+ const info = OP_SIGNATURES[opname]
249
+ if (!info) return
250
+
251
+ Content(`#### \`${info.sig}\`
252
+
253
+ ${info.desc}
254
+
255
+ `)
256
+
257
+ if ('load' === opname || 'remove' === opname) {
258
+ const matchItems = opRequestShape(ent, opname).items
259
+ .filter((it: any) => !it.optional || it.name === idF)
260
+ .sort((a: any, b: any) =>
261
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
262
+ const arg = 0 < matchItems.length
263
+ ? `vmap({${matchItems.map((it: any) =>
264
+ `{"${it.name}", ${cppLit(it.type,
265
+ it.name === idF ? ent.name + '_id' : it.name)}}`).join(', ')}})`
266
+ : 'Value::undef()'
267
+ Content(`\`\`\`cpp
268
+ Value result = client->${acc}()->${opname}(${arg}, Value::undef());
269
+ \`\`\`
270
+
271
+ `)
272
+ }
273
+ else if ('list' === opname) {
274
+ Content(`\`\`\`cpp
275
+ Value results = client->${acc}()->list(Value::undef(), Value::undef());
276
+ for (const auto& ${acc} : *results.as_list()) {
277
+ std::cout << Struct::jsonify(${acc}) << std::endl;
278
+ }
279
+ \`\`\`
280
+
281
+ `)
282
+ }
283
+ else if ('create' === opname) {
284
+ const createItems = opRequestShape(ent, 'create').items
285
+ .filter((it: any) => !it.optional)
286
+ Content(`\`\`\`cpp
287
+ Value result = client->${acc}()->create(vmap({
288
+ `)
289
+ createItems.map((it: any) => {
290
+ Content(` {"${it.name}", ${cppLit(it.type, 'example_' + it.name)}}, // ${canonToType(it.type, target.name)}
291
+ `)
292
+ })
293
+ Content(`}), Value::undef());
294
+ \`\`\`
295
+
296
+ `)
297
+ }
298
+ else if ('update' === opname) {
299
+ const updateItems = opRequestShape(ent, 'update').items
300
+ .filter((it: any) => !it.optional || it.name === idF)
301
+ .sort((a: any, b: any) =>
302
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
303
+ const updateLines = updateItems.map((it: any) =>
304
+ ` {"${it.name}", ${cppLit(it.type,
305
+ it.name === idF ? ent.name + '_id' : it.name)}},\n`).join('')
306
+ Content(`\`\`\`cpp
307
+ Value result = client->${acc}()->update(vmap({
308
+ ${updateLines} // Fields to update
309
+ }), Value::undef());
310
+ \`\`\`
311
+
312
+ `)
313
+ }
314
+ })
315
+ }
316
+
317
+
318
+ // Common methods
319
+ Content(`### Common Methods
320
+
321
+ #### \`data(arg = Value::undef()) -> Value\`
322
+
323
+ Get the entity data (no argument) or set it (with a map argument).
324
+
325
+ #### \`match(arg = Value::undef()) -> Value\`
326
+
327
+ Get the entity match criteria (no argument) or set it (with a map argument).
328
+
329
+ #### \`make() -> EntityPtr\`
330
+
331
+ Create a new \`${ent.Name}Entity\` instance with the same options.
332
+
333
+ #### \`getName() -> std::string\`
334
+
335
+ Return the entity name.
336
+
337
+ `)
338
+ })
339
+
340
+
341
+ // Features section
342
+ const activeFeatures = each(feature).filter((f: any) => f.active)
343
+ if (activeFeatures.length > 0) {
344
+ Content(`
345
+ ---
346
+
347
+ ## Features
348
+
349
+ | Feature | Version | Description |
350
+ | --- | --- | --- |
351
+ `)
352
+
353
+ activeFeatures.map((f: any) => {
354
+ Content(`| \`${f.name}\` | ${f.version || '0.0.1'} | ${f.title || ''} |
355
+ `)
356
+ })
357
+
358
+ Content(`
359
+
360
+ Features are activated via the \`feature\` option:
361
+
362
+ `)
363
+
364
+ Content(`\`\`\`cpp
365
+ auto client = std::make_shared<${model.const.Name}SDK>(vmap({
366
+ {"feature", vmap({
367
+ `)
368
+ activeFeatures.map((f: any) => {
369
+ Content(` {"${f.name}", vmap({{"active", Value(true)}})},
370
+ `)
371
+ })
372
+ Content(` })},
373
+ }));
374
+ \`\`\`
375
+
376
+ `)
377
+ }
378
+
379
+ })
380
+ })
381
+
382
+
383
+
384
+
385
+ export {
386
+ ReadmeRef
387
+ }
@@ -0,0 +1,24 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+
5
+ const ReadmeTopHowto = cmp(function ReadmeTopHowto(props: any) {
6
+ const { target } = props
7
+
8
+ Content(`**${target.title}:**
9
+ \`\`\`cpp
10
+ Value result = client->direct(vmap({
11
+ {"path", Value("/api/resource/{id}")},
12
+ {"method", Value("GET")},
13
+ {"params", vmap({{"id", Value("example")}})},
14
+ }));
15
+ \`\`\`
16
+
17
+ `)
18
+
19
+ })
20
+
21
+
22
+ export {
23
+ ReadmeTopHowto
24
+ }