@voxgig/sdkgen 1.3.14 → 1.3.18

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 (549) 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 +5 -1
  12. package/dist/cmp/Entity.js.map +1 -1
  13. package/dist/cmp/Feature.js +2 -1
  14. package/dist/cmp/Feature.js.map +1 -1
  15. package/dist/cmp/FeatureHook.js.map +1 -1
  16. package/dist/cmp/License.js.map +1 -1
  17. package/dist/cmp/Main.js.map +1 -1
  18. package/dist/cmp/Readme.js.map +1 -1
  19. package/dist/cmp/ReadmeEntity.js.map +1 -1
  20. package/dist/cmp/ReadmeErrors.js +1 -1
  21. package/dist/cmp/ReadmeErrors.js.map +1 -1
  22. package/dist/cmp/ReadmeExplanation.js +2 -2
  23. package/dist/cmp/ReadmeExplanation.js.map +1 -1
  24. package/dist/cmp/ReadmeHowto.js.map +1 -1
  25. package/dist/cmp/ReadmeInstall.js.map +1 -1
  26. package/dist/cmp/ReadmeIntro.js.map +1 -1
  27. package/dist/cmp/ReadmeModel.js.map +1 -1
  28. package/dist/cmp/ReadmeOptions.js.map +1 -1
  29. package/dist/cmp/ReadmeQuick.js.map +1 -1
  30. package/dist/cmp/ReadmeRef.js.map +1 -1
  31. package/dist/cmp/ReadmeTop.js +1 -1
  32. package/dist/cmp/ReadmeTop.js.map +1 -1
  33. package/dist/cmp/Security.js.map +1 -1
  34. package/dist/cmp/Test.js.map +1 -1
  35. package/dist/helpers/buildIdNames.js.map +1 -1
  36. package/dist/helpers/canonType.d.ts +3 -2
  37. package/dist/helpers/canonType.js +112 -24
  38. package/dist/helpers/canonType.js.map +1 -1
  39. package/dist/helpers/collectDeps.d.ts +1 -1
  40. package/dist/helpers/collectDeps.js +36 -13
  41. package/dist/helpers/collectDeps.js.map +1 -1
  42. package/dist/helpers/getMatchEntries.js.map +1 -1
  43. package/dist/helpers/naming.d.ts +7 -1
  44. package/dist/helpers/naming.js +90 -0
  45. package/dist/helpers/naming.js.map +1 -1
  46. package/dist/helpers/opExample.d.ts +1 -1
  47. package/dist/helpers/opExample.js +37 -20
  48. package/dist/helpers/opExample.js.map +1 -1
  49. package/dist/helpers/opShape.d.ts +5 -1
  50. package/dist/helpers/opShape.js +174 -7
  51. package/dist/helpers/opShape.js.map +1 -1
  52. package/dist/helpers/packageMeta.js.map +1 -1
  53. package/dist/sdkgen.d.ts +3 -3
  54. package/dist/sdkgen.js +12 -2
  55. package/dist/sdkgen.js.map +1 -1
  56. package/dist/tsconfig.tsbuildinfo +1 -1
  57. package/dist/types.js.map +1 -1
  58. package/dist/utility.js.map +1 -1
  59. package/package.json +20 -14
  60. package/project/.sdk/model/target/cpp.aontu +4 -4
  61. package/project/.sdk/model/target/go-cli.aontu +17 -17
  62. package/project/.sdk/model/target/go-mcp.aontu +11 -11
  63. package/project/.sdk/model/target/go.aontu +1 -1
  64. package/project/.sdk/model/target/haskell.aontu +6 -3
  65. package/project/.sdk/model/target/java.aontu +4 -4
  66. package/project/.sdk/model/target/kotlin.aontu +4 -4
  67. package/project/.sdk/model/target/lean.aontu +51 -0
  68. package/project/.sdk/model/target/scala.aontu +4 -4
  69. package/project/.sdk/model/target/zig.aontu +12 -2
  70. package/project/.sdk/src/cmp/c/Config_c.ts +16 -4
  71. package/project/.sdk/src/cmp/c/EntityTypes_c.ts +167 -0
  72. package/project/.sdk/src/cmp/c/Entity_c.ts +3 -3
  73. package/project/.sdk/src/cmp/c/Main_c.ts +4 -0
  74. package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +192 -0
  75. package/project/.sdk/src/cmp/c/ReadmeExamplesTest_c.ts +169 -0
  76. package/project/.sdk/src/cmp/c/ReadmeExplanation_c.ts +55 -0
  77. package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +168 -0
  78. package/project/.sdk/src/cmp/c/ReadmeInstall_c.ts +52 -0
  79. package/project/.sdk/src/cmp/c/ReadmeIntro_c.ts +67 -0
  80. package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +151 -0
  81. package/project/.sdk/src/cmp/c/ReadmeOptions_c.ts +65 -0
  82. package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +225 -0
  83. package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +398 -0
  84. package/project/.sdk/src/cmp/c/ReadmeTopHowto_c.ts +24 -0
  85. package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +104 -0
  86. package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +86 -0
  87. package/project/.sdk/src/cmp/c/TestDirect_c.ts +3 -3
  88. package/project/.sdk/src/cmp/c/TestEntity_c.ts +10 -0
  89. package/project/.sdk/src/cmp/c/Test_c.ts +4 -0
  90. package/project/.sdk/src/cmp/c/utility_c.ts +8 -2
  91. package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +1 -1
  92. package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +182 -0
  93. package/project/.sdk/src/cmp/clojure/ReadmeExamplesTest_clojure.ts +65 -0
  94. package/project/.sdk/src/cmp/clojure/ReadmeExplanation_clojure.ts +44 -0
  95. package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +144 -0
  96. package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +51 -0
  97. package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +66 -0
  98. package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +156 -0
  99. package/project/.sdk/src/cmp/clojure/ReadmeOptions_clojure.ts +61 -0
  100. package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +210 -0
  101. package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +409 -0
  102. package/project/.sdk/src/cmp/clojure/ReadmeTopHowto_clojure.ts +24 -0
  103. package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +98 -0
  104. package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +78 -0
  105. package/project/.sdk/src/cmp/clojure/TestDirect_clojure.ts +58 -0
  106. package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +79 -0
  107. package/project/.sdk/src/cmp/clojure/Test_clojure.ts +21 -65
  108. package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +174 -0
  109. package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +3 -3
  110. package/project/.sdk/src/cmp/cpp/MainEntity_cpp.ts +2 -2
  111. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +5 -0
  112. package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +170 -0
  113. package/project/.sdk/src/cmp/cpp/ReadmeExamplesTest_cpp.ts +136 -0
  114. package/project/.sdk/src/cmp/cpp/ReadmeExplanation_cpp.ts +45 -0
  115. package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +139 -0
  116. package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +42 -0
  117. package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +69 -0
  118. package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +155 -0
  119. package/project/.sdk/src/cmp/cpp/ReadmeOptions_cpp.ts +62 -0
  120. package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +234 -0
  121. package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +387 -0
  122. package/project/.sdk/src/cmp/cpp/ReadmeTopHowto_cpp.ts +24 -0
  123. package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +95 -0
  124. package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +70 -0
  125. package/project/.sdk/src/cmp/cpp/TestDirect_cpp.ts +3 -3
  126. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +5 -1
  127. package/project/.sdk/src/cmp/cpp/Test_cpp.ts +4 -0
  128. package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +195 -0
  129. package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +3 -3
  130. package/project/.sdk/src/cmp/csharp/MainEntity_csharp.ts +2 -2
  131. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +6 -0
  132. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +1 -1
  133. package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +174 -0
  134. package/project/.sdk/src/cmp/csharp/ReadmeExamplesTest_csharp.ts +210 -0
  135. package/project/.sdk/src/cmp/csharp/ReadmeExplanation_csharp.ts +42 -0
  136. package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +168 -0
  137. package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +41 -0
  138. package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +65 -0
  139. package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +148 -0
  140. package/project/.sdk/src/cmp/csharp/ReadmeOptions_csharp.ts +60 -0
  141. package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +219 -0
  142. package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +390 -0
  143. package/project/.sdk/src/cmp/csharp/ReadmeTopHowto_csharp.ts +25 -0
  144. package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +92 -0
  145. package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +77 -0
  146. package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +3 -3
  147. package/project/.sdk/src/cmp/csharp/Test_csharp.ts +4 -0
  148. package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +43 -30
  149. package/project/.sdk/src/cmp/dart/Entity_dart.ts +11 -3
  150. package/project/.sdk/src/cmp/dart/MainEntity_dart.ts +2 -2
  151. package/project/.sdk/src/cmp/dart/Main_dart.ts +3 -3
  152. package/project/.sdk/src/cmp/dart/Package_dart.ts +1 -1
  153. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +166 -0
  154. package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +238 -0
  155. package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +53 -0
  156. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +151 -0
  157. package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +59 -0
  158. package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +65 -0
  159. package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +151 -0
  160. package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +63 -0
  161. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +214 -0
  162. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +381 -0
  163. package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +24 -0
  164. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +95 -0
  165. package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +78 -0
  166. package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +4 -4
  167. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +52 -0
  168. package/project/.sdk/src/cmp/dart/Test_dart.ts +6 -0
  169. package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +1 -3
  170. package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +1 -40
  171. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +3 -3
  172. package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +164 -0
  173. package/project/.sdk/src/cmp/elixir/Entity_elixir.ts +1 -1
  174. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +4 -0
  175. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
  176. package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +163 -0
  177. package/project/.sdk/src/cmp/elixir/ReadmeExamplesTest_elixir.ts +144 -0
  178. package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +55 -0
  179. package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +149 -0
  180. package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +67 -0
  181. package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +66 -0
  182. package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +150 -0
  183. package/project/.sdk/src/cmp/elixir/ReadmeOptions_elixir.ts +62 -0
  184. package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +198 -0
  185. package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +333 -0
  186. package/project/.sdk/src/cmp/elixir/ReadmeTopHowto_elixir.ts +26 -0
  187. package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +79 -0
  188. package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +68 -0
  189. package/project/.sdk/src/cmp/elixir/Test_elixir.ts +4 -0
  190. package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +4 -0
  191. package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +4 -0
  192. package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +4 -0
  193. package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -0
  194. package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +4 -0
  195. package/project/.sdk/src/cmp/elixir/utility_elixir.ts +32 -0
  196. package/project/.sdk/src/cmp/go/Config_go.ts +4 -1
  197. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +121 -20
  198. package/project/.sdk/src/cmp/go/Entity_go.ts +3 -3
  199. package/project/.sdk/src/cmp/go/Main_go.ts +7 -6
  200. package/project/.sdk/src/cmp/go/Package_go.ts +1 -1
  201. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +6 -1
  202. package/project/.sdk/src/cmp/go/TestDirect_go.ts +3 -3
  203. package/project/.sdk/src/cmp/go/TestEntity_go.ts +11 -4
  204. package/project/.sdk/src/cmp/go/utility_go.ts +28 -2
  205. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +249 -44
  206. package/project/.sdk/src/cmp/go-cli/fragment/main.fragment.go +27 -5
  207. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +200 -31
  208. package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +181 -0
  209. package/project/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +135 -0
  210. package/project/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +48 -0
  211. package/project/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +168 -0
  212. package/project/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +51 -0
  213. package/project/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +67 -0
  214. package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +160 -0
  215. package/project/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +74 -0
  216. package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +237 -0
  217. package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +405 -0
  218. package/project/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +31 -0
  219. package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +104 -0
  220. package/project/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +80 -0
  221. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +27 -2
  222. package/project/.sdk/src/cmp/java/EntityTypes_java.ts +206 -0
  223. package/project/.sdk/src/cmp/java/Entity_java.ts +3 -3
  224. package/project/.sdk/src/cmp/java/MainEntity_java.ts +2 -2
  225. package/project/.sdk/src/cmp/java/Main_java.ts +6 -0
  226. package/project/.sdk/src/cmp/java/Package_java.ts +1 -1
  227. package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +175 -0
  228. package/project/.sdk/src/cmp/java/ReadmeExamplesTest_java.ts +208 -0
  229. package/project/.sdk/src/cmp/java/ReadmeExplanation_java.ts +46 -0
  230. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +156 -0
  231. package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +52 -0
  232. package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +66 -0
  233. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +150 -0
  234. package/project/.sdk/src/cmp/java/ReadmeOptions_java.ts +61 -0
  235. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +230 -0
  236. package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +388 -0
  237. package/project/.sdk/src/cmp/java/ReadmeTopHowto_java.ts +23 -0
  238. package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +103 -0
  239. package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +77 -0
  240. package/project/.sdk/src/cmp/java/TestDirect_java.ts +3 -3
  241. package/project/.sdk/src/cmp/java/Test_java.ts +4 -0
  242. package/project/.sdk/src/cmp/js/EntityTypes_js.ts +25 -9
  243. package/project/.sdk/src/cmp/js/Entity_js.ts +3 -3
  244. package/project/.sdk/src/cmp/js/MainEntity_js.ts +6 -4
  245. package/project/.sdk/src/cmp/js/Main_js.ts +2 -2
  246. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +4 -4
  247. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +13 -4
  248. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +4 -4
  249. package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +5 -5
  250. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +4 -4
  251. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +4 -4
  252. package/project/.sdk/src/cmp/js/TestDirect_js.ts +10 -9
  253. package/project/.sdk/src/cmp/js/TestEntity_js.ts +7 -2
  254. package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +0 -31
  255. package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +200 -0
  256. package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +3 -3
  257. package/project/.sdk/src/cmp/kotlin/MainEntity_kotlin.ts +2 -2
  258. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +6 -0
  259. package/project/.sdk/src/cmp/kotlin/Package_kotlin.ts +1 -1
  260. package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +175 -0
  261. package/project/.sdk/src/cmp/kotlin/ReadmeExamplesTest_kotlin.ts +198 -0
  262. package/project/.sdk/src/cmp/kotlin/ReadmeExplanation_kotlin.ts +47 -0
  263. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +154 -0
  264. package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +50 -0
  265. package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +66 -0
  266. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +150 -0
  267. package/project/.sdk/src/cmp/kotlin/ReadmeOptions_kotlin.ts +61 -0
  268. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +230 -0
  269. package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +387 -0
  270. package/project/.sdk/src/cmp/kotlin/ReadmeTopHowto_kotlin.ts +23 -0
  271. package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +104 -0
  272. package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +77 -0
  273. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +3 -3
  274. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +4 -0
  275. package/project/.sdk/src/cmp/lean/Config_lean.ts +88 -0
  276. package/project/.sdk/src/cmp/lean/Entity_lean.ts +9 -0
  277. package/project/.sdk/src/cmp/lean/Gitignore_lean.ts +18 -0
  278. package/project/.sdk/src/cmp/lean/Main_lean.ts +120 -0
  279. package/project/.sdk/src/cmp/lean/Package_lean.ts +68 -0
  280. package/project/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +29 -0
  281. package/project/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +19 -0
  282. package/project/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +25 -0
  283. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +38 -0
  284. package/project/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +25 -0
  285. package/project/.sdk/src/cmp/lean/ReadmeModel_lean.ts +24 -0
  286. package/project/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +22 -0
  287. package/project/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +50 -0
  288. package/project/.sdk/src/cmp/lean/ReadmeRef_lean.ts +16 -0
  289. package/project/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +16 -0
  290. package/project/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +23 -0
  291. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +18 -0
  292. package/project/.sdk/src/cmp/lean/Test_lean.ts +207 -0
  293. package/project/.sdk/src/cmp/lean/utility_lean.ts +78 -0
  294. package/project/.sdk/src/cmp/lua/Config_lua.ts +1 -1
  295. package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +19 -6
  296. package/project/.sdk/src/cmp/lua/Entity_lua.ts +3 -3
  297. package/project/.sdk/src/cmp/lua/Main_lua.ts +14 -2
  298. package/project/.sdk/src/cmp/lua/Package_lua.ts +1 -1
  299. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +2 -2
  300. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +6 -1
  301. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +3 -3
  302. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -2
  303. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +2 -2
  304. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +3 -3
  305. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +8 -3
  306. package/project/.sdk/src/cmp/lua/Test_lua.ts +1 -1
  307. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +2 -0
  308. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +180 -0
  309. package/project/.sdk/src/cmp/ocaml/ReadmeExamplesTest_ocaml.ts +126 -0
  310. package/project/.sdk/src/cmp/ocaml/ReadmeExplanation_ocaml.ts +46 -0
  311. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +147 -0
  312. package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +44 -0
  313. package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +68 -0
  314. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +155 -0
  315. package/project/.sdk/src/cmp/ocaml/ReadmeOptions_ocaml.ts +59 -0
  316. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +205 -0
  317. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +402 -0
  318. package/project/.sdk/src/cmp/ocaml/ReadmeTopHowto_ocaml.ts +25 -0
  319. package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +86 -0
  320. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +79 -0
  321. package/project/.sdk/src/cmp/ocaml/Test_ocaml.ts +4 -0
  322. package/project/.sdk/src/cmp/perl/Entity_perl.ts +3 -3
  323. package/project/.sdk/src/cmp/perl/MainEntity_perl.ts +2 -2
  324. package/project/.sdk/src/cmp/perl/Package_perl.ts +1 -1
  325. package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +181 -0
  326. package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +354 -0
  327. package/project/.sdk/src/cmp/perl/ReadmeExplanation_perl.ts +43 -0
  328. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +149 -0
  329. package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +47 -0
  330. package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +66 -0
  331. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +150 -0
  332. package/project/.sdk/src/cmp/perl/ReadmeOptions_perl.ts +59 -0
  333. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +216 -0
  334. package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +399 -0
  335. package/project/.sdk/src/cmp/perl/ReadmeTopHowto_perl.ts +24 -0
  336. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +91 -0
  337. package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +83 -0
  338. package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +3 -3
  339. package/project/.sdk/src/cmp/perl/Test_perl.ts +4 -0
  340. package/project/.sdk/src/cmp/php/EntityTypes_php.ts +23 -7
  341. package/project/.sdk/src/cmp/php/Entity_php.ts +3 -3
  342. package/project/.sdk/src/cmp/php/MainEntity_php.ts +2 -2
  343. package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
  344. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +6 -1
  345. package/project/.sdk/src/cmp/php/TestDirect_php.ts +3 -3
  346. package/project/.sdk/src/cmp/php/TestEntity_php.ts +8 -3
  347. package/project/.sdk/src/cmp/py/EntityTypes_py.ts +32 -8
  348. package/project/.sdk/src/cmp/py/Entity_py.ts +4 -12
  349. package/project/.sdk/src/cmp/py/MainEntity_py.ts +2 -2
  350. package/project/.sdk/src/cmp/py/Main_py.ts +2 -2
  351. package/project/.sdk/src/cmp/py/Package_py.ts +1 -1
  352. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +2 -2
  353. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +8 -3
  354. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +3 -3
  355. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -2
  356. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +2 -2
  357. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +2 -2
  358. package/project/.sdk/src/cmp/py/TestDirect_py.ts +3 -3
  359. package/project/.sdk/src/cmp/py/TestEntity_py.ts +8 -3
  360. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +32 -8
  361. package/project/.sdk/src/cmp/rb/Entity_rb.ts +3 -3
  362. package/project/.sdk/src/cmp/rb/MainEntity_rb.ts +2 -2
  363. package/project/.sdk/src/cmp/rb/Package_rb.ts +2 -2
  364. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +2 -2
  365. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +8 -3
  366. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +3 -3
  367. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -2
  368. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
  369. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +2 -2
  370. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +3 -3
  371. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +8 -3
  372. package/project/.sdk/src/cmp/rust/EntityBase_rust.ts +6 -2
  373. package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +151 -0
  374. package/project/.sdk/src/cmp/rust/Entity_rust.ts +4 -4
  375. package/project/.sdk/src/cmp/rust/MainEntity_rust.ts +2 -2
  376. package/project/.sdk/src/cmp/rust/Main_rust.ts +5 -0
  377. package/project/.sdk/src/cmp/rust/Package_rust.ts +1 -1
  378. package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +163 -0
  379. package/project/.sdk/src/cmp/rust/ReadmeExamplesTest_rust.ts +144 -0
  380. package/project/.sdk/src/cmp/rust/ReadmeExplanation_rust.ts +44 -0
  381. package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +142 -0
  382. package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +49 -0
  383. package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +66 -0
  384. package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +153 -0
  385. package/project/.sdk/src/cmp/rust/ReadmeOptions_rust.ts +60 -0
  386. package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +212 -0
  387. package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +384 -0
  388. package/project/.sdk/src/cmp/rust/ReadmeTopHowto_rust.ts +24 -0
  389. package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +95 -0
  390. package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +81 -0
  391. package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +3 -3
  392. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +10 -0
  393. package/project/.sdk/src/cmp/rust/Test_rust.ts +4 -0
  394. package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +201 -0
  395. package/project/.sdk/src/cmp/scala/Entity_scala.ts +3 -3
  396. package/project/.sdk/src/cmp/scala/MainEntity_scala.ts +2 -2
  397. package/project/.sdk/src/cmp/scala/Main_scala.ts +6 -0
  398. package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +175 -0
  399. package/project/.sdk/src/cmp/scala/ReadmeExamplesTest_scala.ts +182 -0
  400. package/project/.sdk/src/cmp/scala/ReadmeExplanation_scala.ts +49 -0
  401. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +155 -0
  402. package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +58 -0
  403. package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +66 -0
  404. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +150 -0
  405. package/project/.sdk/src/cmp/scala/ReadmeOptions_scala.ts +61 -0
  406. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +230 -0
  407. package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +388 -0
  408. package/project/.sdk/src/cmp/scala/ReadmeTopHowto_scala.ts +23 -0
  409. package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +104 -0
  410. package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +77 -0
  411. package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +3 -3
  412. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +38 -10
  413. package/project/.sdk/src/cmp/scala/Test_scala.ts +9 -1
  414. package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +151 -0
  415. package/project/.sdk/src/cmp/swift/Entity_swift.ts +3 -3
  416. package/project/.sdk/src/cmp/swift/MainEntity_swift.ts +2 -2
  417. package/project/.sdk/src/cmp/swift/Main_swift.ts +5 -0
  418. package/project/.sdk/src/cmp/swift/Package_swift.ts +1 -1
  419. package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +176 -0
  420. package/project/.sdk/src/cmp/swift/ReadmeExamplesTest_swift.ts +187 -0
  421. package/project/.sdk/src/cmp/swift/ReadmeExplanation_swift.ts +49 -0
  422. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +159 -0
  423. package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +58 -0
  424. package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +64 -0
  425. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +149 -0
  426. package/project/.sdk/src/cmp/swift/ReadmeOptions_swift.ts +62 -0
  427. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +232 -0
  428. package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +387 -0
  429. package/project/.sdk/src/cmp/swift/ReadmeTopHowto_swift.ts +24 -0
  430. package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +105 -0
  431. package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +77 -0
  432. package/project/.sdk/src/cmp/swift/TestDirect_swift.ts +1 -1
  433. package/project/.sdk/src/cmp/swift/Test_swift.ts +4 -0
  434. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +19 -6
  435. package/project/.sdk/src/cmp/ts/Entity_ts.ts +3 -3
  436. package/project/.sdk/src/cmp/ts/MainEntity_ts.ts +6 -4
  437. package/project/.sdk/src/cmp/ts/Main_ts.ts +2 -2
  438. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +4 -4
  439. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +14 -4
  440. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +29 -11
  441. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +5 -5
  442. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +4 -4
  443. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +4 -4
  444. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +17 -15
  445. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +18 -2
  446. package/project/.sdk/src/cmp/zig/Config_zig.ts +22 -4
  447. package/project/.sdk/src/cmp/zig/Entity_zig.ts +4 -4
  448. package/project/.sdk/src/cmp/zig/MainEntity_zig.ts +2 -2
  449. package/project/.sdk/src/cmp/zig/Main_zig.ts +10 -4
  450. package/project/.sdk/src/cmp/zig/Package_zig.ts +61 -0
  451. package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +188 -0
  452. package/project/.sdk/src/cmp/zig/ReadmeExamplesTest_zig.ts +58 -0
  453. package/project/.sdk/src/cmp/zig/ReadmeExplanation_zig.ts +45 -0
  454. package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +143 -0
  455. package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +54 -0
  456. package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +66 -0
  457. package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +152 -0
  458. package/project/.sdk/src/cmp/zig/ReadmeOptions_zig.ts +60 -0
  459. package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +211 -0
  460. package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +400 -0
  461. package/project/.sdk/src/cmp/zig/ReadmeTopHowto_zig.ts +24 -0
  462. package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +96 -0
  463. package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +82 -0
  464. package/project/.sdk/src/cmp/zig/TestDirect_zig.ts +66 -0
  465. package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +79 -0
  466. package/project/.sdk/src/cmp/zig/Test_zig.ts +17 -61
  467. package/project/.sdk/tm/clojure/src/voxgig/struct.clj +1 -1
  468. package/project/.sdk/tm/cpp/test/feature_test.cpp +19 -0
  469. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +8 -16
  470. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +10 -28
  471. package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +4 -1
  472. package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +7 -1
  473. package/project/.sdk/tm/dart/test/primary_test.dart +7 -0
  474. package/project/.sdk/tm/elixir/lib/utility/struct/voxgig_struct.ex +1 -1
  475. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +7 -1
  476. package/project/.sdk/tm/go/feature/test_feature.go +33 -1
  477. package/project/.sdk/tm/go/test/primary_utility_test.go +41 -42
  478. package/project/.sdk/tm/go/test/runner_test.go +30 -1
  479. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +3 -1
  480. package/project/.sdk/tm/haskell/test/Harness.hs +8 -3
  481. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +7 -24
  482. package/project/.sdk/tm/js/Makefile +1 -1
  483. package/project/.sdk/tm/js/jsconfig.json +12 -0
  484. package/project/.sdk/tm/js/src/feature/test/TestFeature.js +18 -1
  485. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +8 -0
  486. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +7 -20
  487. package/project/.sdk/tm/lean/LICENSE +21 -0
  488. package/project/.sdk/tm/lean/VERSION +1 -0
  489. package/project/.sdk/tm/lean/src/SdkFeature.lean +171 -0
  490. package/project/.sdk/tm/lean/src/SdkFeatures.lean +602 -0
  491. package/project/.sdk/tm/lean/src/SdkJson.lean +134 -0
  492. package/project/.sdk/tm/lean/src/SdkRuntime.lean +356 -0
  493. package/project/.sdk/tm/lean/src/SdkUtility.lean +617 -0
  494. package/project/.sdk/tm/lean/src/VoxgigStruct.lean +2880 -0
  495. package/project/.sdk/tm/lean/src/Vregex.lean +412 -0
  496. package/project/.sdk/tm/lean/src/feature/README.md +5 -0
  497. package/project/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
  498. package/project/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
  499. package/project/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
  500. package/project/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
  501. package/project/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
  502. package/project/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
  503. package/project/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
  504. package/project/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
  505. package/project/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
  506. package/project/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
  507. package/project/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
  508. package/project/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
  509. package/project/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
  510. package/project/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
  511. package/project/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
  512. package/project/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
  513. package/project/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
  514. package/project/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
  515. package/project/.sdk/tm/lean/test/StructCorpus.lean +697 -0
  516. package/project/.sdk/tm/lean/test/TFeature.lean +268 -0
  517. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +349 -0
  518. package/project/.sdk/tm/lua/test/primary_utility_test.lua +10 -8
  519. package/project/.sdk/tm/ocaml/Makefile +5 -1
  520. package/project/.sdk/tm/perl/t/primary_utility.t +8 -17
  521. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +9 -7
  522. package/project/.sdk/tm/php/utility/struct/Struct.php +1 -1
  523. package/project/.sdk/tm/py/feature/test_feature.py +28 -1
  524. package/project/.sdk/tm/py/test/test_primary_utility.py +13 -18
  525. package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +1 -1
  526. package/project/.sdk/tm/rb/feature/test_feature.rb +24 -1
  527. package/project/.sdk/tm/rb/test/primary_utility_test.rb +7 -8
  528. package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +1 -1
  529. package/project/.sdk/tm/rust/tests/common/mod.rs +37 -1
  530. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +12 -26
  531. package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +8 -59
  532. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +7 -8
  533. package/project/.sdk/tm/ts/Makefile +1 -1
  534. package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +18 -1
  535. package/project/.sdk/tm/ts/test/utility/PrimaryUtility.test.ts +65 -21
  536. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -1
  537. package/src/cmp/Entity.ts +5 -1
  538. package/src/cmp/Feature.ts +2 -1
  539. package/src/cmp/ReadmeErrors.ts +2 -2
  540. package/src/cmp/ReadmeExplanation.ts +3 -3
  541. package/src/cmp/ReadmeTop.ts +2 -2
  542. package/src/helpers/canonType.ts +121 -25
  543. package/src/helpers/collectDeps.ts +39 -12
  544. package/src/helpers/naming.ts +106 -0
  545. package/src/helpers/opExample.ts +43 -20
  546. package/src/helpers/opShape.ts +197 -11
  547. package/src/sdkgen.ts +13 -3
  548. package/src/tsconfig.json +2 -0
  549. package/project/.sdk/tm/zig/build.zig.zon +0 -11
