@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
@@ -4,7 +4,7 @@ import * as Path from 'node:path'
4
4
  import {
5
5
  cmp, each, camelify, names,
6
6
  File, Content, Folder, Fragment, Line, FeatureHook, Slot,
7
- entityClassName,
7
+ entityClassName, entityCollection,
8
8
  } from '@voxgig/sdkgen'
9
9
 
10
10
  import {
@@ -22,7 +22,7 @@ const Entity = cmp(function Entity(props: any) {
22
22
  // Collision-free entity CLASS name (see entityClassName): normally
23
23
  // `<Name>Entity`, disambiguated when it would clash with another entity's
24
24
  // data-type name. The class file name and the Main require path both use this.
25
- const entityColl = getModelPath(model, `main.${KIT}.entity`)
25
+ const entityColl = entityCollection(model)
26
26
  const cls = entityClassName(entity, entityColl)
27
27
 
28
28
  const entrep = {
@@ -37,7 +37,7 @@ const Entity = cmp(function Entity(props: any) {
37
37
 
38
38
  File({ name: cls + '.' + target.name }, () => {
39
39
 
40
- const opnames = Object.keys(entity.op)
40
+ const opnames = Object.keys(entity.op || {})
41
41
 
42
42
  const opfrags =
43
43
  (['load', 'list', 'create', 'update', 'remove']
@@ -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,
@@ -14,13 +14,15 @@ const MainEntity = cmp(async function MainEntity(props: any) {
14
14
 
15
15
  // Return the collision-free class (entityClassName); the accessor METHOD name
16
16
  // (entity.Name) is unchanged so callers still write client.<Name>().
17
- const cls = entityClassName(entity, getModelPath(model, `main.${KIT}.entity`))
17
+ const cls = entityClassName(entity, entityCollection(model))
18
18
 
19
19
  Content(`
20
20
  // Entity access: \`client.${entity.Name}().list()\` / \`client.${entity.Name}().load({ id })\`.
21
- ${entity.Name}(data) {
21
+ // The argument is the entity OPTIONS object (passed to the entity
22
+ // constructor as entopts), not initial entity data.
23
+ ${entity.Name}(entopts) {
22
24
  const self = this
23
- return new ${cls}(self,data)
25
+ return new ${cls}(self, entopts)
24
26
  }
25
27
 
26
28
  `)
@@ -4,7 +4,7 @@ import * as Path from 'node:path'
4
4
  import {
5
5
  cmp, each, names, cmap,
6
6
  List, File, Content, Copy, Folder, Fragment, Line, FeatureHook,
7
- entityClassName,
7
+ entityClassName, entityCollection,
8
8
  } from '@voxgig/sdkgen'
9
9
 
10
10
 
@@ -57,7 +57,7 @@ const Main = cmp(async function Main(props: any) {
57
57
  Line(`// ${model.const.Name} ${target.Name} SDK\n`)
58
58
 
59
59
  List({ item: entity }, ({ item }: any) => {
60
- const cls = entityClassName(item, entity)
60
+ const cls = entityClassName(item, entityCollection(model))
61
61
  return Line(`const { ${cls} } = require('./entity/${cls}')`)
62
62
  })
63
63
 
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, entityIdField, opRequestShape, safeVarName } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, entityIdField, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -46,7 +46,7 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
46
46
  // Model-driven id key: null when this entity has no id-like field.
47
47
  const idF = entityIdField(entity)
48
48
  // Variable-safe lowercase name (a `Delete` entity must not bind `delete`).
49
- const eVar = safeVarName(entity.name, 'js')
49
+ const eVar = exampleVarName(entity.name, 'js')
50
50
 
51
51
  Content(`
52
52
  ### ${entity.Name}
@@ -108,7 +108,7 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
108
108
  (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
109
109
  const loadArg = 0 < loadItems.length
110
110
  ? `{ ${loadItems.map((it: any) =>
111
- `${it.name}: ${exampleValue(entity, entity.op && entity.op.load, it.name,
111
+ `${jsKey(it.name)}: ${exampleValue(entity, entity.op && entity.op.load, it.name,
112
112
  it.name === idF ? entity.name + '_id' : it.name)}`).join(', ')} }`
113
113
  : ''
114
114
  Content(`#### Example: Load
@@ -144,7 +144,7 @@ const ${eVar}s = await client.${entity.Name}().list()
144
144
  const ${eVar} = await client.${entity.Name}().create({
145
145
  `)
146
146
  createItems.map((it: any) => {
147
- Content(` ${it.name}: ${exampleValue(entity, entity.op && entity.op.create, it.name, 'example_' + it.name)},
147
+ Content(` ${jsKey(it.name)}: ${exampleValue(entity, entity.op && entity.op.create, it.name, 'example_' + it.name)},
148
148
  `)
149
149
  })
150
150
  Content(`})
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, envName, entityIdField, entityDataIdField, pickExampleEntity, opRequestShape, safeVarName } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, envName, entityIdField, entityDataIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -19,7 +19,7 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
19
19
  // only when NO entity exposes any op (a direct()-only SDK).
20
20
  const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
21
21
  const eName = exampleEntity ? nom(exampleEntity, 'Name') : 'Entity'
22
- const eVar = safeVarName(eName.toLowerCase(), 'js')
22
+ const eVar = exampleVarName(eName.toLowerCase(), 'js')
23
23
 
24
24
  const primaryOpDef = exampleEntity && primaryOp && exampleEntity.op && exampleEntity.op[primaryOp]
25
25
  const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
@@ -32,14 +32,23 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
32
32
  if (!exampleEntity || !primaryOp) return ''
33
33
  if ('list' === primaryOp) return ''
34
34
  if (isMatchOp) {
35
- return idF ? `{ ${idF}: ${exampleValue(exampleEntity, primaryOpDef, idF, idPlaceholder)} }` : ''
35
+ // Every REQUIRED match key (id first), not just idF a composite-match
36
+ // entity (database_id + id) needs them all. Mirrors ReadmeTopTest.
37
+ const items = opRequestShape(exampleEntity, primaryOp).items
38
+ .filter((it: any) => !it.optional || it.name === idF)
39
+ .sort((a: any, b: any) => (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
40
+ if (0 === items.length) return ''
41
+ const pairs = items.map((it: any) =>
42
+ `${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name,
43
+ it.name === idF ? idPlaceholder : 'example_' + it.name)}`)
44
+ return `{ ${pairs.join(', ')} }`
36
45
  }
37
46
  const items = opRequestShape(exampleEntity, primaryOp).items
38
47
  .filter((it: any) => it.name !== idF && it.name !== 'id')
39
48
  const required = items.filter((it: any) => !it.optional)
40
49
  const chosen = required.length ? required : items.slice(0, 3)
41
50
  const pairs = chosen.map((it: any) =>
42
- `${it.name}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`)
51
+ `${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`)
43
52
  return `{ ${pairs.join(', ')} }`
44
53
  }
45
54
  const testCallArg = primaryArg('test01')
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, isAuthActive, packageName, envName, opRequestShape, entityIdField, entityOps, safeVarName } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, isAuthActive, packageName, envName, opRequestShape, entityIdField, entityOps, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -47,7 +47,7 @@ const client = ${ctor}
47
47
  // then load/remove match on no argument and update omits the id.
48
48
  const idF = entityIdField(exampleEntity)
49
49
  // Variable-safe lowercase name (a `Delete` entity must not bind `delete`).
50
- const eVar = safeVarName(exampleEntity.name, 'js')
50
+ const eVar = exampleVarName(exampleEntity.name, 'js')
51
51
  const exampleFields = (opname: string): string[] => {
52
52
  // ids are rendered separately as the match key for update/remove; a
53
53
  // REQUIRED id stays for create (dropping it makes the payload
@@ -64,7 +64,7 @@ const client = ${ctor}
64
64
  ? (required.length ? required : items.slice(0, 2))
65
65
  : required.concat(optional).slice(0, Math.max(2, required.length))
66
66
  return chosen.map((it: any) =>
67
- ` ${it.name}: ${exampleValue(exampleEntity, exampleEntity.op[opname], it.name, 'example_' + it.name)},`)
67
+ ` ${jsKey(it.name)}: ${exampleValue(exampleEntity, exampleEntity.op[opname], it.name, 'example_' + it.name)},`)
68
68
  }
69
69
 
70
70
  // The full REQUIRED match for load/remove (id first, then parent path
@@ -77,7 +77,7 @@ const client = ${ctor}
77
77
  (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
78
78
  return 0 < matchItems.length
79
79
  ? `{ ${matchItems.map((it: any) =>
80
- `${it.name}: ${exampleValue(exampleEntity, exampleEntity.op && exampleEntity.op[opname], it.name,
80
+ `${jsKey(it.name)}: ${exampleValue(exampleEntity, exampleEntity.op && exampleEntity.op[opname], it.name,
81
81
  it.name === idF ? exampleEntity.name + '_id' : 'example_' + it.name)}`).join(', ')} }`
82
82
  : ''
83
83
  }
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, canonToType, File, isAuthActive, entityIdField, opRequestShape, safeVarName } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, canonToType, File, isAuthActive, entityIdField, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -185,7 +185,7 @@ Alias for \`${model.Name}SDK.test()\`.
185
185
  // which case load/remove match on no argument and update omits the id.
186
186
  const idF = entityIdField(ent)
187
187
  // Variable-safe lowercase name (a `Delete` entity must not bind `delete`).
188
- const eVar = safeVarName(ent.name, 'js')
188
+ const eVar = exampleVarName(ent.name, 'js')
189
189
 
190
190
  Content(`
191
191
  ---
@@ -281,7 +281,7 @@ ${info.desc}
281
281
  (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
282
282
  const arg = 0 < matchItems.length
283
283
  ? `{ ${matchItems.map((it: any) =>
284
- `${it.name}: ${exampleValue(ent, ent.op && ent.op[opname], it.name,
284
+ `${jsKey(it.name)}: ${exampleValue(ent, ent.op && ent.op[opname], it.name,
285
285
  it.name === idF ? ent.name + '_id' : it.name)}`).join(', ')} }`
286
286
  : ''
287
287
  Content(`\`\`\`ts
@@ -309,7 +309,7 @@ const results = await client.${ent.Name}().${opname}()
309
309
  const result = await client.${ent.Name}().create({
310
310
  `)
311
311
  createItems.map((it: any) => {
312
- Content(` ${it.name}: ${exampleValue(ent, ent.op && ent.op.create, it.name, 'example_' + it.name)},
312
+ Content(` ${jsKey(it.name)}: ${exampleValue(ent, ent.op && ent.op.create, it.name, 'example_' + it.name)},
313
313
  `)
314
314
  })
315
315
  Content(`})
@@ -325,7 +325,7 @@ const result = await client.${ent.Name}().create({
325
325
  .sort((a: any, b: any) =>
326
326
  (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
327
327
  const updateLines = updateItems.map((it: any) =>
328
- ` ${it.name}: ${exampleValue(ent, ent.op && ent.op.update, it.name,
328
+ ` ${jsKey(it.name)}: ${exampleValue(ent, ent.op && ent.op.update, it.name,
329
329
  it.name === idF ? ent.name + '_id' : it.name)},\n`).join('')
330
330
  Content(`\`\`\`ts
331
331
  const result = await client.${ent.Name}().update({
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, isAuthActive, packageName, envName, entityIdField, entityOps, opRequestShape, safeVarName } from '@voxgig/sdkgen'
2
+ import { cmp, Content, isAuthActive, packageName, envName, entityIdField, entityOps, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -29,7 +29,7 @@ const client = ${ctor}
29
29
 
30
30
  if (exampleEntity) {
31
31
  const eName = nom(exampleEntity, 'Name')
32
- const eVar = safeVarName(eName.toLowerCase(), 'js')
32
+ const eVar = exampleVarName(eName.toLowerCase(), 'js')
33
33
  // ACTIVE ops only — an inactive op generates no method, so an example
34
34
  // calling it would be wrong.
35
35
  const opnames = entityOps(exampleEntity)
@@ -57,7 +57,7 @@ for (const ${eVar} of ${eVar}s) {
57
57
 
58
58
  if (nestedEntity) {
59
59
  const neName = nom(nestedEntity, 'Name')
60
- const neVar = safeVarName(neName.toLowerCase(), 'js')
60
+ const neVar = exampleVarName(neName.toLowerCase(), 'js')
61
61
  const loadOp = nestedEntity.op && nestedEntity.op.load
62
62
 
63
63
  // Every REQUIRED load-match key (parent keys like page_id first, the
@@ -69,7 +69,7 @@ for (const ${eVar} of ${eVar}s) {
69
69
  .sort((a: any, b: any) =>
70
70
  (a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
71
71
  .map((it: any) =>
72
- ` ${it.name}: ${exampleValue(nestedEntity, loadOp, it.name,
72
+ ` ${jsKey(it.name)}: ${exampleValue(nestedEntity, loadOp, it.name,
73
73
  it.name === neIdF ? 'example_id' : 'example_' + it.name)},`)
74
74
 
75
75
  Content(`
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, entityIdField, pickExampleEntity, opRequestShape, safeVarName } from '@voxgig/sdkgen'
2
+ import { cmp, Content, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -25,7 +25,7 @@ const client = ${model.const.Name}SDK.test()
25
25
  if (exampleEntity && primaryOp) {
26
26
  const eName = nom(exampleEntity, 'Name')
27
27
  // A list() result is an array — name the variable accordingly.
28
- const eVar = safeVarName(eName.toLowerCase(), 'js') +
28
+ const eVar = exampleVarName(eName.toLowerCase(), 'js') +
29
29
  ('list' === primaryOp ? 's' : '')
30
30
  const primaryOpDef = exampleEntity.op && exampleEntity.op[primaryOp]
31
31
  const idF = entityIdField(exampleEntity)
@@ -39,7 +39,7 @@ const client = ${model.const.Name}SDK.test()
39
39
  (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
40
40
  arg = 0 < items.length
41
41
  ? `{ ${items.map((it: any) =>
42
- `${it.name}: ${exampleValue(exampleEntity, primaryOpDef, it.name,
42
+ `${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name,
43
43
  it.name === idF ? 'test01' : 'example_' + it.name)}`).join(', ')} }`
44
44
  : ''
45
45
  } else if ('create' === primaryOp || 'update' === primaryOp) {
@@ -48,7 +48,7 @@ const client = ${model.const.Name}SDK.test()
48
48
  const required = items.filter((it: any) => !it.optional)
49
49
  const chosen = required.length ? required : items.slice(0, 3)
50
50
  arg = `{ ${chosen.map((it: any) =>
51
- `${it.name}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`).join(', ')} }`
51
+ `${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`).join(', ')} }`
52
52
  }
53
53
  Content(`const ${eVar} = await client.${eName}().${primaryOp}(${arg})
54
54
  // ${eVar} is ${'list' === primaryOp ? 'an array of bare entities' : 'a bare entity'} populated with mock data
@@ -17,6 +17,7 @@ import {
17
17
  cmp,
18
18
  snakify,
19
19
  isAuthActive,
20
+ jsProp,
20
21
  } from '@voxgig/sdkgen'
21
22
 
22
23
 
@@ -47,7 +48,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
47
48
  apikey: env.${PROJECTNAME}_APIKEY,`
48
49
  : ''
49
50
 
50
- const opnames = Object.keys(entity.op)
51
+ const opnames = Object.keys(entity.op || {})
51
52
  const hasLoad = opnames.includes('load')
52
53
  const hasList = opnames.includes('list')
53
54
 
@@ -133,7 +134,7 @@ function directSetup(mockres) {
133
134
 
134
135
 
135
136
  function generateDirectLoad(model: Model, entity: ModelEntity) {
136
- const loadOp = entity.op.load
137
+ const loadOp = entity.op?.load
137
138
  const loadPoint: ModelPoint | undefined = loadOp?.points?.[0]
138
139
 
139
140
  if (null == loadPoint) {
@@ -144,7 +145,7 @@ function generateDirectLoad(model: Model, entity: ModelEntity) {
144
145
  const loadPath = normalizePathParams(loadPoint.parts || [], loadParams, loadPoint.rename?.param)
145
146
 
146
147
  // Get list info for live mode bootstrapping
147
- const listOp = entity.op.list
148
+ const listOp = entity.op?.list
148
149
  const listPoint = listOp?.points?.[0]
149
150
  const listParams = listPoint?.args?.params || []
150
151
  const listPath = listPoint ? normalizePathParams(listPoint.parts || [], listParams, listPoint.rename?.param) : ''
@@ -175,7 +176,7 @@ function generateDirectLoad(model: Model, entity: ModelEntity) {
175
176
  const listParamLines = liveListParams.map((lp: any) =>
176
177
  ` ${lp.name}: setup.idmap['${lp.key}'],`).join('\n')
177
178
  const ancestorParamLines = liveAncestorParams.map((lp: any) =>
178
- ` params.${lp.name} = setup.idmap['${lp.key}']`).join('\n')
179
+ ` ${jsProp('params', lp.name)} = setup.idmap['${lp.key}']`).join('\n')
179
180
 
180
181
  liveParamsBlock = ` if (setup.live) {
181
182
  const listResult = await client.direct({
@@ -193,11 +194,11 @@ ${listParamLines}
193
194
  params.id = listData[0].id
194
195
  ${ancestorParamLines}
195
196
  } else {
196
- ${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i + 1}'`).join('\n')}
197
+ ${loadParams.map((p: any, i: number) => ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')}
197
198
  }`
198
199
  } else {
199
200
  liveParamsBlock = ` if (!setup.live) {
200
- ${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i + 1}'`).join('\n')}
201
+ ${loadParams.map((p: any, i: number) => ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')}
201
202
  }`
202
203
  }
203
204
 
@@ -230,7 +231,7 @@ ${paramAsserts} }
230
231
 
231
232
 
232
233
  function generateDirectList(model: Model, entity: ModelEntity) {
233
- const listOp = entity.op.list
234
+ const listOp = entity.op?.list
234
235
  const listPoint: ModelPoint | undefined = listOp?.points?.[0]
235
236
 
236
237
  if (null == listPoint) {
@@ -254,9 +255,9 @@ function generateDirectList(model: Model, entity: ModelEntity) {
254
255
  let paramsBlock = ''
255
256
  if (listParams.length > 0) {
256
257
  const liveLines = liveParams.map((lp: any) =>
257
- ` params.${lp.name} = setup.idmap['${lp.key}']`).join('\n')
258
+ ` ${jsProp('params', lp.name)} = setup.idmap['${lp.key}']`).join('\n')
258
259
  const mockLines = listParams.map((p: any, i: number) =>
259
- ` params.${p.name} = 'direct0${i + 1}'`).join('\n')
260
+ ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')
260
261
 
261
262
  paramsBlock = ` const params = {}
262
263
  if (setup.live) {
@@ -30,6 +30,7 @@ import {
30
30
  cmp,
31
31
  each,
32
32
  isAuthActive,
33
+ entityDataIdField,
33
34
  } from '@voxgig/sdkgen'
34
35
 
35
36
 
@@ -270,6 +271,7 @@ const generateCreate: OpGen = (ctx, step, index) => {
270
271
 
271
272
  const generateList: OpGen = (ctx, step, index) => {
272
273
  const { entity, flow } = ctx
274
+ const hasDataId = null != entityDataIdField(entity)
273
275
  const ref = step.input.ref ?? entity.name + '_ref01'
274
276
  const entvar = step.input.entvar ?? ref + '_ent'
275
277
  const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
@@ -304,12 +306,12 @@ const generateList: OpGen = (ctx, step, index) => {
304
306
  const hasRefData = validRef && allSteps.some(s => 'create' === s.op &&
305
307
  ((s.input.ref ?? entity.name + '_ref01') === validRef))
306
308
 
307
- if ('ItemExists' === validator.apply && hasRefData) {
309
+ if ('ItemExists' === validator.apply && hasRefData && hasDataId) {
308
310
  Content(`
309
311
  assert(!isempty(select(${listvar}, { id: ${validRef}_data.id })))
310
312
  `)
311
313
  }
312
- else if ('ItemNotExists' === validator.apply && hasRefData) {
314
+ else if ('ItemNotExists' === validator.apply && hasRefData && hasDataId) {
313
315
  Content(`
314
316
  assert(isempty(select(${listvar}, { id: ${validRef}_data.id })))
315
317
  `)
@@ -448,6 +450,9 @@ const generateLoad: OpGen = (ctx, step, index) => {
448
450
 
449
451
  const generateRemove: OpGen = (ctx, step, index) => {
450
452
  const { entity, flow } = ctx
453
+ if (null == entityDataIdField(entity)) {
454
+ return
455
+ }
451
456
  const ref = step.input.ref ?? entity.name + '_ref01'
452
457
  const entvar = step.input.entvar ?? ref + '_ent'
453
458
  const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
@@ -30,37 +30,6 @@ describe('EntityNameEntity', async () => {
30
30
  })
31
31
 
32
32
 
33
- // Feature #4: the entity `stream(action, ...)` method runs the op pipeline
34
- // and returns an async iterator over result items. With the streaming
35
- // feature active it yields the feature's incremental output; otherwise it
36
- // falls back to the materialised list so `stream` always yields.
37
- test('stream', async () => {
38
- const seed = {
39
- entity: {
40
- EntityLower: { s1: { id: 's1' }, s2: { id: 's2' }, s3: { id: 's3' } }
41
- }
42
- }
43
-
44
- // Fallback: streaming inactive -> yields the materialised list items.
45
- const base = ProjectNameSDK.test(seed)
46
- const seen = []
47
- for await (const item of base.EntityName().stream('list')) {
48
- seen.push(item)
49
- }
50
- assert.equal(seen.length, 3)
51
-
52
- // Inbound: streaming active -> yields each item from the feature iterator.
53
- if (config.feature && config.feature.streaming) {
54
- const sdk = ProjectNameSDK.test(seed, { feature: { streaming: { active: true } } })
55
- const got = []
56
- for await (const item of sdk.EntityName().stream('list')) {
57
- if (Array.isArray(item)) { got.push(...item) } else { got.push(item) }
58
- }
59
- assert.equal(got.length, 3)
60
- }
61
- })
62
-
63
-
64
33
  test('basic', async () => {
65
34
  // <[SLOT:basic]>
66
35
  })
@@ -0,0 +1,200 @@
1
+
2
+ // Typed-model generator (Kotlin target). Port of EntityTypes_java.ts /
3
+ // EntityTypes_py.ts.
4
+ //
5
+ // Reads main.<KIT>.entity.<e>.fields[] and per-op params
6
+ // (op.<name>.points[].args.params[]) and emits ONE file, core/<Name>Types.kt,
7
+ // holding a container `object <Name>Types` with a nested `data class` per
8
+ // active entity plus a request/match type per active op.
9
+ //
10
+ // WHY A CONTAINER OBJECT: parity with the java/csharp emitters — every
11
+ // generated reference type lives inside a single `object <Name>Types`, so the
12
+ // whole reference model is in one file (<Name>Types.kt) whatever the entity
13
+ // count. Kotlin has no one-public-type-per-file rule, but the single-file
14
+ // convention is kept for cross-language consistency.
15
+ //
16
+ // TYPE CHOICE: reference types with BOXED (nullable) component types, NOT the
17
+ // wired runtime type. The generated ops take/return the loose object model
18
+ // (MutableMap<String, Any?> / Any?), so these types are NOT wired into the op
19
+ // signatures — they are documentation/DX reference shapes a caller may use to
20
+ // describe a payload before converting it to a map. This mirrors the JS
21
+ // target's JSDoc typedefs (annotation only, no runtime effect). Emitting unused
22
+ // types is harmless — they compile and have no runtime effect.
23
+ //
24
+ // OPTIONAL FIELDS: every component is a nullable reference type, so a
25
+ // `req:false` field/param needs no distinct rendering in Kotlin.
26
+ //
27
+ // EMPTY SHAPES: Kotlin forbids a `data class` with zero components, so an
28
+ // empty shape is emitted as a plain marker `class <Name>` instead.
29
+ //
30
+ // Sentinels map to Kotlin types via the SHARED canonToType 'kotlin' column
31
+ // (the single source of truth per language — do not keep a local table here).
32
+ //
33
+ // Keep the SAME type-name scheme as every other language: <Name>,
34
+ // <Name>LoadMatch, <Name>ListMatch, <Name>CreateData, <Name>UpdateData,
35
+ // <Name>RemoveMatch (via the shared opTypeName helper).
36
+
37
+ import {
38
+ cmp, each, names,
39
+ File, Content,
40
+ } from '@voxgig/sdkgen'
41
+
42
+ import { canonToType, opTypeName, opRequestShape, warnEntityTypeCollisions , deriveEntityNames } from '@voxgig/sdkgen'
43
+
44
+ import {
45
+ KIT,
46
+ getModelPath,
47
+ } from '@voxgig/apidef'
48
+
49
+ import { kotlinPackage } from './utility_kotlin'
50
+
51
+
52
+ // Kotlin hard keywords that cannot be a (non-escaped) property name.
53
+ const KOTLIN_KEYWORDS = new Set<string>([
54
+ 'as', 'break', 'class', 'continue', 'do', 'else', 'false', 'for', 'fun',
55
+ 'if', 'in', 'interface', 'is', 'null', 'object', 'package', 'return',
56
+ 'super', 'this', 'throw', 'true', 'try', 'typealias', 'typeof', 'val',
57
+ 'var', 'when', 'while',
58
+ ])
59
+
60
+
61
+ // A field/param name that has a safe Kotlin identifier rendering. Names that
62
+ // are not valid identifiers (hyphens, leading digits) have no clean component
63
+ // form and are skipped — they remain reachable via the runtime map.
64
+ function kotlinIdent(name: string): boolean {
65
+ return /^[A-Za-z_][A-Za-z0-9_]*$/.test(name) && !KOTLIN_KEYWORDS.has(name)
66
+ }
67
+
68
+
69
+ const LANG = 'kotlin'
70
+
71
+
72
+ // Emit a nested `data class <typeName>(...)` from {name, type} items. An item
73
+ // whose name is not a legal identifier is skipped (WITH a warning — the key
74
+ // stays reachable via the runtime map, but its absence from the typed model
75
+ // should be visible, not silent); a duplicate component name (after the
76
+ // identifier filter) is dropped. An empty shape becomes a plain marker
77
+ // `class <typeName>` (Kotlin forbids a zero-component data class).
78
+ function emitRecord(typeName: string, items: any[], log?: any): void {
79
+ const seen = new Set<string>()
80
+ const usable = items.filter((it: any) => {
81
+ if (!it || null == it.name) {
82
+ return false
83
+ }
84
+ if (!kotlinIdent(it.name)) {
85
+ if (log && log.warn) {
86
+ log.warn({
87
+ point: 'entity-types-skip-field', typeName, field: it.name,
88
+ note: `kotlin: field "${it.name}" of ${typeName} has no legal ` +
89
+ `Kotlin identifier form; omitted from the typed model (still ` +
90
+ `reachable via the runtime map)`,
91
+ })
92
+ }
93
+ return false
94
+ }
95
+ if (seen.has(it.name)) {
96
+ return false
97
+ }
98
+ seen.add(it.name)
99
+ return true
100
+ })
101
+
102
+ if (0 === usable.length) {
103
+ Content(` class ${typeName}
104
+
105
+ `)
106
+ return
107
+ }
108
+
109
+ const params = usable
110
+ .map((it: any) => `val ${it.name}: ${canonToType(it.type, LANG)}`)
111
+ .join(', ')
112
+ Content(` data class ${typeName}(${params})
113
+
114
+ `)
115
+ }
116
+
117
+
118
+ const EntityTypes = cmp(function EntityTypes(props: any) {
119
+ const { model, log } = props.ctx$
120
+ const target = props.target || {}
121
+ const ext = target.ext || 'kt'
122
+
123
+ const kotlinpackage = props.kotlinpackage || kotlinPackage(model)
124
+
125
+ // only_active:false — getModelPath DROPS active:false entries by default,
126
+ // but the consumer scaffold (create-sdkgen Root.ts) iterates the RAW entity
127
+ // collection, so inactive entities still get generated entity code that
128
+ // references these typed names. The typed model must cover them too.
129
+ const entity = getModelPath(model, `main.${KIT}.entity`, { only_active: false, required: false })
130
+ // Emit for EVERY entity that gets generated entity code: the consumer
131
+ // scaffold (create-sdkgen Root.ts) iterates entities WITHOUT an active
132
+ // filter, so inactive entities still get class files referencing these
133
+ // typed names. Filter on `name` (always present), NOT `active` — parity
134
+ // with the go emitter's fix.
135
+ const entityList = deriveEntityNames(entity)
136
+ // Derive the PascalCase Name up-front — it is set LAZILY by names(), so an
137
+ // entity not yet named (e.g. a fieldless placeholder) would otherwise read
138
+ // `Name = undefined` below. Parity with the go/py/csharp/java emitter's fix.
139
+
140
+ // Surface duplicate generated type names (two entities with the same
141
+ // PascalCase Name) — they would redeclare a type in statically-typed
142
+ // targets. Detection only; renaming is a model-level decision.
143
+ warnEntityTypeCollisions(entity, log, LANG)
144
+
145
+ File({ name: model.const.Name + 'Types.' + ext }, () => {
146
+
147
+ Content(`package ${kotlinpackage}.core
148
+
149
+ // Typed reference models for the ${model.const.Name} SDK.
150
+ //
151
+ // GENERATED from the API model: main.${KIT}.entity.<e>.fields[] and per-op
152
+ // params (op.<name>.points[].args.params[]). Field/param types come from the
153
+ // canonical type sentinels (source of truth: @voxgig/apidef VALID_CANON). Do
154
+ // not edit by hand.
155
+ //
156
+ // These types are documentation/DX reference shapes ONLY. The SDK ops take and
157
+ // return the loose object model (MutableMap<String, Any?> / Any?) at runtime,
158
+ // so these types are not wired into the op signatures — use them to describe a
159
+ // payload before converting it to a map. Every component is a nullable type, so
160
+ // an optional (req:false) key needs no distinct rendering.
161
+
162
+ @Suppress("unused")
163
+ object ${model.const.Name}Types {
164
+
165
+ `)
166
+
167
+ entityList.forEach((ent: any) => {
168
+ const Name = ent.Name
169
+ const fields = (ent.fields ? each(ent.fields) : [])
170
+ .filter((f: any) => f.active !== false)
171
+
172
+ // Entity data model: one component per field.
173
+ emitRecord(Name, fields.map((f: any) => ({
174
+ name: f.name, type: f.type,
175
+ })), log)
176
+
177
+ // Per active op: a request/match type. Members come from the shared
178
+ // partiality policy (opRequestShape).
179
+ const ops = ent.op || {}
180
+ ;['load', 'list', 'create', 'update', 'remove'].forEach((opname: string) => {
181
+ if (null == ops[opname]) {
182
+ return
183
+ }
184
+
185
+ const typeName = opTypeName(Name, opname)
186
+ const { items } = opRequestShape(ent, opname)
187
+
188
+ emitRecord(typeName, items, log)
189
+ })
190
+ })
191
+
192
+ Content(`}
193
+ `)
194
+ })
195
+ })
196
+
197
+
198
+ export {
199
+ EntityTypes,
200
+ }