@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,49 @@
1
+
2
+ import { cmp, Content, installCommand, isPublished, repoInfo } from '@voxgig/sdkgen'
3
+
4
+ import { crateName } from './utility_rust'
5
+
6
+
7
+ const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
8
+ const { target, ctx$ } = props
9
+ const { model } = ctx$
10
+
11
+ if (isPublished(model, target.name)) {
12
+ Content(`\`\`\`bash
13
+ ${installCommand(model, target.name)}
14
+ \`\`\`
15
+
16
+ Or add it as a path dependency in your \`Cargo.toml\`:
17
+
18
+ \`\`\`toml
19
+ [dependencies]
20
+ ${crateName(model)} = { path = "../${target.name}" }
21
+ \`\`\`
22
+
23
+ `)
24
+ return
25
+ }
26
+
27
+ // Publish pending: not yet on crates.io. Depend on the git release tag or
28
+ // on a local source checkout via a path dependency.
29
+ const { releasesUrl } = repoInfo(model)
30
+ Content(`This crate is not yet published to crates.io. Depend on it from the GitHub
31
+ release tag (\`${target.name}/vX.Y.Z\`, see [Releases](${releasesUrl})) or
32
+ from a source checkout by adding it to your \`Cargo.toml\`:
33
+
34
+ \`\`\`toml
35
+ [dependencies]
36
+ # From a source checkout:
37
+ ${crateName(model)} = { path = "../${target.name}" }
38
+
39
+ # Or from the git release tag:
40
+ # ${crateName(model)} = { git = "<repo-url>", tag = "${target.name}/vX.Y.Z" }
41
+ \`\`\`
42
+
43
+ `)
44
+ })
45
+
46
+
47
+ export {
48
+ ReadmeInstall
49
+ }
@@ -0,0 +1,66 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { rustVarName } from './utility_rust'
10
+
11
+
12
+ const ReadmeIntro = cmp(function ReadmeIntro(props: any) {
13
+ const { target, ctx$: { model } } = props
14
+ const info = (model.main && model.main.kit && model.main.kit.info) || {}
15
+ const tagline = info.tagline || ''
16
+
17
+ Content(`# ${model.Name} ${target.title} SDK
18
+
19
+ ${tagline}
20
+
21
+ The ${target.title} SDK for the ${model.Name} API — an entity-oriented client following idiomatic Rust conventions.
22
+
23
+ `)
24
+
25
+ // Emphasise the entity-oriented design: the SDK surfaces the API as
26
+ // capitalised, semantic Entities with a small, uniform verb set rather
27
+ // than raw URL paths and query strings. The example entity name is
28
+ // derived from the model, never hardcoded.
29
+ const entity = getModelPath(model, `main.${KIT}.entity`)
30
+ const exampleEntity = Object.values(entity || {})
31
+ .find((e: any) => e.active !== false) as any
32
+ const example = exampleEntity
33
+ ? `for example \`client.${rustVarName(exampleEntity.name)}(Value::Noval)\` — each`
34
+ : 'each'
35
+
36
+ // Model-driven op list — only the operations the active entities actually
37
+ // expose (a read-only entity has just list+load); never claim
38
+ // create/update/remove exist when no entity has them.
39
+ const CANON_OPS = ['list', 'load', 'create', 'update', 'remove']
40
+ const opSet = new Set<string>()
41
+ Object.values(entity || {}).forEach((e: any) => {
42
+ if (!e || e.active === false) return
43
+ Object.keys(e.op || {}).forEach((o: string) => {
44
+ if (e.op[o] && e.op[o].active !== false) opSet.add(o)
45
+ })
46
+ })
47
+ const opNames = CANON_OPS.filter((o) => opSet.has(o))
48
+ .concat([...opSet].filter((o) => !CANON_OPS.includes(o)))
49
+ const opList = (opNames.length ? opNames : ['list', 'load'])
50
+ .map((o) => '`' + o + '`').join(', ')
51
+
52
+ Content(`The SDK exposes the API as capitalised, semantic **Entities** — ${example}
53
+ carrying a small, uniform set of operations (${opList}) instead of raw URL
54
+ paths and query strings. You work with named resources and verbs, which
55
+ keeps the cognitive load low.
56
+
57
+ > Other languages, the CLI, and MCP server live alongside this one — see
58
+ > the [top-level README](../README.md).
59
+
60
+ `)
61
+ })
62
+
63
+
64
+ export {
65
+ ReadmeIntro
66
+ }
@@ -0,0 +1,153 @@
1
+
2
+ import { cmp, each, Content, isAuthActive } 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
+ const ReadmeModel = cmp(function ReadmeModel(props: any) {
13
+ const { target, ctx$: { model } } = props
14
+
15
+ const rustcrate = crateIdent(model)
16
+ const entity = getModelPath(model, `main.${KIT}.entity`)
17
+ const entityList = each(entity).filter((e: any) => e.active !== false)
18
+
19
+ // Model-driven op rows for the shared entity interface: emit a row only for
20
+ // operations at least one active entity actually exposes.
21
+ const opUnion = new Set<string>()
22
+ entityList.forEach((e: any) => Object.keys(e.op || {})
23
+ .forEach((o: string) => { if (e.op[o] && e.op[o].active !== false) opUnion.add(o) }))
24
+ const opRowDefs: Record<string, string> = {
25
+ load: '| `load` | `(reqmatch: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | Load a single entity by match criteria. |',
26
+ list: '| `list` | `(reqmatch: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | List entities matching the criteria (Ok is a `Value::List`). |',
27
+ create: '| `create` | `(reqdata: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | Create a new entity. |',
28
+ update: '| `update` | `(reqdata: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | Update an existing entity. |',
29
+ remove: '| `remove` | `(reqmatch: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | Remove an entity. |',
30
+ }
31
+ const opRows = ['load', 'list', 'create', 'update', 'remove']
32
+ .filter((o) => opUnion.has(o)).map((o) => opRowDefs[o]).join('\n')
33
+
34
+ const apikeyOptionRow = isAuthActive(model)
35
+ ? '| `apikey` | `string` | API key for authentication. |\n'
36
+ : ''
37
+
38
+ Content(`### ${model.const.Name}SDK
39
+
40
+ \`\`\`rust
41
+ use ${rustcrate}::{${model.const.Name}SDK, Value};
42
+
43
+ let client = ${model.const.Name}SDK::new(options);
44
+ \`\`\`
45
+
46
+ Creates a new SDK client. \`options\` is a \`Value\` map (\`Value::Noval\` for
47
+ none) carrying any of the following keys:
48
+
49
+ | Option | Value type | Description |
50
+ | --- | --- | --- |
51
+ ${apikeyOptionRow}| \`base\` | \`string\` | Base URL of the API server. |
52
+ | \`prefix\` | \`string\` | URL path prefix prepended to all requests. |
53
+ | \`suffix\` | \`string\` | URL path suffix appended to all requests. |
54
+ | \`feature\` | \`map\` | Feature activation flags. |
55
+ | \`system\` | \`map\` | System overrides (e.g. a custom fetcher). |
56
+
57
+ ### test_sdk
58
+
59
+ \`\`\`rust
60
+ use ${rustcrate}::{test_sdk, Value};
61
+
62
+ let client = test_sdk(testopts, sdkopts);
63
+ \`\`\`
64
+
65
+ Creates a test-mode client with mock transport. Both arguments may be
66
+ \`Value::Noval\`.
67
+
68
+ ### ${model.const.Name}SDK methods
69
+
70
+ | Method | Signature | Description |
71
+ | --- | --- | --- |
72
+ | \`options_map\` | \`() -> Value\` | Deep copy of the current SDK options. |
73
+ | \`get_utility\` | \`() -> Rc<Utility>\` | Copy of the SDK utility object. |
74
+ | \`prepare\` | \`(fetchargs: Value) -> Result<Value, ${model.const.Name}Error>\` | Build an HTTP request definition without sending. |
75
+ | \`direct\` | \`(fetchargs: Value) -> Result<Value, ${model.const.Name}Error>\` | Build and send an HTTP request. \`Ok\` is a result map (branch on \`ok\`). |
76
+ `)
77
+
78
+ each(entityList, (ent: any) => {
79
+ const article = /^[aeiou]/i.test(ent.Name) ? 'an' : 'a'
80
+ Content(`| \`${rustVarName(ent.name)}\` | \`(entopts: Value) -> Rc<${ent.Name}Entity>\` | Create ${article} ${ent.Name} entity instance. |
81
+ `)
82
+ })
83
+
84
+ Content(`
85
+ ### Entity interface
86
+
87
+ All entities share the same interface.
88
+
89
+ | Method | Signature | Description |
90
+ | --- | --- | --- |
91
+ ${opRows}
92
+ | \`data\` | \`(args: Option<&Value>) -> Value\` | Get entity data (pass \`Some(&map)\` to set). |
93
+ | \`matchv\` | \`(args: Option<&Value>) -> Value\` | Get entity match criteria (pass \`Some(&map)\` to set). |
94
+ | \`make\` | \`() -> Rc<dyn Entity>\` | Create a new instance with the same options. |
95
+ | \`get_name\` | \`() -> String\` | Return the entity name. |
96
+
97
+ ### Result shape
98
+
99
+ Entity operations return \`Result<Value, ${model.const.Name}Error>\` — the
100
+ bare result data on \`Ok\` (a \`Value::Map\` for single-entity ops, a
101
+ \`Value::List\` for \`list\`) and the branded error on \`Err\`.
102
+
103
+ The \`direct()\` escape hatch resolves to \`Ok\` even on a non-2xx response —
104
+ it returns a result \`Value::Map\` you branch on via \`getp(&result, "ok")\`:
105
+
106
+ | Key | Type | Description |
107
+ | --- | --- | --- |
108
+ | \`ok\` | \`bool\` | \`true\` if the HTTP status is 2xx. |
109
+ | \`status\` | \`number\` | HTTP status code. |
110
+ | \`headers\` | \`map\` | Response headers. |
111
+ | \`data\` | \`any\` | Parsed JSON response body. |
112
+
113
+ On error, \`ok\` is \`false\` and \`err\` carries the error value.
114
+
115
+ `)
116
+
117
+ // Entities summary
118
+ Content(`### Entities
119
+
120
+ `)
121
+ each(entityList, (ent: any) => {
122
+ const fields = ent.fields || []
123
+ const opnames = Object.keys(ent.op || {})
124
+ const ops = ent.op || {}
125
+ const points = each(ops).map((op: any) =>
126
+ op.points ? each(op.points) : []
127
+ ).flat()
128
+ const path = points.length > 0 ? (points[0] as any).orig || '' : ''
129
+
130
+ Content(`#### ${ent.Name}
131
+
132
+ | Field | Description |
133
+ | --- | --- |
134
+ `)
135
+ each(fields, (field: any) => {
136
+ Content(`| \`${field.name}\` | ${field.short || ''} |
137
+ `)
138
+ })
139
+
140
+ Content(`
141
+ Operations: ${opnames.map((n: string) => n.charAt(0).toUpperCase() + n.slice(1)).join(', ')}.
142
+
143
+ API path: \`${path}\`
144
+
145
+ `)
146
+ })
147
+
148
+ })
149
+
150
+
151
+ export {
152
+ ReadmeModel
153
+ }
@@ -0,0 +1,60 @@
1
+
2
+ import { cmp, each, Content, envName, isAuthActive } from '@voxgig/sdkgen'
3
+
4
+
5
+ const ReadmeOptions = cmp(function ReadmeOptions(props: any) {
6
+ const { target } = props
7
+ const { model } = props.ctx$
8
+
9
+ const publishedOptions = each(target.options).filter((option: any) =>
10
+ option.publish && ('apikey' !== option.name || isAuthActive(model)))
11
+ if (0 === publishedOptions.length) {
12
+ return
13
+ }
14
+
15
+ Content(`
16
+
17
+ ## Options
18
+
19
+ Pass an options map when creating a client instance:
20
+
21
+ `)
22
+
23
+ Content(`\`\`\`rust
24
+ let client = ${model.Name}SDK::new(jo(vec![
25
+ `)
26
+
27
+ publishedOptions.map((option: any) => {
28
+ if ('apikey' === option.name) {
29
+ Content(` ("${option.name}", Value::str(std::env::var("${envName(model)}_APIKEY").unwrap_or_default())),
30
+ `)
31
+ }
32
+ else {
33
+ const val = option.kind === 'string' ? 'Value::str("...")' : 'Value::Noval'
34
+ Content(` // ("${option.name}", ${val}),
35
+ `)
36
+ }
37
+ })
38
+
39
+ Content(`]));
40
+ \`\`\`
41
+
42
+ `)
43
+
44
+ Content(`| Option | Type | Description |
45
+ | --- | --- | --- |
46
+ `)
47
+
48
+ publishedOptions.map((option: any) => {
49
+ Content(`| \`${option.name}\` | \`${option.kind}\` | ${option.short} |
50
+ `)
51
+ })
52
+
53
+ Content(`
54
+ `)
55
+ })
56
+
57
+
58
+ export {
59
+ ReadmeOptions
60
+ }
@@ -0,0 +1,212 @@
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 { crateIdent, rustVarName } from './utility_rust'
11
+
12
+
13
+ const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
14
+ const { target, ctx$: { model } } = props
15
+
16
+ const rustcrate = crateIdent(model)
17
+ const entity = getModelPath(model, `main.${KIT}.entity`)
18
+
19
+ const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
20
+
21
+ // Find a nested entity if available: one with a parent chain
22
+ // (relations.ancestors), an active load op, and a required non-id load
23
+ // param to demonstrate (the parent key, e.g. page_id).
24
+ const nestedEntity = Object.values(entity).find((e: any) =>
25
+ e.active !== false &&
26
+ e.relations && e.relations.ancestors && 0 < e.relations.ancestors.length &&
27
+ entityOps(e).includes('load') &&
28
+ opRequestShape(e, 'load').items.some((it: any) =>
29
+ !it.optional && it.name !== entityIdField(e))
30
+ ) as any
31
+
32
+ const authActive = isAuthActive(model)
33
+ const ctor = authActive
34
+ ? `${model.const.Name}SDK::new(jo(vec![\n ("apikey", Value::str(std::env::var("${envName(model)}_APIKEY").unwrap_or_default())),\n]))`
35
+ : `${model.const.Name}SDK::new(Value::Noval)`
36
+
37
+ // A type-correct rust expression constructing a voxgig struct Value.
38
+ const rustLit = (type: any, placeholder: string = 'example'): string => {
39
+ const k = canonKey(type)
40
+ if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
41
+ if ('BOOLEAN' === k) return 'Value::Bool(true)'
42
+ if ('ARRAY' === k) return 'Value::empty_list()'
43
+ if ('OBJECT' === k) return 'Value::empty_map()'
44
+ return `Value::str("${placeholder}")`
45
+ }
46
+
47
+ Content(`### 1. Create a client
48
+
49
+ \`\`\`rust
50
+ use ${rustcrate}::{getp, jo, ${model.const.Name}SDK, Value};
51
+
52
+ let client = ${ctor};
53
+ \`\`\`
54
+
55
+ `)
56
+
57
+ if (exampleEntity) {
58
+ const eName = nom(exampleEntity, 'Name')
59
+ const article = /^[aeiou]/i.test(eName) ? 'an' : 'a'
60
+ const eVar = rustVarName(exampleEntity.name)
61
+ const method = rustVarName(exampleEntity.name)
62
+ const opnames = entityOps(exampleEntity)
63
+ // Model-driven id key: `idF` is the entity's id-like MATCH field name, or
64
+ // null. `dataIdF` is the id on the RETURNED record's data type.
65
+ const idF = entityIdField(exampleEntity)
66
+ const dataIdF = entityDataIdField(exampleEntity)
67
+
68
+ if (opnames.includes('list')) {
69
+ Content(`### 2. List ${eName.toLowerCase()} records
70
+
71
+ \`list()\` returns a \`Value::List\` of records and returns \`Err\` on
72
+ failure — match on the \`Result\`.
73
+
74
+ \`\`\`rust
75
+ match client.${method}(Value::Noval).list(Value::Noval, Value::Noval) {
76
+ Ok(${eVar}s) => {
77
+ if let Value::List(items) = &${eVar}s {
78
+ for ${eVar} in items.borrow().iter() {
79
+ println!("{:?}", ${eVar});
80
+ }
81
+ }
82
+ }
83
+ Err(err) => eprintln!("list failed: {}", err),
84
+ }
85
+ \`\`\`
86
+
87
+ `)
88
+ }
89
+
90
+ if (nestedEntity) {
91
+ const neName = nom(nestedEntity, 'Name')
92
+ const neArticle = /^[aeiou]/i.test(neName) ? 'an' : 'a'
93
+ const neVar = rustVarName(nestedEntity.name)
94
+ const neMethod = rustVarName(nestedEntity.name)
95
+
96
+ const neIdF = entityIdField(nestedEntity)
97
+ const neRequired = opRequestShape(nestedEntity, 'load').items
98
+ .filter((it: any) => !it.optional)
99
+ .sort((a: any, b: any) =>
100
+ (a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
101
+ const parentItem = neRequired.find((it: any) => it.name !== neIdF) as any
102
+ const parentParam = parentItem && parentItem.name
103
+ const parentName = parentParam ? parentParam.replace(/_id$/, '') : 'its parent'
104
+ const neMatch = neRequired.map((it: any) =>
105
+ `("${it.name}", ${rustLit(it.type,
106
+ it.name === neIdF ? 'example_id' : 'example_' + it.name)})`)
107
+
108
+ Content(`### 3. Load ${neArticle} ${neName.toLowerCase()}
109
+
110
+ ${neName} is nested under ${parentName}, so provide the \`${parentParam}\`.
111
+ \`load()\` returns the bare record and returns \`Err\` on failure.
112
+
113
+ \`\`\`rust
114
+ match client.${neMethod}(Value::Noval).load(jo(vec![${neMatch.join(', ')}]), Value::Noval) {
115
+ Ok(${neVar}) => println!("{:?}", ${neVar}),
116
+ Err(err) => eprintln!("load failed: {}", err),
117
+ }
118
+ \`\`\`
119
+
120
+ `)
121
+ }
122
+ else if (opnames.includes('load')) {
123
+ const loadRequired = opRequestShape(exampleEntity, 'load').items
124
+ .filter((it: any) => !it.optional || it.name === idF)
125
+ .sort((a: any, b: any) =>
126
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
127
+ const loadArg = 0 < loadRequired.length
128
+ ? `jo(vec![${loadRequired.map((it: any) =>
129
+ `("${it.name}", ${rustLit(it.type,
130
+ it.name === idF ? 'example_id' : 'example_' + it.name)})`).join(', ')}])`
131
+ : 'Value::Noval'
132
+
133
+ Content(`### 3. Load ${article} ${eName.toLowerCase()}
134
+
135
+ \`load()\` returns the bare record and returns \`Err\` on failure.
136
+
137
+ \`\`\`rust
138
+ match client.${method}(Value::Noval).load(${loadArg}, Value::Noval) {
139
+ Ok(${eVar}) => println!("{:?}", ${eVar}),
140
+ Err(err) => eprintln!("load failed: {}", err),
141
+ }
142
+ \`\`\`
143
+
144
+ `)
145
+ }
146
+
147
+ // Model-driven example fields: derive the create/update body from the op
148
+ // shape so the docs reference REAL writable fields.
149
+ const examplePairs = (opname: string): string[] => {
150
+ const items = opRequestShape(exampleEntity, opname).items
151
+ .filter((it: any) => (it.name !== idF && it.name !== 'id') ||
152
+ ('create' === opname && !it.optional))
153
+ const required = items.filter((it: any) => !it.optional)
154
+ const optional = items.filter((it: any) => it.optional)
155
+ const chosen = 'create' === opname
156
+ ? (required.length ? required : items.slice(0, 2))
157
+ : required.concat(optional).slice(0, Math.max(2, required.length))
158
+ return chosen.map((it: any) => `("${it.name}", ${rustLit(it.type, 'example_' + it.name)})`)
159
+ }
160
+
161
+ const idParamType = (opname: string): any => {
162
+ const it = opRequestShape(exampleEntity, opname).items.find((x: any) => x.name === idF)
163
+ return it && it.type
164
+ }
165
+ // The id VALUE for an update/remove match: read it off the returned
166
+ // `created` record with getp when its data type carries the id AND a
167
+ // create ran; otherwise a type-correct literal.
168
+ const idValueFor = (opname: string): string => (null != dataIdF && opnames.includes('create'))
169
+ ? `getp(&created, "${dataIdF}")`
170
+ : rustLit(idParamType(opname), 'example_id')
171
+
172
+ if (opnames.includes('create') || opnames.includes('update') || opnames.includes('remove')) {
173
+ Content(`### 4. Create, update, and remove
174
+
175
+ \`\`\`rust
176
+ `)
177
+ if (opnames.includes('create')) {
178
+ Content(`// Create — returns the bare created record
179
+ let created = client.${method}(Value::Noval).create(jo(vec![${examplePairs('create').join(', ')}]), Value::Noval).unwrap();
180
+
181
+ `)
182
+ }
183
+ if (opnames.includes('update')) {
184
+ const updatePairs = (idF ? [`("${idF}", ${idValueFor('update')})`] : []).concat(examplePairs('update'))
185
+ Content(`// Update
186
+ client.${method}(Value::Noval).update(jo(vec![${updatePairs.join(', ')}]), Value::Noval).unwrap();
187
+
188
+ `)
189
+ }
190
+ if (opnames.includes('remove')) {
191
+ const removePairs = opRequestShape(exampleEntity, 'remove').items
192
+ .filter((it: any) => !it.optional || it.name === idF)
193
+ .sort((a: any, b: any) =>
194
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
195
+ .map((it: any) => it.name === idF
196
+ ? `("${it.name}", ${idValueFor('remove')})`
197
+ : `("${it.name}", ${rustLit(it.type, 'example_' + it.name)})`)
198
+ Content(`// Remove
199
+ client.${method}(Value::Noval).remove(${removePairs.length ? `jo(vec![${removePairs.join(', ')}])` : 'Value::Noval'}, Value::Noval).unwrap();
200
+ `)
201
+ }
202
+ Content(`\`\`\`
203
+
204
+ `)
205
+ }
206
+ }
207
+ })
208
+
209
+
210
+ export {
211
+ ReadmeQuick
212
+ }