@voxgig/sdkgen 1.3.13 → 1.3.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/action.js.map +1 -1
  3. package/dist/action/feature.js.map +1 -1
  4. package/dist/action/target.js.map +1 -1
  5. package/dist/cmp/AgentGuide.js.map +1 -1
  6. package/dist/cmp/AgentGuideContent.js.map +1 -1
  7. package/dist/cmp/AgentGuideFeature.js.map +1 -1
  8. package/dist/cmp/AgentGuideTop.js.map +1 -1
  9. package/dist/cmp/Changelog.js.map +1 -1
  10. package/dist/cmp/Deploy.js.map +1 -1
  11. package/dist/cmp/Entity.js.map +1 -1
  12. package/dist/cmp/Feature.js.map +1 -1
  13. package/dist/cmp/FeatureHook.js.map +1 -1
  14. package/dist/cmp/License.js.map +1 -1
  15. package/dist/cmp/Main.js.map +1 -1
  16. package/dist/cmp/Readme.js.map +1 -1
  17. package/dist/cmp/ReadmeEntity.js.map +1 -1
  18. package/dist/cmp/ReadmeErrors.js +1 -1
  19. package/dist/cmp/ReadmeErrors.js.map +1 -1
  20. package/dist/cmp/ReadmeExplanation.js +2 -2
  21. package/dist/cmp/ReadmeExplanation.js.map +1 -1
  22. package/dist/cmp/ReadmeHowto.js.map +1 -1
  23. package/dist/cmp/ReadmeInstall.js.map +1 -1
  24. package/dist/cmp/ReadmeIntro.js.map +1 -1
  25. package/dist/cmp/ReadmeModel.js.map +1 -1
  26. package/dist/cmp/ReadmeOptions.js.map +1 -1
  27. package/dist/cmp/ReadmeQuick.js.map +1 -1
  28. package/dist/cmp/ReadmeRef.js.map +1 -1
  29. package/dist/cmp/ReadmeTop.js +1 -1
  30. package/dist/cmp/ReadmeTop.js.map +1 -1
  31. package/dist/cmp/Security.js.map +1 -1
  32. package/dist/cmp/Test.js.map +1 -1
  33. package/dist/helpers/buildIdNames.js.map +1 -1
  34. package/dist/helpers/canonType.d.ts +3 -2
  35. package/dist/helpers/canonType.js +107 -24
  36. package/dist/helpers/canonType.js.map +1 -1
  37. package/dist/helpers/collectDeps.js.map +1 -1
  38. package/dist/helpers/getMatchEntries.js.map +1 -1
  39. package/dist/helpers/naming.d.ts +5 -1
  40. package/dist/helpers/naming.js +37 -0
  41. package/dist/helpers/naming.js.map +1 -1
  42. package/dist/helpers/opExample.d.ts +1 -1
  43. package/dist/helpers/opExample.js +37 -20
  44. package/dist/helpers/opExample.js.map +1 -1
  45. package/dist/helpers/opShape.d.ts +3 -1
  46. package/dist/helpers/opShape.js +91 -3
  47. package/dist/helpers/opShape.js.map +1 -1
  48. package/dist/helpers/packageMeta.js.map +1 -1
  49. package/dist/sdkgen.d.ts +3 -3
  50. package/dist/sdkgen.js +11 -1
  51. package/dist/sdkgen.js.map +1 -1
  52. package/dist/tsconfig.tsbuildinfo +1 -1
  53. package/dist/types.js.map +1 -1
  54. package/dist/utility.js.map +1 -1
  55. package/package.json +7 -6
  56. package/project/.sdk/model/target/haskell.aontu +6 -3
  57. package/project/.sdk/model/target/zig.aontu +12 -2
  58. package/project/.sdk/src/cmp/c/Config_c.ts +16 -4
  59. package/project/.sdk/src/cmp/c/EntityTypes_c.ts +168 -0
  60. package/project/.sdk/src/cmp/c/Main_c.ts +4 -0
  61. package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +192 -0
  62. package/project/.sdk/src/cmp/c/ReadmeExamplesTest_c.ts +152 -0
  63. package/project/.sdk/src/cmp/c/ReadmeExplanation_c.ts +55 -0
  64. package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +168 -0
  65. package/project/.sdk/src/cmp/c/ReadmeInstall_c.ts +52 -0
  66. package/project/.sdk/src/cmp/c/ReadmeIntro_c.ts +67 -0
  67. package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +151 -0
  68. package/project/.sdk/src/cmp/c/ReadmeOptions_c.ts +65 -0
  69. package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +225 -0
  70. package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +398 -0
  71. package/project/.sdk/src/cmp/c/ReadmeTopHowto_c.ts +24 -0
  72. package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +104 -0
  73. package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +86 -0
  74. package/project/.sdk/src/cmp/c/TestEntity_c.ts +10 -0
  75. package/project/.sdk/src/cmp/c/Test_c.ts +4 -0
  76. package/project/.sdk/src/cmp/c/utility_c.ts +8 -2
  77. package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +182 -0
  78. package/project/.sdk/src/cmp/clojure/ReadmeExamplesTest_clojure.ts +54 -0
  79. package/project/.sdk/src/cmp/clojure/ReadmeExplanation_clojure.ts +44 -0
  80. package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +144 -0
  81. package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +51 -0
  82. package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +66 -0
  83. package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +156 -0
  84. package/project/.sdk/src/cmp/clojure/ReadmeOptions_clojure.ts +61 -0
  85. package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +210 -0
  86. package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +409 -0
  87. package/project/.sdk/src/cmp/clojure/ReadmeTopHowto_clojure.ts +24 -0
  88. package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +98 -0
  89. package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +78 -0
  90. package/project/.sdk/src/cmp/clojure/TestDirect_clojure.ts +58 -0
  91. package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +79 -0
  92. package/project/.sdk/src/cmp/clojure/Test_clojure.ts +21 -65
  93. package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +174 -0
  94. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +5 -0
  95. package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +170 -0
  96. package/project/.sdk/src/cmp/cpp/ReadmeExplanation_cpp.ts +45 -0
  97. package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +139 -0
  98. package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +42 -0
  99. package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +69 -0
  100. package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +155 -0
  101. package/project/.sdk/src/cmp/cpp/ReadmeOptions_cpp.ts +62 -0
  102. package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +234 -0
  103. package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +387 -0
  104. package/project/.sdk/src/cmp/cpp/ReadmeTopHowto_cpp.ts +24 -0
  105. package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +95 -0
  106. package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +70 -0
  107. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +5 -1
  108. package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +196 -0
  109. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +6 -0
  110. package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +174 -0
  111. package/project/.sdk/src/cmp/csharp/ReadmeExamplesTest_csharp.ts +198 -0
  112. package/project/.sdk/src/cmp/csharp/ReadmeExplanation_csharp.ts +42 -0
  113. package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +168 -0
  114. package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +41 -0
  115. package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +65 -0
  116. package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +148 -0
  117. package/project/.sdk/src/cmp/csharp/ReadmeOptions_csharp.ts +60 -0
  118. package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +219 -0
  119. package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +390 -0
  120. package/project/.sdk/src/cmp/csharp/ReadmeTopHowto_csharp.ts +25 -0
  121. package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +92 -0
  122. package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +77 -0
  123. package/project/.sdk/src/cmp/csharp/Test_csharp.ts +4 -0
  124. package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +43 -29
  125. package/project/.sdk/src/cmp/dart/Entity_dart.ts +8 -0
  126. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +166 -0
  127. package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +238 -0
  128. package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +53 -0
  129. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +151 -0
  130. package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +59 -0
  131. package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +65 -0
  132. package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +151 -0
  133. package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +63 -0
  134. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +214 -0
  135. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +381 -0
  136. package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +24 -0
  137. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +95 -0
  138. package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +78 -0
  139. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +52 -0
  140. package/project/.sdk/src/cmp/dart/Test_dart.ts +6 -0
  141. package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +1 -3
  142. package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +1 -40
  143. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +3 -3
  144. package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +165 -0
  145. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +4 -0
  146. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
  147. package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +163 -0
  148. package/project/.sdk/src/cmp/elixir/ReadmeExamplesTest_elixir.ts +126 -0
  149. package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +55 -0
  150. package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +149 -0
  151. package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +67 -0
  152. package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +66 -0
  153. package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +150 -0
  154. package/project/.sdk/src/cmp/elixir/ReadmeOptions_elixir.ts +62 -0
  155. package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +198 -0
  156. package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +333 -0
  157. package/project/.sdk/src/cmp/elixir/ReadmeTopHowto_elixir.ts +26 -0
  158. package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +79 -0
  159. package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +68 -0
  160. package/project/.sdk/src/cmp/elixir/Test_elixir.ts +4 -0
  161. package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +4 -0
  162. package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +4 -0
  163. package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +4 -0
  164. package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -0
  165. package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +4 -0
  166. package/project/.sdk/src/cmp/elixir/utility_elixir.ts +32 -0
  167. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +12 -3
  168. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +6 -1
  169. package/project/.sdk/src/cmp/go/TestEntity_go.ts +10 -3
  170. package/project/.sdk/src/cmp/go/utility_go.ts +3 -2
  171. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +240 -43
  172. package/project/.sdk/src/cmp/go-cli/fragment/main.fragment.go +27 -5
  173. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +191 -30
  174. package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +181 -0
  175. package/project/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +125 -0
  176. package/project/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +48 -0
  177. package/project/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +168 -0
  178. package/project/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +51 -0
  179. package/project/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +67 -0
  180. package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +160 -0
  181. package/project/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +74 -0
  182. package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +237 -0
  183. package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +405 -0
  184. package/project/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +31 -0
  185. package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +104 -0
  186. package/project/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +80 -0
  187. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +27 -2
  188. package/project/.sdk/src/cmp/java/EntityTypes_java.ts +207 -0
  189. package/project/.sdk/src/cmp/java/Main_java.ts +6 -0
  190. package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +175 -0
  191. package/project/.sdk/src/cmp/java/ReadmeExamplesTest_java.ts +186 -0
  192. package/project/.sdk/src/cmp/java/ReadmeExplanation_java.ts +46 -0
  193. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +156 -0
  194. package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +52 -0
  195. package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +66 -0
  196. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +150 -0
  197. package/project/.sdk/src/cmp/java/ReadmeOptions_java.ts +61 -0
  198. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +230 -0
  199. package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +388 -0
  200. package/project/.sdk/src/cmp/java/ReadmeTopHowto_java.ts +23 -0
  201. package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +103 -0
  202. package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +77 -0
  203. package/project/.sdk/src/cmp/java/Test_java.ts +4 -0
  204. package/project/.sdk/src/cmp/js/EntityTypes_js.ts +25 -8
  205. package/project/.sdk/src/cmp/js/MainEntity_js.ts +4 -2
  206. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +4 -4
  207. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +13 -4
  208. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +4 -4
  209. package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +5 -5
  210. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +4 -4
  211. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +4 -4
  212. package/project/.sdk/src/cmp/js/TestDirect_js.ts +6 -5
  213. package/project/.sdk/src/cmp/js/TestEntity_js.ts +7 -2
  214. package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +0 -31
  215. package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +201 -0
  216. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +6 -0
  217. package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +175 -0
  218. package/project/.sdk/src/cmp/kotlin/ReadmeExamplesTest_kotlin.ts +173 -0
  219. package/project/.sdk/src/cmp/kotlin/ReadmeExplanation_kotlin.ts +47 -0
  220. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +154 -0
  221. package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +50 -0
  222. package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +66 -0
  223. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +150 -0
  224. package/project/.sdk/src/cmp/kotlin/ReadmeOptions_kotlin.ts +61 -0
  225. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +230 -0
  226. package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +387 -0
  227. package/project/.sdk/src/cmp/kotlin/ReadmeTopHowto_kotlin.ts +23 -0
  228. package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +104 -0
  229. package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +77 -0
  230. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +4 -0
  231. package/project/.sdk/src/cmp/lua/Config_lua.ts +1 -1
  232. package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +19 -5
  233. package/project/.sdk/src/cmp/lua/Main_lua.ts +14 -2
  234. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +2 -2
  235. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +6 -1
  236. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +3 -3
  237. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -2
  238. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +2 -2
  239. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +7 -2
  240. package/project/.sdk/src/cmp/lua/Test_lua.ts +1 -1
  241. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +2 -0
  242. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +180 -0
  243. package/project/.sdk/src/cmp/ocaml/ReadmeExamplesTest_ocaml.ts +111 -0
  244. package/project/.sdk/src/cmp/ocaml/ReadmeExplanation_ocaml.ts +46 -0
  245. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +147 -0
  246. package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +44 -0
  247. package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +68 -0
  248. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +155 -0
  249. package/project/.sdk/src/cmp/ocaml/ReadmeOptions_ocaml.ts +59 -0
  250. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +205 -0
  251. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +402 -0
  252. package/project/.sdk/src/cmp/ocaml/ReadmeTopHowto_ocaml.ts +25 -0
  253. package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +86 -0
  254. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +79 -0
  255. package/project/.sdk/src/cmp/ocaml/Test_ocaml.ts +4 -0
  256. package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +181 -0
  257. package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +354 -0
  258. package/project/.sdk/src/cmp/perl/ReadmeExplanation_perl.ts +43 -0
  259. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +149 -0
  260. package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +47 -0
  261. package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +66 -0
  262. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +150 -0
  263. package/project/.sdk/src/cmp/perl/ReadmeOptions_perl.ts +59 -0
  264. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +216 -0
  265. package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +399 -0
  266. package/project/.sdk/src/cmp/perl/ReadmeTopHowto_perl.ts +24 -0
  267. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +91 -0
  268. package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +83 -0
  269. package/project/.sdk/src/cmp/perl/Test_perl.ts +4 -0
  270. package/project/.sdk/src/cmp/php/EntityTypes_php.ts +23 -6
  271. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +6 -1
  272. package/project/.sdk/src/cmp/php/TestEntity_php.ts +7 -2
  273. package/project/.sdk/src/cmp/py/EntityTypes_py.ts +32 -7
  274. package/project/.sdk/src/cmp/py/Entity_py.ts +2 -10
  275. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +2 -2
  276. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +8 -3
  277. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +3 -3
  278. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -2
  279. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +2 -2
  280. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +2 -2
  281. package/project/.sdk/src/cmp/py/TestEntity_py.ts +7 -2
  282. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +19 -5
  283. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +2 -2
  284. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +8 -3
  285. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +3 -3
  286. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -2
  287. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
  288. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +2 -2
  289. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +7 -2
  290. package/project/.sdk/src/cmp/rust/EntityBase_rust.ts +4 -0
  291. package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +152 -0
  292. package/project/.sdk/src/cmp/rust/Entity_rust.ts +1 -1
  293. package/project/.sdk/src/cmp/rust/Main_rust.ts +5 -0
  294. package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +163 -0
  295. package/project/.sdk/src/cmp/rust/ReadmeExamplesTest_rust.ts +132 -0
  296. package/project/.sdk/src/cmp/rust/ReadmeExplanation_rust.ts +44 -0
  297. package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +142 -0
  298. package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +49 -0
  299. package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +66 -0
  300. package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +153 -0
  301. package/project/.sdk/src/cmp/rust/ReadmeOptions_rust.ts +60 -0
  302. package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +212 -0
  303. package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +384 -0
  304. package/project/.sdk/src/cmp/rust/ReadmeTopHowto_rust.ts +24 -0
  305. package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +95 -0
  306. package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +81 -0
  307. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +10 -0
  308. package/project/.sdk/src/cmp/rust/Test_rust.ts +4 -0
  309. package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +202 -0
  310. package/project/.sdk/src/cmp/scala/Main_scala.ts +6 -0
  311. package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +175 -0
  312. package/project/.sdk/src/cmp/scala/ReadmeExamplesTest_scala.ts +163 -0
  313. package/project/.sdk/src/cmp/scala/ReadmeExplanation_scala.ts +49 -0
  314. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +155 -0
  315. package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +58 -0
  316. package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +66 -0
  317. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +150 -0
  318. package/project/.sdk/src/cmp/scala/ReadmeOptions_scala.ts +61 -0
  319. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +230 -0
  320. package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +388 -0
  321. package/project/.sdk/src/cmp/scala/ReadmeTopHowto_scala.ts +23 -0
  322. package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +104 -0
  323. package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +77 -0
  324. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +38 -10
  325. package/project/.sdk/src/cmp/scala/Test_scala.ts +8 -0
  326. package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +152 -0
  327. package/project/.sdk/src/cmp/swift/Main_swift.ts +5 -0
  328. package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +176 -0
  329. package/project/.sdk/src/cmp/swift/ReadmeExamplesTest_swift.ts +170 -0
  330. package/project/.sdk/src/cmp/swift/ReadmeExplanation_swift.ts +49 -0
  331. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +159 -0
  332. package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +58 -0
  333. package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +64 -0
  334. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +149 -0
  335. package/project/.sdk/src/cmp/swift/ReadmeOptions_swift.ts +62 -0
  336. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +232 -0
  337. package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +387 -0
  338. package/project/.sdk/src/cmp/swift/ReadmeTopHowto_swift.ts +24 -0
  339. package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +105 -0
  340. package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +77 -0
  341. package/project/.sdk/src/cmp/swift/Test_swift.ts +4 -0
  342. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +19 -5
  343. package/project/.sdk/src/cmp/ts/MainEntity_ts.ts +4 -2
  344. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +4 -4
  345. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +14 -4
  346. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +29 -11
  347. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +5 -5
  348. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +4 -4
  349. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +4 -4
  350. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +13 -11
  351. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +18 -2
  352. package/project/.sdk/src/cmp/zig/Config_zig.ts +22 -4
  353. package/project/.sdk/src/cmp/zig/Entity_zig.ts +1 -1
  354. package/project/.sdk/src/cmp/zig/Main_zig.ts +10 -4
  355. package/project/.sdk/src/cmp/zig/Package_zig.ts +53 -0
  356. package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +188 -0
  357. package/project/.sdk/src/cmp/zig/ReadmeExamplesTest_zig.ts +58 -0
  358. package/project/.sdk/src/cmp/zig/ReadmeExplanation_zig.ts +45 -0
  359. package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +143 -0
  360. package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +54 -0
  361. package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +66 -0
  362. package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +152 -0
  363. package/project/.sdk/src/cmp/zig/ReadmeOptions_zig.ts +60 -0
  364. package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +211 -0
  365. package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +400 -0
  366. package/project/.sdk/src/cmp/zig/ReadmeTopHowto_zig.ts +24 -0
  367. package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +96 -0
  368. package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +82 -0
  369. package/project/.sdk/src/cmp/zig/TestDirect_zig.ts +66 -0
  370. package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +79 -0
  371. package/project/.sdk/src/cmp/zig/Test_zig.ts +17 -61
  372. package/project/.sdk/tm/clojure/src/voxgig/struct.clj +1 -1
  373. package/project/.sdk/tm/cpp/test/feature_test.cpp +19 -0
  374. package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +4 -1
  375. package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +7 -1
  376. package/project/.sdk/tm/elixir/lib/utility/struct/voxgig_struct.ex +1 -1
  377. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +7 -1
  378. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +3 -1
  379. package/project/.sdk/tm/haskell/test/Harness.hs +8 -3
  380. package/project/.sdk/tm/js/Makefile +1 -1
  381. package/project/.sdk/tm/js/jsconfig.json +12 -0
  382. package/project/.sdk/tm/ocaml/Makefile +5 -1
  383. package/project/.sdk/tm/php/utility/struct/Struct.php +1 -1
  384. package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +1 -1
  385. package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +1 -1
  386. package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +8 -59
  387. package/project/.sdk/tm/ts/Makefile +1 -1
  388. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -1
  389. package/src/cmp/ReadmeErrors.ts +2 -2
  390. package/src/cmp/ReadmeExplanation.ts +3 -3
  391. package/src/cmp/ReadmeTop.ts +2 -2
  392. package/src/helpers/canonType.ts +116 -25
  393. package/src/helpers/naming.ts +47 -0
  394. package/src/helpers/opExample.ts +43 -20
  395. package/src/helpers/opShape.ts +102 -3
  396. package/src/sdkgen.ts +12 -2
  397. package/src/tsconfig.json +2 -0
  398. package/project/.sdk/tm/zig/build.zig.zon +0 -11