@@ -0,0 +1,95 @@
1
+
2
+ import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { crateIdent, rustVarName } from './utility_rust'
11
+
12
+
13
+ // A type-correct rust expression constructing a voxgig struct Value for a
14
+ // param. Strings render the quoted placeholder; numeric/boolean/array/object
15
+ // render a typed literal.
16
+ function rustLit(type: any, placeholder: string = 'example'): string {
17
+ const k = canonKey(type)
18
+ if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
19
+ if ('BOOLEAN' === k) return 'Value::Bool(true)'
20
+ if ('ARRAY' === k) return 'Value::empty_list()'
21
+ if ('OBJECT' === k) return 'Value::empty_map()'
22
+ return `Value::str("${placeholder}")`
23
+ }
24
+
25
+
26
+ const ReadmeTopQuick = cmp(function ReadmeTopQuick(props: any) {
27
+ const { target, ctx$: { model } } = props
28
+
29
+ const rustcrate = crateIdent(model)
30
+ const entity = getModelPath(model, `main.${KIT}.entity`)
31
+
32
+ const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
33
+
34
+ const authActive = isAuthActive(model)
35
+ const ctor = authActive
36
+ ? `${model.const.Name}SDK::new(jo(vec![\n ("apikey", Value::str(std::env::var("${envName(model)}_APIKEY").unwrap_or_default())),\n]))`
37
+ : `${model.const.Name}SDK::new(Value::Noval)`
38
+
39
+ Content(`\`\`\`rust
40
+ use ${rustcrate}::{jo, ${model.const.Name}SDK, Value};
41
+
42
+ let client = ${ctor};
43
+
44
+ `)
45
+
46
+ if (exampleEntity) {
47
+ const eName = nom(exampleEntity, 'Name')
48
+ const eVar = rustVarName(exampleEntity.name)
49
+ const method = rustVarName(exampleEntity.name)
50
+ const opnames = Object.keys(exampleEntity.op || {})
51
+ // Model-driven id key: null when the entity has no id-like field, in which
52
+ // case the load example takes no match argument.
53
+ const idF = entityIdField(exampleEntity)
54
+
55
+ if (opnames.includes('list')) {
56
+ Content(`// List all ${eName.toLowerCase()}s (returns a Value::List, Err on failure)
57
+ let ${eVar}s = client.${method}(Value::Noval).list(Value::Noval, Value::Noval).unwrap();
58
+ if let Value::List(items) = &${eVar}s {
59
+ for ${eVar} in items.borrow().iter() {
60
+ println!("{:?}", ${eVar});
61
+ }
62
+ }
63
+ `)
64
+ }
65
+
66
+ if (opnames.includes('load')) {
67
+ // Every REQUIRED load-match key (id first, then parent path params like
68
+ // page_id) — the same shape the runtime resolves path params from, so
69
+ // the example always works.
70
+ const loadItems = opRequestShape(exampleEntity, 'load').items
71
+ .filter((it: any) => !it.optional || it.name === idF)
72
+ .sort((a: any, b: any) =>
73
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
74
+ const loadArg = 0 < loadItems.length
75
+ ? `jo(vec![${loadItems.map((it: any) =>
76
+ `("${it.name}", ${rustLit(it.type,
77
+ it.name === idF ? 'example_id' : 'example_' + it.name)})`).join(', ')}])`
78
+ : 'Value::Noval'
79
+ Content(`
80
+ // Load a specific ${eName.toLowerCase()} (returns the record, Err on failure)
81
+ let ${eVar} = client.${method}(Value::Noval).load(${loadArg}, Value::Noval).unwrap();
82
+ println!("{:?}", ${eVar});
83
+ `)
84
+ }
85
+ }
86
+
87
+ Content(`\`\`\`
88
+ `)
89
+
90
+ })
91
+
92
+
93
+ export {
94
+ ReadmeTopQuick
95
+ }
@@ -0,0 +1,81 @@
1
+
2
+ import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ nom,
8
+ } from '@voxgig/apidef'
9
+
10
+ import { crateIdent, rustVarName } from './utility_rust'
11
+
12
+
13
+ // A type-correct rust expression constructing a voxgig struct Value for a
14
+ // field's canonical type.
15
+ function rustLit(type: any): string {
16
+ const k = canonKey(type)
17
+ if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
18
+ if ('BOOLEAN' === k) return 'Value::Bool(true)'
19
+ if ('ARRAY' === k) return 'Value::empty_list()'
20
+ if ('OBJECT' === k) return 'Value::empty_map()'
21
+ return 'Value::str("example")'
22
+ }
23
+
24
+
25
+ const ReadmeTopTest = cmp(function ReadmeTopTest(props: any) {
26
+ const { target, ctx$: { model } } = props
27
+
28
+ const rustcrate = crateIdent(model)
29
+ const entity = getModelPath(model, `main.${KIT}.entity`)
30
+
31
+ // Pick an entity with a real op (prefer a read op) — never fabricate a
32
+ // `load` on an op-less entity.
33
+ const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
34
+
35
+ Content(`\`\`\`rust
36
+ use ${rustcrate}::{jo, test_sdk, Value};
37
+
38
+ let client = test_sdk(Value::Noval, Value::Noval);
39
+ `)
40
+
41
+ if (exampleEntity && primaryOp) {
42
+ const eName = nom(exampleEntity, 'Name')
43
+ const method = rustVarName(exampleEntity.name)
44
+ const idF = entityIdField(exampleEntity)
45
+ const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
46
+ let arg = 'Value::Noval'
47
+ if (isMatchOp) {
48
+ // Every REQUIRED match key (id first) — the same shape that generates
49
+ // the op's request match.
50
+ const items = opRequestShape(exampleEntity, primaryOp).items
51
+ .filter((it: any) => !it.optional || it.name === idF)
52
+ .sort((a: any, b: any) =>
53
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
54
+ arg = 0 < items.length
55
+ ? `jo(vec![${items.map((it: any) =>
56
+ `("${it.name}", ${it.name === idF ? 'Value::str("test01")' : rustLit(it.type)})`).join(', ')}])`
57
+ : 'Value::Noval'
58
+ } else if ('create' === primaryOp || 'update' === primaryOp) {
59
+ const items = opRequestShape(exampleEntity, primaryOp).items
60
+ .filter((it: any) => it.name !== idF && it.name !== 'id')
61
+ const required = items.filter((it: any) => !it.optional)
62
+ const chosen = required.length ? required : items.slice(0, 3)
63
+ arg = 0 < chosen.length
64
+ ? `jo(vec![${chosen.map((it: any) => `("${it.name}", ${rustLit(it.type)})`).join(', ')}])`
65
+ : 'Value::empty_map()'
66
+ }
67
+ const eVar = rustVarName(exampleEntity.name) + ('list' === primaryOp ? 's' : '')
68
+ Content(`let ${eVar} = client.${method}(Value::Noval).${primaryOp}(${arg}, Value::Noval).unwrap();
69
+ println!("{:?}", ${eVar});
70
+ `)
71
+ }
72
+
73
+ Content(`\`\`\`
74
+ `)
75
+
76
+ })
77
+
78
+
79
+ export {
80
+ ReadmeTopTest
81
+ }
@@ -73,7 +73,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
73
73
  ? `("apikey", getp(&env, "${PROJECTNAME}_APIKEY"))`
74
74
  : ''
75
75
 
76
- const opnames = Object.keys(entity.op)
76
+ const opnames = Object.keys(entity.op || {})
77
77
  const hasLoad = opnames.includes('load')
78
78
  const hasList = opnames.includes('list')
79
79
 
@@ -81,8 +81,8 @@ const TestDirect = cmp(function TestDirect(props: any) {
81
81
  return
82
82
  }
83
83
 
84
- const loadOp = (entity.op as any).load
85
- const listOp = (entity.op as any).list
84
+ const loadOp = (entity.op as any)?.load
85
+ const listOp = (entity.op as any)?.list
86
86
 
87
87
  // Load point info.
88
88
  const loadPoint = loadOp?.points?.[0]
@@ -104,7 +104,14 @@ fn ${evar}_entity_instance() {
104
104
  let ent = testsdk.${method}(Value::Noval);
105
105
  assert_eq!(ent.get_name(), "${entity.name}");
106
106
  }
107
+ `)
107
108
 
109
+ // The stream test drives the list op; only emit it when the entity has a
110
+ // list op (a create/load-only entity has no list endpoint, so
111
+ // stream("list") panics with point_no_points).
112
+ const flowHasList = allSteps.some((s: any) => 'list' === s.op)
113
+ if (flowHasList) {
114
+ Content(`
108
115
  #[test]
109
116
  fn ${evar}_entity_stream() {
110
117
  // stream() runs the list op through the full pipeline and yields each
@@ -144,7 +151,10 @@ fn ${evar}_entity_stream() {
144
151
  .collect();
145
152
  assert_eq!(plain_items.len(), 2, "fallback stream should yield both items");
146
153
  }
154
+ `)
155
+ }
147
156
 
157
+ Content(`
148
158
  #[test]
149
159
  fn ${evar}_entity_basic() {
150
160
  let setup = ${evar}_basic_setup(Value::Noval);
@@ -13,6 +13,7 @@ import { cmp, each, Folder, File, Content } from '@voxgig/sdkgen'
13
13
 
14
14
  import { TestEntity } from './TestEntity_rust'
15
15
  import { TestDirect } from './TestDirect_rust'
16
+ import { ReadmeExamplesTest } from './ReadmeExamplesTest_rust'
16
17
  import { crateIdent } from './utility_rust'
17
18
 
18
19
 
@@ -42,6 +43,9 @@ fn exists_test_mode() {
42
43
  TestEntity({ target, entity, rustcrate })
43
44
  TestDirect({ target, entity, rustcrate })
44
45
  })
46
+
47
+ // Validate the documented rust examples in the READMEs are well-formed.
48
+ ReadmeExamplesTest({ target })
45
49
  })
46
50
  })
