@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,237 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityOps } 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 param. List/object params fall
14
+ // back to VNoval (they cannot be built as a pure literal inside `jo`); scalars
15
+ // use the matching constructor.
16
+ function hsLit(type: any, placeholder: string = 'example'): string {
17
+ const k = canonKey(type)
18
+ if ('INTEGER' === k || 'NUMBER' === k) return 'VNum 1'
19
+ if ('BOOLEAN' === k) return 'VBool True'
20
+ if ('ARRAY' === k || 'OBJECT' === k) return 'VNoval'
21
+ return `VStr "${placeholder}"`
22
+ }
23
+
24
+
25
+ const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
26
+ const { target, ctx$: { model } } = props
27
+
28
+ const entity = getModelPath(model, `main.${KIT}.entity`)
29
+
30
+ const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
31
+
32
+ // Find a nested entity if available: one with a parent chain
33
+ // (relations.ancestors), an active load op, and a required non-id load
34
+ // param to demonstrate (the parent key, e.g. page_id).
35
+ const nestedEntity = Object.values(entity).find((e: any) =>
36
+ e.active !== false &&
37
+ e.relations && e.relations.ancestors && 0 < e.relations.ancestors.length &&
38
+ entityOps(e).includes('load') &&
39
+ opRequestShape(e, 'load').items.some((it: any) =>
40
+ !it.optional && it.name !== entityIdField(e))
41
+ ) as any
42
+
43
+ const authActive = isAuthActive(model)
44
+
45
+ Content(`### 1. Create a client
46
+
47
+ \`\`\`haskell
48
+ `)
49
+ if (authActive) {
50
+ Content(`import System.Environment (lookupEnv)
51
+ import qualified SdkClient as Sdk
52
+ import VoxgigStruct (Value (..), emptyMap)
53
+ import SdkHelpers (jo)
54
+
55
+ main :: IO ()
56
+ main = do
57
+ mkey <- lookupEnv "${envName(model)}_APIKEY"
58
+ opts <- jo [("apikey", maybe VNoval VStr mkey)]
59
+ sdk <- Sdk.newSdk opts
60
+ `)
61
+ }
62
+ else {
63
+ Content(`import qualified SdkClient as Sdk
64
+ import VoxgigStruct (Value (..), emptyMap)
65
+ import SdkHelpers (jo)
66
+
67
+ main :: IO ()
68
+ main = do
69
+ sdk <- Sdk.newSdk0
70
+ `)
71
+ }
72
+ Content(`\`\`\`
73
+
74
+ Entity operations raise on error (via \`Control.Exception.throwIO\`) and
75
+ return the bare result \`Value\`. Wrap a call in \`Control.Exception.try\`
76
+ to recover from failures.
77
+
78
+ `)
79
+
80
+ if (exampleEntity) {
81
+ const eName = nom(exampleEntity, 'Name')
82
+ const article = /^[aeiou]/i.test(eName) ? 'an' : 'a'
83
+ const eFn = hsVarName(exampleEntity.name)
84
+ const opnames = entityOps(exampleEntity)
85
+ // Model-driven id key: `idF` is the entity's id-like MATCH field name, or
86
+ // null when it has none. `dataIdF` is the id on the RETURNED record's data
87
+ // type.
88
+ const idF = entityIdField(exampleEntity)
89
+
90
+ if (opnames.includes('list')) {
91
+ Content(`### 2. List ${eName.toLowerCase()} records
92
+
93
+ \`eList ent match ctrl\` returns a list \`Value\` and raises on error.
94
+
95
+ \`\`\`haskell
96
+ ent <- Sdk.${eFn} sdk VNoval
97
+ match <- emptyMap
98
+ ctrl <- emptyMap
99
+ ${eFn}s <- Sdk.eList ent match ctrl
100
+ print ${eFn}s
101
+ \`\`\`
102
+
103
+ `)
104
+ }
105
+
106
+ if (nestedEntity) {
107
+ const neName = nom(nestedEntity, 'Name')
108
+ const neArticle = /^[aeiou]/i.test(neName) ? 'an' : 'a'
109
+ const neFn = hsVarName(nestedEntity.name)
110
+
111
+ const neIdF = entityIdField(nestedEntity)
112
+ const neRequired = opRequestShape(nestedEntity, 'load').items
113
+ .filter((it: any) => !it.optional)
114
+ .sort((a: any, b: any) =>
115
+ (a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
116
+ const parentItem = neRequired.find((it: any) => it.name !== neIdF) as any
117
+ const parentParam = parentItem && parentItem.name
118
+ const parentName = parentParam ? parentParam.replace(/_id$/, '') : 'its parent'
119
+ const neMatch = neRequired.map((it: any) =>
120
+ `("${it.name}", ${hsLit(it.type,
121
+ it.name === neIdF ? 'example_id' : 'example_' + it.name)})`)
122
+
123
+ Content(`### 3. Load ${neArticle} ${neName.toLowerCase()}
124
+
125
+ ${neName} is nested under ${parentName}, so provide the \`${parentParam}\`.
126
+ \`eLoad\` returns the bare record and raises on error.
127
+
128
+ \`\`\`haskell
129
+ ${neFn}Ent <- Sdk.${neFn} sdk VNoval
130
+ m <- jo [${neMatch.join(', ')}]
131
+ ctrl2 <- emptyMap
132
+ ${neFn} <- Sdk.eLoad ${neFn}Ent m ctrl2
133
+ print ${neFn}
134
+ \`\`\`
135
+
136
+ `)
137
+ }
138
+ else if (opnames.includes('load')) {
139
+ const loadRequired = opRequestShape(exampleEntity, 'load').items
140
+ .filter((it: any) => !it.optional || it.name === idF)
141
+ .sort((a: any, b: any) =>
142
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
143
+ const loadArg = 0 < loadRequired.length
144
+ ? `[${loadRequired.map((it: any) =>
145
+ `("${it.name}", ${hsLit(it.type,
146
+ it.name === idF ? 'example_id' : 'example_' + it.name)})`).join(', ')}]`
147
+ : '[]'
148
+
149
+ Content(`### 3. Load ${article} ${eName.toLowerCase()}
150
+
151
+ \`eLoad ent match ctrl\` returns the bare record and raises on error.
152
+
153
+ \`\`\`haskell
154
+ ent2 <- Sdk.${eFn} sdk VNoval
155
+ m <- jo ${loadArg}
156
+ ctrl2 <- emptyMap
157
+ ${eFn} <- Sdk.eLoad ent2 m ctrl2
158
+ print ${eFn}
159
+ \`\`\`
160
+
161
+ `)
162
+ }
163
+
164
+ // Model-driven example fields: derive the create/update body from the op
165
+ // shape so the docs reference REAL writable fields.
166
+ const examplePairs = (opname: string): string[] => {
167
+ const items = opRequestShape(exampleEntity, opname).items
168
+ .filter((it: any) => (it.name !== idF && it.name !== 'id') ||
169
+ ('create' === opname && !it.optional))
170
+ const required = items.filter((it: any) => !it.optional)
171
+ const optional = items.filter((it: any) => it.optional)
172
+ const chosen = 'create' === opname
173
+ ? (required.length ? required : items.slice(0, 2))
174
+ : required.concat(optional).slice(0, Math.max(2, required.length))
175
+ return chosen.map((it: any) => `("${it.name}", ${hsLit(it.type, 'example_' + it.name)})`)
176
+ }
177
+
178
+ const idParamType = (opname: string): any => {
179
+ const it = opRequestShape(exampleEntity, opname).items.find((x: any) => x.name === idF)
180
+ return it && it.type
181
+ }
182
+ const idValueFor = (opname: string): string =>
183
+ hsLit(idParamType(opname), 'example_id')
184
+
185
+ if (opnames.includes('create') || opnames.includes('update') || opnames.includes('remove')) {
186
+ Content(`### 4. Create, update, and remove
187
+
188
+ `)
189
+ if (opnames.includes('create')) {
190
+ Content(`\`\`\`haskell
191
+ createEnt <- Sdk.${eFn} sdk VNoval
192
+ d <- jo [${examplePairs('create').join(', ')}]
193
+ cctrl <- emptyMap
194
+ created <- Sdk.eCreate createEnt d cctrl
195
+ print created
196
+ \`\`\`
197
+
198
+ `)
199
+ }
200
+ if (opnames.includes('update')) {
201
+ const updatePairs = (idF ? [`("${idF}", ${idValueFor('update')})`] : []).concat(examplePairs('update'))
202
+ Content(`\`\`\`haskell
203
+ updateEnt <- Sdk.${eFn} sdk VNoval
204
+ upd <- jo [${updatePairs.join(', ')}]
205
+ uctrl <- emptyMap
206
+ updated <- Sdk.eUpdate updateEnt upd uctrl
207
+ print updated
208
+ \`\`\`
209
+
210
+ `)
211
+ }
212
+ if (opnames.includes('remove')) {
213
+ const removePairs = opRequestShape(exampleEntity, 'remove').items
214
+ .filter((it: any) => !it.optional || it.name === idF)
215
+ .sort((a: any, b: any) =>
216
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
217
+ .map((it: any) => it.name === idF
218
+ ? `("${it.name}", ${idValueFor('remove')})`
219
+ : `("${it.name}", ${hsLit(it.type, 'example_' + it.name)})`)
220
+ Content(`\`\`\`haskell
221
+ removeEnt <- Sdk.${eFn} sdk VNoval
222
+ rm <- jo [${removePairs.length ? removePairs.join(', ') : ''}]
223
+ rctrl <- emptyMap
224
+ _ <- Sdk.eRemove removeEnt rm rctrl
225
+ return ()
226
+ \`\`\`
227
+
228
+ `)
229
+ }
230
+ }
231
+ }
232
+ })
233
+
234
+
235
+ export {
236
+ ReadmeQuick
237
+ }
@@ -0,0 +1,405 @@
1
+
2
+ import { cmp, each, Content, canonKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { hsVarName } from './utility_haskell'
10
+
11
+
12
+ // A type-correct Haskell `Value` literal for a field's canonical type.
13
+ function hsLit(type: any, placeholder: string = 'example'): string {
14
+ const k = canonKey(type)
15
+ if ('INTEGER' === k || 'NUMBER' === k) return 'VNum 1'
16
+ if ('BOOLEAN' === k) return 'VBool True'
17
+ if ('ARRAY' === k || 'OBJECT' === k) return 'VNoval'
18
+ return `VStr "${placeholder}"`
19
+ }
20
+
21
+
22
+ // A readable Haskell type name for a field's canonical type.
23
+ function hsType(type: any): string {
24
+ const k = canonKey(type)
25
+ if ('STRING' === k) return 'String'
26
+ if ('INTEGER' === k) return 'Int'
27
+ if ('NUMBER' === k) return 'Double'
28
+ if ('BOOLEAN' === k) return 'Bool'
29
+ if ('ARRAY' === k) return '[Value]'
30
+ return 'Value'
31
+ }
32
+
33
+
34
+ const OP_SIGNATURES: Record<string, { sig: string, returns: string, desc: string }> = {
35
+ load: {
36
+ sig: 'eLoad ent match ctrl :: IO Value',
37
+ returns: 'the entity data',
38
+ desc: 'Load a single entity matching the given criteria. Returns the entity data and raises on error.',
39
+ },
40
+ list: {
41
+ sig: 'eList ent match ctrl :: IO Value',
42
+ returns: 'a list of entities',
43
+ desc: 'List entities matching the given criteria. The match is optional — pass an empty map to list all records. Returns a list `Value` and raises on error.',
44
+ },
45
+ create: {
46
+ sig: 'eCreate ent data ctrl :: IO Value',
47
+ returns: 'the created entity data',
48
+ desc: 'Create a new entity with the given data. Returns the created entity data and raises on error.',
49
+ },
50
+ update: {
51
+ sig: 'eUpdate ent data ctrl :: IO Value',
52
+ returns: 'the updated entity data',
53
+ desc: 'Update an existing entity. The data must include the entity `id`. Returns the updated entity data and raises on error.',
54
+ },
55
+ remove: {
56
+ sig: 'eRemove ent match ctrl :: IO Value',
57
+ returns: 'the removed entity data',
58
+ desc: 'Remove the entity matching the given criteria. Raises on error.',
59
+ },
60
+ }
61
+
62
+
63
+ const ReadmeRef = cmp(function ReadmeRef(props: any) {
64
+ const { target } = props
65
+ const { model } = props.ctx$
66
+
67
+ const entity = getModelPath(model, `main.${KIT}.entity`)
68
+ const feature = getModelPath(model, `main.${KIT}.feature`)
69
+
70
+ const publishedEntities = each(entity).filter((e: any) => e.active !== false)
71
+
72
+
73
+ File({ name: 'REFERENCE.md' }, () => {
74
+
75
+ Content(`# ${model.Name} ${target.title} SDK Reference
76
+
77
+ Complete API reference for the ${model.Name} ${target.title} SDK.
78
+
79
+
80
+ ## Client
81
+
82
+ ### Constructors
83
+
84
+ \`\`\`haskell
85
+ import qualified SdkClient as Sdk
86
+ import VoxgigStruct (Value (..))
87
+ import SdkHelpers (jo)
88
+
89
+ makeClient :: IO Sdk.Client
90
+ makeClient = do
91
+ opts <- jo [("base", VStr "https://api.example.com")]
92
+ Sdk.newSdk opts
93
+ \`\`\`
94
+
95
+ Construct a live SDK client.
96
+
97
+ **Functions:**
98
+
99
+ | Function | Signature | Description |
100
+ | --- | --- | --- |
101
+ | \`newSdk\` | \`Value -> IO Client\` | Construct a client from an options map. |
102
+ | \`newSdk0\` | \`IO Client\` | Construct a client with defaults. |
103
+
104
+ **Options (map keys):**
105
+
106
+ | Key | Type | Description |
107
+ | --- | --- | --- |
108
+ ${isAuthActive(model) ? '| `apikey` | `String` | API key for authentication. |\n' : ''}| \`base\` | \`String\` | Base URL for API requests. |
109
+ | \`prefix\` | \`String\` | URL prefix appended after base. |
110
+ | \`suffix\` | \`String\` | URL suffix appended after path. |
111
+ | \`headers\` | \`Value\` | Custom headers for all requests. |
112
+ | \`feature\` | \`Value\` | Feature configuration. |
113
+ | \`system\` | \`Value\` | System overrides (e.g. custom fetch). |
114
+
115
+
116
+ ### Test constructors
117
+
118
+ \`\`\`haskell
119
+ client <- Sdk.testSdk0
120
+ \`\`\`
121
+
122
+ \`testSdk :: Value -> Value -> IO Client\` constructs a test client with mock
123
+ features active (\`testSdk0 :: IO Client\` for the no-argument form). Pass
124
+ \`VNoval\` for defaults.
125
+
126
+
127
+ ### Entity accessors
128
+
129
+ `)
130
+
131
+
132
+ // Entity factory functions
133
+ publishedEntities.map((ent: any) => {
134
+ const eFn = hsVarName(ent.name)
135
+ Content(`#### \`${eFn} :: Client -> Value -> IO Entity\`
136
+
137
+ Construct a \`${ent.Name}\` entity bound to the client. Pass \`VNoval\` for no initial options.
138
+
139
+ `)
140
+ })
141
+
142
+
143
+ Content(`### HTTP escape hatches
144
+
145
+ #### \`direct :: Client -> Value -> IO Value\` (module \`SdkFeatures\`)
146
+
147
+ Make a direct HTTP request to any API endpoint. Returns a result \`Value\` with
148
+ \`ok\`, \`status\`, \`headers\`, and \`data\` (or \`err\` on failure). This escape
149
+ hatch never raises — branch on \`getp result "ok"\`.
150
+
151
+ **Argument (map keys):**
152
+
153
+ | Key | Type | Description |
154
+ | --- | --- | --- |
155
+ | \`path\` | \`String\` | URL path with optional \`{param}\` placeholders. |
156
+ | \`method\` | \`String\` | HTTP method (default: \`"GET"\`). |
157
+ | \`params\` | \`Value\` | Path parameter values. |
158
+ | \`query\` | \`Value\` | Query string parameters. |
159
+ | \`headers\` | \`Value\` | Request headers (merged with defaults). |
160
+ | \`body\` | \`Value\` | Request body (maps are JSON-serialized). |
161
+
162
+ #### \`prepare :: Client -> Value -> IO Value\` (module \`SdkFeatures\`)
163
+
164
+ Prepare a fetch definition without sending. Returns the \`fetchdef\` and raises on error.
165
+
166
+ `)
167
+
168
+
169
+ // Entity reference sections
170
+ publishedEntities.map((ent: any) => {
171
+ const opnames = Object.keys(ent.op || {})
172
+ const fields = ent.fields || []
173
+ const idF = entityIdField(ent)
174
+ const eFn = hsVarName(ent.name)
175
+
176
+ Content(`
177
+ ---
178
+
179
+ ## ${ent.Name}
180
+
181
+ `)
182
+
183
+ if (ent.short) {
184
+ Content(`${ent.short}
185
+
186
+ `)
187
+ }
188
+
189
+ Content(`\`\`\`haskell
190
+ ent <- Sdk.${eFn} sdk VNoval
191
+ \`\`\`
192
+
193
+ `)
194
+
195
+
196
+ // Field schema
197
+ if (fields.length > 0) {
198
+ Content(`### Fields
199
+
200
+ | Field | Type | Required | Description |
201
+ | --- | --- | --- | --- |
202
+ `)
203
+ each(fields, (field: any) => {
204
+ const req = field.req ? 'Yes' : 'No'
205
+ const desc = field.short || ''
206
+ Content(`| \`${field.name}\` | \`${hsType(field.type)}\` | ${req} | ${desc} |
207
+ `)
208
+ })
209
+
210
+ Content(`
211
+ `)
212
+
213
+ // Field operations breakdown
214
+ const hasFieldOps = fields.some((f: any) => f.op && Object.keys(f.op).length > 0)
215
+ if (hasFieldOps) {
216
+ const opcols = ['load', 'list', 'create', 'update', 'remove']
217
+ .filter((op: string) => opnames.includes(op) && ent.op[op]?.active !== false)
218
+ Content(`### Field Usage by Operation
219
+
220
+ | Field | ${opcols.join(' | ')} |
221
+ | --- | ${opcols.map(() => '---').join(' | ')} |
222
+ `)
223
+ each(fields, (field: any) => {
224
+ const fops = field.op || {}
225
+ const cols = opcols.map((op: string) => {
226
+ const fop = fops[op]
227
+ if (null == fop) return '-'
228
+ if (fop.active === false) return '-'
229
+ return 'Yes'
230
+ })
231
+ Content(`| \`${field.name}\` | ${cols.join(' | ')} |
232
+ `)
233
+ })
234
+
235
+ Content(`
236
+ `)
237
+ }
238
+ }
239
+
240
+
241
+ // Operation details
242
+ if (opnames.length > 0) {
243
+ Content(`### Operations
244
+
245
+ `)
246
+
247
+ opnames.map((opname: string) => {
248
+ const info = OP_SIGNATURES[opname]
249
+ if (!info) return
250
+
251
+ Content(`#### \`${info.sig}\`
252
+
253
+ ${info.desc}
254
+
255
+ `)
256
+
257
+ if ('load' === opname || 'remove' === opname) {
258
+ const matchItems = opRequestShape(ent, opname).items
259
+ .filter((it: any) => !it.optional || it.name === idF)
260
+ .sort((a: any, b: any) =>
261
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
262
+ const arg = 0 < matchItems.length
263
+ ? `[${matchItems.map((it: any) =>
264
+ `("${it.name}", ${hsLit(it.type,
265
+ it.name === idF ? ent.name + '_id' : it.name)})`).join(', ')}]`
266
+ : '[]'
267
+ Content(`\`\`\`haskell
268
+ ent <- Sdk.${eFn} sdk VNoval
269
+ match <- jo ${arg}
270
+ ctrl <- emptyMap
271
+ result <- Sdk.e${opname.charAt(0).toUpperCase() + opname.slice(1)} ent match ctrl
272
+ \`\`\`
273
+
274
+ `)
275
+ }
276
+ else if ('list' === opname) {
277
+ Content(`\`\`\`haskell
278
+ ent <- Sdk.${eFn} sdk VNoval
279
+ match <- emptyMap
280
+ ctrl <- emptyMap
281
+ results <- Sdk.eList ent match ctrl
282
+ \`\`\`
283
+
284
+ `)
285
+ }
286
+ else if ('create' === opname) {
287
+ const createItems = opRequestShape(ent, 'create').items
288
+ .filter((it: any) => !it.optional)
289
+ Content(`\`\`\`haskell
290
+ ent <- Sdk.${eFn} sdk VNoval
291
+ d <- jo
292
+ [`)
293
+ createItems.map((it: any, i: number) => {
294
+ const bracket = 0 === i ? ' ' : ', '
295
+ Content(`${bracket}("${it.name}", ${hsLit(it.type, 'example_' + it.name)}) -- ${hsType(it.type)}
296
+ `)
297
+ })
298
+ Content(`]
299
+ ctrl <- emptyMap
300
+ result <- Sdk.eCreate ent d ctrl
301
+ \`\`\`
302
+
303
+ `)
304
+ }
305
+ else if ('update' === opname) {
306
+ const updateItems = opRequestShape(ent, 'update').items
307
+ .filter((it: any) => !it.optional || it.name === idF)
308
+ .sort((a: any, b: any) =>
309
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
310
+ const updateLines = updateItems.map((it: any, i: number) => {
311
+ const bracket = 0 === i ? ' ' : ', '
312
+ return `${bracket}("${it.name}", ${hsLit(it.type,
313
+ it.name === idF ? ent.name + '_id' : it.name)})`
314
+ }).join('\n ')
315
+ Content(`\`\`\`haskell
316
+ ent <- Sdk.${eFn} sdk VNoval
317
+ d <- jo
318
+ [${updateLines}
319
+ ] -- fields to update
320
+ ctrl <- emptyMap
321
+ result <- Sdk.eUpdate ent d ctrl
322
+ \`\`\`
323
+
324
+ `)
325
+ }
326
+ })
327
+ }
328
+
329
+
330
+ // Common methods
331
+ Content(`### Common Fields
332
+
333
+ #### \`eDataGet :: IO Value\`
334
+
335
+ Get the entity data.
336
+
337
+ #### \`eDataSet :: Value -> IO ()\`
338
+
339
+ Set the entity data.
340
+
341
+ #### \`eStream :: String -> Value -> Value -> IO [Value]\`
342
+
343
+ Run an operation as a lazy stream of result items.
344
+
345
+ #### \`eMake :: IO Entity\`
346
+
347
+ Create a new \`${ent.Name}\` entity with the same options.
348
+
349
+ #### \`eName :: String\`
350
+
351
+ The entity name.
352
+
353
+ `)
354
+ })
355
+
356
+
357
+ // Features section
358
+ const activeFeatures = each(feature).filter((f: any) => f.active)
359
+ if (activeFeatures.length > 0) {
360
+ Content(`
361
+ ---
362
+
363
+ ## Features
364
+
365
+ | Feature | Version | Description |
366
+ | --- | --- | --- |
367
+ `)
368
+
369
+ activeFeatures.map((f: any) => {
370
+ Content(`| \`${f.name}\` | ${f.version || '0.0.1'} | ${f.title || ''} |
371
+ `)
372
+ })
373
+
374
+ Content(`
375
+
376
+ Features are activated via the \`feature\` option:
377
+
378
+ `)
379
+
380
+ Content(`\`\`\`haskell
381
+ active <- jo [("active", VBool True)]
382
+ featureCfg <- jo
383
+ [`)
384
+ activeFeatures.map((f: any, i: number) => {
385
+ const bracket = 0 === i ? ' ' : ', '
386
+ Content(`${bracket}("${f.name}", active)
387
+ `)
388
+ })
389
+ Content(`]
390
+ opts <- jo [("feature", featureCfg)]
391
+ client <- Sdk.newSdk opts
392
+ \`\`\`
393
+
394
+ `)
395
+ }
396
+
397
+ })
398
+ })
399
+
400
+
401
+
402
+
403
+ export {
404
+ ReadmeRef
405
+ }
@@ -0,0 +1,31 @@
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(`**Haskell:**
9
+ \`\`\`haskell
10
+ import qualified SdkClient as Sdk
11
+ import qualified SdkFeatures as F
12
+ import VoxgigStruct (Value (..))
13
+ import SdkHelpers (jo)
14
+
15
+ main :: IO ()
16
+ main = do
17
+ sdk <- Sdk.newSdk0
18
+ params <- jo [("id", VStr "example")]
19
+ args <- jo [("path", VStr "/api/resource/{id}"), ("method", VStr "GET"), ("params", params)]
20
+ result <- F.direct sdk args
21
+ print result
22
+ \`\`\`
23
+
24
+ `)
25
+
26
+ })
27
+
28
+
29
+ export {
30
+ ReadmeTopHowto
31
+ }