@@ -0,0 +1,168 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { hsVarName } from './utility_haskell'
11
+
12
+
13
+ // A type-correct Haskell `Value` literal for a field's canonical type.
14
+ function hsLit(type: any): string {
15
+ const k = canonKey(type)
16
+ if ('INTEGER' === k || 'NUMBER' === k) return 'VNum 1'
17
+ if ('BOOLEAN' === k) return 'VBool True'
18
+ if ('ARRAY' === k || 'OBJECT' === k) return 'VNoval'
19
+ return 'VStr "example"'
20
+ }
21
+
22
+
23
+ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
24
+ const { target, ctx$: { model } } = props
25
+
26
+ const entity = getModelPath(model, `main.${KIT}.entity`)
27
+ // Pick an entity with a real op (prefer a read op). primaryOp is null only
28
+ // when NO entity exposes any op (a direct()-only SDK).
29
+ const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
30
+ const eName = exampleEntity ? nom(exampleEntity, 'Name') : 'Entity'
31
+ const eFn = exampleEntity ? hsVarName(exampleEntity.name) : 'entity'
32
+ const idF = exampleEntity ? entityIdField(exampleEntity) : null
33
+ const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
34
+ let testArgExpr = 'emptyMap'
35
+ if (exampleEntity && isMatchOp) {
36
+ testArgExpr = idF ? `jo [("${idF}", VStr "test01")]` : 'emptyMap'
37
+ } else if (exampleEntity && ('create' === primaryOp || 'update' === primaryOp)) {
38
+ const items = opRequestShape(exampleEntity, primaryOp).items
39
+ .filter((it: any) => it.name !== idF && it.name !== 'id')
40
+ const required = items.filter((it: any) => !it.optional)
41
+ const chosen = required.length ? required : items.slice(0, 3)
42
+ testArgExpr = `jo [${chosen.map((it: any) => `("${it.name}", ${hsLit(it.type)})`).join(', ')}]`
43
+ }
44
+
45
+ // The op-driven test-mode line, shown only when the SDK has an entity op.
46
+ const testModeExample = primaryOp
47
+ ? ` ent <- Sdk.${eFn} sdk VNoval
48
+ arg <- ${testArgExpr}
49
+ ctrl <- emptyMap
50
+ -- Entity ops return the bare record and raise on error.
51
+ ${eFn} <- Sdk.e${primaryOp.charAt(0).toUpperCase() + primaryOp.slice(1)} ent arg ctrl
52
+ print ${eFn}`
53
+ : ` args <- jo [("path", VStr "/api/resource"), ("method", VStr "GET")]
54
+ result <- F.direct sdk args
55
+ print result`
56
+
57
+ const apikeyEnvLine = isAuthActive(model)
58
+ ? `\n${envName(model)}_APIKEY=<your-key>`
59
+ : ''
60
+
61
+ Content(`### Make a direct HTTP request
62
+
63
+ For endpoints not covered by entity accessors, use \`direct\` — it never
64
+ raises and returns a result \`Value\` you branch on via its \`ok\` field:
65
+
66
+ \`\`\`haskell
67
+ import qualified SdkClient as Sdk
68
+ import qualified SdkFeatures as F
69
+ import VoxgigStruct (Value (..))
70
+ import SdkHelpers (jo, getp)
71
+
72
+ main :: IO ()
73
+ main = do
74
+ sdk <- Sdk.newSdk0
75
+ params <- jo [("id", VStr "example")]
76
+ args <- jo [("path", VStr "/api/resource/{id}"), ("method", VStr "GET"), ("params", params)]
77
+ result <- F.direct sdk args
78
+ ok <- getp result "ok"
79
+ case ok of
80
+ VBool True -> do
81
+ status <- getp result "status" -- e.g. VNum 200
82
+ body <- getp result "data" -- the response body
83
+ print (status, body)
84
+ _ -> do
85
+ -- A non-2xx response carries status + data (the error body); a
86
+ -- transport-level failure carries err instead.
87
+ status <- getp result "status"
88
+ err <- getp result "err"
89
+ print (status, err)
90
+ \`\`\`
91
+
92
+ ### Prepare a request without sending it
93
+
94
+ \`\`\`haskell
95
+ import qualified SdkClient as Sdk
96
+ import qualified SdkFeatures as F
97
+ import VoxgigStruct (Value (..))
98
+ import SdkHelpers (jo, getp)
99
+
100
+ main :: IO ()
101
+ main = do
102
+ sdk <- Sdk.newSdk0
103
+ params <- jo [("id", VStr "example")]
104
+ args <- jo [("path", VStr "/api/resource/{id}"), ("method", VStr "DELETE"), ("params", params)]
105
+ -- prepare returns the fetch definition and raises on error.
106
+ fetchdef <- F.prepare sdk args
107
+ url <- getp fetchdef "url"
108
+ method <- getp fetchdef "method"
109
+ print (url, method)
110
+ \`\`\`
111
+
112
+ ### Use test mode
113
+
114
+ Create a mock client for unit testing — no server required:
115
+
116
+ \`\`\`haskell
117
+ import qualified SdkClient as Sdk
118
+ import qualified SdkFeatures as F
119
+ import VoxgigStruct (Value (..), emptyMap)
120
+ import SdkHelpers (jo)
121
+
122
+ main :: IO ()
123
+ main = do
124
+ sdk <- Sdk.testSdk0
125
+ ${testModeExample}
126
+ \`\`\`
127
+
128
+ ### Use a custom fetch function
129
+
130
+ Replace the HTTP transport with your own \`VFunc\` under \`system.fetch\`:
131
+
132
+ \`\`\`haskell
133
+ import qualified SdkClient as Sdk
134
+ import VoxgigStruct (Value (..))
135
+ import SdkHelpers (jo, jsonThunk)
136
+
137
+ customClient :: IO Sdk.Client
138
+ customClient = do
139
+ let mockFetch = VFunc (\\_ _ _ _ -> do
140
+ body <- jo [("id", VStr "mock01")]
141
+ jo [("status", VNum 200), ("statusText", VStr "OK"), ("json", jsonThunk body)])
142
+ sys <- jo [("fetch", mockFetch)]
143
+ opts <- jo [("base", VStr "http://localhost:8080"), ("system", sys)]
144
+ Sdk.newSdk opts
145
+ \`\`\`
146
+
147
+ ### Run live tests
148
+
149
+ Create a \`.env.local\` file at the project root:
150
+
151
+ \`\`\`
152
+ ${envName(model)}_TEST_LIVE=TRUE${apikeyEnvLine}
153
+ \`\`\`
154
+
155
+ Then run the suite (stock GHC, no third-party dependencies):
156
+
157
+ \`\`\`bash
158
+ cd ${target.name} && make test
159
+ \`\`\`
160
+
161
+ `)
162
+
163
+ })
164
+
165
+
166
+ export {
167
+ ReadmeHowto
168
+ }
@@ -0,0 +1,51 @@
1
+
2
+ import { cmp, Content, installCommand, isPublished, repoInfo } from '@voxgig/sdkgen'
3
+
4
+
5
+ const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
6
+ const { target, ctx$ } = props
7
+ const { model } = ctx$
8
+
9
+ if (isPublished(model, target.name)) {
10
+ Content(`\`\`\`bash
11
+ ${installCommand(model, target.name)}
12
+ \`\`\`
13
+
14
+ Or build from a source checkout with the bundled Makefile (stock GHC, no
15
+ third-party dependencies — only the GHC boot libraries):
16
+
17
+ \`\`\`bash
18
+ cd ${target.name} && make test
19
+ \`\`\`
20
+
21
+ `)
22
+ return
23
+ }
24
+
25
+ // Publish pending: not yet on Hackage. Build from the git release tag or
26
+ // from a local source checkout. The runtime is dependency-free, so no cabal
27
+ // solve is needed — the Makefile drives stock GHC directly.
28
+ const { releasesUrl } = repoInfo(model)
29
+ Content(`This package is not yet published to Hackage. Install it from the GitHub
30
+ release tag (\`${target.name}/vX.Y.Z\`, see [Releases](${releasesUrl})) or
31
+ from a source checkout. The runtime has no third-party dependencies (only the
32
+ GHC boot libraries: \`base\`, \`containers\`, \`array\`, \`time\`), so the
33
+ bundled Makefile drives stock GHC with no cabal solve:
34
+
35
+ \`\`\`bash
36
+ cd ${target.name} && make test
37
+ \`\`\`
38
+
39
+ A \`.cabal\` file is also generated for use with \`cabal\`/\`stack\`:
40
+
41
+ \`\`\`bash
42
+ cd ${target.name} && cabal build
43
+ \`\`\`
44
+
45
+ `)
46
+ })
47
+
48
+
49
+ export {
50
+ ReadmeInstall
51
+ }
@@ -0,0 +1,67 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { hsVarName } from './utility_haskell'
11
+
12
+
13
+ const ReadmeIntro = cmp(function ReadmeIntro(props: any) {
14
+ const { target, ctx$: { model } } = props
15
+ const info = (model.main && model.main.kit && model.main.kit.info) || {}
16
+ const tagline = info.tagline || ''
17
+
18
+ Content(`# ${model.Name} ${target.title} SDK
19
+
20
+ ${tagline}
21
+
22
+ The ${target.title} SDK for the ${model.Name} API — an entity-oriented client following idiomatic Haskell conventions (pure functions, explicit \`IO\`, and the dependency-free vendored \`Value\` struct model).
23
+
24
+ `)
25
+
26
+ // Emphasise the entity-oriented design: the SDK surfaces the API as
27
+ // capitalised, semantic Entities with a small, uniform verb set rather
28
+ // than raw URL paths and query strings. The example entity accessor is
29
+ // derived from the model, never hardcoded.
30
+ const entity = getModelPath(model, `main.${KIT}.entity`)
31
+ const exampleEntity = Object.values(entity || {})
32
+ .find((e: any) => e.active !== false) as any
33
+ const example = exampleEntity
34
+ ? `for example \`${hsVarName(exampleEntity.name)} sdk VNoval\` — each`
35
+ : 'each'
36
+
37
+ // Model-driven op list — only the operations the active entities actually
38
+ // expose (a read-only entity has just list+load); never claim
39
+ // create/update/remove exist when no entity has them.
40
+ const CANON_OPS = ['list', 'load', 'create', 'update', 'remove']
41
+ const opSet = new Set<string>()
42
+ Object.values(entity || {}).forEach((e: any) => {
43
+ if (!e || e.active === false) return
44
+ Object.keys(e.op || {}).forEach((o: string) => {
45
+ if (e.op[o] && e.op[o].active !== false) opSet.add(o)
46
+ })
47
+ })
48
+ const opNames = CANON_OPS.filter((o) => opSet.has(o))
49
+ .concat([...opSet].filter((o) => !CANON_OPS.includes(o)))
50
+ const opList = (opNames.length ? opNames : ['list', 'load'])
51
+ .map((o) => '`e' + o.charAt(0).toUpperCase() + o.slice(1) + '`').join(', ')
52
+
53
+ Content(`The SDK exposes the API as capitalised, semantic **Entities** — ${example}
54
+ carrying a small, uniform set of operations (${opList}) instead of raw URL
55
+ paths and query strings. You work with named resources and verbs, which
56
+ keeps the cognitive load low.
57
+
58
+ > Other languages, the CLI, and MCP server live alongside this one — see
59
+ > the [top-level README](../README.md).
60
+
61
+ `)
62
+ })
63
+
64
+
65
+ export {
66
+ ReadmeIntro
67
+ }
@@ -0,0 +1,160 @@
1
+
2
+ import { cmp, each, Content, isAuthActive } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { hsVarName } from './utility_haskell'
10
+
11
+
12
+ const ReadmeModel = cmp(function ReadmeModel(props: any) {
13
+ const { target, ctx$: { model } } = props
14
+
15
+ const entity = getModelPath(model, `main.${KIT}.entity`)
16
+ const entityList = each(entity).filter((e: any) => e.active !== false)
17
+
18
+ // Model-driven op rows for the shared entity record interface: emit a row
19
+ // only for operations at least one active entity actually exposes.
20
+ const opUnion = new Set<string>()
21
+ entityList.forEach((e: any) => Object.keys(e.op || {})
22
+ .forEach((o: string) => { if (e.op[o] && e.op[o].active !== false) opUnion.add(o) }))
23
+ const opRowDefs: Record<string, string> = {
24
+ load: '| `eLoad` | `Value -> Value -> IO Value` | Load a single entity by match criteria. Raises on error. |',
25
+ list: '| `eList` | `Value -> Value -> IO Value` | List entities matching the criteria. Raises on error. |',
26
+ create: '| `eCreate` | `Value -> Value -> IO Value` | Create a new entity. Raises on error. |',
27
+ update: '| `eUpdate` | `Value -> Value -> IO Value` | Update an existing entity. Raises on error. |',
28
+ remove: '| `eRemove` | `Value -> Value -> IO Value` | Remove an entity. Raises on error. |',
29
+ }
30
+ const opRows = ['load', 'list', 'create', 'update', 'remove']
31
+ .filter((o) => opUnion.has(o)).map((o) => opRowDefs[o]).join('\n')
32
+
33
+ const apikeyOptionRow = isAuthActive(model)
34
+ ? '| `apikey` | `String` | API key for authentication. |\n'
35
+ : ''
36
+
37
+ Content(`### Client constructors
38
+
39
+ \`\`\`haskell
40
+ import qualified SdkClient as Sdk
41
+ import VoxgigStruct (Value (..))
42
+ import SdkHelpers (jo)
43
+
44
+ makeClient :: IO Sdk.Client
45
+ makeClient = do
46
+ opts <- jo [("base", VStr "https://api.example.com")]
47
+ Sdk.newSdk opts
48
+ \`\`\`
49
+
50
+ \`newSdk :: Value -> IO Client\` constructs a client from an options map;
51
+ \`newSdk0 :: IO Client\` is the no-argument convenience form.
52
+
53
+ | Option (map key) | Type | Description |
54
+ | --- | --- | --- |
55
+ ${apikeyOptionRow}| \`base\` | \`String\` | Base URL of the API server. |
56
+ | \`prefix\` | \`String\` | URL path prefix prepended to all requests. |
57
+ | \`suffix\` | \`String\` | URL path suffix appended to all requests. |
58
+ | \`headers\` | \`Value\` | Custom headers for all requests. |
59
+ | \`feature\` | \`Value\` | Feature activation flags. |
60
+ | \`system\` | \`Value\` | System overrides (e.g. custom \`fetch\` function). |
61
+
62
+ ### Test client
63
+
64
+ \`\`\`haskell
65
+ client <- Sdk.testSdk testopts sdkopts
66
+ \`\`\`
67
+
68
+ \`testSdk :: Value -> Value -> IO Client\` constructs a test-mode client with
69
+ mock transport (\`testSdk0 :: IO Client\` for the no-argument form). Pass
70
+ \`VNoval\` for defaults.
71
+
72
+ ### Client functions
73
+
74
+ | Function | Signature | Description |
75
+ | --- | --- | --- |
76
+ | \`newSdk\` | \`Value -> IO Client\` | Construct a live client from options. |
77
+ | \`newSdk0\` | \`IO Client\` | Construct a live client with defaults. |
78
+ | \`testSdk\` | \`Value -> Value -> IO Client\` | Construct a test-mode client. |
79
+ | \`prepare\` | \`Client -> Value -> IO Value\` | Build an HTTP request definition without sending. Raises on error. |
80
+ | \`direct\` | \`Client -> Value -> IO Value\` | Build and send an HTTP request. Returns a result \`Value\` (branch on \`ok\`). |
81
+ `)
82
+
83
+ each(entityList, (ent: any) => {
84
+ const eFn = hsVarName(ent.name)
85
+ const article = /^[aeiou]/i.test(ent.Name) ? 'an' : 'a'
86
+ Content(`| \`${eFn}\` | \`Client -> Value -> IO Entity\` | Create ${article} ${ent.Name} entity instance. |
87
+ `)
88
+ })
89
+
90
+ Content(`
91
+ ### Entity interface
92
+
93
+ All entities share the same record interface (fields of the \`Entity\` type).
94
+
95
+ | Field | Signature | Description |
96
+ | --- | --- | --- |
97
+ ${opRows}
98
+ | \`eDataGet\` | \`IO Value\` | Get entity data. |
99
+ | \`eDataSet\` | \`Value -> IO ()\` | Set entity data. |
100
+ | \`eStream\` | \`String -> Value -> Value -> IO [Value]\` | Run an op as a lazy stream of items. |
101
+ | \`eMake\` | \`IO Entity\` | Create a new instance with the same options. |
102
+ | \`eName\` | \`String\` | The entity name. |
103
+
104
+ ### Result shape
105
+
106
+ Entity operations return the bare result \`Value\` (a map for single-entity
107
+ ops, a list for \`eList\`) and raise on error. Wrap calls in
108
+ \`Control.Exception.try\` to handle failures.
109
+
110
+ The \`direct\` escape hatch never raises — it returns a result \`Value\`
111
+ you branch on via its \`ok\` field (read with \`getp result "ok"\`):
112
+
113
+ | Key | Type | Description |
114
+ | --- | --- | --- |
115
+ | \`ok\` | \`Bool\` | \`True\` if the HTTP status is 2xx. |
116
+ | \`status\` | \`Int\` | HTTP status code. |
117
+ | \`headers\` | \`Value\` | Response headers. |
118
+ | \`data\` | \`Value\` | Parsed JSON response body. |
119
+
120
+ On error, \`ok\` is \`False\` and \`err\` carries the error value.
121
+
122
+ `)
123
+
124
+ // Entities summary
125
+ Content(`### Entities
126
+
127
+ `)
128
+ each(entityList, (ent: any) => {
129
+ const fields = ent.fields || []
130
+ const opnames = Object.keys(ent.op || {})
131
+ const ops = ent.op || {}
132
+ const points = each(ops).map((op: any) =>
133
+ op.points ? each(op.points) : []
134
+ ).flat()
135
+ const path = points.length > 0 ? (points[0] as any).orig || '' : ''
136
+
137
+ Content(`#### ${ent.Name}
138
+
139
+ | Field | Description |
140
+ | --- | --- |
141
+ `)
142
+ each(fields, (field: any) => {
143
+ Content(`| \`${field.name}\` | ${field.short || ''} |
144
+ `)
145
+ })
146
+
147
+ Content(`
148
+ Operations: ${opnames.map((n: string) => n.charAt(0).toUpperCase() + n.slice(1)).join(', ')}.
149
+
150
+ API path: \`${path}\`
151
+
152
+ `)
153
+ })
154
+
155
+ })
156
+
157
+
158
+ export {
159
+ ReadmeModel
160
+ }
@@ -0,0 +1,74 @@
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
+ const authActive = isAuthActive(model)
16
+
17
+ Content(`
18
+
19
+ ## Options
20
+
21
+ Pass an options \`Value\` (built with \`jo\`) when constructing a client. Any
22
+ option may be omitted; the entries below are illustrative.
23
+
24
+ `)
25
+
26
+ if (authActive) {
27
+ Content(`\`\`\`haskell
28
+ import qualified SdkClient as Sdk
29
+ import VoxgigStruct (Value (..))
30
+ import SdkHelpers (jo)
31
+
32
+ makeClient :: IO Sdk.Client
33
+ makeClient = do
34
+ -- Read the API key from the ${envName(model)}_APIKEY environment variable.
35
+ opts <- jo [("apikey", VStr "your-api-key")]
36
+ Sdk.newSdk opts
37
+ \`\`\`
38
+
39
+ `)
40
+ }
41
+ else {
42
+ Content(`\`\`\`haskell
43
+ import qualified SdkClient as Sdk
44
+ import VoxgigStruct (Value (..))
45
+ import SdkHelpers (jo)
46
+
47
+ makeClient :: IO Sdk.Client
48
+ makeClient = do
49
+ opts <- jo [("base", VStr "https://api.example.com")]
50
+ Sdk.newSdk opts
51
+ \`\`\`
52
+
53
+ `)
54
+ }
55
+
56
+ Content(`Every published option:
57
+
58
+ | Option | Type | Description |
59
+ | --- | --- | --- |
60
+ `)
61
+
62
+ publishedOptions.map((option: any) => {
63
+ Content(`| \`${option.name}\` | \`${option.kind}\` | ${option.short} |
64
+ `)
65
+ })
66
+
67
+ Content(`
68
+ `)
69
+ })
70
+
71
+
72
+ export {
73
+ ReadmeOptions
74
+ }