47
51
 
@@ -0,0 +1,201 @@
1
+
2
+
3
+ // Typed-model generator (Scala target). Port of EntityTypes_java.ts /
4
+ // EntityTypes_py.ts.
5
+ //
6
+ // Reads main.<KIT>.entity.<e>.fields[] and per-op params
7
+ // (op.<name>.points[].args.params[]) and emits ONE file, core/<Name>Types.scala,
8
+ // holding an `object <Name>Types` with a nested `final case class` per active
9
+ // entity plus a request/match case class per active op.
10
+ //
11
+ // WHY A CONTAINER OBJECT: keeps the whole reference model in one file whatever
12
+ // the entity count and matches the java target's single-container layout
13
+ // (<Name>Types.java). Scala permits multiple top-level types per file, but a
14
+ // container object mirrors the JVM sibling and keeps the generated core/ dir
15
+ // tidy.
16
+ //
17
+ // TYPE CHOICE: reference `case class` types with BOXED (nullable) component
18
+ // types, NOT the wired runtime type. The generated ops take/return the loose
19
+ // object model (java.util.Map[String, Object] / Object), so these case classes
20
+ // are NOT wired into the op signatures — they are documentation/DX reference
21
+ // shapes a caller may use to describe a payload before converting it to a map.
22
+ // This mirrors the java target's reference records and the JS target's JSDoc
23
+ // typedefs (annotation only, no runtime effect). Emitting unused case classes
24
+ // is harmless — they compile and have no runtime effect.
25
+ //
26
+ // OPTIONAL FIELDS: every component is a boxed reference type, hence inherently
27
+ // nullable, so a `req:false` field/param needs no distinct rendering in Scala.
28
+ //
29
+ // Sentinels map to Scala types via the SHARED canonToType 'scala' column (the
30
+ // single source of truth per language — do not keep a local table here).
31
+ //
32
+ // Keep the SAME type-name scheme as every other language: <Name>,
33
+ // <Name>LoadMatch, <Name>ListMatch, <Name>CreateData, <Name>UpdateData,
34
+ // <Name>RemoveMatch (via the shared opTypeName helper).
35
+
36
+ import {
37
+ cmp, each, names,
38
+ File, Content,
39
+ } from '@voxgig/sdkgen'
40
+
41
+ import { canonToType, opTypeName, opRequestShape, warnEntityTypeCollisions , deriveEntityNames } from '@voxgig/sdkgen'
42
+
43
+ import {
44
+ KIT,
45
+ getModelPath,
46
+ } from '@voxgig/apidef'
47
+
48
+ import { scalaPackage } from './utility_scala'
49
+
50
+
51
+ const LANG = 'scala'
52
+
53
+
54
+ // Scala reserved words that cannot be a case-class parameter name.
55
+ const SCALA_KEYWORDS = new Set<string>([
56
+ 'abstract', 'case', 'catch', 'class', 'def', 'do', 'else', 'enum', 'export',
57
+ 'extends', 'false', 'final', 'finally', 'for', 'forSome', 'given', 'if',
58
+ 'implicit', 'import', 'lazy', 'match', 'new', 'null', 'object', 'override',
59
+ 'package', 'private', 'protected', 'return', 'sealed', 'super', 'then',
60
+ 'this', 'throw', 'trait', 'true', 'try', 'type', 'val', 'var', 'while',
61
+ 'with', 'yield',
62
+ ])
63
+
64
+
65
+ // A field/param name that has a safe Scala identifier rendering. Names that are
66
+ // not valid identifiers (hyphens, leading digits) have no clean parameter form
67
+ // and are skipped — they remain reachable via the runtime map.
68
+ function scalaIdent(name: string): boolean {
69
+ return /^[A-Za-z_][A-Za-z0-9_]*$/.test(name) && !SCALA_KEYWORDS.has(name)
70
+ }
71
+
72
+
73
+ // Emit a nested `final case class <typeName>(...)` from {name, type} items. An
74
+ // item whose name is not a legal identifier is skipped (WITH a warning — the
75
+ // key stays reachable via the runtime map, but its absence from the typed
76
+ // model should be visible, not silent); a duplicate component name (after the
77
+ // identifier filter) is dropped. An empty case class is a valid,
78
+ // zero-parameter shape.
79
+ function emitCaseClass(typeName: string, items: any[], log?: any): void {
80
+ const seen = new Set<string>()
81
+ const usable = items.filter((it: any) => {
82
+ if (!it || null == it.name) {
83
+ return false
84
+ }
85
+ if (!scalaIdent(it.name)) {
86
+ if (log && log.warn) {
87
+ log.warn({
88
+ point: 'entity-types-skip-field', typeName, field: it.name,
89
+ note: `scala: field "${it.name}" of ${typeName} has no legal ` +
90
+ `Scala identifier form; omitted from the typed model (still ` +
91
+ `reachable via the runtime map)`,
92
+ })
93
+ }
94
+ return false
95
+ }
96
+ if (seen.has(it.name)) {
97
+ return false
98
+ }
99
+ seen.add(it.name)
100
+ return true
101
+ })
102
+
103
+ if (0 === usable.length) {
104
+ Content(` final case class ${typeName}()
105
+
106
+ `)
107
+ return
108
+ }
109
+
110
+ const params = usable
111
+ .map((it: any) => `${it.name}: ${canonToType(it.type, LANG)}`)
112
+ .join(', ')
113
+ Content(` final case class ${typeName}(${params})
114
+
115
+ `)
116
+ }
117
+
118
+
119
+ const EntityTypes = cmp(function EntityTypes(props: any) {
120
+ const { model, log } = props.ctx$
121
+ const target = props.target || {}
122
+ const ext = target.ext || 'scala'
123
+
124
+ const scalapackage = props.scalapackage || scalaPackage(model)
125
+
126
+ // only_active:false — getModelPath DROPS active:false entries by default,
127
+ // but the consumer scaffold (create-sdkgen Root.ts) iterates the RAW entity
128
+ // collection, so inactive entities still get generated entity code that
129
+ // references these typed names. The typed model must cover them too.
130
+ const entity = getModelPath(model, `main.${KIT}.entity`, { only_active: false, required: false })
131
+ // Emit for EVERY entity that gets generated entity code: the consumer
132
+ // scaffold (create-sdkgen Root.ts) iterates entities WITHOUT an active
133
+ // filter, so inactive entities still get class files referencing these
134
+ // typed names. Filter on `name` (always present), NOT `active` — parity
135
+ // with the go emitter's fix.
136
+ const entityList = deriveEntityNames(entity)
137
+ // Derive the PascalCase Name up-front — it is set LAZILY by names(), so an
138
+ // entity not yet named (e.g. a fieldless placeholder) would otherwise read
139
+ // `Name = undefined` below. Parity with the go/py/java/csharp emitter's fix.
140
+
141
+ // Surface duplicate generated type names (two entities with the same
142
+ // PascalCase Name) — they would redeclare a type in statically-typed
143
+ // targets. Detection only; renaming is a model-level decision.
144
+ warnEntityTypeCollisions(entity, log, LANG)
145
+
146
+ File({ name: model.const.Name + 'Types.' + ext }, () => {
147
+
148
+ Content(`package ${scalapackage}.core
149
+
150
+ // Typed reference models for the ${model.const.Name} SDK.
151
+ //
152
+ // GENERATED from the API model: main.${KIT}.entity.<e>.fields[] and per-op
153
+ // params (op.<name>.points[].args.params[]). Field/param types come from the
154
+ // canonical type sentinels (source of truth: @voxgig/apidef VALID_CANON). Do
155
+ // not edit by hand.
156
+ //
157
+ // These case classes are documentation/DX reference shapes ONLY. The SDK ops
158
+ // take and return the loose object model (java.util.Map[String, Object] /
159
+ // Object) at runtime, so these types are not wired into the op signatures —
160
+ // use them to describe a payload before converting it to a map. Every
161
+ // component is a boxed (nullable) type, so an optional (req:false) key needs
162
+ // no distinct rendering.
163
+
164
+ object ${model.const.Name}Types {
165
+
166
+ `)
167
+
168
+ entityList.forEach((ent: any) => {
169
+ const Name = ent.Name
170
+ const fields = (ent.fields ? each(ent.fields) : [])
171
+ .filter((f: any) => f.active !== false)
172
+
173
+ // Entity data model: one component per field.
174
+ emitCaseClass(Name, fields.map((f: any) => ({
175
+ name: f.name, type: f.type,
176
+ })), log)
177
+
178
+ // Per active op: a request/match case class. Members come from the shared
179
+ // partiality policy (opRequestShape).
180
+ const ops = ent.op || {}
181
+ ;['load', 'list', 'create', 'update', 'remove'].forEach((opname: string) => {
182
+ if (null == ops[opname]) {
183
+ return
184
+ }
185
+
186
+ const typeName = opTypeName(Name, opname)
187
+ const { items } = opRequestShape(ent, opname)
188
+
189
+ emitCaseClass(typeName, items, log)
190
+ })
191
+ })
192
+
193
+ Content(`}
194
+ `)
195
+ })
196
+ })
197
+
198
+
199
+ export {
200
+ EntityTypes,
201
+ }
@@ -4,7 +4,7 @@ import * as Path from 'node:path'
4
4
  import {
5
5
  cmp, camelify, names,
6
6
  File, Content, Folder, Fragment,
7
- entityClassName,
7
+ entityClassName, entityCollection,
8
8
  } from '@voxgig/sdkgen'
