@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,205 @@
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 { ocamlVarName } from './utility_ocaml'
11
+
12
+
13
+ const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
14
+ const { target, ctx$: { model } } = props
15
+
16
+ const entity = getModelPath(model, `main.${KIT}.entity`)
17
+
18
+ const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
19
+
20
+ // Find a nested entity if available: one with a parent chain, an active load
21
+ // op, and a required non-id load param to demonstrate (the parent key).
22
+ const nestedEntity = Object.values(entity).find((e: any) =>
23
+ e.active !== false &&
24
+ e.relations && e.relations.ancestors && 0 < e.relations.ancestors.length &&
25
+ entityOps(e).includes('load') &&
26
+ opRequestShape(e, 'load').items.some((it: any) =>
27
+ !it.optional && it.name !== entityIdField(e))
28
+ ) as any
29
+
30
+ const authActive = isAuthActive(model)
31
+ const ctor = authActive
32
+ ? `Sdk_client.make (jo [("apikey", Str (Sys.getenv "${envName(model)}_APIKEY"))])`
33
+ : `Sdk_client.make0 ()`
34
+
35
+ Content(`### 1. Create a client
36
+
37
+ \`\`\`ocaml
38
+ open Voxgig_struct
39
+ open Sdk_helpers
40
+
41
+ let client = ${ctor}
42
+ \`\`\`
43
+
44
+ `)
45
+
46
+ if (exampleEntity) {
47
+ const eName = nom(exampleEntity, 'Name')
48
+ const article = /^[aeiou]/i.test(eName) ? 'an' : 'a'
49
+ const fn = ocamlVarName(exampleEntity.name)
50
+ const opnames = entityOps(exampleEntity)
51
+ // Model-driven id key: `idF` is the entity's id-like MATCH field, or null.
52
+ // `dataIdF` is the id on the RETURNED record's data type.
53
+ const idF = entityIdField(exampleEntity)
54
+ const dataIdF = entityDataIdField(exampleEntity)
55
+
56
+ // A type-correct OCaml `value` literal for a param.
57
+ const ocamlLit = (type: any, placeholder: string = 'example'): string => {
58
+ const k = canonKey(type)
59
+ if ('INTEGER' === k || 'NUMBER' === k) return '(Num 1.)'
60
+ if ('BOOLEAN' === k) return '(Bool true)'
61
+ if ('ARRAY' === k) return '(empty_list ())'
62
+ if ('OBJECT' === k) return '(empty_map ())'
63
+ return `(Str "${placeholder}")`
64
+ }
65
+
66
+ if (opnames.includes('list')) {
67
+ Content(`### 2. List ${fn} records
68
+
69
+ \`e_list\` returns a \`List\` value of records (each a \`Map\`) and raises on
70
+ error — iterate it directly.
71
+
72
+ \`\`\`ocaml
73
+ (try
74
+ let ${fn}s = (Sdk_client.${fn} client Noval).e_list (empty_map ()) Noval in
75
+ (match ${fn}s with
76
+ | List items -> List.iter (fun r -> print_endline (stringify r)) !items
77
+ | _ -> ())
78
+ with Sdk_error.E err -> Printf.eprintf "list failed: %s\\n" (Sdk_error.message err))
79
+ \`\`\`
80
+
81
+ `)
82
+ }
83
+
84
+ if (nestedEntity) {
85
+ const neName = nom(nestedEntity, 'Name')
86
+ const neArticle = /^[aeiou]/i.test(neName) ? 'an' : 'a'
87
+ const neFn = ocamlVarName(nestedEntity.name)
88
+
89
+ // Model-driven match: every REQUIRED load-match key. Parent keys first,
90
+ // the entity's own id last.
91
+ const neIdF = entityIdField(nestedEntity)
92
+ const neRequired = opRequestShape(nestedEntity, 'load').items
93
+ .filter((it: any) => !it.optional)
94
+ .sort((a: any, b: any) =>
95
+ (a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
96
+ const parentItem = neRequired.find((it: any) => it.name !== neIdF) as any
97
+ const parentParam = parentItem && parentItem.name
98
+ const parentName = parentParam ? parentParam.replace(/_id$/, '') : 'its parent'
99
+ const neMatch = neRequired.map((it: any) =>
100
+ `("${it.name}", ${ocamlLit(it.type,
101
+ it.name === neIdF ? 'example_id' : 'example_' + it.name)})`)
102
+
103
+ Content(`### 3. Load ${neArticle} ${neFn}
104
+
105
+ ${neName} is nested under ${parentName}, so provide the \`${parentParam}\`.
106
+ \`e_load\` returns the bare record (a \`Map\`) and raises on error.
107
+
108
+ \`\`\`ocaml
109
+ (try
110
+ let ${neFn} = (Sdk_client.${neFn} client Noval).e_load (jo [${neMatch.join('; ')}]) Noval in
111
+ print_endline (stringify ${neFn})
112
+ with Sdk_error.E err -> Printf.eprintf "load failed: %s\\n" (Sdk_error.message err))
113
+ \`\`\`
114
+
115
+ `)
116
+ }
117
+ else if (opnames.includes('load')) {
118
+ const loadRequired = opRequestShape(exampleEntity, 'load').items
119
+ .filter((it: any) => !it.optional || it.name === idF)
120
+ .sort((a: any, b: any) =>
121
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
122
+ const loadArg = 0 < loadRequired.length
123
+ ? `jo [${loadRequired.map((it: any) =>
124
+ `("${it.name}", ${ocamlLit(it.type,
125
+ it.name === idF ? 'example_id' : 'example_' + it.name)})`).join('; ')}]`
126
+ : 'Noval'
127
+
128
+ Content(`### 3. Load ${article} ${fn}
129
+
130
+ \`e_load\` returns the bare record (a \`Map\`) and raises on error.
131
+
132
+ \`\`\`ocaml
133
+ (try
134
+ let ${fn} = (Sdk_client.${fn} client Noval).e_load (${loadArg}) Noval in
135
+ print_endline (stringify ${fn})
136
+ with Sdk_error.E err -> Printf.eprintf "load failed: %s\\n" (Sdk_error.message err))
137
+ \`\`\`
138
+
139
+ `)
140
+ }
141
+
142
+ // Model-driven example fields: derive the create/update body from the op
143
+ // shape so the docs reference REAL writable fields.
144
+ const examplePairs = (opname: string): string[] => {
145
+ const items = opRequestShape(exampleEntity, opname).items
146
+ .filter((it: any) => (it.name !== idF && it.name !== 'id') ||
147
+ ('create' === opname && !it.optional))
148
+ const required = items.filter((it: any) => !it.optional)
149
+ const optional = items.filter((it: any) => it.optional)
150
+ const chosen = 'create' === opname
151
+ ? (required.length ? required : items.slice(0, 2))
152
+ : required.concat(optional).slice(0, Math.max(2, required.length))
153
+ return chosen.map((it: any) => `("${it.name}", ${ocamlLit(it.type, 'example_' + it.name)})`)
154
+ }
155
+
156
+ const idParamType = (opname: string): any => {
157
+ const it = opRequestShape(exampleEntity, opname).items.find((x: any) => x.name === idF)
158
+ return it && it.type
159
+ }
160
+ const idValueFor = (opname: string): string => (null != dataIdF && opnames.includes('create'))
161
+ ? `(getp created "${dataIdF}")`
162
+ : ocamlLit(idParamType(opname), 'example_id')
163
+
164
+ if (opnames.includes('create') || opnames.includes('update') || opnames.includes('remove')) {
165
+ Content(`### 4. Create, update, and remove
166
+
167
+ \`\`\`ocaml
168
+ `)
169
+ if (opnames.includes('create')) {
170
+ Content(`(* Create — returns the bare created record (a Map) *)
171
+ let created = (Sdk_client.${fn} client Noval).e_create (jo [${examplePairs('create').join('; ')}]) Noval in
172
+ ignore created;
173
+
174
+ `)
175
+ }
176
+ if (opnames.includes('update')) {
177
+ const updatePairs = (idF ? [`("${idF}", ${idValueFor('update')})`] : []).concat(examplePairs('update'))
178
+ Content(`(* Update *)
179
+ ignore ((Sdk_client.${fn} client Noval).e_update (jo [${updatePairs.join('; ')}]) Noval);
180
+
181
+ `)
182
+ }
183
+ if (opnames.includes('remove')) {
184
+ const removePairs = opRequestShape(exampleEntity, 'remove').items
185
+ .filter((it: any) => !it.optional || it.name === idF)
186
+ .sort((a: any, b: any) =>
187
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
188
+ .map((it: any) => it.name === idF
189
+ ? `("${it.name}", ${idValueFor('remove')})`
190
+ : `("${it.name}", ${ocamlLit(it.type, 'example_' + it.name)})`)
191
+ Content(`(* Remove *)
192
+ ignore ((Sdk_client.${fn} client Noval).e_remove (${removePairs.length ? `jo [${removePairs.join('; ')}]` : 'Noval'}) Noval)
193
+ `)
194
+ }
195
+ Content(`\`\`\`
196
+
197
+ `)
198
+ }
199
+ }
200
+ })
201
+
202
+
203
+ export {
204
+ ReadmeQuick
205
+ }
@@ -0,0 +1,402 @@
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 { ocamlVarName } from './utility_ocaml'
10
+
11
+
12
+ // A type-correct OCaml `value` literal. Strings render the quoted placeholder.
13
+ function ocamlLit(type: any, placeholder: string = 'example'): string {
14
+ const k = canonKey(type)
15
+ if ('INTEGER' === k || 'NUMBER' === k) return '(Num 1.)'
16
+ if ('BOOLEAN' === k) return '(Bool true)'
17
+ if ('ARRAY' === k) return '(empty_list ())'
18
+ if ('OBJECT' === k) return '(empty_map ())'
19
+ return `(Str "${placeholder}")`
20
+ }
21
+
22
+
23
+ // The logical OCaml type of a field's canonical type (every field is carried
24
+ // inside the dynamic `value` variant).
25
+ function ocamlType(type: any): string {
26
+ const k = canonKey(type)
27
+ if ('INTEGER' === k) return 'int'
28
+ if ('NUMBER' === k) return 'float'
29
+ if ('BOOLEAN' === k) return 'bool'
30
+ if ('STRING' === k) return 'string'
31
+ if ('ARRAY' === k) return 'value list'
32
+ if ('OBJECT' === k) return 'value map'
33
+ return 'value'
34
+ }
35
+
36
+
37
+ const OP_SIGNATURES: Record<string, { sig: string, returns: string, desc: string }> = {
38
+ load: {
39
+ sig: 'e_load reqmatch ctrl : value',
40
+ returns: 'the entity data',
41
+ desc: 'Load a single entity matching the given criteria. Returns the entity data and raises on error.',
42
+ },
43
+ list: {
44
+ sig: 'e_list reqmatch ctrl : value',
45
+ returns: 'a List of entities',
46
+ desc: 'List entities matching the given criteria. The match is optional — pass `(empty_map ())` to list all records. Returns a List and raises on error.',
47
+ },
48
+ create: {
49
+ sig: 'e_create reqdata ctrl : value',
50
+ returns: 'the created entity data',
51
+ desc: 'Create a new entity with the given data. Returns the created entity data and raises on error.',
52
+ },
53
+ update: {
54
+ sig: 'e_update reqdata ctrl : value',
55
+ returns: 'the updated entity data',
56
+ desc: 'Update an existing entity. The data must include the entity `id`. Returns the updated entity data and raises on error.',
57
+ },
58
+ remove: {
59
+ sig: 'e_remove reqmatch ctrl : value',
60
+ returns: 'the removed entity data',
61
+ desc: 'Remove the entity matching the given criteria. Raises on error.',
62
+ },
63
+ }
64
+
65
+
66
+ const ReadmeRef = cmp(function ReadmeRef(props: any) {
67
+ const { target } = props
68
+ const { model } = props.ctx$
69
+
70
+ const entity = getModelPath(model, `main.${KIT}.entity`)
71
+ const feature = getModelPath(model, `main.${KIT}.feature`)
72
+
73
+ const publishedEntities = each(entity).filter((e: any) => e.active !== false)
74
+
75
+
76
+ File({ name: 'REFERENCE.md' }, () => {
77
+
78
+ Content(`# ${model.Name} ${target.title} SDK Reference
79
+
80
+ Complete API reference for the ${model.Name} ${target.title} SDK.
81
+
82
+
83
+ ## Sdk_client
84
+
85
+ ### Constructor
86
+
87
+ `)
88
+
89
+ Content(`\`\`\`ocaml
90
+ open Voxgig_struct
91
+ open Sdk_helpers
92
+
93
+ let client = Sdk_client.make options
94
+ \`\`\`
95
+
96
+ Create a new SDK client instance from a \`value\` options map. Use
97
+ \`Sdk_client.make0 ()\` for defaults.
98
+
99
+ **Parameters:**
100
+
101
+ | Name | Type | Description |
102
+ | --- | --- | --- |
103
+ | \`options\` | \`value\` | SDK configuration options (a Map). |
104
+ ${isAuthActive(model) ? '| `apikey` | `string` | API key for authentication. |\n' : ''}| \`base\` | \`string\` | Base URL for API requests. |
105
+ | \`prefix\` | \`string\` | URL prefix appended after base. |
106
+ | \`suffix\` | \`string\` | URL suffix appended after path. |
107
+ | \`headers\` | \`map\` | Custom headers for all requests. |
108
+ | \`feature\` | \`map\` | Feature configuration. |
109
+ | \`system\` | \`map\` | System overrides (e.g. custom fetch). |
110
+
111
+ `)
112
+
113
+
114
+ Content(`
115
+ ### Static constructors
116
+
117
+ `)
118
+
119
+ Content(`#### \`Sdk_client.test testopts sdkopts\`
120
+
121
+ Create a test client with mock features active. Both arguments may be \`Noval\`
122
+ (\`Sdk_client.test ()\` uses defaults, \`Sdk_client.test_with\` takes explicit
123
+ options).
124
+
125
+ \`\`\`ocaml
126
+ let client = Sdk_client.test ()
127
+ \`\`\`
128
+
129
+ `)
130
+
131
+
132
+ Content(`
133
+ ### Instance functions
134
+
135
+ `)
136
+
137
+
138
+ // Entity accessor functions
139
+ publishedEntities.map((ent: any) => {
140
+ const fn = ocamlVarName(ent.name)
141
+ Content(`#### \`Sdk_client.${fn} client entopts : entity_obj\`
142
+
143
+ Create a \`${ent.Name}\` entity accessor. Pass \`Noval\` for no initial options.
144
+
145
+ `)
146
+ })
147
+
148
+
149
+ Content(`#### \`Sdk_client.direct client fetchargs : value\`
150
+
151
+ Make a direct HTTP request to any API endpoint. Returns a result \`value\` map
152
+ with \`ok\`, \`status\`, \`headers\`, and \`data\` (or \`err\` on failure). This
153
+ escape hatch never raises — branch on \`getp result "ok"\`.
154
+
155
+ **Parameters:**
156
+
157
+ | Name | Type | Description |
158
+ | --- | --- | --- |
159
+ | \`path\` | \`string\` | URL path with optional \`{param}\` placeholders. |
160
+ | \`method\` | \`string\` | HTTP method (default: \`"GET"\`). |
161
+ | \`params\` | \`map\` | Path parameter values. |
162
+ | \`query\` | \`map\` | Query string parameters. |
163
+ | \`headers\` | \`map\` | Request headers (merged with defaults). |
164
+ | \`body\` | \`value\` | Request body (Maps are JSON-serialized). |
165
+
166
+ **Returns:** a result \`value\` map.
167
+
168
+ #### \`Sdk_client.prepare client fetchargs : value\`
169
+
170
+ Prepare a fetch definition without sending. Returns the \`fetchdef\` and raises
171
+ on error.
172
+
173
+ `)
174
+
175
+
176
+ // Entity reference sections
177
+ publishedEntities.map((ent: any) => {
178
+ const opnames = Object.keys(ent.op || {})
179
+ const fields = ent.fields || []
180
+ const idF = entityIdField(ent)
181
+ const fn = ocamlVarName(ent.name)
182
+
183
+ Content(`
184
+ ---
185
+
186
+ ## ${ent.Name}
187
+
188
+ `)
189
+
190
+ if (ent.short) {
191
+ Content(`${ent.short}
192
+
193
+ `)
194
+ }
195
+
196
+ Content(`\`\`\`ocaml
197
+ let ${fn} = Sdk_client.${fn} client Noval
198
+ \`\`\`
199
+
200
+ `)
201
+
202
+
203
+ // Field schema
204
+ if (fields.length > 0) {
205
+ Content(`### Fields
206
+
207
+ | Field | Type | Required | Description |
208
+ | --- | --- | --- | --- |
209
+ `)
210
+ each(fields, (field: any) => {
211
+ const req = field.req ? 'Yes' : 'No'
212
+ const desc = field.short || ''
213
+ Content(`| \`${field.name}\` | \`${ocamlType(field.type)}\` | ${req} | ${desc} |
214
+ `)
215
+ })
216
+
217
+ Content(`
218
+ `)
219
+
220
+ // Field operations breakdown
221
+ const hasFieldOps = fields.some((f: any) => f.op && Object.keys(f.op).length > 0)
222
+ if (hasFieldOps) {
223
+ const opcols = ['load', 'list', 'create', 'update', 'remove']
224
+ .filter((op: string) => opnames.includes(op) && ent.op[op]?.active !== false)
225
+ Content(`### Field Usage by Operation
226
+
227
+ | Field | ${opcols.join(' | ')} |
228
+ | --- | ${opcols.map(() => '---').join(' | ')} |
229
+ `)
230
+ each(fields, (field: any) => {
231
+ const fops = field.op || {}
232
+ const cols = opcols.map((op: string) => {
233
+ const fop = fops[op]
234
+ if (null == fop) return '-'
235
+ if (fop.active === false) return '-'
236
+ return 'Yes'
237
+ })
238
+ Content(`| \`${field.name}\` | ${cols.join(' | ')} |
239
+ `)
240
+ })
241
+
242
+ Content(`
243
+ `)
244
+ }
245
+ }
246
+
247
+
248
+ // Operation details
249
+ if (opnames.length > 0) {
250
+ Content(`### Operations
251
+
252
+ `)
253
+
254
+ opnames.map((opname: string) => {
255
+ const info = OP_SIGNATURES[opname]
256
+ if (!info) return
257
+
258
+ Content(`#### \`${info.sig}\`
259
+
260
+ ${info.desc}
261
+
262
+ `)
263
+
264
+ if ('load' === opname || 'remove' === opname) {
265
+ const matchItems = opRequestShape(ent, opname).items
266
+ .filter((it: any) => !it.optional || it.name === idF)
267
+ .sort((a: any, b: any) =>
268
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
269
+ const arg = 0 < matchItems.length
270
+ ? `jo [${matchItems.map((it: any) =>
271
+ `("${it.name}", ${ocamlLit(it.type,
272
+ it.name === idF ? ent.name + '_id' : it.name)})`).join('; ')}]`
273
+ : 'Noval'
274
+ Content(`\`\`\`ocaml
275
+ let result = (Sdk_client.${fn} client Noval).${'load' === opname ? 'e_load' : 'e_remove'} (${arg}) Noval
276
+ \`\`\`
277
+
278
+ `)
279
+ }
280
+ else if ('list' === opname) {
281
+ Content(`\`\`\`ocaml
282
+ let results = (Sdk_client.${fn} client Noval).e_list (empty_map ()) Noval in
283
+ (match results with
284
+ | List items -> List.iter (fun r -> print_endline (stringify r)) !items
285
+ | _ -> ())
286
+ \`\`\`
287
+
288
+ `)
289
+ }
290
+ else if ('create' === opname) {
291
+ const createItems = opRequestShape(ent, 'create').items
292
+ .filter((it: any) => !it.optional)
293
+ Content(`\`\`\`ocaml
294
+ let result = (Sdk_client.${fn} client Noval).e_create (jo [
295
+ `)
296
+ createItems.map((it: any) => {
297
+ Content(` ("${it.name}", ${ocamlLit(it.type, 'example_' + it.name)}); (* ${ocamlType(it.type)} *)
298
+ `)
299
+ })
300
+ Content(`]) Noval
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) =>
311
+ ` ("${it.name}", ${ocamlLit(it.type,
312
+ it.name === idF ? ent.name + '_id' : it.name)});\n`).join('')
313
+ Content(`\`\`\`ocaml
314
+ let result = (Sdk_client.${fn} client Noval).e_update (jo [
315
+ ${updateLines} (* Fields to update *)
316
+ ]) Noval
317
+ \`\`\`
318
+
319
+ `)
320
+ }
321
+ })
322
+ }
323
+
324
+
325
+ // Common fields
326
+ Content(`### Common Fields
327
+
328
+ #### \`e_data_get : unit -> value\`
329
+
330
+ Get the entity data.
331
+
332
+ #### \`e_data_set : value -> unit\`
333
+
334
+ Set the entity data.
335
+
336
+ #### \`e_match_get : unit -> value\`
337
+
338
+ Get the entity match criteria.
339
+
340
+ #### \`e_match_set : value -> unit\`
341
+
342
+ Set the entity match criteria.
343
+
344
+ #### \`e_make : unit -> entity_obj\`
345
+
346
+ Create a new \`${ent.Name}\` entity accessor with the same options.
347
+
348
+ #### \`e_name : string\`
349
+
350
+ The entity name.
351
+
352
+ `)
353
+ })
354
+
355
+
356
+ // Features section
357
+ const activeFeatures = each(feature).filter((f: any) => f.active)
358
+ if (activeFeatures.length > 0) {
359
+ Content(`
360
+ ---
361
+
362
+ ## Features
363
+
364
+ | Feature | Version | Description |
365
+ | --- | --- | --- |
366
+ `)
367
+
368
+ activeFeatures.map((f: any) => {
369
+ Content(`| \`${f.name}\` | ${f.version || '0.0.1'} | ${f.title || ''} |
370
+ `)
371
+ })
372
+
373
+ Content(`
374
+
375
+ Features are activated via the \`feature\` option:
376
+
377
+ `)
378
+
379
+ Content(`\`\`\`ocaml
380
+ let client = Sdk_client.make (jo [
381
+ ("feature", jo [
382
+ `)
383
+ activeFeatures.map((f: any) => {
384
+ Content(` ("${f.name}", jo [("active", Bool true)]);
385
+ `)
386
+ })
387
+ Content(` ]);
388
+ ])
389
+ \`\`\`
390
+
391
+ `)
392
+ }
393
+
394
+ })
395
+ })
396
+
397
+
398
+
399
+
400
+ export {
401
+ ReadmeRef
402
+ }
@@ -0,0 +1,25 @@
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(`**OCaml:**
9
+ \`\`\`ocaml
10
+ let result = Sdk_client.direct client (jo [
11
+ ("path", Str "/api/resource/{id}");
12
+ ("method", Str "GET");
13
+ ("params", jo [("id", Str "example")]);
14
+ ]) in
15
+ ignore result
16
+ \`\`\`
17
+
18
+ `)
19
+
20
+ })
21
+
22
+
23
+ export {
24
+ ReadmeTopHowto
25
+ }