@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,381 @@
1
+
2
+ import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { dartPackageName } from './Package_dart'
10
+
11
+
12
+ // Type names come from the shared canonToType 'dart' column (single source of truth).
13
+
14
+ // A type-correct Dart literal for a field's canonical type. Strings render
15
+ // the quoted placeholder (single-quoted, matching the generated Dart style).
16
+ function dartLit(type: any, placeholder: string = 'example'): string {
17
+ const k = canonKey(type)
18
+ if ('INTEGER' === k || 'NUMBER' === k) return '1'
19
+ if ('BOOLEAN' === k) return 'true'
20
+ if ('ARRAY' === k) return '<dynamic>[]'
21
+ if ('OBJECT' === k) return '<String, dynamic>{}'
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]) -> Future<dynamic>',
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]) -> Future<List>',
34
+ returns: 'a list of entities',
35
+ desc: 'List entities matching the given criteria. The match is optional — call `list()` with no argument to list all records. Returns a list of entity instances and throws on error.',
36
+ },
37
+ create: {
38
+ sig: 'create(reqdata, [ctrl]) -> Future<dynamic>',
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]) -> Future<dynamic>',
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]) -> Future<dynamic>',
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 entity = getModelPath(model, `main.${KIT}.entity`)
60
+ const feature = getModelPath(model, `main.${KIT}.feature`)
61
+ const pkg = dartPackageName(model)
62
+
63
+ const publishedEntities = each(entity).filter((e: any) => e.active !== false)
64
+
65
+
66
+ File({ name: 'REFERENCE.md' }, () => {
67
+
68
+ Content(`# ${model.Name} ${target.title} SDK Reference
69
+
70
+ Complete API reference for the ${model.Name} ${target.title} SDK.
71
+
72
+ ## ${model.const.Name}SDK
73
+
74
+ ### Constructor
75
+
76
+ `)
77
+
78
+ Content(`\`\`\`dart
79
+ import 'package:${pkg}/${model.const.Name}SDK.dart';
80
+
81
+ final client = ${model.const.Name}SDK(options);
82
+ \`\`\`
83
+
84
+ Create a new SDK client instance.
85
+
86
+ **Parameters:**
87
+
88
+ | Name | Type | Description |
89
+ | --- | --- | --- |
90
+ | \`options\` | \`Map\` | 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']\` | \`Map\` | Custom headers for all requests. |
95
+ | \`options['feature']\` | \`Map\` | Feature configuration. |
96
+ | \`options['system']\` | \`Map\` | System overrides (e.g. custom fetch). |
97
+
98
+ `)
99
+
100
+
101
+ Content(`
102
+ ### Static Methods
103
+
104
+ `)
105
+
106
+ Content(`#### \`${model.const.Name}SDK.test([testopts, sdkopts])\`
107
+
108
+ Create a test client with mock features active. Both arguments may be \`null\`.
109
+
110
+ \`\`\`dart
111
+ final client = ${model.const.Name}SDK.test();
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 no argument for no initial data.
128
+
129
+ `)
130
+ })
131
+
132
+
133
+ Content(`#### \`options() -> Map\`
134
+
135
+ Return a deep copy of the current SDK options.
136
+
137
+ #### \`utility() -> Utility\`
138
+
139
+ Return the SDK utility object.
140
+
141
+ #### \`direct([fetchargs]) -> Future<Map>\`
142
+
143
+ Make a direct HTTP request to any API endpoint. Returns a result \`Map\` with \`ok\`, \`status\`, \`headers\`, and \`data\` (or \`err\` on failure). This escape hatch never throws — branch on \`result['ok']\`.
144
+
145
+ **Parameters:**
146
+
147
+ | Name | Type | Description |
148
+ | --- | --- | --- |
149
+ | \`fetchargs['path']\` | \`String\` | URL path with optional \`{param}\` placeholders. |
150
+ | \`fetchargs['method']\` | \`String\` | HTTP method (default: \`'GET'\`). |
151
+ | \`fetchargs['params']\` | \`Map\` | Path parameter values. |
152
+ | \`fetchargs['query']\` | \`Map\` | Query string parameters. |
153
+ | \`fetchargs['headers']\` | \`Map\` | Request headers (merged with defaults). |
154
+ | \`fetchargs['body']\` | \`dynamic\` | Request body (maps are JSON-serialized). |
155
+
156
+ **Returns:** \`Future<Map>\`
157
+
158
+ #### \`prepare([fetchargs]) -> Future\`
159
+
160
+ Prepare a fetch definition without sending. Returns the \`fetchdef\` (or an error value on failure).
161
+
162
+ `)
163
+
164
+
165
+ // Entity reference sections
166
+ publishedEntities.map((ent: any) => {
167
+ const opnames = Object.keys(ent.op || {})
168
+ const fields = ent.fields || []
169
+ const idF = entityIdField(ent)
170
+ const eVar = exampleVarName(ent.name, 'dart')
171
+
172
+ Content(`
173
+ ---
174
+
175
+ ## ${ent.Name}Entity
176
+
177
+ `)
178
+
179
+ if (ent.short) {
180
+ Content(`${ent.short}
181
+
182
+ `)
183
+ }
184
+
185
+ Content(`\`\`\`dart
186
+ final ${eVar} = client.${ent.Name}();
187
+ \`\`\`
188
+
189
+ `)
190
+
191
+
192
+ // Field schema
193
+ if (fields.length > 0) {
194
+ Content(`### Fields
195
+
196
+ | Field | Type | Required | Description |
197
+ | --- | --- | --- | --- |
198
+ `)
199
+ each(fields, (field: any) => {
200
+ const req = field.req ? 'Yes' : 'No'
201
+ const desc = field.short || ''
202
+ Content(`| \`${field.name}\` | \`${canonToType(field.type, target.name)}\` | ${req} | ${desc} |
203
+ `)
204
+ })
205
+
206
+ Content(`
207
+ `)
208
+
209
+ // Field operations breakdown
210
+ const hasFieldOps = fields.some((f: any) => f.op && Object.keys(f.op).length > 0)
211
+ if (hasFieldOps) {
212
+ const opcols = ['load', 'list', 'create', 'update', 'remove']
213
+ .filter((op: string) => opnames.includes(op) && ent.op[op]?.active !== false)
214
+ Content(`### Field Usage by Operation
215
+
216
+ | Field | ${opcols.join(' | ')} |
217
+ | --- | ${opcols.map(() => '---').join(' | ')} |
218
+ `)
219
+ each(fields, (field: any) => {
220
+ const fops = field.op || {}
221
+ const cols = opcols.map((op: string) => {
222
+ const fop = fops[op]
223
+ if (null == fop) return '-'
224
+ if (fop.active === false) return '-'
225
+ return 'Yes'
226
+ })
227
+ Content(`| \`${field.name}\` | ${cols.join(' | ')} |
228
+ `)
229
+ })
230
+
231
+ Content(`
232
+ `)
233
+ }
234
+ }
235
+
236
+
237
+ // Operation details
238
+ if (opnames.length > 0) {
239
+ Content(`### Operations
240
+
241
+ `)
242
+
243
+ opnames.map((opname: string) => {
244
+ const info = OP_SIGNATURES[opname]
245
+ if (!info) return
246
+
247
+ Content(`#### \`${info.sig}\`
248
+
249
+ ${info.desc}
250
+
251
+ `)
252
+
253
+ if ('load' === opname || 'remove' === opname) {
254
+ const matchItems = opRequestShape(ent, opname).items
255
+ .filter((it: any) => !it.optional || it.name === idF)
256
+ .sort((a: any, b: any) =>
257
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
258
+ const arg = 0 < matchItems.length
259
+ ? `{${matchItems.map((it: any) =>
260
+ `'${it.name}': ${dartLit(it.type,
261
+ it.name === idF ? ent.name + '_id' : it.name)}`).join(', ')}}`
262
+ : ''
263
+ Content(`\`\`\`dart
264
+ final result = await client.${ent.Name}().${opname}(${arg});
265
+ \`\`\`
266
+
267
+ `)
268
+ }
269
+ else if ('list' === opname) {
270
+ Content(`\`\`\`dart
271
+ final results = await client.${ent.Name}().list();
272
+ for (final ${eVar} in results) {
273
+ print(${eVar}.data());
274
+ }
275
+ \`\`\`
276
+
277
+ `)
278
+ }
279
+ else if ('create' === opname) {
280
+ const createItems = opRequestShape(ent, 'create').items
281
+ .filter((it: any) => !it.optional)
282
+ Content(`\`\`\`dart
283
+ final result = await client.${ent.Name}().create({
284
+ `)
285
+ createItems.map((it: any) => {
286
+ Content(` '${it.name}': ${dartLit(it.type, 'example_' + it.name)}, // ${canonToType(it.type, target.name)}
287
+ `)
288
+ })
289
+ Content(`});
290
+ \`\`\`
291
+
292
+ `)
293
+ }
294
+ else if ('update' === opname) {
295
+ const updateItems = opRequestShape(ent, 'update').items
296
+ .filter((it: any) => !it.optional || it.name === idF)
297
+ .sort((a: any, b: any) =>
298
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
299
+ const updateLines = updateItems.map((it: any) =>
300
+ ` '${it.name}': ${dartLit(it.type,
301
+ it.name === idF ? ent.name + '_id' : it.name)},\n`).join('')
302
+ Content(`\`\`\`dart
303
+ final result = await client.${ent.Name}().update({
304
+ ${updateLines} // Fields to update
305
+ });
306
+ \`\`\`
307
+
308
+ `)
309
+ }
310
+ })
311
+ }
312
+
313
+
314
+ // Common methods
315
+ Content(`### Common Methods
316
+
317
+ #### \`data([d]) -> Map\`
318
+
319
+ Get the entity data, or set it when passed an argument.
320
+
321
+ #### \`match([m]) -> Map\`
322
+
323
+ Get the entity match criteria, or set it when passed an argument.
324
+
325
+ #### \`make() -> Entity\`
326
+
327
+ Create a new \`${ent.Name}Entity\` instance with the same options.
328
+
329
+ #### \`entopts() -> Map\`
330
+
331
+ Return the entity options.
332
+
333
+ `)
334
+ })
335
+
336
+
337
+ // Features section
338
+ const activeFeatures = each(feature).filter((f: any) => f.active)
339
+ if (activeFeatures.length > 0) {
340
+ Content(`
341
+ ---
342
+
343
+ ## Features
344
+
345
+ | Feature | Version | Description |
346
+ | --- | --- | --- |
347
+ `)
348
+
349
+ activeFeatures.map((f: any) => {
350
+ Content(`| \`${f.name}\` | ${f.version || '0.0.1'} | ${f.title || ''} |
351
+ `)
352
+ })
353
+
354
+ Content(`
355
+
356
+ Features are activated via the \`feature\` option:
357
+
358
+ `)
359
+
360
+ Content(`\`\`\`dart
361
+ final client = ${model.const.Name}SDK({
362
+ 'feature': {
363
+ `)
364
+ activeFeatures.map((f: any) => {
365
+ Content(` '${f.name}': {'active': true},
366
+ `)
367
+ })
368
+ Content(` },
369
+ });
370
+ \`\`\`
371
+
372
+ `)
373
+ }
374
+
375
+ })
376
+ })
377
+
378
+
379
+ export {
380
+ ReadmeRef
381
+ }
@@ -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(`**Dart:**
9
+ \`\`\`dart
10
+ final result = await client.direct({
11
+ 'path': '/api/resource/{id}',
12
+ 'method': 'GET',
13
+ 'params': {'id': 'example'},
14
+ });
15
+ \`\`\`
16
+
17
+ `)
18
+
19
+ })
20
+
21
+
22
+ export {
23
+ ReadmeTopHowto
24
+ }
@@ -0,0 +1,95 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { dartPackageName } from './Package_dart'
11
+
12
+
13
+ // A type-correct, executable Dart literal for a param: numeric/boolean/
14
+ // array/object params render a typed literal; strings render the quoted
15
+ // placeholder (single-quoted, matching the generated Dart style).
16
+ function dartLit(type: any, placeholder: string = 'example'): string {
17
+ const k = canonKey(type)
18
+ if ('INTEGER' === k || 'NUMBER' === k) return '1'
19
+ if ('BOOLEAN' === k) return 'true'
20
+ if ('ARRAY' === k) return '<dynamic>[]'
21
+ if ('OBJECT' === k) return '<String, dynamic>{}'
22
+ return `'${placeholder}'`
23
+ }
24
+
25
+
26
+ const ReadmeTopQuick = cmp(function ReadmeTopQuick(props: any) {
27
+ const { target, ctx$: { model } } = props
28
+
29
+ const entity = getModelPath(model, `main.${KIT}.entity`)
30
+ const pkg = dartPackageName(model)
31
+
32
+ const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
33
+
34
+ const authActive = isAuthActive(model)
35
+ const importIO = authActive ? `import 'dart:io';\n` : ''
36
+ const ctor = authActive
37
+ ? `${model.const.Name}SDK({\n 'apikey': Platform.environment['${envName(model)}_APIKEY'],\n })`
38
+ : `${model.const.Name}SDK()`
39
+
40
+ Content(`\`\`\`dart
41
+ ${importIO}import 'package:${pkg}/${model.const.Name}SDK.dart';
42
+
43
+ Future<void> main() async {
44
+ final client = ${ctor};
45
+
46
+ `)
47
+
48
+ if (exampleEntity) {
49
+ const eName = nom(exampleEntity, 'Name')
50
+ const eVar = exampleVarName(eName.toLowerCase(), 'dart')
51
+ const opnames = Object.keys(exampleEntity.op || {})
52
+ // Model-driven id key: null when the entity has no id-like field, in which
53
+ // case the load example takes no match argument.
54
+ const idF = entityIdField(exampleEntity)
55
+
56
+ if (opnames.includes('list')) {
57
+ Content(` // List all ${eName.toLowerCase()}s (returns a list of entities, throws on error)
58
+ final ${eVar}s = await client.${eName}().list();
59
+ for (final item in ${eVar}s) {
60
+ print(item.data());
61
+ }
62
+ `)
63
+ }
64
+
65
+ if (opnames.includes('load')) {
66
+ // Every REQUIRED load-match key (id first, then parent path params like
67
+ // page_id) — the same shape the runtime resolves path params from, so
68
+ // the example always works.
69
+ const loadItems = opRequestShape(exampleEntity, 'load').items
70
+ .filter((it: any) => !it.optional || it.name === idF)
71
+ .sort((a: any, b: any) =>
72
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
73
+ const loadArg = 0 < loadItems.length
74
+ ? `{${loadItems.map((it: any) =>
75
+ `'${it.name}': ${dartLit(it.type,
76
+ it.name === idF ? 'example_id' : 'example_' + it.name)}`).join(', ')}}`
77
+ : ''
78
+ Content(`
79
+ // Load a specific ${eName.toLowerCase()} (returns the record, throws on error)
80
+ final ${eVar} = await client.${eName}().load(${loadArg});
81
+ print(${eVar});
82
+ `)
83
+ }
84
+ }
85
+
86
+ Content(`}
87
+ \`\`\`
88
+ `)
89
+
90
+ })
91
+
92
+
93
+ export {
94
+ ReadmeTopQuick
95
+ }
@@ -0,0 +1,78 @@
1
+
2
+ import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { dartPackageName } from './Package_dart'
11
+
12
+
13
+ // A type-correct Dart literal for a field's canonical type.
14
+ function dartLit(type: any): string {
15
+ const k = canonKey(type)
16
+ if ('INTEGER' === k || 'NUMBER' === k) return '1'
17
+ if ('BOOLEAN' === k) return 'true'
18
+ if ('ARRAY' === k) return '<dynamic>[]'
19
+ if ('OBJECT' === k) return '<String, dynamic>{}'
20
+ return "'example'"
21
+ }
22
+
23
+
24
+ const ReadmeTopTest = cmp(function ReadmeTopTest(props: any) {
25
+ const { target, ctx$: { model } } = props
26
+
27
+ const entity = getModelPath(model, `main.${KIT}.entity`)
28
+ const pkg = dartPackageName(model)
29
+
30
+ // Pick an entity with a real op (prefer a read op) — never fabricate a
31
+ // `load` on an op-less entity.
32
+ const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
33
+
34
+ Content(`\`\`\`dart
35
+ import 'package:${pkg}/${model.const.Name}SDK.dart';
36
+
37
+ Future<void> main() async {
38
+ final client = ${model.const.Name}SDK.test();
39
+ `)
40
+
41
+ if (exampleEntity && primaryOp) {
42
+ const eName = nom(exampleEntity, 'Name')
43
+ const idF = entityIdField(exampleEntity)
44
+ const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
45
+ let arg = ''
46
+ if (isMatchOp) {
47
+ // Every REQUIRED match key (id first).
48
+ const items = opRequestShape(exampleEntity, primaryOp).items
49
+ .filter((it: any) => !it.optional || it.name === idF)
50
+ .sort((a: any, b: any) =>
51
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
52
+ arg = 0 < items.length
53
+ ? `{${items.map((it: any) =>
54
+ `'${it.name}': ${it.name === idF ? "'test01'" : dartLit(it.type)}`).join(', ')}}`
55
+ : ''
56
+ } else if ('create' === primaryOp || 'update' === primaryOp) {
57
+ const items = opRequestShape(exampleEntity, primaryOp).items
58
+ .filter((it: any) => it.name !== idF && it.name !== 'id')
59
+ const required = items.filter((it: any) => !it.optional)
60
+ const chosen = required.length ? required : items.slice(0, 3)
61
+ arg = `{${chosen.map((it: any) => `'${it.name}': ${dartLit(it.type)}`).join(', ')}}`
62
+ }
63
+ const eVar = exampleVarName(eName.toLowerCase(), 'dart') + ('list' === primaryOp ? 's' : '')
64
+ Content(` final ${eVar} = await client.${eName}().${primaryOp}(${arg});
65
+ print(${eVar});
66
+ `)
67
+ }
68
+
69
+ Content(`}
70
+ \`\`\`
71
+ `)
72
+
73
+ })
74
+
75
+
76
+ export {
77
+ ReadmeTopTest
78
+ }
@@ -96,6 +96,58 @@ const TestEntity = cmp(function TestEntity(props: any) {
96
96
  a[1] + n[1]))), 2)