9
9
 
10
10
  import {
@@ -23,7 +23,7 @@ const Entity = cmp(function Entity(props: any) {
23
23
  const scalapackage = scalaPackage(model)
24
24
 
25
25
  // Collision-free entity CLASS name.
26
- const entityColl = getModelPath(model, `main.${KIT}.entity`)
26
+ const entityColl = entityCollection(model)
27
27
  const cls = entityClassName(entity, entityColl)
28
28
 
29
29
  const entrep = {
@@ -39,7 +39,7 @@ const Entity = cmp(function Entity(props: any) {
39
39
 
40
40
  File({ name: cls + '.' + target.ext }, () => {
41
41
 
42
- const opnames = Object.keys(entity.op)
42
+ const opnames = Object.keys(entity.op || {})
43
43
 
44
44
  // For each CRUD op: if the spec defines it, splice in the real
45
45
  // implementation. Otherwise emit a stub that satisfies the SdkEntity
@@ -1,6 +1,6 @@
1
1
 
2
2
 
3
- import { cmp, Content, entityClassName } from '@voxgig/sdkgen'
3
+ import { cmp, Content, entityClassName, entityCollection } from '@voxgig/sdkgen'
4
4
 
5
5
  import {
6
6
  KIT,
@@ -18,7 +18,7 @@ const MainEntity = cmp(async function MainEntity(props: any) {
18
18
  const { model } = props.ctx$
19
19
 
20
20
  const scalapackage = scalaPackage(model)
21
- const entityColl = getModelPath(model, `main.${KIT}.entity`)
21
+ const entityColl = entityCollection(model)
22
22
  const cls = entityClassName(entity, entityColl)
23
23
  const accessor = scalaVarName(entity.name)
24
24
 
@@ -23,6 +23,7 @@ import { Config } from './Config_scala'
23
23
  import { Gitignore } from './Gitignore_scala'
24
24
  import { MainEntity } from './MainEntity_scala'
25
25
  import { EntityBase } from './EntityBase_scala'
26
+ import { EntityTypes } from './EntityTypes_scala'
26
27
  import { scalaPackage } from './utility_scala'
27
28
 
28
29
 
@@ -83,6 +84,11 @@ const Main = cmp(async function Main(props: any) {
83
84
  })
84
85
 
85
86
  Config({ target })
87
+
88
+ // Generate the typed reference-model file (<Name>Types.scala) beside the
89
+ // other generated core files. Documentation/DX shapes only — not wired
90
+ // into the loose-object-model op signatures.
91
+ EntityTypes({ target, scalapackage })
86
92
  })
87
93
 
88
94
  })
@@ -0,0 +1,175 @@
1
+
2
+ import { cmp, each, Content, canonToType, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
3
+
4
+ import {
5
+ KIT,
6
+ getModelPath,
7
+ } from '@voxgig/apidef'
8
+
9
+ import { scalaVarName } from './utility_scala'
10
+
11
+
12
+ // Type names come from the shared canonToType 'scala' column (single source of truth).
13
+
14
+ // A type-correct Scala literal for a field's canonical type.
15
+ function scalaLit(type: any, placeholder: string = 'example'): string {
16
+ const k = canonKey(type)
17
+ if ('INTEGER' === k) return '1L'
18
+ if ('NUMBER' === k) return '1.0'
19
+ if ('BOOLEAN' === k) return 'true'
20
+ if ('ARRAY' === k) return 'java.util.List.of()'
21
+ if ('OBJECT' === k) return 'java.util.Map.of()'
22
+ return `"${placeholder}"`
23
+ }
24
+
25
+
26
+ // Operation method spelling for Scala: camelCase methods over the loose object
27
+ // model. The op descriptions are language-agnostic.
28
+ const OP_DESC: Record<string, { method: string, desc: string }> = {
29
+ load: { method: 'load(match, null)', desc: 'Load a single entity by match criteria.' },
30
+ list: { method: 'list(null, null)', desc: 'List entities, optionally matching the given criteria.' },
31
+ create: { method: 'create(data, null)', desc: 'Create a new entity with the given data.' },
32
+ update: { method: 'update(data, null)', desc: 'Update an existing entity.' },
33
+ remove: { method: 'remove(match, null)', desc: 'Remove the matching entity.' },
34
+ }
35
+
36
+
37
+ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
38
+ const { target } = props
39
+ const { model } = props.ctx$
40
+
41
+ const entity = getModelPath(model, `main.${KIT}.entity`)
42
+
43
+ const publishedEntities = each(entity)
44
+ .filter((entity: any) => entity.active !== false)
45
+
46
+ if (0 === publishedEntities.length) {
47
+ return
48
+ }
49
+
50
+ Content(`
51
+
52
+ ## Entities
53
+
54
+ `)
55
+
56
+ publishedEntities.map((entity: any) => {
57
+ const opnames = Object.keys(entity.op || {})
58
+ const fields = entity.fields || []
59
+ // Model-driven id key: null when this entity has no id-like field.
60
+ const idF = entityIdField(entity)
61
+ // Sanitise the local variable name — a camelCased Scala keyword gets a
62
+ // trailing underscore (scalaVarName) so the snippet compiles.
63
+ const eVar = scalaVarName(entity.name)
64
+ const accessor = scalaVarName(entity.name)
65
+
66
+ Content(`
67
+ ### ${entity.Name}
68
+
69
+ `)
70
+
71
+ if (entity.short) {
72
+ Content(`${entity.short}
73
+
74
+ `)
75
+ }
76
+
77
+ Content(`Create an instance: \`val ${eVar} = client.${accessor}(null)\`
78
+
79
+ `)
80
+
81
+ if (opnames.length > 0) {
82
+ Content(`#### Operations
83
+
84
+ | Method | Description |
85
+ | --- | --- |
86
+ `)
87
+ opnames.map((opname: string) => {
88
+ const info = OP_DESC[opname]
89
+ if (info) {
90
+ Content(`| \`${info.method}\` | ${info.desc} |
91
+ `)
92
+ }
93
+ })
94
+
95
+ Content(`
96
+ `)
97
+ }
98
+
99
+ if (fields.length > 0) {
100
+ Content(`#### Fields
101
+
102
+ | Field | Type | Description |
103
+ | --- | --- | --- |
104
+ `)
105
+
106
+ each(fields, (field: any) => {
107
+ const desc = field.short || ''
108
+ Content(`| \`${field.name}\` | \`${canonToType(field.type, target.name)}\` | ${desc} |
109
+ `)
110
+ })
111
+
112
+ Content(`
113
+ `)
114
+ }
115
+
116
+ if (opnames.includes('load')) {
117
+ // The id key plus every REQUIRED match key (parent path params like
118
+ // page_id) — the same shape the runtime resolves path params from, so
119
+ // the example always works.
120
+ const loadItems = opRequestShape(entity, 'load').items
121
+ .filter((it: any) => !it.optional || it.name === idF)
122
+ .sort((a: any, b: any) =>
123
+ (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
124
+ const loadArg = 0 < loadItems.length
125
+ ? `java.util.Map.of(${loadItems.map((it: any) =>
126
+ `"${it.name}", ${scalaLit(it.type,
127
+ it.name === idF ? entity.name + '_id' : it.name)}`).join(', ')})`
128
+ : 'null'
129
+ Content(`#### Example: Load
130
+
131
+ \`\`\`scala
132
+ val ${eVar} = client.${accessor}(null).load(${loadArg}, null)
133
+ \`\`\`
134
+
135
+ `)
136
+ }
137
+
138
+ if (opnames.includes('list')) {
139
+ Content(`#### Example: List
140
+
141
+ \`\`\`scala
142
+ val ${eVar}List = client.${accessor}(null).list(null, null)
143
+ \`\`\`
144
+
145
+ `)
146
+ }
147
+
148
+ if (opnames.includes('create')) {
149
+ // Members come from the SAME shape the runtime validates
150
+ // (opRequestShape): every required member must appear — including a
151
+ // required id and parent keys like page_id — with a real literal.
152
+ const createItems = opRequestShape(entity, 'create').items
153
+ .filter((it: any) => !it.optional)
154
+ Content(`#### Example: Create
155
+
156
+ \`\`\`scala
157
+ val ${eVar} = client.${accessor}(null).create(java.util.Map.of(
158
+ `)
159
+ createItems.map((it: any, i: number) => {
160
+ const comma = i < createItems.length - 1 ? ',' : ''
161
+ Content(` "${it.name}", ${scalaLit(it.type, 'example_' + it.name)}${comma} // ${canonToType(it.type, target.name)}
162
+ `)
163
+ })
164
+ Content(`), null)
165
+ \`\`\`
166
+
167
+ `)
168
+ }
169
+ })
170
+ })
171
+
172
+
173
+ export {
174
+ ReadmeEntity
175
+ }