@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,60 @@
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 when creating a client instance:
20
+
21
+ `)
22
+
23
+ Content(`\`\`\`csharp
24
+ var client = new ${model.Name}SDK(new Dictionary<string, object?>
25
+ {
26
+ `)
27
+
28
+ publishedOptions.map((option: any) => {
29
+ if ('apikey' === option.name) {
30
+ Content(` ["${option.name}"] = Environment.GetEnvironmentVariable("${envName(model)}_APIKEY"),
31
+ `)
32
+ }
33
+ else {
34
+ Content(` // ["${option.name}"] = ${option.kind === 'string' ? "\"...\"" : '...'},
35
+ `)
36
+ }
37
+ })
38
+
39
+ Content(`});
40
+ \`\`\`
41
+
42
+ `)
43
+
44
+ Content(`| Option | Type | Description |
45
+ | --- | --- | --- |
46
+ `)
47
+
48
+ publishedOptions.map((option: any) => {
49
+ Content(`| \`${option.name}\` | \`${option.kind}\` | ${option.short} |
50
+ `)
51
+ })
52
+
53
+ Content(`
54
+ `)
55
+ })
56
+
57
+
58
+ export {
59
+ ReadmeOptions
60
+ }
@@ -0,0 +1,219 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityOps } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { csVarName } from './utility_csharp'
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
21
+ // (relations.ancestors), an active load op, and a required non-id load
22
+ // param to demonstrate (the parent key, e.g. page_id).
23
+ const nestedEntity = Object.values(entity).find((e: any) =>
24
+ e.active !== false &&
25
+ e.relations && e.relations.ancestors && 0 < e.relations.ancestors.length &&
26
+ entityOps(e).includes('load') &&
27
+ opRequestShape(e, 'load').items.some((it: any) =>
28
+ !it.optional && it.name !== entityIdField(e))
29
+ ) as any
30
+
31
+ const authActive = isAuthActive(model)
32
+ const ctor = authActive
33
+ ? `new ${model.const.Name}SDK(new Dictionary<string, object?>\n{\n ["apikey"] = Environment.GetEnvironmentVariable("${envName(model)}_APIKEY"),\n})`
34
+ : `new ${model.const.Name}SDK()`
35
+
36
+ Content(`### 1. Create a client
37
+
38
+ \`\`\`csharp
39
+ using ${model.const.Name}Sdk;
40
+
41
+ var 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
+ // Sanitise the local variable name — a camelCased C# keyword gets a
50
+ // trailing underscore (csVarName) so the snippet compiles.
51
+ const eVar = csVarName(exampleEntity.name)
52
+ const opnames = entityOps(exampleEntity)
53
+ // Model-driven id key: `idF` is the entity's id-like MATCH field name, or
54
+ // null when it has none.
55
+ const idF = entityIdField(exampleEntity)
56
+
57
+ // A type-correct C# literal for a param.
58
+ const csLit = (type: any, placeholder: string = 'example'): string => {
59
+ const k = canonKey(type)
60
+ if ('INTEGER' === k) return '1L'
61
+ if ('NUMBER' === k) return '1.0'
62
+ if ('BOOLEAN' === k) return 'true'
63
+ if ('ARRAY' === k) return 'new List<object?>()'
64
+ if ('OBJECT' === k) return 'new Dictionary<string, object?>()'
65
+ return `"${placeholder}"`
66
+ }
67
+
68
+ if (opnames.includes('list')) {
69
+ Content(`### 2. List ${eName.toLowerCase()} records
70
+
71
+ \`List(null)\` returns an aggregate list of records (as \`object?\`) and raises
72
+ on error.
73
+
74
+ \`\`\`csharp
75
+ try
76
+ {
77
+ var ${eVar}List = client.${eName}().List(null);
78
+ Console.WriteLine(${eVar}List);
79
+ }
80
+ catch (Exception err)
81
+ {
82
+ Console.WriteLine($"list failed: {err.Message}");
83
+ }
84
+ \`\`\`
85
+
86
+ `)
87
+ }
88
+
89
+ if (nestedEntity) {
90
+ const neName = nom(nestedEntity, 'Name')
91
+ const neArticle = /^[aeiou]/i.test(neName) ? 'an' : 'a'
92
+ const neVar = csVarName(nestedEntity.name)
93
+
94
+ // Model-driven match: every REQUIRED load-match key. Parent keys (e.g.
95
+ // page_id) first, the entity's own id last.
96
+ const neIdF = entityIdField(nestedEntity)
97
+ const neRequired = opRequestShape(nestedEntity, 'load').items
98
+ .filter((it: any) => !it.optional)
99
+ .sort((a: any, b: any) =>
100
+ (a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
101
+ const parentItem = neRequired.find((it: any) => it.name !== neIdF) as any
102
+ const parentParam = parentItem && parentItem.name
103
+ const parentName = parentParam ? parentParam.replace(/_id$/, '') : 'its parent'
104
+ const neMatch = neRequired.map((it: any) =>
105
+ `["${it.name}"] = ${csLit(it.type,
106
+ it.name === neIdF ? 'example_id' : 'example_' + it.name)}`)
107
+
108
+ Content(`### 3. Load ${neArticle} ${neName.toLowerCase()}
109
+
110
+ ${neName} is nested under ${parentName}, so provide the \`${parentParam}\`.
111
+ \`Load()\` returns the bare record (as \`object?\`) and raises on error.
112
+
113
+ \`\`\`csharp
114
+ try
115
+ {
116
+ var ${neVar} = client.${neName}().Load(new Dictionary<string, object?> { ${neMatch.join(', ')} });
117
+ Console.WriteLine(${neVar});
118
+ }
119
+ catch (Exception err)
120
+ {
121
+ Console.WriteLine($"load failed: {err.Message}");
122
+ }
123
+ \`\`\`
124
+
125
+ `)
126
+ }
127
+ else if (opnames.includes('load')) {
128
+ // Every REQUIRED load-match key (id first, then parent path params).
129
+ const loadRequired = opRequestShape(exampleEntity, 'load').items
130
+ .filter((it: any) => !it.optional || it.name === idF)
131
+ .sort((a: any, b: any) =>
132
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
133
+ const loadArg = 0 < loadRequired.length
134
+ ? `new Dictionary<string, object?> {${loadRequired.map((it: any) =>
135
+ ` ["${it.name}"] = ${csLit(it.type,
136
+ it.name === idF ? 'example_id' : 'example_' + it.name)}`).join(',')} }`
137
+ : 'null'
138
+
139
+ Content(`### 3. Load ${article} ${eName.toLowerCase()}
140
+
141
+ \`Load()\` returns the bare record (as \`object?\`) and raises on error.
142
+
143
+ \`\`\`csharp
144
+ try
145
+ {
146
+ var ${eVar} = client.${eName}().Load(${loadArg});
147
+ Console.WriteLine(${eVar});
148
+ }
149
+ catch (Exception err)
150
+ {
151
+ Console.WriteLine($"load failed: {err.Message}");
152
+ }
153
+ \`\`\`
154
+
155
+ `)
156
+ }
157
+
158
+ // Model-driven example fields: derive the create/update body from the op
159
+ // shape (opRequestShape) so the docs reference REAL writable fields.
160
+ const examplePairs = (opname: string): string[] => {
161
+ const items = opRequestShape(exampleEntity, opname).items
162
+ .filter((it: any) => (it.name !== idF && it.name !== 'id') ||
163
+ ('create' === opname && !it.optional))
164
+ const required = items.filter((it: any) => !it.optional)
165
+ const optional = items.filter((it: any) => it.optional)
166
+ const chosen = 'create' === opname
167
+ ? (required.length ? required : items.slice(0, 2))
168
+ : required.concat(optional).slice(0, Math.max(2, required.length))
169
+ return chosen.map((it: any) => `["${it.name}"] = ${csLit(it.type, 'example_' + it.name)}`)
170
+ }
171
+
172
+ const idParamType = (opname: string): any => {
173
+ const it = opRequestShape(exampleEntity, opname).items.find((x: any) => x.name === idF)
174
+ return it && it.type
175
+ }
176
+
177
+ if (opnames.includes('create') || opnames.includes('update') || opnames.includes('remove')) {
178
+ Content(`### 4. Create, update, and remove
179
+
180
+ \`\`\`csharp
181
+ `)
182
+ if (opnames.includes('create')) {
183
+ Content(`// Create — returns the bare created record (as object?)
184
+ var created = client.${eName}().Create(new Dictionary<string, object?> { ${examplePairs('create').join(', ')} });
185
+
186
+ `)
187
+ }
188
+ if (opnames.includes('update')) {
189
+ const updatePairs = (idF ? [`["${idF}"] = ${csLit(idParamType('update'), 'example_id')}`] : [])
190
+ .concat(examplePairs('update'))
191
+ Content(`// Update — supply the id in the match/data
192
+ client.${eName}().Update(new Dictionary<string, object?> { ${updatePairs.join(', ')} });
193
+
194
+ `)
195
+ }
196
+ if (opnames.includes('remove')) {
197
+ // Every REQUIRED remove-match key: the id plus parent keys like page_id.
198
+ const removePairs = opRequestShape(exampleEntity, 'remove').items
199
+ .filter((it: any) => !it.optional || it.name === idF)
200
+ .sort((a: any, b: any) =>
201
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
202
+ .map((it: any) => it.name === idF
203
+ ? `["${it.name}"] = ${csLit(idParamType('remove'), 'example_id')}`
204
+ : `["${it.name}"] = ${csLit(it.type, 'example_' + it.name)}`)
205
+ Content(`// Remove
206
+ client.${eName}().Remove(${removePairs.length ? `new Dictionary<string, object?> { ${removePairs.join(', ')} }` : 'null'});
207
+ `)
208
+ }
209
+ Content(`\`\`\`
210
+
211
+ `)
212
+ }
213
+ }
214
+ })
215
+
216
+
217
+ export {
218
+ ReadmeQuick
219
+ }
@@ -0,0 +1,390 @@
1
+
2
+ import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { csVarName } from './utility_csharp'
10
+
11
+
12
+ // Type names come from the shared canonToType 'csharp' column (single source of truth).
13
+
14
+ // A type-correct C# literal for a field's canonical type.
15
+ function csLit(type: any, placeholder: string = 'example'): string {
16
+ const k = canonKey(type)
17
+ if ('INTEGER' === k) return '1L'
18
+ if ('NUMBER' === k) return '1.0'
19
+ if ('BOOLEAN' === k) return 'true'
20
+ if ('ARRAY' === k) return 'new List<object?>()'
21
+ if ('OBJECT' === k) return 'new Dictionary<string, object?>()'
22
+ return `"${placeholder}"`
23
+ }
24
+
25
+
26
+ const OP_SIGNATURES: Record<string, { sig: string, returns: string, desc: string }> = {
27
+ load: {
28
+ sig: 'Load(reqmatch, ctrl = null) -> object?',
29
+ returns: 'the entity data',
30
+ desc: 'Load a single entity matching the given criteria. Returns the entity data and raises on error.',
31
+ },
32
+ list: {
33
+ sig: 'List(reqmatch, ctrl = null) -> object?',
34
+ returns: 'an aggregate list of entities',
35
+ desc: 'List entities matching the given criteria. The match is optional — call `List(null)` to list all records. Returns an aggregate list and raises on error.',
36
+ },
37
+ create: {
38
+ sig: 'Create(reqdata, ctrl = null) -> object?',
39
+ returns: 'the created entity data',
40
+ desc: 'Create a new entity with the given data. Returns the created entity data and raises on error.',
41
+ },
42
+ update: {
43
+ sig: 'Update(reqdata, ctrl = null) -> object?',
44
+ returns: 'the updated entity data',
45
+ desc: 'Update an existing entity. The data must include the entity `id`. Returns the updated entity data and raises on error.',
46
+ },
47
+ remove: {
48
+ sig: 'Remove(reqmatch, ctrl = null) -> object?',
49
+ returns: 'the removed entity data',
50
+ desc: 'Remove the entity matching the given criteria. Raises on error.',
51
+ },
52
+ }
53
+
54
+
55
+ const ReadmeRef = cmp(function ReadmeRef(props: any) {
56
+ const { target } = props
57
+ const { model } = props.ctx$
58
+
59
+ const entity = getModelPath(model, `main.${KIT}.entity`)
60
+ const feature = getModelPath(model, `main.${KIT}.feature`)
61
+
62
+ const publishedEntities = each(entity).filter((e: any) => e.active !== false)
63
+
64
+
65
+ File({ name: 'REFERENCE.md' }, () => {
66
+
67
+ Content(`# ${model.Name} ${target.title} SDK Reference
68
+
69
+ Complete API reference for the ${model.Name} ${target.title} SDK.
70
+
71
+
72
+ ## ${model.const.Name}SDK
73
+
74
+ ### Constructor
75
+
76
+ `)
77
+
78
+ Content(`\`\`\`csharp
79
+ using ${model.const.Name}Sdk;
80
+
81
+ var client = new ${model.const.Name}SDK(options);
82
+ \`\`\`
83
+
84
+ Create a new SDK client instance. \`options\` is a
85
+ \`Dictionary<string, object?>\`.
86
+
87
+ **Parameters:**
88
+
89
+ | Name | Type | Description |
90
+ | --- | --- | --- |
91
+ | \`options\` | \`Dictionary\` | SDK configuration options. |
92
+ ${isAuthActive(model) ? '| \`options["apikey"]\` | \`string\` | API key for authentication. |\n' : ''}| \`options["base"]\` | \`string\` | Base URL for API requests. |
93
+ | \`options["prefix"]\` | \`string\` | URL prefix appended after base. |
94
+ | \`options["suffix"]\` | \`string\` | URL suffix appended after path. |
95
+ | \`options["headers"]\` | \`Dictionary\` | Custom headers for all requests. |
96
+ | \`options["feature"]\` | \`Dictionary\` | Feature configuration. |
97
+ | \`options["system"]\` | \`Dictionary\` | System overrides (e.g. custom fetch). |
98
+
99
+ `)
100
+
101
+
102
+ Content(`
103
+ ### Static Methods
104
+
105
+ `)
106
+
107
+ Content(`#### \`${model.const.Name}SDK.TestSDK(testopts = null, sdkopts = null)\`
108
+
109
+ Create a test client with mock features active. Both arguments may be \`null\`.
110
+
111
+ \`\`\`csharp
112
+ var client = ${model.const.Name}SDK.TestSDK(null, null);
113
+ \`\`\`
114
+
115
+ `)
116
+
117
+
118
+ Content(`
119
+ ### Instance Methods
120
+
121
+ `)
122
+
123
+
124
+ // Entity factory methods
125
+ publishedEntities.map((ent: any) => {
126
+ Content(`#### \`${ent.Name}(entopts = null)\`
127
+
128
+ Create a new \`${ent.Name}\` entity instance (returns
129
+ \`${model.const.Name}EntityBase\`). Pass \`null\` for no initial options.
130
+
131
+ `)
132
+ })
133
+
134
+
135
+ Content(`#### \`OptionsMap() -> Dictionary\`
136
+
137
+ Return a deep copy of the current SDK options.
138
+
139
+ #### \`GetUtility() -> Utility\`
140
+
141
+ Return a copy of the SDK utility object.
142
+
143
+ #### \`Direct(fetchargs = null) -> Dictionary\`
144
+
145
+ Make a direct HTTP request to any API endpoint. Returns a result
146
+ \`Dictionary<string, object?>\` with \`ok\`, \`status\`, \`headers\`, and \`data\`
147
+ (or \`err\` on failure). This escape hatch never raises — branch on
148
+ \`result["ok"]\`.
149
+
150
+ **Parameters:**
151
+
152
+ | Name | Type | Description |
153
+ | --- | --- | --- |
154
+ | \`fetchargs["path"]\` | \`string\` | URL path with optional \`{param}\` placeholders. |
155
+ | \`fetchargs["method"]\` | \`string\` | HTTP method (default: \`"GET"\`). |
156
+ | \`fetchargs["params"]\` | \`Dictionary\` | Path parameter values. |
157
+ | \`fetchargs["query"]\` | \`Dictionary\` | Query string parameters. |
158
+ | \`fetchargs["headers"]\` | \`Dictionary\` | Request headers (merged with defaults). |
159
+ | \`fetchargs["body"]\` | \`object?\` | Request body (dictionaries are JSON-serialized). |
160
+
161
+ **Returns:** \`Dictionary<string, object?>\`
162
+
163
+ #### \`Prepare(fetchargs = null) -> Dictionary\`
164
+
165
+ Prepare a fetch definition without sending. Returns the \`fetchdef\` and raises on error.
166
+
167
+ `)
168
+
169
+
170
+ // Entity reference sections
171
+ publishedEntities.map((ent: any) => {
172
+ const opnames = Object.keys(ent.op || {})
173
+ const fields = ent.fields || []
174
+ // Model-driven id key: null when this entity has no id-like field.
175
+ const idF = entityIdField(ent)
176
+ // Sanitise the local variable name — csVarName guards C# keywords.
177
+ const eVar = csVarName(ent.name)
178
+
179
+ Content(`
180
+ ---
181
+
182
+ ## ${ent.Name}
183
+
184
+ `)
185
+
186
+ if (ent.short) {
187
+ Content(`${ent.short}
188
+
189
+ `)
190
+ }
191
+
192
+ Content(`\`\`\`csharp
193
+ var ${eVar} = client.${ent.Name}();
194
+ \`\`\`
195
+
196
+ `)
197
+
198
+
199
+ // Field schema
200
+ if (fields.length > 0) {
201
+ Content(`### Fields
202
+
203
+ | Field | Type | Required | Description |
204
+ | --- | --- | --- | --- |
205
+ `)
206
+ each(fields, (field: any) => {
207
+ const req = field.req ? 'Yes' : 'No'
208
+ const desc = field.short || ''
209
+ Content(`| \`${field.name}\` | \`${canonToType(field.type, target.name)}\` | ${req} | ${desc} |
210
+ `)
211
+ })
212
+
213
+ Content(`
214
+ `)
215
+
216
+ // Field operations breakdown
217
+ const hasFieldOps = fields.some((f: any) => f.op && Object.keys(f.op).length > 0)
218
+ if (hasFieldOps) {
219
+ const opcols = ['load', 'list', 'create', 'update', 'remove']
220
+ .filter((op: string) => opnames.includes(op) && ent.op[op]?.active !== false)
221
+ Content(`### Field Usage by Operation
222
+
223
+ | Field | ${opcols.join(' | ')} |
224
+ | --- | ${opcols.map(() => '---').join(' | ')} |
225
+ `)
226
+ each(fields, (field: any) => {
227
+ const fops = field.op || {}
228
+ const cols = opcols.map((op: string) => {
229
+ const fop = fops[op]
230
+ if (null == fop) return '-'
231
+ if (fop.active === false) return '-'
232
+ return 'Yes'
233
+ })
234
+ Content(`| \`${field.name}\` | ${cols.join(' | ')} |
235
+ `)
236
+ })
237
+
238
+ Content(`
239
+ `)
240
+ }
241
+ }
242
+
243
+
244
+ // Operation details
245
+ if (opnames.length > 0) {
246
+ Content(`### Operations
247
+
248
+ `)
249
+
250
+ opnames.map((opname: string) => {
251
+ const info = OP_SIGNATURES[opname]
252
+ if (!info) return
253
+
254
+ Content(`#### \`${info.sig}\`
255
+
256
+ ${info.desc}
257
+
258
+ `)
259
+
260
+ if ('load' === opname || 'remove' === opname) {
261
+ const matchItems = opRequestShape(ent, opname).items
262
+ .filter((it: any) => !it.optional || it.name === idF)
263
+ .sort((a: any, b: any) =>
264
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
265
+ const arg = 0 < matchItems.length
266
+ ? `new Dictionary<string, object?> {${matchItems.map((it: any) =>
267
+ ` ["${it.name}"] = ${csLit(it.type,
268
+ it.name === idF ? ent.name + '_id' : it.name)}`).join(',')} }`
269
+ : 'null'
270
+ Content(`\`\`\`csharp
271
+ var result = client.${ent.Name}().${opname.charAt(0).toUpperCase() + opname.slice(1)}(${arg});
272
+ \`\`\`
273
+
274
+ `)
275
+ }
276
+ else if ('list' === opname) {
277
+ Content(`\`\`\`csharp
278
+ var results = client.${ent.Name}().List(null);
279
+ Console.WriteLine(results);
280
+ \`\`\`
281
+
282
+ `)
283
+ }
284
+ else if ('create' === opname) {
285
+ const createItems = opRequestShape(ent, 'create').items
286
+ .filter((it: any) => !it.optional)
287
+ Content(`\`\`\`csharp
288
+ var result = client.${ent.Name}().Create(new Dictionary<string, object?>
289
+ {
290
+ `)
291
+ createItems.map((it: any) => {
292
+ Content(` ["${it.name}"] = ${csLit(it.type, 'example_' + it.name)}, // ${canonToType(it.type, target.name)}
293
+ `)
294
+ })
295
+ Content(`});
296
+ \`\`\`
297
+
298
+ `)
299
+ }
300
+ else if ('update' === opname) {
301
+ const updateItems = opRequestShape(ent, 'update').items
302
+ .filter((it: any) => !it.optional || it.name === idF)
303
+ .sort((a: any, b: any) =>
304
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
305
+ const updateLines = updateItems.map((it: any) =>
306
+ ` ["${it.name}"] = ${csLit(it.type,
307
+ it.name === idF ? ent.name + '_id' : it.name)},\n`).join('')
308
+ Content(`\`\`\`csharp
309
+ var result = client.${ent.Name}().Update(new Dictionary<string, object?>
310
+ {
311
+ ${updateLines} // Fields to update
312
+ });
313
+ \`\`\`
314
+
315
+ `)
316
+ }
317
+ })
318
+ }
319
+
320
+
321
+ // Common methods
322
+ Content(`### Common Methods
323
+
324
+ #### \`Data(newdata = null) -> object?\`
325
+
326
+ Get or set the entity data.
327
+
328
+ #### \`Match(newmatch = null) -> object?\`
329
+
330
+ Get or set the entity match criteria.
331
+
332
+ #### \`Make() -> IEntity\`
333
+
334
+ Create a new \`${ent.Name}\` entity instance with the same options.
335
+
336
+ #### \`GetName() -> string\`
337
+
338
+ Return the entity name.
339
+
340
+ `)
341
+ })
342
+
343
+
344
+ // Features section
345
+ const activeFeatures = each(feature).filter((f: any) => f.active)
346
+ if (activeFeatures.length > 0) {
347
+ Content(`
348
+ ---
349
+
350
+ ## Features
351
+
352
+ | Feature | Version | Description |
353
+ | --- | --- | --- |
354
+ `)
355
+
356
+ activeFeatures.map((f: any) => {
357
+ Content(`| \`${f.name}\` | ${f.version || '0.0.1'} | ${f.title || ''} |
358
+ `)
359
+ })
360
+
361
+ Content(`
362
+
363
+ Features are activated via the \`feature\` option:
364
+
365
+ `)
366
+
367
+ Content(`\`\`\`csharp
368
+ var client = new ${model.const.Name}SDK(new Dictionary<string, object?>
369
+ {
370
+ ["feature"] = new Dictionary<string, object?>
371
+ {
372
+ `)
373
+ activeFeatures.map((f: any) => {
374
+ Content(` ["${f.name}"] = new Dictionary<string, object?> { ["active"] = true },
375
+ `)
376
+ })
377
+ Content(` },
378
+ });
379
+ \`\`\`
380
+
381
+ `)
382
+ }
383
+
384
+ })
385
+ })
386
+
387
+
388
+ export {
389
+ ReadmeRef
390
+ }
@@ -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(`**C#:**
9
+ \`\`\`csharp
10
+ var result = client.Direct(new Dictionary<string, object?>
11
+ {
12
+ ["path"] = "/api/resource/{id}",
13
+ ["method"] = "GET",
14
+ ["params"] = new Dictionary<string, object?> { ["id"] = "example" },
15
+ });
16
+ \`\`\`
17
+
18
+ `)
19
+
20
+ })
21
+
22
+
23
+ export {
24
+ ReadmeTopHowto
25
+ }