97
97
  ])
98
98
 
99
+ // The stream test drives the `list` op; only emit it when the entity
100
+ // actually has a list op (a create-only entity like a *_result has no
101
+ // list endpoint, so ent.stream('list', …) would throw point_no_points).
102
+ const flowHasList = Object.values(basicflow.step)
103
+ .some((s: any) => 'list' === s.op)
104
+ Slot({ name: 'stream' }, () => {
105
+ if (!flowHasList) {
106
+ return
107
+ }
108
+ Content(`test('stream', (t) async {
109
+ // stream() runs the list op through the full pipeline and yields each
110
+ // result item. Seed two entities via test mode; with the \`streaming\`
111
+ // feature active it yields the feature's incremental items, else it
112
+ // falls back to the materialised items — either way every item yields.
113
+ final seed = <String, dynamic>{
114
+ 'entity': {
115
+ '${entity.name}': {
116
+ 'strm01': <String, dynamic>{'id': 'strm01'},
117
+ 'strm02': <String, dynamic>{'id': 'strm02'},
118
+ }
119
+ }
120
+ };
121
+
122
+ final sdkopts = <String, dynamic>{};
123
+ if (null != config.feature['streaming']) {
124
+ sdkopts['feature'] = {
125
+ 'streaming': {'active': true}
126
+ };
127
+ }
128
+
129
+ final testsdk = ${model.Name}SDK.test(seed, sdkopts);
130
+ final ent = testsdk.${nom(entity, 'Name')}();
131
+
132
+ final seen = [];
133
+ await for (final item in ent.stream('list', <String, dynamic>{})) {
134
+ seen.add(item);
135
+ }
136
+ equal(2, seen.length);
137
+
138
+ // Fallback: with streaming inactive, stream() still yields both items
139
+ // from the materialised result.
140
+ final plainsdk = ${model.Name}SDK.test(seed);
141
+ final plainent = plainsdk.${nom(entity, 'Name')}();
142
+ final seen2 = [];
143
+ await for (final item in plainent.stream('list', <String, dynamic>{})) {
144
+ seen2.add(item);
145
+ }
146
+ equal(2, seen2.length);
147
+ });
148
+ `)
149
+ })
150
+
99
151
  Slot({ name: 'basicSetup' }, () => {
100
152
  Content(`
101
153
  Map<String, dynamic> basicSetup([dynamic extra]) {
@@ -14,6 +14,7 @@ import { cmp, each, snakify, Folder, File, Content } from '@voxgig/sdkgen'
14
14
 
15
15
  import { TestDirect } from './TestDirect_dart'
16
16
  import { TestEntity } from './TestEntity_dart'
17
+ import { ReadmeExamplesTest } from './ReadmeExamplesTest_dart'
17
18
 
18
19
 
19
20
  const Test = cmp(function Test(props: any) {
@@ -41,6 +42,7 @@ import 'pipeline_test.dart' as pipeline_test;
41
42
  import 'feature_test.dart' as feature_test;
42
43
  import 'netsim_test.dart' as netsim_test;
43
44
  import 'custom_test.dart' as custom_test;
45
+ import 'readme_examples_test.dart' as readme_examples_test;
44
46
  `)
45
47
 
46
48
  each(entity, (ent: ModelEntity) => {
@@ -62,6 +64,7 @@ Future<void> main() async {
62
64
  feature_test.tests();
63
65
  netsim_test.tests();
64
66
  custom_test.tests();
67
+ readme_examples_test.tests();
65
68
  `)
66
69
 
67
70
  each(entity, (ent: ModelEntity) => {
@@ -83,6 +86,9 @@ Future<void> main() async {
83
86
  `)
84
87
  })
85
88
 
89
+ // Documentation dart-examples presence & completeness gate.
90
+ ReadmeExamplesTest({ target })
91
+
86
92
  Folder({ name: 'entity' }, () => {
87
93
  each(entity, (ent: ModelEntity) => {
88
94
  TestEntity({ target, entity: ent })
@@ -1,10 +1,8 @@
1
1
 
2
2
  // ignore_for_file: non_constant_identifier_names
3
3
 
4
- import 'dart:async';
5
-
4
+ // #OpImports
6
5
  import '../ProjectNameEntityBase.dart';
7
- import '../utility/ErrUtility.dart';
8
6
 
9
7
  // #TypeImports
10
8