@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,409 @@
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
+
10
+ // A type-correct Clojure literal for a field's canonical type.
11
+ function cljLit(type: any, placeholder: string = 'example'): string {
12
+ const k = canonKey(type)
13
+ if ('INTEGER' === k || 'NUMBER' === k) return '1'
14
+ if ('BOOLEAN' === k) return 'true'
15
+ if ('ARRAY' === k) return '(vs/jt)'
16
+ if ('OBJECT' === k) return '(vs/jm)'
17
+ return `"${placeholder}"`
18
+ }
19
+
20
+
21
+ // A descriptive Clojure-ish type name (documentation hint, not a static type).
22
+ function cljType(type: any): string {
23
+ const k = canonKey(type)
24
+ if ('STRING' === k) return 'string'
25
+ if ('INTEGER' === k) return 'long'
26
+ if ('NUMBER' === k) return 'double'
27
+ if ('BOOLEAN' === k) return 'boolean'
28
+ if ('ARRAY' === k) return 'vector'
29
+ if ('OBJECT' === k) return 'map'
30
+ return 'any'
31
+ }
32
+
33
+
34
+ const OP_SIGNATURES: Record<string, { sig: string, returns: string, desc: string }> = {
35
+ load: {
36
+ sig: '(load ent reqmatch ctrl) -> map',
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: '(list ent reqmatch ctrl) -> vector',
42
+ returns: 'a vector of entities',
43
+ desc: 'List entities matching the given criteria. The match is optional — call with `nil` to list all records. Returns a vector and raises on error.',
44
+ },
45
+ create: {
46
+ sig: '(create ent reqdata ctrl) -> map',
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: '(update ent reqdata ctrl) -> map',
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: '(remove ent reqmatch ctrl) -> map',
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
+ ### make-sdk
83
+
84
+ `)
85
+
86
+ Content(`\`\`\`clojure
87
+ (require '[sdk.api :as api]
88
+ '[voxgig.struct :as vs])
89
+
90
+ (def client (api/make-sdk options))
91
+ \`\`\`
92
+
93
+ Create a new SDK client instance. \`options\` is a \`voxgig.struct\` map.
94
+
95
+ **Options:**
96
+
97
+ | Key | Type | Description |
98
+ | --- | --- | --- |
99
+ ${isAuthActive(model) ? '| `apikey` | `string` | API key for authentication. |\n' : ''}| \`base\` | \`string\` | Base URL for API requests. |
100
+ | \`prefix\` | \`string\` | URL prefix appended after base. |
101
+ | \`suffix\` | \`string\` | URL suffix appended after path. |
102
+ | \`headers\` | \`map\` | Custom headers for all requests. |
103
+ | \`feature\` | \`map\` | Feature configuration. |
104
+ | \`system\` | \`map\` | System overrides (e.g. custom fetch). |
105
+
106
+ `)
107
+
108
+
109
+ Content(`
110
+ ### Test client
111
+
112
+ `)
113
+
114
+ Content(`#### \`(api/test-sdk testopts sdkopts)\`
115
+
116
+ Create a test client with mock features active. Both arguments may be \`nil\`.
117
+
118
+ \`\`\`clojure
119
+ (def client (api/test-sdk nil nil))
120
+ \`\`\`
121
+
122
+ `)
123
+
124
+
125
+ Content(`
126
+ ### Client functions
127
+
128
+ `)
129
+
130
+
131
+ // Entity factory functions
132
+ publishedEntities.map((ent: any) => {
133
+ Content(`#### \`(api/${ent.name} client data)\`
134
+
135
+ Create a new \`${ent.Name}\` entity instance. Pass \`nil\` for no initial data.
136
+
137
+ `)
138
+ })
139
+
140
+
141
+ Content(`#### \`(api/options-map client) -> map\`
142
+
143
+ Return a deep copy of the current SDK options.
144
+
145
+ #### \`(api/get-utility client) -> utility\`
146
+
147
+ Return a copy of the SDK utility object.
148
+
149
+ #### \`(api/direct client fetchargs) -> map\`
150
+
151
+ Make a direct HTTP request to any API endpoint. Returns a result \`map\` with \`ok\`, \`status\`, \`headers\`, and \`data\` (or \`err\` on failure). This escape hatch never raises — branch on \`(vs/getprop result "ok")\`.
152
+
153
+ **Fetch args:**
154
+
155
+ | Key | Type | Description |
156
+ | --- | --- | --- |
157
+ | \`path\` | \`string\` | URL path with optional \`{param}\` placeholders. |
158
+ | \`method\` | \`string\` | HTTP method (default: \`"GET"\`). |
159
+ | \`params\` | \`map\` | Path parameter values. |
160
+ | \`query\` | \`map\` | Query string parameters. |
161
+ | \`headers\` | \`map\` | Request headers (merged with defaults). |
162
+ | \`body\` | \`any\` | Request body (maps are JSON-serialized). |
163
+
164
+ **Returns:** a result \`map\`.
165
+
166
+ #### \`(api/prepare client fetchargs) -> map\`
167
+
168
+ Prepare a fetch definition without sending. Returns the \`fetchdef\` and raises on error.
169
+
170
+ `)
171
+
172
+
173
+ // Entity reference sections
174
+ publishedEntities.map((ent: any) => {
175
+ const opnames = Object.keys(ent.op || {})
176
+ const fields = ent.fields || []
177
+ // Model-driven id key: null when this entity has no id-like field.
178
+ const idF = entityIdField(ent)
179
+ const eLow = ent.name
180
+
181
+ Content(`
182
+ ---
183
+
184
+ ## ${ent.Name}
185
+
186
+ `)
187
+
188
+ if (ent.short) {
189
+ Content(`${ent.short}
190
+
191
+ `)
192
+ }
193
+
194
+ Content(`\`\`\`clojure
195
+ (require '[sdk.entity.${eLow} :as e-${eLow}])
196
+
197
+ (def ${eLow} (api/${eLow} client nil))
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}\` | \`${cljType(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
+ ? `(vs/jm ${matchItems.map((it: any) =>
271
+ `"${it.name}" ${cljLit(it.type,
272
+ it.name === idF ? ent.name + '_id' : it.name)}`).join(' ')})`
273
+ : 'nil'
274
+ Content(`\`\`\`clojure
275
+ (def result (e-${eLow}/${opname} (api/${eLow} client nil) ${arg} nil))
276
+ \`\`\`
277
+
278
+ `)
279
+ }
280
+ else if ('list' === opname) {
281
+ Content(`\`\`\`clojure
282
+ (doseq [${eLow} (e-${eLow}/list (api/${eLow} client nil) nil nil)]
283
+ (println ${eLow}))
284
+ \`\`\`
285
+
286
+ `)
287
+ }
288
+ else if ('create' === opname) {
289
+ const createItems = opRequestShape(ent, 'create').items
290
+ .filter((it: any) => !it.optional)
291
+ Content(`\`\`\`clojure
292
+ (def result
293
+ (e-${eLow}/create (api/${eLow} client nil)
294
+ (vs/jm
295
+ `)
296
+ createItems.map((it: any) => {
297
+ Content(` "${it.name}" ${cljLit(it.type, 'example_' + it.name)} ;; ${cljType(it.type)}
298
+ `)
299
+ })
300
+ Content(` )
301
+ nil))
302
+ \`\`\`
303
+
304
+ `)
305
+ }
306
+ else if ('update' === opname) {
307
+ const updateItems = opRequestShape(ent, 'update').items
308
+ .filter((it: any) => !it.optional || it.name === idF)
309
+ .sort((a: any, b: any) =>
310
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
311
+ const updateLines = updateItems.map((it: any) =>
312
+ ` "${it.name}" ${cljLit(it.type,
313
+ it.name === idF ? ent.name + '_id' : it.name)}\n`).join('')
314
+ Content(`\`\`\`clojure
315
+ (def result
316
+ (e-${eLow}/update (api/${eLow} client nil)
317
+ (vs/jm
318
+ ${updateLines} ;; Fields to update
319
+ )
320
+ nil))
321
+ \`\`\`
322
+
323
+ `)
324
+ }
325
+ })
326
+ }
327
+
328
+
329
+ // Common methods
330
+ Content(`### Common Members
331
+
332
+ State accessors are stored on the entity map and called via keyword lookup.
333
+
334
+ #### \`((:data-get ent)) -> map\`
335
+
336
+ Get the entity data.
337
+
338
+ #### \`((:data-set ent) data)\`
339
+
340
+ Set the entity data.
341
+
342
+ #### \`((:match-get ent)) -> map\`
343
+
344
+ Get the entity match criteria.
345
+
346
+ #### \`((:match-set ent) match)\`
347
+
348
+ Set the entity match criteria.
349
+
350
+ #### \`((:make ent)) -> entity\`
351
+
352
+ Create a new \`${ent.Name}\` entity instance with the same options.
353
+
354
+ #### \`((:get-name ent)) -> string\`
355
+
356
+ Return the entity name.
357
+
358
+ `)
359
+ })
360
+
361
+
362
+ // Features section
363
+ const activeFeatures = each(feature).filter((f: any) => f.active)
364
+ if (activeFeatures.length > 0) {
365
+ Content(`
366
+ ---
367
+
368
+ ## Features
369
+
370
+ | Feature | Version | Description |
371
+ | --- | --- | --- |
372
+ `)
373
+
374
+ activeFeatures.map((f: any) => {
375
+ Content(`| \`${f.name}\` | ${f.version || '0.0.1'} | ${f.title || ''} |
376
+ `)
377
+ })
378
+
379
+ Content(`
380
+
381
+ Features are activated via the \`feature\` option:
382
+
383
+ `)
384
+
385
+ Content(`\`\`\`clojure
386
+ (def client
387
+ (api/make-sdk
388
+ (vs/jm "feature"
389
+ (vs/jm
390
+ `)
391
+ activeFeatures.map((f: any) => {
392
+ Content(` "${f.name}" (vs/jm "active" true)
393
+ `)
394
+ })
395
+ Content(` ))))
396
+ \`\`\`
397
+
398
+ `)
399
+ }
400
+
401
+ })
402
+ })
403
+
404
+
405
+
406
+
407
+ export {
408
+ ReadmeRef
409
+ }
@@ -0,0 +1,24 @@
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(`**Clojure:**
9
+ \`\`\`clojure
10
+ (def result
11
+ (api/direct client
12
+ (vs/jm "path" "/api/resource/{id}"
13
+ "method" "GET"
14
+ "params" (vs/jm "id" "example"))))
15
+ \`\`\`
16
+
17
+ `)
18
+
19
+ })
20
+
21
+
22
+ export {
23
+ ReadmeTopHowto
24
+ }
@@ -0,0 +1,98 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+
11
+ // A type-correct Clojure literal for a param: numeric/boolean/array/object
12
+ // params render a typed literal; strings render the quoted placeholder.
13
+ function cljLit(type: any, placeholder: string = 'example'): string {
14
+ const k = canonKey(type)
15
+ if ('INTEGER' === k || 'NUMBER' === k) return '1'
16
+ if ('BOOLEAN' === k) return 'true'
17
+ if ('ARRAY' === k) return '(vs/jt)'
18
+ if ('OBJECT' === k) return '(vs/jm)'
19
+ return `"${placeholder}"`
20
+ }
21
+
22
+
23
+ const ReadmeTopQuick = cmp(function ReadmeTopQuick(props: any) {
24
+ const { target, ctx$: { model } } = props
25
+
26
+ const entity = getModelPath(model, `main.${KIT}.entity`)
27
+
28
+ const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
29
+
30
+ const authActive = isAuthActive(model)
31
+ const ctor = authActive
32
+ ? `(api/make-sdk (vs/jm "apikey" (System/getenv "${envName(model)}_APIKEY")))`
33
+ : `(api/make-sdk nil)`
34
+
35
+ if (exampleEntity) {
36
+ const eName = nom(exampleEntity, 'Name')
37
+ const eLow = exampleEntity.name
38
+
39
+ Content(`\`\`\`clojure
40
+ (require '[sdk.api :as api]
41
+ '[sdk.entity.${eLow} :as e-${eLow}]
42
+ '[voxgig.struct :as vs])
43
+
44
+ (def client ${ctor})
45
+
46
+ `)
47
+
48
+ const opnames = Object.keys(exampleEntity.op || {})
49
+ // Model-driven id key: null when the entity has no id-like field, in which
50
+ // case the load example takes no match argument.
51
+ const idF = entityIdField(exampleEntity)
52
+
53
+ if (opnames.includes('list')) {
54
+ Content(`;; List all ${eLow}s (returns a vector, raises on error)
55
+ (doseq [${eLow} (e-${eLow}/list (api/${eLow} client nil) nil nil)]
56
+ (println ${eLow}))
57
+ `)
58
+ }
59
+
60
+ if (opnames.includes('load')) {
61
+ // Every REQUIRED load-match key (id first, then parent path params like
62
+ // page_id) — the same shape the runtime resolves path params from, so
63
+ // the example always works.
64
+ const loadItems = opRequestShape(exampleEntity, 'load').items
65
+ .filter((it: any) => !it.optional || it.name === idF)
66
+ .sort((a: any, b: any) =>
67
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
68
+ const loadArg = 0 < loadItems.length
69
+ ? `(vs/jm ${loadItems.map((it: any) =>
70
+ `"${it.name}" ${cljLit(it.type,
71
+ it.name === idF ? 'example_id' : 'example_' + it.name)}`).join(' ')})`
72
+ : 'nil'
73
+ Content(`
74
+ ;; Load a specific ${eLow} (returns the record, raises on error)
75
+ (def ${eLow} (e-${eLow}/load (api/${eLow} client nil) ${loadArg} nil))
76
+ (println ${eLow})
77
+ `)
78
+ }
79
+
80
+ Content(`\`\`\`
81
+ `)
82
+ }
83
+ else {
84
+ Content(`\`\`\`clojure
85
+ (require '[sdk.api :as api]
86
+ '[voxgig.struct :as vs])
87
+
88
+ (def client ${ctor})
89
+ \`\`\`
90
+ `)
91
+ }
92
+
93
+ })
94
+
95
+
96
+ export {
97
+ ReadmeTopQuick
98
+ }
@@ -0,0 +1,78 @@
1
+
2
+ import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+
10
+ // A type-correct Clojure literal for a field's canonical type.
11
+ function cljLit(type: any): string {
12
+ const k = canonKey(type)
13
+ if ('INTEGER' === k || 'NUMBER' === k) return '1'
14
+ if ('BOOLEAN' === k) return 'true'
15
+ if ('ARRAY' === k) return '(vs/jt)'
16
+ if ('OBJECT' === k) return '(vs/jm)'
17
+ return '"example"'
18
+ }
19
+
20
+
21
+ const ReadmeTopTest = cmp(function ReadmeTopTest(props: any) {
22
+ const { target, ctx$: { model } } = props
23
+
24
+ const entity = getModelPath(model, `main.${KIT}.entity`)
25
+ // Pick an entity with a real op (prefer a read op) — never fabricate a
26
+ // `load` on an op-less entity.
27
+ const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
28
+
29
+ Content(`\`\`\`clojure
30
+ (require '[sdk.api :as api]
31
+ `)
32
+ if (exampleEntity && primaryOp) {
33
+ Content(` '[sdk.entity.${exampleEntity.name} :as e-${exampleEntity.name}]
34
+ `)
35
+ }
36
+ Content(` '[voxgig.struct :as vs])
37
+
38
+ (def client (api/test-sdk nil nil))
39
+ `)
40
+
41
+ if (exampleEntity && primaryOp) {
42
+ const eLow = exampleEntity.name
43
+ const idF = entityIdField(exampleEntity)
44
+ const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
45
+ let arg = 'nil'
46
+ if (isMatchOp) {
47
+ // Every REQUIRED match key (id first) — the same shape that generates
48
+ // the op's match handling.
49
+ const items = opRequestShape(exampleEntity, primaryOp).items
50
+ .filter((it: any) => !it.optional || it.name === idF)
51
+ .sort((a: any, b: any) =>
52
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
53
+ arg = 0 < items.length
54
+ ? `(vs/jm ${items.map((it: any) =>
55
+ `"${it.name}" ${it.name === idF ? '"test01"' : cljLit(it.type)}`).join(' ')})`
56
+ : 'nil'
57
+ } else if ('create' === primaryOp || 'update' === primaryOp) {
58
+ const items = opRequestShape(exampleEntity, primaryOp).items
59
+ .filter((it: any) => it.name !== idF && it.name !== 'id')
60
+ const required = items.filter((it: any) => !it.optional)
61
+ const chosen = required.length ? required : items.slice(0, 3)
62
+ arg = `(vs/jm ${chosen.map((it: any) => `"${it.name}" ${cljLit(it.type)}`).join(' ')})`
63
+ }
64
+ const eVar = eLow + ('list' === primaryOp ? 's' : '')
65
+ Content(`(def ${eVar} (e-${eLow}/${primaryOp} (api/${eLow} client nil) ${arg} nil))
66
+ (println ${eVar})
67
+ `)
68
+ }
69
+
70
+ Content(`\`\`\`
71
+ `)
72
+
73
+ })
74
+
75
+
76
+ export {
77
+ ReadmeTopTest
78
+ }
@@ -0,0 +1,58 @@
1
+
2
+ import {
3
+ Content,
4
+ cmp,
5
+ isAuthActive,
6
+ } from '@voxgig/sdkgen'
7
+
8
+
9
+ // Emit per-entity direct()/prepare() checks INTO the shared gentest run body
10
+ // (the clojure test runner drives a single sdk.gentest/run). Only entities
11
+ // with a read op get a check — matching the py/elixir TestDirect gate — so an
12
+ // op-less entity does not fabricate a request path. The checks exercise the
13
+ // raw-HTTP escape hatch: prepare() builds a fetchdef without sending, and
14
+ // direct() runs a live-mode client against an in-test mock system.fetch.
15
+ const TestDirect = cmp(function TestDirect(props: any) {
16
+ const { model } = props.ctx$
17
+ const entity = props.entity
18
+
19
+ const opnames = Object.keys(entity.op || {})
20
+ const hasLoad = opnames.includes('load')
21
+ const hasList = opnames.includes('list')
22
+ if (!hasLoad && !hasList) {
23
+ return
24
+ }
25
+
26
+ const ename = entity.name
27
+ // A live-mode client must satisfy prepare-auth when auth is active, so pass a
28
+ // dummy apikey; otherwise prepare() (and thus direct()) would throw.
29
+ const apikeyOpt = isAuthActive(model) ? ` "apikey" "test-key"` : ''
30
+
31
+ // prepare(): pure request-definition build, no transport.
32
+ Content(` (t/run-check rec "gen-prepare-${ename}"
33
+ (fn [] (let [client (api/make-sdk (vs/jm "base" "http://example.test"${apikeyOpt}))
34
+ fetchdef (api/prepare client (vs/jm "path" "/api/${ename}" "method" "GET"))]
35
+ (t/is-true (vs/ismap fetchdef) "prepare returns a fetchdef map")
36
+ (t/is-some (vs/getprop fetchdef "url") "fetchdef carries a url")
37
+ (t/is-eq (vs/getprop fetchdef "method") "GET" "fetchdef preserves the method"))))
38
+ `)
39
+
40
+ // direct(): live-mode client wired to a recording mock system.fetch. The
41
+ // mock returns a 200 JSON response, so direct() reports ok=true.
42
+ Content(` (t/run-check rec "gen-direct-${ename}"
43
+ (fn [] (let [fetch (fn [_url _fetchdef]
44
+ [(vs/jm "status" 200 "statusText" "OK" "headers" (vs/jm)
45
+ "json" (fn [] (vs/jm "id" "d1"))) nil])
46
+ client (api/make-sdk (vs/jm "base" "http://example.test"${apikeyOpt}
47
+ "system" (vs/jm "fetch" fetch)))
48
+ result (api/direct client (vs/jm "path" "/api/${ename}" "method" "GET"))]
49
+ (t/is-true (vs/ismap result) "direct returns a result map")
50
+ (t/is-true (vs/getprop result "ok") "direct 200 => ok true")
51
+ (t/is-eq (vs/getprop result "status") 200 "direct surfaces the status"))))
52
+ `)
53
+ })
54
+
55
+
56
+ export {
57
+ TestDirect
58
+ }