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