@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,238 @@
1
+
2
+ import { cmp, Content, File } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+
11
+ // Emits dart/test/readme_examples_test.dart — a COMPLETENESS + PRESENCE gate
12
+ // over every ```dart fenced block in the three documents that ship dart
13
+ // examples:
14
+ // - the repository ROOT README.md (one directory above the dart/ package),
15
+ // - the per-language dart/README.md,
16
+ // - the per-language dart/REFERENCE.md.
17
+ //
18
+ // Unlike the interpreted-language gates (py/rb), which EXECUTE every runnable
19
+ // block in a subprocess, and the go gate, which COMPILES every block, this
20
+ // gate is a dependency-free STRUCTURAL gate that runs inside the dependency-
21
+ // free dart test harness (no `dart analyze`/`dart run` subprocess, so it never
22
+ // depends on a resolvable package_config at test time). Per document it:
23
+ // 1. extracts every ```dart fenced block (tagged by source doc + index);
24
+ // 2. classifies each block into exactly one of
25
+ // {runnable, illustration, compiled-nonrunnable} and asserts the
26
+ // partition is complete (total == runnable + illustration + compiled);
27
+ // 3. asserts PRESENCE: every available doc carries at least one dart block,
28
+ // and at least one RUNNABLE block (one that constructs the SDK or drives
29
+ // a `client`), so no doc silently ships zero exercised dart examples.
30
+ //
31
+ // A missing doc is SKIPPED (not failed) — the root README is optional in a
32
+ // single-language checkout. The dart source is written with the fence marker
33
+ // and newline built from escapes (` = backtick) so this template literal
34
+ // stays clean.
35
+ const ReadmeExamplesTest = cmp(function ReadmeExamplesTest(props: any) {
36
+ const { target, ctx$: { model } } = props
37
+
38
+ const Name = model.const.Name
39
+ const sdkClass = Name + 'SDK'
40
+
41
+ // The API's capitalised semantic entities — used to detect entity-factory
42
+ // references (client.<Entity>() ) inside a block.
43
+ const entities = Object.values(getModelPath(model, `main.${KIT}.entity`) || {})
44
+ .filter((e: any) => e && e.active !== false)
45
+ .map((e: any) => nom(e, 'Name'))
46
+ const entitiesLiteral = 0 === entities.length
47
+ ? '<String>[]'
48
+ : "<String>['" + entities.join("', '") + "']"
49
+
50
+ File({ name: 'readme_examples_test.' + target.ext }, () => {
51
+ Content(`// ${Name} SDK — documentation dart-examples presence & completeness gate.
52
+ // GENERATED — do not edit.
53
+ //
54
+ // A structural completeness gate over every dart fenced code block in three
55
+ // documents:
56
+ // - the repository ROOT README.md (one directory above the dart/ package),
57
+ // - the per-language dart/README.md,
58
+ // - the per-language dart/REFERENCE.md.
59
+ //
60
+ // For each available document it partitions every block into exactly one of
61
+ // {runnable, illustration, compiled-nonrunnable}, asserts the partition adds
62
+ // up, and asserts the doc carries at least one runnable dart example. A
63
+ // missing document is skipped, not failed.
64
+
65
+ import 'dart:io';
66
+
67
+ import 'harness.dart';
68
+ import 'utility.dart';
69
+
70
+ // The triple-backtick markdown code fence (\\u0060 == backtick) and newline,
71
+ // built from escapes so the generator template literal stays clean.
72
+ const String _fence = '\\u0060\\u0060\\u0060';
73
+ const String _nl = '\\n';
74
+
75
+ const String _sdkClass = '${sdkClass}';
76
+
77
+ // The API's capitalised semantic entities, used to spot a client.<Entity>()
78
+ // factory call inside a block.
79
+ const List<String> _entities = ${entitiesLiteral};
80
+
81
+ // The three documents held to the gate, tagged by human label and path
82
+ // (relative to the package root, which is the CWD for 'dart run test/...').
83
+ final List<List<String>> _docs = [
84
+ ['root README', '../README.md'],
85
+ ['dart README.md', 'README.md'],
86
+ ['dart REFERENCE.md', 'REFERENCE.md'],
87
+ ];
88
+
89
+ // Split the doc on the code fence: odd-indexed segments are the inside of a
90
+ // fenced block (an info string on the first line, then the code). Only fences
91
+ // whose info string is exactly 'dart' are returned, so signature/markdown
92
+ // tables and other-language fences are skipped.
93
+ List<String> _blocksIn(String text) {
94
+ final parts = text.split(_fence);
95
+ final blocks = <String>[];
96
+ for (var i = 1; i < parts.length; i += 2) {
97
+ final seg = parts[i];
98
+ final lines = seg.split(_nl);
99
+ final info = lines[0].trim();
100
+ if ('dart' == info) {
101
+ blocks.add(lines.sublist(1).join(_nl));
102
+ }
103
+ }
104
+ return blocks;
105
+ }
106
+
107
+ // A block is RUNNABLE — and therefore MUST be exercised — when it constructs
108
+ // the SDK (mentions the class) or drives a client the narrative built.
109
+ bool _isRunnable(String block) {
110
+ if (block.contains(_sdkClass)) {
111
+ return true;
112
+ }
113
+ if (block.contains('client.')) {
114
+ return true;
115
+ }
116
+ for (final ent in _entities) {
117
+ if (block.contains('.' + ent + '(')) {
118
+ return true;
119
+ }
120
+ }
121
+ return false;
122
+ }
123
+
124
+ // A NARROW illustration: a non-runnable block whose every non-blank line is a
125
+ // comment or an import — a pure signature/structure snippet with nothing to
126
+ // run. Anything with real statements falls to the compiled-nonrunnable bucket.
127
+ bool _isIllustration(String block) {
128
+ if (_isRunnable(block)) {
129
+ return false;
130
+ }
131
+ var sawLine = false;
132
+ for (final raw in block.split(_nl)) {
133
+ final line = raw.trim();
134
+ if ('' == line) {
135
+ continue;
136
+ }
137
+ sawLine = true;
138
+ if (line.startsWith('//')) {
139
+ continue;
140
+ }
141
+ if (line.startsWith('import ') || line.startsWith('export ')) {
142
+ continue;
143
+ }
144
+ return false;
145
+ }
146
+ return sawLine;
147
+ }
148
+
149
+ String _classify(String block) {
150
+ if (_isRunnable(block)) {
151
+ return 'runnable';
152
+ }
153
+ if (_isIllustration(block)) {
154
+ return 'illustration';
155
+ }
156
+ return 'compiled';
157
+ }
158
+
159
+ Map<String, int> _gate(String label, List<String> blocks) {
160
+ var runnable = 0;
161
+ var illustration = 0;
162
+ var compiled = 0;
163
+ for (final block in blocks) {
164
+ final kind = _classify(block);
165
+ if ('runnable' == kind) {
166
+ runnable++;
167
+ } else if ('illustration' == kind) {
168
+ illustration++;
169
+ } else {
170
+ compiled++;
171
+ }
172
+ }
173
+ final total = blocks.length;
174
+ print(_nl +
175
+ '[readme-examples] ' +
176
+ label +
177
+ ' dart blocks: total=' +
178
+ total.toString() +
179
+ ' runnable=' +
180
+ runnable.toString() +
181
+ ' compiled=' +
182
+ compiled.toString() +
183
+ ' illustration=' +
184
+ illustration.toString());
185
+
186
+ // Every block is accounted for by exactly one bucket.
187
+ ok(total == runnable + illustration + compiled,
188
+ label +
189
+ ': dart-block accounting does not add up — total=' +
190
+ total.toString() +
191
+ ' but runnable+compiled+illustration=' +
192
+ (runnable + illustration + compiled).toString());
193
+
194
+ return {
195
+ 'total': total,
196
+ 'runnable': runnable,
197
+ 'compiled': compiled,
198
+ 'illustration': illustration,
199
+ };
200
+ }
201
+
202
+ void tests() {
203
+ describe('ReadmeExamples', () {
204
+ for (final doc in _docs) {
205
+ final label = doc[0];
206
+ final rel = doc[1];
207
+
208
+ test('dart-examples: ' + label, (t) async {
209
+ final path = resolveTestPath(rel);
210
+ if (!File(path).existsSync()) {
211
+ t.skip(label + ' not found: ' + path);
212
+ return;
213
+ }
214
+
215
+ final text = File(path).readAsStringSync();
216
+ final blocks = _blocksIn(text);
217
+
218
+ ok(0 < blocks.length,
219
+ 'expected at least one dart block in ' + label);
220
+
221
+ final stats = _gate(label, blocks);
222
+
223
+ ok(0 < (stats['runnable'] ?? 0),
224
+ 'expected at least one runnable dart block in ' +
225
+ label +
226
+ ' (a block that constructs the SDK or drives a client)');
227
+ });
228
+ }
229
+ });
230
+ }
231
+ `)
232
+ })
233
+ })
234
+
235
+
236
+ export {
237
+ ReadmeExamplesTest
238
+ }
@@ -0,0 +1,53 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+ import { dartPackageName } from './Package_dart'
5
+
6
+
7
+ const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
8
+ const { target, ctx$: { model } } = props
9
+
10
+ const Name = model.const.Name
11
+ const pkg = dartPackageName(model)
12
+
13
+ Content(`### Maps in, typed models alongside
14
+
15
+ The Dart SDK passes plain \`Map<String, dynamic>\` values through the
16
+ operation pipeline rather than requiring typed objects at every call. This
17
+ mirrors the dynamic nature of the API and keeps calls terse — a create is
18
+ just \`create({'name': 'example'})\`.
19
+
20
+ For a typed, documented view of each entity and operation, the generated
21
+ \`${Name}Types.dart\` provides a class per entity plus per-op request/match
22
+ classes (e.g. \`${Name}.fromMap(entity.data())\` and \`model.toMap()\`), so you
23
+ can convert to and from those maps wherever you want compile-time structure.
24
+
25
+ ### Package structure
26
+
27
+ \`\`\`
28
+ ${target.name}/
29
+ ├── lib/
30
+ │ ├── ${Name}SDK.dart -- Main SDK library (exported entry point)
31
+ │ ├── ${Name}Types.dart -- Typed entity + request/match models
32
+ │ ├── ${Name}EntityBase.dart -- Base class for entities
33
+ │ ├── ${Name}Error.dart -- SDK error type
34
+ │ ├── Config.dart -- Configuration
35
+ │ ├── entity/ -- Entity implementations
36
+ │ ├── feature/ -- Built-in features (base, test, log, ...)
37
+ │ └── utility/ -- Utility functions and vendored struct library
38
+ └── test/ -- Test suites (dart run test/main.dart)
39
+ \`\`\`
40
+
41
+ The main library (\`${Name}SDK.dart\`) re-exports the SDK class, the typed
42
+ models, and every entity class, so a single
43
+ \`import 'package:${pkg}/${Name}SDK.dart';\`
44
+ brings in everything you need.
45
+
46
+ `)
47
+
48
+ })
49
+
50
+
51
+ export {
52
+ ReadmeExplanation
53
+ }
@@ -0,0 +1,151 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+
11
+ // A type-correct Dart literal for a field's canonical type.
12
+ function dartLit(type: any): string {
13
+ const k = canonKey(type)
14
+ if ('INTEGER' === k || 'NUMBER' === k) return '1'
15
+ if ('BOOLEAN' === k) return 'true'
16
+ if ('ARRAY' === k) return '<dynamic>[]'
17
+ if ('OBJECT' === k) return '<String, dynamic>{}'
18
+ return "'example'"
19
+ }
20
+
21
+
22
+ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
23
+ const { target, ctx$: { model } } = props
24
+
25
+ const entity = getModelPath(model, `main.${KIT}.entity`)
26
+ // Pick an entity with a real op (prefer a read op) — never fabricate a
27
+ // `load` on an op-less entity. primaryOp is null only when NO entity
28
+ // exposes any op (a direct()-only SDK).
29
+ const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
30
+ const eName = exampleEntity ? nom(exampleEntity, 'Name') : 'Entity'
31
+ const eVar = exampleVarName(eName.toLowerCase(), 'dart')
32
+ // Model-driven id key: null when the entity has no id-like field.
33
+ const idF = exampleEntity ? entityIdField(exampleEntity) : null
34
+ const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
35
+ let testArg = ''
36
+ if (exampleEntity && isMatchOp) {
37
+ testArg = idF ? `{'${idF}': 'test01'}` : ''
38
+ } else if (exampleEntity && ('create' === primaryOp || 'update' === primaryOp)) {
39
+ const items = opRequestShape(exampleEntity, primaryOp).items
40
+ .filter((it: any) => it.name !== idF && it.name !== 'id')
41
+ const required = items.filter((it: any) => !it.optional)
42
+ const chosen = required.length ? required : items.slice(0, 3)
43
+ testArg = `{${chosen.map((it: any) => `'${it.name}': ${dartLit(it.type)}`).join(', ')}}`
44
+ }
45
+
46
+ // The op-driven test-mode line, shown only when the SDK has an entity op.
47
+ // A direct()-only SDK (no ops anywhere) shows a direct() call instead.
48
+ const testModeExample = primaryOp
49
+ ? `// Entity ops return the bare record and throw on error.
50
+ final ${eVar} = await client.${eName}().${primaryOp}(${testArg});
51
+ // ${eVar} contains the mock response record
52
+ print(${eVar});`
53
+ : `final result = await client.direct({'path': '/api/resource', 'method': 'GET'});
54
+ print(result);`
55
+
56
+ const apikeyEnvLine = isAuthActive(model)
57
+ ? `\nexport ${envName(model)}_APIKEY=<your-key>`
58
+ : ''
59
+
60
+ Content(`### Make a direct HTTP request
61
+
62
+ For endpoints not covered by entity methods:
63
+
64
+ \`\`\`dart
65
+ final result = await client.direct({
66
+ 'path': '/api/resource/{id}',
67
+ 'method': 'GET',
68
+ 'params': {'id': 'example'},
69
+ });
70
+
71
+ if (true == result['ok']) {
72
+ print(result['status']); // 200
73
+ print(result['data']); // response body
74
+ } else {
75
+ // A non-2xx response carries status + data (the error body); a
76
+ // transport-level failure carries err instead. direct() never throws —
77
+ // branch on result['ok'].
78
+ print(result['status']);
79
+ print(result['err']);
80
+ }
81
+ \`\`\`
82
+
83
+ ### Prepare a request without sending it
84
+
85
+ \`\`\`dart
86
+ // prepare() returns the fetch definition (or an error value on failure).
87
+ final fetchdef = await client.prepare({
88
+ 'path': '/api/resource/{id}',
89
+ 'method': 'DELETE',
90
+ 'params': {'id': 'example'},
91
+ });
92
+
93
+ print(fetchdef['url']);
94
+ print(fetchdef['method']);
95
+ print(fetchdef['headers']);
96
+ \`\`\`
97
+
98
+ ### Use test mode
99
+
100
+ Create a mock client for unit testing — no server required:
101
+
102
+ \`\`\`dart
103
+ final client = ${model.const.Name}SDK.test();
104
+
105
+ ${testModeExample}
106
+ \`\`\`
107
+
108
+ ### Use a custom fetch function
109
+
110
+ Replace the HTTP transport with your own function:
111
+
112
+ \`\`\`dart
113
+ Future<dynamic> mockFetch(dynamic url, dynamic init) async {
114
+ return {
115
+ 'status': 200,
116
+ 'statusText': 'OK',
117
+ 'headers': <String, dynamic>{},
118
+ 'json': () => {'id': 'mock01'},
119
+ };
120
+ }
121
+
122
+ final client = ${model.const.Name}SDK({
123
+ 'base': 'http://localhost:8080',
124
+ 'system': {
125
+ 'fetch': mockFetch,
126
+ },
127
+ });
128
+ \`\`\`
129
+
130
+ ### Run live tests
131
+
132
+ Set the live-mode environment variables:
133
+
134
+ \`\`\`bash
135
+ export ${envName(model)}_TEST_LIVE=TRUE${apikeyEnvLine}
136
+ \`\`\`
137
+
138
+ Then run:
139
+
140
+ \`\`\`bash
141
+ cd ${target.name} && dart run test/main.dart
142
+ \`\`\`
143
+
144
+ `)
145
+
146
+ })
147
+
148
+
149
+ export {
150
+ ReadmeHowto
151
+ }
@@ -0,0 +1,59 @@
1
+
2
+ import { cmp, Content, isPublished, repoInfo } from '@voxgig/sdkgen'
3
+
4
+ import { dartPackageName } from './Package_dart'
5
+
6
+
7
+ const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
8
+ const { target, ctx$ } = props
9
+ const { model } = ctx$
10
+
11
+ const pkg = dartPackageName(model)
12
+
13
+ if (isPublished(model, target.name)) {
14
+ Content(`\`\`\`bash
15
+ dart pub add ${pkg}
16
+ \`\`\`
17
+
18
+ Or add it to your \`pubspec.yaml\`:
19
+
20
+ \`\`\`yaml
21
+ dependencies:
22
+ ${pkg}: ^0.0.1
23
+ \`\`\`
24
+
25
+ `)
26
+ return
27
+ }
28
+
29
+ // Publish pending: not yet on pub.dev. Depend on it via the git release
30
+ // tag, or from a local path checkout.
31
+ const { repoUrl, releasesUrl } = repoInfo(model)
32
+ Content(`This package is not yet published to pub.dev. Add it as a git
33
+ dependency (pinned to a release tag \`${target.name}/vX.Y.Z\`, see
34
+ [Releases](${releasesUrl})) in your \`pubspec.yaml\`:
35
+
36
+ \`\`\`yaml
37
+ dependencies:
38
+ ${pkg}:
39
+ git:
40
+ url: ${repoUrl}
41
+ path: ${target.name}
42
+ ref: ${target.name}/v0.0.1
43
+ \`\`\`
44
+
45
+ Or depend on a local source checkout:
46
+
47
+ \`\`\`yaml
48
+ dependencies:
49
+ ${pkg}:
50
+ path: ../${target.name}
51
+ \`\`\`
52
+
53
+ `)
54
+ })
55
+
56
+
57
+ export {
58
+ ReadmeInstall
59
+ }
@@ -0,0 +1,65 @@
1
+
2
+ import { cmp, Content } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+
11
+ const ReadmeIntro = cmp(function ReadmeIntro(props: any) {
12
+ const { target, ctx$: { model } } = props
13
+ const info = (model.main && model.main.kit && model.main.kit.info) || {}
14
+ const tagline = info.tagline || ''
15
+
16
+ Content(`# ${model.Name} ${target.title} SDK
17
+
18
+ ${tagline}
19
+
20
+ The ${target.title} SDK for the ${model.Name} API — an entity-oriented client following idiomatic Dart conventions.
21
+
22
+ `)
23
+
24
+ // Emphasise the entity-oriented design: the SDK surfaces the API as
25
+ // capitalised, semantic Entities with a small, uniform verb set rather
26
+ // than raw URL paths and query strings. The example entity name is
27
+ // derived from the model, never hardcoded.
28
+ const entity = getModelPath(model, `main.${KIT}.entity`)
29
+ const exampleEntity = Object.values(entity || {})
30
+ .find((e: any) => e.active !== false) as any
31
+ const example = exampleEntity
32
+ ? `for example \`client.${nom(exampleEntity, 'Name')}()\` — each`
33
+ : 'each'
34
+
35
+ // Model-driven op list — only the operations the active entities actually
36
+ // expose (a read-only entity has just list+load); never claim
37
+ // create/update/remove exist when no entity has them.
38
+ const CANON_OPS = ['list', 'load', 'create', 'update', 'remove']
39
+ const opSet = new Set<string>()
40
+ Object.values(entity || {}).forEach((e: any) => {
41
+ if (!e || e.active === false) return
42
+ Object.keys(e.op || {}).forEach((o: string) => {
43
+ if (e.op[o] && e.op[o].active !== false) opSet.add(o)
44
+ })
45
+ })
46
+ const opNames = CANON_OPS.filter((o) => opSet.has(o))
47
+ .concat([...opSet].filter((o) => !CANON_OPS.includes(o)))
48
+ const opList = (opNames.length ? opNames : ['list', 'load'])
49
+ .map((o) => '`' + o + '`').join(', ')
50
+
51
+ Content(`The SDK exposes the API as capitalised, semantic **Entities** — ${example}
52
+ carrying a small, uniform set of operations (${opList}) instead of raw URL
53
+ paths and query strings. You work with named resources and verbs, which
54
+ keeps the cognitive load low.
55
+
56
+ > Other languages, the CLI, and MCP server live alongside this one — see
57
+ > the [top-level README](../README.md).
58
+
59
+ `)
60
+ })
61
+
62
+
63
+ export {
64
+ ReadmeIntro
65
+ }