@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,384 @@
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 { crateIdent, rustVarName } from './utility_rust'
10
+
11
+
12
+ // Type names come from the shared canonToType 'rust' column (single source of truth).
13
+
14
+ // A type-correct rust expression constructing a voxgig struct Value.
15
+ function rustLit(type: any, placeholder: string = 'example'): string {
16
+ const k = canonKey(type)
17
+ if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
18
+ if ('BOOLEAN' === k) return 'Value::Bool(true)'
19
+ if ('ARRAY' === k) return 'Value::empty_list()'
20
+ if ('OBJECT' === k) return 'Value::empty_map()'
21
+ return `Value::str("${placeholder}")`
22
+ }
23
+
24
+
25
+ const ReadmeRef = cmp(function ReadmeRef(props: any) {
26
+ const { target } = props
27
+ const { model } = props.ctx$
28
+
29
+ const rustcrate = crateIdent(model)
30
+ const entity = getModelPath(model, `main.${KIT}.entity`)
31
+ const feature = getModelPath(model, `main.${KIT}.feature`)
32
+
33
+ const publishedEntities = each(entity).filter((e: any) => e.active !== false)
34
+
35
+ const errType = `${model.const.Name}Error`
36
+ const OP_SIGNATURES: Record<string, { sig: string, desc: string }> = {
37
+ load: {
38
+ sig: `load(reqmatch: Value, ctrl: Value) -> Result<Value, ${errType}>`,
39
+ desc: 'Load a single entity matching the given criteria. Returns the entity data on `Ok` and `Err` on failure.',
40
+ },
41
+ list: {
42
+ sig: `list(reqmatch: Value, ctrl: Value) -> Result<Value, ${errType}>`,
43
+ desc: 'List entities matching the given criteria. The match is optional — pass `Value::Noval` to list all records. `Ok` is a `Value::List`.',
44
+ },
45
+ create: {
46
+ sig: `create(reqdata: Value, ctrl: Value) -> Result<Value, ${errType}>`,
47
+ desc: 'Create a new entity with the given data. Returns the created entity data on `Ok` and `Err` on failure.',
48
+ },
49
+ update: {
50
+ sig: `update(reqdata: Value, ctrl: Value) -> Result<Value, ${errType}>`,
51
+ desc: 'Update an existing entity. The data must include the entity id. Returns the updated entity data on `Ok`.',
52
+ },
53
+ remove: {
54
+ sig: `remove(reqmatch: Value, ctrl: Value) -> Result<Value, ${errType}>`,
55
+ desc: 'Remove the entity matching the given criteria. `Err` on failure.',
56
+ },
57
+ }
58
+
59
+
60
+ File({ name: 'REFERENCE.md' }, () => {
61
+
62
+ Content(`# ${model.Name} ${target.title} SDK Reference
63
+
64
+ Complete API reference for the ${model.Name} ${target.title} SDK.
65
+
66
+
67
+ ## ${model.Name}SDK
68
+
69
+ ### Constructor
70
+
71
+ `)
72
+
73
+ Content(`\`\`\`rust
74
+ use ${rustcrate}::{${model.const.Name}SDK, Value};
75
+
76
+ let client = ${model.const.Name}SDK::new(options);
77
+ \`\`\`
78
+
79
+ Create a new SDK client instance. \`options\` is a \`Value\` map
80
+ (\`Value::Noval\` for none).
81
+
82
+ **Parameters:**
83
+
84
+ | Key | Value type | Description |
85
+ | --- | --- | --- |
86
+ ${isAuthActive(model) ? '| `apikey` | `string` | API key for authentication. |\n' : ''}| \`base\` | \`string\` | Base URL for API requests. |
87
+ | \`prefix\` | \`string\` | URL prefix appended after base. |
88
+ | \`suffix\` | \`string\` | URL suffix appended after path. |
89
+ | \`headers\` | \`map\` | Custom headers for all requests. |
90
+ | \`feature\` | \`map\` | Feature configuration. |
91
+ | \`system\` | \`map\` | System overrides. |
92
+
93
+ `)
94
+
95
+
96
+ Content(`
97
+ ### Static Functions
98
+
99
+ `)
100
+
101
+ Content(`#### \`test_sdk(testopts: Value, sdkopts: Value) -> Rc<${model.const.Name}SDK>\`
102
+
103
+ Create a test client with mock features active. Both arguments may be
104
+ \`Value::Noval\`.
105
+
106
+ \`\`\`rust
107
+ use ${rustcrate}::{test_sdk, Value};
108
+
109
+ let client = test_sdk(Value::Noval, Value::Noval);
110
+ \`\`\`
111
+
112
+ `)
113
+
114
+
115
+ Content(`
116
+ ### Instance Methods
117
+
118
+ `)
119
+
120
+
121
+ // Entity factory methods
122
+ publishedEntities.map((ent: any) => {
123
+ Content(`#### \`${rustVarName(ent.name)}(entopts: Value) -> Rc<${ent.Name}Entity>\`
124
+
125
+ Create a new \`${ent.Name}Entity\` instance. Pass \`Value::Noval\` for no
126
+ initial options.
127
+
128
+ `)
129
+ })
130
+
131
+
132
+ Content(`#### \`options_map() -> Value\`
133
+
134
+ Return a deep copy of the current SDK options.
135
+
136
+ #### \`get_utility() -> Rc<Utility>\`
137
+
138
+ Return a copy of the SDK utility object.
139
+
140
+ #### \`direct(fetchargs: Value) -> Result<Value, ${errType}>\`
141
+
142
+ Make a direct HTTP request to any API endpoint. \`Ok\` is a result \`Value::Map\`
143
+ with \`ok\`, \`status\`, \`headers\`, and \`data\` (or \`err\` on failure). This
144
+ escape hatch resolves to \`Ok\` even on a non-2xx response — branch on
145
+ \`getp(&result, "ok")\`.
146
+
147
+ **Parameters (\`fetchargs\` map keys):**
148
+
149
+ | Key | Value type | Description |
150
+ | --- | --- | --- |
151
+ | \`path\` | \`string\` | URL path with optional \`{param}\` placeholders. |
152
+ | \`method\` | \`string\` | HTTP method (default: \`"GET"\`). |
153
+ | \`params\` | \`map\` | Path parameter values. |
154
+ | \`query\` | \`map\` | Query string parameters. |
155
+ | \`headers\` | \`map\` | Request headers (merged with defaults). |
156
+ | \`body\` | \`any\` | Request body (maps are JSON-serialized). |
157
+
158
+ #### \`prepare(fetchargs: Value) -> Result<Value, ${errType}>\`
159
+
160
+ Prepare a fetch definition without sending. Returns the fetchdef on \`Ok\`.
161
+
162
+ `)
163
+
164
+
165
+ // Entity reference sections
166
+ publishedEntities.map((ent: any) => {
167
+ const opnames = Object.keys(ent.op || {})
168
+ const fields = ent.fields || []
169
+ const idF = entityIdField(ent)
170
+ const eVar = rustVarName(ent.name)
171
+ const method = rustVarName(ent.name)
172
+
173
+ Content(`
174
+ ---
175
+
176
+ ## ${ent.Name}Entity
177
+
178
+ `)
179
+
180
+ if (ent.short) {
181
+ Content(`${ent.short}
182
+
183
+ `)
184
+ }
185
+
186
+ Content(`\`\`\`rust
187
+ let ${eVar} = client.${method}(Value::Noval);
188
+ \`\`\`
189
+
190
+ `)
191
+
192
+
193
+ // Field schema
194
+ if (fields.length > 0) {
195
+ Content(`### Fields
196
+
197
+ | Field | Type | Required | Description |
198
+ | --- | --- | --- | --- |
199
+ `)
200
+ each(fields, (field: any) => {
201
+ const req = field.req ? 'Yes' : 'No'
202
+ const desc = field.short || ''
203
+ Content(`| \`${field.name}\` | \`${canonToType(field.type, target.name)}\` | ${req} | ${desc} |
204
+ `)
205
+ })
206
+
207
+ Content(`
208
+ `)
209
+
210
+ // Field operations breakdown
211
+ const hasFieldOps = fields.some((f: any) => f.op && Object.keys(f.op).length > 0)
212
+ if (hasFieldOps) {
213
+ const opcols = ['load', 'list', 'create', 'update', 'remove']
214
+ .filter((op: string) => opnames.includes(op) && ent.op[op]?.active !== false)
215
+ Content(`### Field Usage by Operation
216
+
217
+ | Field | ${opcols.join(' | ')} |
218
+ | --- | ${opcols.map(() => '---').join(' | ')} |
219
+ `)
220
+ each(fields, (field: any) => {
221
+ const fops = field.op || {}
222
+ const cols = opcols.map((op: string) => {
223
+ const fop = fops[op]
224
+ if (null == fop) return '-'
225
+ if (fop.active === false) return '-'
226
+ return 'Yes'
227
+ })
228
+ Content(`| \`${field.name}\` | ${cols.join(' | ')} |
229
+ `)
230
+ })
231
+
232
+ Content(`
233
+ `)
234
+ }
235
+ }
236
+
237
+
238
+ // Operation details
239
+ if (opnames.length > 0) {
240
+ Content(`### Operations
241
+
242
+ `)
243
+
244
+ opnames.map((opname: string) => {
245
+ const info = OP_SIGNATURES[opname]
246
+ if (!info) return
247
+
248
+ Content(`#### \`${info.sig}\`
249
+
250
+ ${info.desc}
251
+
252
+ `)
253
+
254
+ if ('load' === opname || 'remove' === opname) {
255
+ const matchItems = opRequestShape(ent, opname).items
256
+ .filter((it: any) => !it.optional || it.name === idF)
257
+ .sort((a: any, b: any) =>
258
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
259
+ const arg = 0 < matchItems.length
260
+ ? `jo(vec![${matchItems.map((it: any) =>
261
+ `("${it.name}", ${rustLit(it.type,
262
+ it.name === idF ? ent.name + '_id' : it.name)})`).join(', ')}])`
263
+ : 'Value::Noval'
264
+ Content(`\`\`\`rust
265
+ let result = client.${method}(Value::Noval).${opname}(${arg}, Value::Noval).unwrap();
266
+ \`\`\`
267
+
268
+ `)
269
+ }
270
+ else if ('list' === opname) {
271
+ Content(`\`\`\`rust
272
+ let results = client.${method}(Value::Noval).list(Value::Noval, Value::Noval).unwrap();
273
+ if let Value::List(items) = &results {
274
+ for ${eVar} in items.borrow().iter() {
275
+ println!("{:?}", ${eVar});
276
+ }
277
+ }
278
+ \`\`\`
279
+
280
+ `)
281
+ }
282
+ else if ('create' === opname) {
283
+ const createItems = opRequestShape(ent, 'create').items
284
+ .filter((it: any) => !it.optional)
285
+ Content(`\`\`\`rust
286
+ let result = client.${method}(Value::Noval).create(jo(vec![
287
+ `)
288
+ createItems.map((it: any) => {
289
+ Content(` ("${it.name}", ${rustLit(it.type, 'example_' + it.name)}), // ${canonToType(it.type, target.name)}
290
+ `)
291
+ })
292
+ Content(`]), Value::Noval).unwrap();
293
+ \`\`\`
294
+
295
+ `)
296
+ }
297
+ else if ('update' === opname) {
298
+ const updateItems = opRequestShape(ent, 'update').items
299
+ .filter((it: any) => !it.optional || it.name === idF)
300
+ .sort((a: any, b: any) =>
301
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
302
+ const updateLines = updateItems.map((it: any) =>
303
+ ` ("${it.name}", ${rustLit(it.type,
304
+ it.name === idF ? ent.name + '_id' : it.name)}),\n`).join('')
305
+ Content(`\`\`\`rust
306
+ let result = client.${method}(Value::Noval).update(jo(vec![
307
+ ${updateLines} // Fields to update
308
+ ]), Value::Noval).unwrap();
309
+ \`\`\`
310
+
311
+ `)
312
+ }
313
+ })
314
+ }
315
+
316
+
317
+ // Common methods
318
+ Content(`### Common Methods
319
+
320
+ #### \`data(args: Option<&Value>) -> Value\`
321
+
322
+ Get the entity data. Pass \`Some(&map)\` to set it.
323
+
324
+ #### \`matchv(args: Option<&Value>) -> Value\`
325
+
326
+ Get the entity match criteria. Pass \`Some(&map)\` to set it.
327
+
328
+ #### \`make() -> Rc<dyn Entity>\`
329
+
330
+ Create a new \`${ent.Name}Entity\` instance with the same options.
331
+
332
+ #### \`get_name() -> String\`
333
+
334
+ Return the entity name.
335
+
336
+ `)
337
+ })
338
+
339
+
340
+ // Features section
341
+ const activeFeatures = each(feature).filter((f: any) => f.active)
342
+ if (activeFeatures.length > 0) {
343
+ Content(`
344
+ ---
345
+
346
+ ## Features
347
+
348
+ | Feature | Version | Description |
349
+ | --- | --- | --- |
350
+ `)
351
+
352
+ activeFeatures.map((f: any) => {
353
+ Content(`| \`${f.name}\` | ${f.version || '0.0.1'} | ${f.title || ''} |
354
+ `)
355
+ })
356
+
357
+ Content(`
358
+
359
+ Features are activated via the \`feature\` option:
360
+
361
+ `)
362
+
363
+ Content(`\`\`\`rust
364
+ let client = ${model.const.Name}SDK::new(jo(vec![
365
+ ("feature", jo(vec![
366
+ `)
367
+ activeFeatures.map((f: any) => {
368
+ Content(` ("${f.name}", jo(vec![("active", Value::Bool(true))])),
369
+ `)
370
+ })
371
+ Content(` ])),
372
+ ]));
373
+ \`\`\`
374
+
375
+ `)
376
+ }
377
+
378
+ })
379
+ })
380
+
381
+
382
+ export {
383
+ ReadmeRef
384
+ }
@@ -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(`**Rust:**
9
+ \`\`\`rust
10
+ let result = client.direct(jo(vec![
11
+ ("path", Value::str("/api/resource/{id}")),
12
+ ("method", Value::str("GET")),
13
+ ("params", jo(vec![("id", Value::str("example"))])),
14
+ ]));
15
+ \`\`\`
16
+
17
+ `)
18
+
19
+ })
20
+
21
+
22
+ export {
23
+ ReadmeTopHowto
24
+ }
@@ -0,0 +1,95 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { crateIdent, rustVarName } from './utility_rust'
11
+
12
+
13
+ // A type-correct rust expression constructing a voxgig struct Value for a
14
+ // param. Strings render the quoted placeholder; numeric/boolean/array/object
15
+ // render a typed literal.
16
+ function rustLit(type: any, placeholder: string = 'example'): string {
17
+ const k = canonKey(type)
18
+ if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
19
+ if ('BOOLEAN' === k) return 'Value::Bool(true)'
20
+ if ('ARRAY' === k) return 'Value::empty_list()'
21
+ if ('OBJECT' === k) return 'Value::empty_map()'
22
+ return `Value::str("${placeholder}")`
23
+ }
24
+
25
+
26
+ const ReadmeTopQuick = cmp(function ReadmeTopQuick(props: any) {
27
+ const { target, ctx$: { model } } = props
28
+
29
+ const rustcrate = crateIdent(model)
30
+ const entity = getModelPath(model, `main.${KIT}.entity`)
31
+
32
+ const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
33
+
34
+ const authActive = isAuthActive(model)
35
+ const ctor = authActive
36
+ ? `${model.const.Name}SDK::new(jo(vec![\n ("apikey", Value::str(std::env::var("${envName(model)}_APIKEY").unwrap_or_default())),\n]))`
37
+ : `${model.const.Name}SDK::new(Value::Noval)`
38
+
39
+ Content(`\`\`\`rust
40
+ use ${rustcrate}::{jo, ${model.const.Name}SDK, Value};
41
+
42
+ let client = ${ctor};
43
+
44
+ `)
45
+
46
+ if (exampleEntity) {
47
+ const eName = nom(exampleEntity, 'Name')
48
+ const eVar = rustVarName(exampleEntity.name)
49
+ const method = rustVarName(exampleEntity.name)
50
+ const opnames = Object.keys(exampleEntity.op || {})
51
+ // Model-driven id key: null when the entity has no id-like field, in which
52
+ // case the load example takes no match argument.
53
+ const idF = entityIdField(exampleEntity)
54
+
55
+ if (opnames.includes('list')) {
56
+ Content(`// List all ${eName.toLowerCase()}s (returns a Value::List, Err on failure)
57
+ let ${eVar}s = client.${method}(Value::Noval).list(Value::Noval, Value::Noval).unwrap();
58
+ if let Value::List(items) = &${eVar}s {
59
+ for ${eVar} in items.borrow().iter() {
60
+ println!("{:?}", ${eVar});
61
+ }
62
+ }
63
+ `)
64
+ }
65
+
66
+ if (opnames.includes('load')) {
67
+ // Every REQUIRED load-match key (id first, then parent path params like
68
+ // page_id) — the same shape the runtime resolves path params from, so
69
+ // the example always works.
70
+ const loadItems = opRequestShape(exampleEntity, 'load').items
71
+ .filter((it: any) => !it.optional || it.name === idF)
72
+ .sort((a: any, b: any) =>
73
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
74
+ const loadArg = 0 < loadItems.length
75
+ ? `jo(vec![${loadItems.map((it: any) =>
76
+ `("${it.name}", ${rustLit(it.type,
77
+ it.name === idF ? 'example_id' : 'example_' + it.name)})`).join(', ')}])`
78
+ : 'Value::Noval'
79
+ Content(`
80
+ // Load a specific ${eName.toLowerCase()} (returns the record, Err on failure)
81
+ let ${eVar} = client.${method}(Value::Noval).load(${loadArg}, Value::Noval).unwrap();
82
+ println!("{:?}", ${eVar});
83
+ `)
84
+ }
85
+ }
86
+
87
+ Content(`\`\`\`
88
+ `)
89
+
90
+ })
91
+
92
+
93
+ export {
94
+ ReadmeTopQuick
95
+ }
@@ -0,0 +1,81 @@
1
+
2
+ import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { crateIdent, rustVarName } from './utility_rust'
11
+
12
+
13
+ // A type-correct rust expression constructing a voxgig struct Value for a
14
+ // field's canonical type.
15
+ function rustLit(type: any): string {
16
+ const k = canonKey(type)
17
+ if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
18
+ if ('BOOLEAN' === k) return 'Value::Bool(true)'
19
+ if ('ARRAY' === k) return 'Value::empty_list()'
20
+ if ('OBJECT' === k) return 'Value::empty_map()'
21
+ return 'Value::str("example")'
22
+ }
23
+
24
+
25
+ const ReadmeTopTest = cmp(function ReadmeTopTest(props: any) {
26
+ const { target, ctx$: { model } } = props
27
+
28
+ const rustcrate = crateIdent(model)
29
+ const entity = getModelPath(model, `main.${KIT}.entity`)
30
+
31
+ // Pick an entity with a real op (prefer a read op) — never fabricate a
32
+ // `load` on an op-less entity.
33
+ const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
34
+
35
+ Content(`\`\`\`rust
36
+ use ${rustcrate}::{jo, test_sdk, Value};
37
+
38
+ let client = test_sdk(Value::Noval, Value::Noval);
39
+ `)
40
+
41
+ if (exampleEntity && primaryOp) {
42
+ const eName = nom(exampleEntity, 'Name')
43
+ const method = rustVarName(exampleEntity.name)
44
+ const idF = entityIdField(exampleEntity)
45
+ const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
46
+ let arg = 'Value::Noval'
47
+ if (isMatchOp) {
48
+ // Every REQUIRED match key (id first) — the same shape that generates
49
+ // the op's request match.
50
+ const items = opRequestShape(exampleEntity, primaryOp).items
51
+ .filter((it: any) => !it.optional || it.name === idF)
52
+ .sort((a: any, b: any) =>
53
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
54
+ arg = 0 < items.length
55
+ ? `jo(vec![${items.map((it: any) =>
56
+ `("${it.name}", ${it.name === idF ? 'Value::str("test01")' : rustLit(it.type)})`).join(', ')}])`
57
+ : 'Value::Noval'
58
+ } else if ('create' === primaryOp || 'update' === primaryOp) {
59
+ const items = opRequestShape(exampleEntity, primaryOp).items
60
+ .filter((it: any) => it.name !== idF && it.name !== 'id')
61
+ const required = items.filter((it: any) => !it.optional)
62
+ const chosen = required.length ? required : items.slice(0, 3)
63
+ arg = 0 < chosen.length
64
+ ? `jo(vec![${chosen.map((it: any) => `("${it.name}", ${rustLit(it.type)})`).join(', ')}])`
65
+ : 'Value::empty_map()'
66
+ }
67
+ const eVar = rustVarName(exampleEntity.name) + ('list' === primaryOp ? 's' : '')
68
+ Content(`let ${eVar} = client.${method}(Value::Noval).${primaryOp}(${arg}, Value::Noval).unwrap();
69
+ println!("{:?}", ${eVar});
70
+ `)
71
+ }
72
+
73
+ Content(`\`\`\`
74
+ `)
75
+
76
+ })
77
+
78
+
79
+ export {
80
+ ReadmeTopTest
81
+ }
@@ -104,7 +104,14 @@ fn ${evar}_entity_instance() {
104
104
  let ent = testsdk.${method}(Value::Noval);
105
105
  assert_eq!(ent.get_name(), "${entity.name}");
106
106
  }
107
+ `)
107
108
 
109
+ // The stream test drives the list op; only emit it when the entity has a
110
+ // list op (a create/load-only entity has no list endpoint, so
111
+ // stream("list") panics with point_no_points).
112
+ const flowHasList = allSteps.some((s: any) => 'list' === s.op)
113
+ if (flowHasList) {
114
+ Content(`
108
115
  #[test]
109
116
  fn ${evar}_entity_stream() {
110
117
  // stream() runs the list op through the full pipeline and yields each
@@ -144,7 +151,10 @@ fn ${evar}_entity_stream() {
144
151
  .collect();
145
152
  assert_eq!(plain_items.len(), 2, "fallback stream should yield both items");
146
153
  }
154
+ `)
155
+ }
147
156
 
157
+ Content(`
148
158
  #[test]
149
159
  fn ${evar}_entity_basic() {
150
160
  let setup = ${evar}_basic_setup(Value::Noval);
@@ -13,6 +13,7 @@ import { cmp, each, Folder, File, Content } from '@voxgig/sdkgen'
13
13
 
14
14
  import { TestEntity } from './TestEntity_rust'
15
15
  import { TestDirect } from './TestDirect_rust'
16
+ import { ReadmeExamplesTest } from './ReadmeExamplesTest_rust'
16
17
  import { crateIdent } from './utility_rust'
17
18
 
18
19
 
@@ -42,6 +43,9 @@ fn exists_test_mode() {
42
43
  TestEntity({ target, entity, rustcrate })
43
44
  TestDirect({ target, entity, rustcrate })
44
45
  })
46
+
47
+ // Validate the documented rust examples in the READMEs are well-formed.
48
+ ReadmeExamplesTest({ target })
45
49
  })
46
50
  })
47
51