@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,51 @@
1
+
2
+ import { cmp, Content, isPublished, repoInfo } from '@voxgig/sdkgen'
3
+
4
+
5
+ const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
6
+ const { target, ctx$ } = props
7
+ const { model } = ctx$
8
+ const { origin, repo, repoUrl, releasesUrl } = repoInfo(model)
9
+
10
+ if (isPublished(model, target.name)) {
11
+ // Live on Clojars: add the published coordinate to deps.edn.
12
+ Content(`Add the dependency to your \`deps.edn\`:
13
+
14
+ \`\`\`clojure
15
+ ;; deps.edn
16
+ {:deps {org.clojars.${origin}/${repo} {:mvn/version "X.Y.Z"}}}
17
+ \`\`\`
18
+
19
+ `)
20
+ return
21
+ }
22
+
23
+ // Publish pending: not yet on Clojars. Depend on the library directly from
24
+ // the GitHub release tag, or from a local checkout via :local/root.
25
+ Content(`This package is not yet published to Clojars. Depend on it directly from the
26
+ GitHub release tag (\`${target.name}/vX.Y.Z\`, see [Releases](${releasesUrl})),
27
+ using a \`tools.deps\` git dependency:
28
+
29
+ \`\`\`clojure
30
+ ;; deps.edn
31
+ {:deps {${model.const.Name.toLowerCase()}/sdk
32
+ {:git/url "${repoUrl}"
33
+ :git/tag "${target.name}/vX.Y.Z"
34
+ :git/sha "..."
35
+ :deps/root "${target.name}"}}}
36
+ \`\`\`
37
+
38
+ Or from a local source checkout:
39
+
40
+ \`\`\`clojure
41
+ ;; deps.edn
42
+ {:deps {${model.const.Name.toLowerCase()}/sdk {:local/root "../${target.name}"}}}
43
+ \`\`\`
44
+
45
+ `)
46
+ })
47
+
48
+
49
+ export {
50
+ ReadmeInstall
51
+ }
@@ -0,0 +1,66 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+
10
+ const ReadmeIntro = cmp(function ReadmeIntro(props: any) {
11
+ const { target, ctx$: { model } } = props
12
+ const info = (model.main && model.main.kit && model.main.kit.info) || {}
13
+ const tagline = info.tagline || ''
14
+
15
+ Content(`# ${model.Name} ${target.title} SDK
16
+
17
+ ${tagline}
18
+
19
+ The ${target.title} SDK for the ${model.Name} API — an entity-oriented client
20
+ following idiomatic Clojure conventions (plain functions, immutable data, and
21
+ the vendored \`voxgig.struct\` value model).
22
+
23
+ `)
24
+
25
+ // Emphasise the entity-oriented design: the SDK surfaces the API as
26
+ // capitalised, semantic Entities with a small, uniform verb set rather
27
+ // than raw URL paths and query strings. The example entity name is
28
+ // derived from the model, never hardcoded.
29
+ const entity = getModelPath(model, `main.${KIT}.entity`)
30
+ const exampleEntity = Object.values(entity || {})
31
+ .find((e: any) => e.active !== false) as any
32
+ const example = exampleEntity
33
+ ? `for example \`(api/${exampleEntity.name} client nil)\` — each`
34
+ : 'each'
35
+
36
+ // Model-driven op list — only the operations the active entities actually
37
+ // expose (a read-only entity has just list+load); never claim
38
+ // create/update/remove exist when no entity has them.
39
+ const CANON_OPS = ['list', 'load', 'create', 'update', 'remove']
40
+ const opSet = new Set<string>()
41
+ Object.values(entity || {}).forEach((e: any) => {
42
+ if (!e || e.active === false) return
43
+ Object.keys(e.op || {}).forEach((o: string) => {
44
+ if (e.op[o] && e.op[o].active !== false) opSet.add(o)
45
+ })
46
+ })
47
+ const opNames = CANON_OPS.filter((o) => opSet.has(o))
48
+ .concat([...opSet].filter((o) => !CANON_OPS.includes(o)))
49
+ const opList = (opNames.length ? opNames : ['list', 'load'])
50
+ .map((o) => '`' + o + '`').join(', ')
51
+
52
+ Content(`The SDK exposes the API as capitalised, semantic **Entities** — ${example}
53
+ carrying a small, uniform set of operations (${opList}) instead of raw URL
54
+ paths and query strings. You work with named resources and verbs, which
55
+ keeps the cognitive load low.
56
+
57
+ > Other languages, the CLI, and MCP server live alongside this one — see
58
+ > the [top-level README](../README.md).
59
+
60
+ `)
61
+ })
62
+
63
+
64
+ export {
65
+ ReadmeIntro
66
+ }
@@ -0,0 +1,156 @@
1
+
2
+ import { cmp, each, Content, isAuthActive } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+
10
+ const ReadmeModel = cmp(function ReadmeModel(props: any) {
11
+ const { target, ctx$: { model } } = props
12
+
13
+ const entity = getModelPath(model, `main.${KIT}.entity`)
14
+ const entityList = each(entity).filter((e: any) => e.active !== false)
15
+
16
+ // Model-driven op rows for the shared entity interface: emit a row only for
17
+ // operations at least one active entity actually exposes — never document an
18
+ // operation no entity has.
19
+ const opUnion = new Set<string>()
20
+ entityList.forEach((e: any) => Object.keys(e.op || {})
21
+ .forEach((o: string) => { if (e.op[o] && e.op[o].active !== false) opUnion.add(o) }))
22
+ const opRowDefs: Record<string, string> = {
23
+ load: '| `load` | `(ent reqmatch ctrl) -> map` | Load a single entity by match criteria. Raises on error. |',
24
+ list: '| `list` | `(ent reqmatch ctrl) -> vector` | List entities matching the criteria. Raises on error. |',
25
+ create: '| `create` | `(ent reqdata ctrl) -> map` | Create a new entity. Raises on error. |',
26
+ update: '| `update` | `(ent reqdata ctrl) -> map` | Update an existing entity. Raises on error. |',
27
+ remove: '| `remove` | `(ent reqmatch ctrl) -> map` | Remove an entity. Raises on error. |',
28
+ }
29
+ const opRows = ['load', 'list', 'create', 'update', 'remove']
30
+ .filter((o) => opUnion.has(o)).map((o) => opRowDefs[o]).join('\n')
31
+
32
+ const apikeyOptionRow = isAuthActive(model)
33
+ ? '| `apikey` | `string` | API key for authentication. |\n'
34
+ : ''
35
+
36
+ Content(`### make-sdk
37
+
38
+ \`\`\`clojure
39
+ (require '[sdk.api :as api]
40
+ '[voxgig.struct :as vs])
41
+
42
+ (def client (api/make-sdk options))
43
+ \`\`\`
44
+
45
+ Creates a new SDK client. \`options\` is a \`voxgig.struct\` map (or \`nil\`).
46
+
47
+ | Option | Type | Description |
48
+ | --- | --- | --- |
49
+ ${apikeyOptionRow}| \`base\` | \`string\` | Base URL of the API server. |
50
+ | \`prefix\` | \`string\` | URL path prefix prepended to all requests. |
51
+ | \`suffix\` | \`string\` | URL path suffix appended to all requests. |
52
+ | \`feature\` | \`map\` | Feature activation flags. |
53
+ | \`extend\` | \`vector\` | Additional feature atoms to load. |
54
+ | \`system\` | \`map\` | System overrides (e.g. custom \`fetch\` fn). |
55
+
56
+ ### test-sdk
57
+
58
+ \`\`\`clojure
59
+ (def client (api/test-sdk testopts sdkopts))
60
+ \`\`\`
61
+
62
+ Creates a test-mode client with mock transport. Both arguments may be \`nil\`.
63
+
64
+ ### Client functions
65
+
66
+ | Function | Signature | Description |
67
+ | --- | --- | --- |
68
+ | \`options-map\` | \`(client) -> map\` | Deep copy of current SDK options. |
69
+ | \`get-utility\` | \`(client) -> utility\` | Copy of the SDK utility object. |
70
+ | \`prepare\` | \`(client fetchargs) -> map\` | Build an HTTP request definition without sending. Raises on error. |
71
+ | \`direct\` | \`(client fetchargs) -> map\` | Build and send an HTTP request. Returns a result map (branch on \`ok\`). |
72
+ `)
73
+
74
+ each(entityList, (ent: any) => {
75
+ const article = /^[aeiou]/i.test(ent.Name) ? 'an' : 'a'
76
+ Content(`| \`${ent.name}\` | \`(client data) -> ${ent.Name} entity\` | Create ${article} ${ent.Name} entity instance. |
77
+ `)
78
+ })
79
+
80
+ Content(`
81
+ ### Entity interface
82
+
83
+ All entities share the same interface. Operations are functions in the
84
+ entity namespace (\`sdk.entity.<name>\`); state accessors are stored on the
85
+ entity map and are called via keyword lookup.
86
+
87
+ | Member | Signature | Description |
88
+ | --- | --- | --- |
89
+ ${opRows}
90
+ | \`:data-get\` | \`() -> map\` | Get entity data. |
91
+ | \`:data-set\` | \`(data)\` | Set entity data. |
92
+ | \`:match-get\` | \`() -> map\` | Get entity match criteria. |
93
+ | \`:match-set\` | \`(match)\` | Set entity match criteria. |
94
+ | \`:make\` | \`() -> entity\` | Create a new instance with the same options. |
95
+ | \`:get-name\` | \`() -> string\` | Return the entity name. |
96
+
97
+ State accessors are called by looking up the fn and applying it, e.g.
98
+ \`((:data-get ent))\` or \`((:data-set ent) (vs/jm "k" "v"))\`.
99
+
100
+ ### Result shape
101
+
102
+ Entity operations return the bare result data (a \`map\` for single-entity
103
+ ops, a \`vector\` for \`list\`) and raise (via \`ex-info\`) on error. Wrap
104
+ calls in \`try\`/\`catch\` to handle failures.
105
+
106
+ The \`direct\` escape hatch never raises — it returns a result \`map\` you
107
+ branch on via \`(vs/getprop result "ok")\`:
108
+
109
+ | Key | Type | Description |
110
+ | --- | --- | --- |
111
+ | \`ok\` | \`boolean\` | \`true\` if the HTTP status is 2xx. |
112
+ | \`status\` | \`long\` | HTTP status code. |
113
+ | \`headers\` | \`map\` | Response headers. |
114
+ | \`data\` | \`any\` | Parsed JSON response body. |
115
+
116
+ On error, \`ok\` is \`false\` and \`err\` contains the error value.
117
+
118
+ `)
119
+
120
+ // Entities summary
121
+ Content(`### Entities
122
+
123
+ `)
124
+ each(entityList, (ent: any) => {
125
+ const fields = ent.fields || []
126
+ const opnames = Object.keys(ent.op || {})
127
+ const ops = ent.op || {}
128
+ const points = each(ops).map((op: any) =>
129
+ op.points ? each(op.points) : []
130
+ ).flat()
131
+ const path = points.length > 0 ? (points[0] as any).orig || '' : ''
132
+
133
+ Content(`#### ${ent.Name}
134
+
135
+ | Field | Description |
136
+ | --- | --- |
137
+ `)
138
+ each(fields, (field: any) => {
139
+ Content(`| \`${field.name}\` | ${field.short || ''} |
140
+ `)
141
+ })
142
+
143
+ Content(`
144
+ Operations: ${opnames.map((n: string) => n.charAt(0).toUpperCase() + n.slice(1)).join(', ')}.
145
+
146
+ API path: \`${path}\`
147
+
148
+ `)
149
+ })
150
+
151
+ })
152
+
153
+
154
+ export {
155
+ ReadmeModel
156
+ }
@@ -0,0 +1,61 @@
1
+
2
+ import { cmp, each, Content, envName, isAuthActive } from '@voxgig/sdkgen'
3
+
4
+
5
+ const ReadmeOptions = cmp(function ReadmeOptions(props: any) {
6
+ const { target } = props
7
+ const { model } = props.ctx$
8
+
9
+ const publishedOptions = each(target.options).filter((option: any) =>
10
+ option.publish && ('apikey' !== option.name || isAuthActive(model)))
11
+ if (0 === publishedOptions.length) {
12
+ return
13
+ }
14
+
15
+ Content(`
16
+
17
+ ## Options
18
+
19
+ Pass options as a \`voxgig.struct\` map when creating a client:
20
+
21
+ `)
22
+
23
+ Content(`\`\`\`clojure
24
+ (def client
25
+ (api/make-sdk
26
+ (vs/jm
27
+ `)
28
+
29
+ publishedOptions.map((option: any) => {
30
+ if ('apikey' === option.name) {
31
+ Content(` "${option.name}" (System/getenv "${envName(model)}_APIKEY")
32
+ `)
33
+ }
34
+ else {
35
+ Content(` ;; "${option.name}" ${option.kind === 'string' ? '"..."' : '...'}
36
+ `)
37
+ }
38
+ })
39
+
40
+ Content(` )))
41
+ \`\`\`
42
+
43
+ `)
44
+
45
+ Content(`| Option | Type | Description |
46
+ | --- | --- | --- |
47
+ `)
48
+
49
+ publishedOptions.map((option: any) => {
50
+ Content(`| \`${option.name}\` | \`${option.kind}\` | ${option.short} |
51
+ `)
52
+ })
53
+
54
+ Content(`
55
+ `)
56
+ })
57
+
58
+
59
+ export {
60
+ ReadmeOptions
61
+ }
@@ -0,0 +1,210 @@
1
+
2
+ import { cmp, each, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityDataIdField, entityOps } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+
10
+ const ReadmeQuick = cmp(function ReadmeQuick(props: any) {
11
+ const { target, ctx$: { model } } = props
12
+
13
+ const entity = getModelPath(model, `main.${KIT}.entity`)
14
+
15
+ const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
16
+
17
+ // Find a nested entity if available: one with a parent chain, an active load
18
+ // op, and a required non-id load param to demonstrate (the parent key).
19
+ const nestedEntity = Object.values(entity).find((e: any) =>
20
+ e.active !== false &&
21
+ e.relations && e.relations.ancestors && 0 < e.relations.ancestors.length &&
22
+ entityOps(e).includes('load') &&
23
+ opRequestShape(e, 'load').items.some((it: any) =>
24
+ !it.optional && it.name !== entityIdField(e))
25
+ ) as any
26
+
27
+ const authActive = isAuthActive(model)
28
+ const ctor = authActive
29
+ ? `(api/make-sdk (vs/jm "apikey" (System/getenv "${envName(model)}_APIKEY")))`
30
+ : `(api/make-sdk nil)`
31
+
32
+ // A type-correct Clojure literal for a param.
33
+ const cljLit = (type: any, placeholder: string = 'example'): string => {
34
+ const k = canonKey(type)
35
+ if ('INTEGER' === k || 'NUMBER' === k) return '1'
36
+ if ('BOOLEAN' === k) return 'true'
37
+ if ('ARRAY' === k) return '(vs/jt)'
38
+ if ('OBJECT' === k) return '(vs/jm)'
39
+ return `"${placeholder}"`
40
+ }
41
+
42
+ // Requires for block 1: the api ns, struct, plus every entity namespace the
43
+ // quickstart references.
44
+ const requireLines = ["(require '[sdk.api :as api]"]
45
+ if (exampleEntity) {
46
+ requireLines.push(` '[sdk.entity.${exampleEntity.name} :as e-${exampleEntity.name}]`)
47
+ }
48
+ if (nestedEntity && (!exampleEntity || nestedEntity.name !== exampleEntity.name)) {
49
+ requireLines.push(` '[sdk.entity.${nestedEntity.name} :as e-${nestedEntity.name}]`)
50
+ }
51
+ requireLines.push(` '[voxgig.struct :as vs])`)
52
+
53
+ Content(`### 1. Create a client
54
+
55
+ \`\`\`clojure
56
+ ${requireLines.join('\n')}
57
+
58
+ (def client ${ctor})
59
+ \`\`\`
60
+
61
+ `)
62
+
63
+ if (exampleEntity) {
64
+ const eLow = exampleEntity.name
65
+ const article = /^[aeiou]/i.test(eLow) ? 'an' : 'a'
66
+ const opnames = entityOps(exampleEntity)
67
+ // `idF` is the entity's id-like MATCH field; `dataIdF` is the id on the
68
+ // RETURNED record's data type.
69
+ const idF = entityIdField(exampleEntity)
70
+ const dataIdF = entityDataIdField(exampleEntity)
71
+
72
+ if (opnames.includes('list')) {
73
+ Content(`### 2. List ${eLow} records
74
+
75
+ \`list\` returns a vector of records (each a map) and raises on error —
76
+ iterate it directly.
77
+
78
+ \`\`\`clojure
79
+ (try
80
+ (doseq [${eLow} (e-${eLow}/list (api/${eLow} client nil) nil nil)]
81
+ (println ${eLow}))
82
+ (catch Exception err
83
+ (println "list failed:" (.getMessage err))))
84
+ \`\`\`
85
+
86
+ `)
87
+ }
88
+
89
+ if (nestedEntity) {
90
+ const neLow = nestedEntity.name
91
+ const neArticle = /^[aeiou]/i.test(neLow) ? 'an' : 'a'
92
+
93
+ // Model-driven match: every REQUIRED load-match key. Parent keys first,
94
+ // the entity's own id last.
95
+ const neIdF = entityIdField(nestedEntity)
96
+ const neRequired = opRequestShape(nestedEntity, 'load').items
97
+ .filter((it: any) => !it.optional)
98
+ .sort((a: any, b: any) =>
99
+ (a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
100
+ const parentItem = neRequired.find((it: any) => it.name !== neIdF) as any
101
+ const parentParam = parentItem && parentItem.name
102
+ const parentName = parentParam ? parentParam.replace(/_id$/, '') : 'its parent'
103
+ const neMatch = neRequired.map((it: any) =>
104
+ `"${it.name}" ${cljLit(it.type,
105
+ it.name === neIdF ? 'example_id' : 'example_' + it.name)}`)
106
+
107
+ Content(`### 3. Load ${neArticle} ${neLow}
108
+
109
+ ${nestedEntity.Name} is nested under ${parentName}, so provide the
110
+ \`${parentParam}\`. \`load\` returns the bare record (a map) and raises on error.
111
+
112
+ \`\`\`clojure
113
+ (try
114
+ (let [${neLow} (e-${neLow}/load (api/${neLow} client nil) (vs/jm ${neMatch.join(' ')}) nil)]
115
+ (println ${neLow}))
116
+ (catch Exception err
117
+ (println "load failed:" (.getMessage err))))
118
+ \`\`\`
119
+
120
+ `)
121
+ }
122
+ else if (opnames.includes('load')) {
123
+ const loadRequired = opRequestShape(exampleEntity, 'load').items
124
+ .filter((it: any) => !it.optional || it.name === idF)
125
+ .sort((a: any, b: any) =>
126
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
127
+ const loadArg = 0 < loadRequired.length
128
+ ? `(vs/jm ${loadRequired.map((it: any) =>
129
+ `"${it.name}" ${cljLit(it.type,
130
+ it.name === idF ? 'example_id' : 'example_' + it.name)}`).join(' ')})`
131
+ : 'nil'
132
+
133
+ Content(`### 3. Load ${article} ${eLow}
134
+
135
+ \`load\` returns the bare record (a map) and raises on error.
136
+
137
+ \`\`\`clojure
138
+ (try
139
+ (let [${eLow} (e-${eLow}/load (api/${eLow} client nil) ${loadArg} nil)]
140
+ (println ${eLow}))
141
+ (catch Exception err
142
+ (println "load failed:" (.getMessage err))))
143
+ \`\`\`
144
+
145
+ `)
146
+ }
147
+
148
+ // Model-driven example fields from the op shape (opRequestShape).
149
+ const examplePairs = (opname: string): string[] => {
150
+ const items = opRequestShape(exampleEntity, opname).items
151
+ .filter((it: any) => (it.name !== idF && it.name !== 'id') ||
152
+ ('create' === opname && !it.optional))
153
+ const required = items.filter((it: any) => !it.optional)
154
+ const optional = items.filter((it: any) => it.optional)
155
+ const chosen = 'create' === opname
156
+ ? (required.length ? required : items.slice(0, 2))
157
+ : required.concat(optional).slice(0, Math.max(2, required.length))
158
+ return chosen.map((it: any) => `"${it.name}" ${cljLit(it.type, 'example_' + it.name)}`)
159
+ }
160
+
161
+ const idParamType = (opname: string): any => {
162
+ const it = opRequestShape(exampleEntity, opname).items.find((x: any) => x.name === idF)
163
+ return it && it.type
164
+ }
165
+ const idValueFor = (opname: string): string => (null != dataIdF && opnames.includes('create'))
166
+ ? `(vs/getprop created "${dataIdF}")`
167
+ : cljLit(idParamType(opname), 'example_id')
168
+
169
+ if (opnames.includes('create') || opnames.includes('update') || opnames.includes('remove')) {
170
+ Content(`### 4. Create, update, and remove
171
+
172
+ \`\`\`clojure
173
+ `)
174
+ if (opnames.includes('create')) {
175
+ Content(`;; Create — returns the bare created record (a map)
176
+ (def created (e-${eLow}/create (api/${eLow} client nil) (vs/jm ${examplePairs('create').join(' ')}) nil))
177
+
178
+ `)
179
+ }
180
+ if (opnames.includes('update')) {
181
+ const updatePairs = (idF ? [`"${idF}" ${idValueFor('update')}`] : []).concat(examplePairs('update'))
182
+ const fromCreated = null != dataIdF && opnames.includes('create')
183
+ Content(`;; Update${fromCreated ? " — the created record's id is a plain map key" : ''}
184
+ (e-${eLow}/update (api/${eLow} client nil) (vs/jm ${updatePairs.join(' ')}) nil)
185
+
186
+ `)
187
+ }
188
+ if (opnames.includes('remove')) {
189
+ const removePairs = opRequestShape(exampleEntity, 'remove').items
190
+ .filter((it: any) => !it.optional || it.name === idF)
191
+ .sort((a: any, b: any) =>
192
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
193
+ .map((it: any) => it.name === idF
194
+ ? `"${it.name}" ${idValueFor('remove')}`
195
+ : `"${it.name}" ${cljLit(it.type, 'example_' + it.name)}`)
196
+ Content(`;; Remove
197
+ (e-${eLow}/remove (api/${eLow} client nil) ${removePairs.length ? `(vs/jm ${removePairs.join(' ')})` : 'nil'} nil)
198
+ `)
199
+ }
200
+ Content(`\`\`\`
201
+
202
+ `)
203
+ }
204
+ }
205
+ })
206
+
207
+
208
+ export {
209
+ ReadmeQuick
210
+ }