@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
@@ -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 TYPE (entityClassName); the accessor METHOD
16
16
  // name (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?: any) {
21
+ // The argument is the entity OPTIONS object (passed to the entity
22
+ // constructor as entopts), not initial entity data.
23
+ ${entity.Name}(entopts?: Record<string, any>) {
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(`import { ${cls} } from './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, target.name)
49
+ const eVar = exampleVarName(entity.name, target.name)
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
@@ -143,7 +143,7 @@ const ${eVar}s = await client.${entity.Name}().list()
143
143
  const ${eVar} = await client.${entity.Name}().create({
144
144
  `)
145
145
  createItems.map((it: any) => {
146
- Content(` ${it.name}: ${exampleValue(entity, entity.op && entity.op.create, it.name, 'example_' + it.name)},
146
+ Content(` ${jsKey(it.name)}: ${exampleValue(entity, entity.op && entity.op.create, it.name, 'example_' + it.name)},
147
147
  `)
148
148
  })
149
149
  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,
@@ -20,7 +20,7 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
20
20
  const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
21
21
  const eName = exampleEntity ? nom(exampleEntity, 'Name') : 'Entity'
22
22
  // Variable-safe lowercase name (a `Delete` entity must not bind `delete`).
23
- const eVar = safeVarName(eName.toLowerCase(), 'ts')
23
+ const eVar = exampleVarName(eName.toLowerCase(), 'ts')
24
24
 
25
25
  const primaryOpDef = exampleEntity && primaryOp && exampleEntity.op && exampleEntity.op[primaryOp]
26
26
  const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
@@ -35,7 +35,17 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
35
35
  if (!exampleEntity || !primaryOp) return ''
36
36
  if ('list' === primaryOp) return ''
37
37
  if (isMatchOp) {
38
- return idF ? `{ ${idF}: ${exampleValue(exampleEntity, primaryOpDef, idF, idPlaceholder)} }` : ''
38
+ // Every REQUIRED match key (id first), not just idF a composite-match
39
+ // entity (e.g. Umbrella's FlatPermission, database_id + id) needs them all
40
+ // to satisfy the typed <Name>LoadMatch. Mirrors ReadmeTopTest.
41
+ const items = opRequestShape(exampleEntity, primaryOp).items
42
+ .filter((it: any) => !it.optional || it.name === idF)
43
+ .sort((a: any, b: any) => (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
44
+ if (0 === items.length) return ''
45
+ const pairs = items.map((it: any) =>
46
+ `${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name,
47
+ it.name === idF ? idPlaceholder : 'example_' + it.name)}`)
48
+ return `{ ${pairs.join(', ')} }`
39
49
  }
40
50
  // create / update: a body of the required writable fields.
41
51
  const items = opRequestShape(exampleEntity, primaryOp).items
@@ -43,7 +53,7 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
43
53
  const required = items.filter((it: any) => !it.optional)
44
54
  const chosen = required.length ? required : items.slice(0, 3)
45
55
  const pairs = chosen.map((it: any) =>
46
- `${it.name}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`)
56
+ `${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`)
47
57
  return `{ ${pairs.join(', ')} }`
48
58
  }
49
59
  const testCallArg = primaryArg('test01')
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, each, Content, isAuthActive, packageName, envName, opRequestShape, entityIdField, entityDataIdField, entityOps, safeVarName } from '@voxgig/sdkgen'
2
+ import { cmp, each, Content, isAuthActive, packageName, envName, opRequestShape, entityIdField, entityDataIdField, entityOps, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -48,7 +48,7 @@ const client = ${ctor}
48
48
  const eName = nom(exampleEntity, 'Name')
49
49
  // Variable-safe lowercase name — a `Delete`/`Class` entity must not bind a
50
50
  // reserved word (`const delete = ...` is a TS1109 syntax error).
51
- const eVar = safeVarName(eName.toLowerCase(), 'ts')
51
+ const eVar = exampleVarName(eName.toLowerCase(), 'ts')
52
52
  const article = /^[aeiou]/i.test(eName) ? 'an' : 'a'
53
53
  const opnames = entityOps(exampleEntity)
54
54
  // Model-driven id key: `idF` is the entity's id-like MATCH field name, or
@@ -78,7 +78,7 @@ for (const ${eVar} of ${eVar}s) {
78
78
 
79
79
  if (nestedEntity) {
80
80
  const neName = nom(nestedEntity, 'Name')
81
- const neVar = safeVarName(neName.toLowerCase(), 'ts')
81
+ const neVar = exampleVarName(neName.toLowerCase(), 'ts')
82
82
  const neArticle = /^[aeiou]/i.test(neName) ? 'an' : 'a'
83
83
  const loadOp = nestedEntity.op && nestedEntity.op.load
84
84
 
@@ -94,7 +94,7 @@ for (const ${eVar} of ${eVar}s) {
94
94
  const parentParam = parentItem && parentItem.name
95
95
  const parentName = parentParam ? parentParam.replace(/_id$/, '') : 'its parent'
96
96
  const neMatchLines = neRequired.map((it: any) =>
97
- ` ${it.name}: ${exampleValue(nestedEntity, loadOp, it.name,
97
+ ` ${jsKey(it.name)}: ${exampleValue(nestedEntity, loadOp, it.name,
98
98
  it.name === neIdF ? 'example_id' : 'example_' + it.name)},`)
99
99
 
100
100
  Content(`### 3. Load ${neArticle} ${neName.toLowerCase()}
@@ -124,7 +124,7 @@ ${neMatchLines.join('\n')}
124
124
  (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
125
125
  const loadArg = 0 < loadRequired.length
126
126
  ? `{ ${loadRequired.map((it: any) =>
127
- `${it.name}: ${exampleValue(exampleEntity, exampleEntity.op && exampleEntity.op.load, it.name,
127
+ `${jsKey(it.name)}: ${exampleValue(exampleEntity, exampleEntity.op && exampleEntity.op.load, it.name,
128
128
  it.name === idF ? 'example_id' : 'example_' + it.name)}`).join(', ')} }`
129
129
  : ''
130
130
 
@@ -169,15 +169,33 @@ try {
169
169
  ? (required.length ? required : items.slice(0, 2))
170
170
  : required.concat(optional).slice(0, Math.max(2, required.length))
171
171
  return chosen.map((it: any) =>
172
- ` ${it.name}: ${exampleValue(exampleEntity, exampleEntity.op[opname], it.name, 'example_' + it.name)},`)
172
+ ` ${jsKey(it.name)}: ${exampleValue(exampleEntity, exampleEntity.op[opname], it.name, 'example_' + it.name)},`)
173
173
  }
174
174
 
175
175
  // The id VALUE for an update/remove match. When the entity's DATA type
176
176
  // carries the id (dataIdF) AND a `created` record exists, take it off the
177
177
  // returned record; otherwise use a type-correct literal — reading
178
178
  // `created.id` off an id-less data type is a TS2339.
179
- const canUseCreatedId = null != dataIdF && opnames.includes('create')
180
- const idValueFor = (opname: string): string => canUseCreatedId
179
+ // Type of the data field we would read off `created` (e.g. number for an
180
+ // integer id). null when unknown.
181
+ const dataFields: any[] = exampleEntity.fields ? each(exampleEntity.fields) : []
182
+ const dataIdType = dataIdF
183
+ ? (dataFields.find((f: any) => f && f.name === dataIdF) || {}).type
184
+ : null
185
+ // `created.<dataIdF>` is only usable as an op's id-match value when its
186
+ // type matches that op's id PARAM type. An id that is integer in the data
187
+ // type but string in the match path (a spec quirk seen on management
188
+ // APIs) would be a TS2322 otherwise — fall back to a type-correct literal.
189
+ const usesCreatedId = (opname: string): boolean => {
190
+ if (null == dataIdF || !opnames.includes('create')) {
191
+ return false
192
+ }
193
+ const matchItem = opRequestShape(exampleEntity, opname).items
194
+ .find((it: any) => it.name === idF)
195
+ const matchType = matchItem ? matchItem.type : null
196
+ return null == matchType || null == dataIdType || matchType === dataIdType
197
+ }
198
+ const idValueFor = (opname: string): string => usesCreatedId(opname)
181
199
  ? `created.${dataIdF}!`
182
200
  : exampleValue(exampleEntity, exampleEntity.op[opname], idF as string, 'example_id')
183
201
 
@@ -198,7 +216,7 @@ const created = await client.${eName}().create({${createBody}})
198
216
  // type carries one, else a literal), plus a couple of patch fields.
199
217
  const updateLines = (idF ? [` ${idF}: ${idValueFor('update')},`] : []).concat(exampleFields('update'))
200
218
  const updateBody = updateLines.length ? '\n' + updateLines.join('\n') + '\n' : ''
201
- Content(`// Update${canUseCreatedId ? ' — the id comes straight off the returned entity' : ''}
219
+ Content(`// Update${usesCreatedId('update') ? ' — the id comes straight off the returned entity' : ''}
202
220
  const updated = await client.${eName}().update({${updateBody}})
203
221
 
204
222
  `)
@@ -211,8 +229,8 @@ const updated = await client.${eName}().update({${updateBody}})
211
229
  .sort((a: any, b: any) =>
212
230
  (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
213
231
  .map((it: any) => it.name === idF
214
- ? ` ${it.name}: ${idValueFor('remove')},`
215
- : ` ${it.name}: ${exampleValue(exampleEntity, exampleEntity.op.remove, it.name, 'example_' + it.name)},`)
232
+ ? ` ${jsKey(it.name)}: ${idValueFor('remove')},`
233
+ : ` ${jsKey(it.name)}: ${exampleValue(exampleEntity, exampleEntity.op.remove, it.name, 'example_' + it.name)},`)
216
234
  Content(`// Remove
217
235
  await client.${eName}().remove(${removeLines.length ? `{\n${removeLines.join('\n')}\n}` : ''})
218
236
  `)
@@ -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, target.name)
188
+ const eVar = exampleVarName(ent.name, target.name)
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
@@ -308,7 +308,7 @@ const results = await client.${ent.Name}().${opname}()
308
308
  const result = await client.${ent.Name}().create({
309
309
  `)
310
310
  createItems.map((it: any) => {
311
- Content(` ${it.name}: ${exampleValue(ent, ent.op && ent.op.create, it.name, 'example_' + it.name)},
311
+ Content(` ${jsKey(it.name)}: ${exampleValue(ent, ent.op && ent.op.create, it.name, 'example_' + it.name)},
312
312
  `)
313
313
  })
314
314
  Content(`})
@@ -324,7 +324,7 @@ const result = await client.${ent.Name}().create({
324
324
  .sort((a: any, b: any) =>
325
325
  (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
326
326
  const updateLines = updateItems.map((it: any) =>
327
- ` ${it.name}: ${exampleValue(ent, ent.op && ent.op.update, it.name,
327
+ ` ${jsKey(it.name)}: ${exampleValue(ent, ent.op && ent.op.update, it.name,
328
328
  it.name === idF ? ent.name + '_id' : it.name)},\n`).join('')
329
329
  Content(`\`\`\`ts
330
330
  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,
@@ -30,7 +30,7 @@ const client = ${ctor}
30
30
 
31
31
  if (exampleEntity) {
32
32
  const eName = nom(exampleEntity, 'Name')
33
- const eVar = safeVarName(eName.toLowerCase(), 'ts')
33
+ const eVar = exampleVarName(eName.toLowerCase(), 'ts')
34
34
  const opnames = entityOps(exampleEntity)
35
35
 
36
36
  let hasCall = false
@@ -58,7 +58,7 @@ for (const ${eVar} of ${eVar}s) {
58
58
 
59
59
  if (nestedEntity) {
60
60
  const neName = nom(nestedEntity, 'Name')
61
- const neVar = safeVarName(neName.toLowerCase(), 'ts')
61
+ const neVar = exampleVarName(neName.toLowerCase(), 'ts')
62
62
  const loadOp = nestedEntity.op && nestedEntity.op.load
63
63
 
64
64
  // Every REQUIRED load-match key (parent keys first, own id last) — the
@@ -70,7 +70,7 @@ for (const ${eVar} of ${eVar}s) {
70
70
  .sort((a: any, b: any) =>
71
71
  (a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
72
72
  .map((it: any) =>
73
- ` ${it.name}: ${exampleValue(nestedEntity, loadOp, it.name,
73
+ ` ${jsKey(it.name)}: ${exampleValue(nestedEntity, loadOp, it.name,
74
74
  it.name === neIdF ? 'example_id' : 'example_' + it.name)},`)
75
75
 
76
76
  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(), 'ts') +
28
+ const eVar = exampleVarName(eName.toLowerCase(), 'ts') +
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 ${eName} records` : `a bare ${eName}`} populated with mock data
@@ -17,6 +17,8 @@ import {
17
17
  cmp,
18
18
  snakify,
19
19
  isAuthActive,
20
+ jsProp,
21
+ jsOptProp,
20
22
  } from '@voxgig/sdkgen'
21
23
 
22
24
 
@@ -47,7 +49,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
47
49
  apikey: env.${PROJECTNAME}_APIKEY,`
48
50
  : ''
49
51
 
50
- const opnames = Object.keys(entity.op)
52
+ const opnames = Object.keys(entity.op || {})
51
53
  const hasLoad = opnames.includes('load')
52
54
  const hasList = opnames.includes('list')
53
55
 
@@ -149,7 +151,7 @@ function unwrapListData(data: any): any[] | null {
149
151
 
150
152
 
151
153
  function generateDirectLoad(model: Model, entity: ModelEntity) {
152
- const loadOp = entity.op.load
154
+ const loadOp = entity.op?.load
153
155
  const loadPoint: ModelPoint | undefined = loadOp?.points?.[0]
154
156
 
155
157
  if (null == loadPoint) {
@@ -192,11 +194,11 @@ function generateDirectLoad(model: Model, entity: ModelEntity) {
192
194
  .filter((q: any) => q.reqd && undefined !== q.example && null !== q.example)
193
195
  const hasLiveQuery = liveQueryEntries.length > 0
194
196
  const liveQueryLines = liveQueryEntries
195
- .map((q: any) => ` query.${q.name} = ${JSON.stringify(q.example)}`)
197
+ .map((q: any) => ` ${jsProp('query', q.name)} = ${JSON.stringify(q.example)}`)
196
198
  .join('\n')
197
199
 
198
200
  // Get list info for live mode bootstrapping
199
- const listOp = entity.op.list
201
+ const listOp = entity.op?.list
200
202
  const listPoint = listOp?.points?.[0]
201
203
  const listParams = listPoint?.args?.params || []
202
204
  const listPath = listPoint ? normalizePathParams(listPoint.parts || [], listParams, listPoint.rename?.param) : ''
@@ -245,12 +247,12 @@ function generateDirectLoad(model: Model, entity: ModelEntity) {
245
247
  let liveParamsBlock = ''
246
248
  if (allLoadParamsHaveExamples) {
247
249
  const exampleLines = loadParams.map(
248
- (p: any) => ` params.${p.name} = ${JSON.stringify(p.example)}`
250
+ (p: any) => ` ${jsProp('params', p.name)} = ${JSON.stringify(p.example)}`
249
251
  ).join('\n')
250
252
  liveParamsBlock = ` if (setup.live) {
251
253
  ${liveQueryPrefix}${exampleLines}
252
254
  } else {
253
- ${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i + 1}'`).join('\n')}
255
+ ${loadParams.map((p: any, i: number) => ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')}
254
256
  }`
255
257
  }
256
258
  else if (hasList) {
@@ -262,7 +264,7 @@ ${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i +
262
264
  const listParamLines = liveListParams.map((lp: any) =>
263
265
  ` ${lp.name}: setup.idmap['${lp.key}'],`).join('\n')
264
266
  const ancestorParamLines = liveAncestorParams.map((lp: any) =>
265
- ` params.${lp.name} = setup.idmap['${lp.key}']`).join('\n')
267
+ ` ${jsProp('params', lp.name)} = setup.idmap['${lp.key}']`).join('\n')
266
268
  // Try every load-path param name as the candidate field on listData[0].
267
269
  // Some APIs name the path param differently from the response field
268
270
  // (e.g. path uses {id} while response has mal_id), so we attempt the
@@ -286,14 +288,14 @@ ${listParamLines}
286
288
  if (null == listArr || listArr.length === 0) {
287
289
  return // skip: no entities to load in live mode
288
290
  }
289
- const candidateId = listArr[0]?.${idParamName} ?? listArr[0]?.id
291
+ const candidateId = ${jsOptProp('listArr[0]', idParamName)} ?? listArr[0]?.id
290
292
  if (null == candidateId) {
291
293
  return // skip: list response shape does not expose load identifier
292
294
  }
293
- params.${idParamName} = candidateId
295
+ ${jsProp('params', idParamName)} = candidateId
294
296
  ${ancestorParamLines}
295
297
  } else {
296
- ${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i + 1}'`).join('\n')}
298
+ ${loadParams.map((p: any, i: number) => ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')}
297
299
  }`
298
300
  } else if (hasLiveQuery || loadParams.length > 0) {
299
301
  // Synthetic-only fallback: if there are load params with no examples
@@ -306,7 +308,7 @@ ${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i +
306
308
  liveParamsBlock = ` if (setup.live) {
307
309
  ${liveQueryPrefix.replace(/\n$/, '')}
308
310
  } else {
309
- ${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i + 1}'`).join('\n')}
311
+ ${loadParams.map((p: any, i: number) => ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')}
310
312
  }`
311
313
  } else {
312
314
  liveParamsBlock = ''
@@ -354,7 +356,7 @@ ${paramAsserts} }
354
356
 
355
357
 
356
358
  function generateDirectList(model: Model, entity: ModelEntity) {
357
- const listOp = entity.op.list
359
+ const listOp = entity.op?.list
358
360
  const listPoint: ModelPoint | undefined = listOp?.points?.[0]
359
361
 
360
362
  if (null == listPoint) {
@@ -369,7 +371,7 @@ function generateDirectList(model: Model, entity: ModelEntity) {
369
371
  const listQuery = listPoint.args?.query || []
370
372
  const liveQueryLines = listQuery
371
373
  .filter((q: any) => q.reqd && undefined !== q.example && null !== q.example)
372
- .map((q: any) => ` query.${q.name} = ${JSON.stringify(q.example)}`)
374
+ .map((q: any) => ` ${jsProp('query', q.name)} = ${JSON.stringify(q.example)}`)
373
375
  .join('\n')
374
376
 
375
377
  // Build live params
@@ -388,10 +390,10 @@ function generateDirectList(model: Model, entity: ModelEntity) {
388
390
  const liveLines = [
389
391
  liveQueryLines,
390
392
  liveParams.map((lp: any) =>
391
- ` params.${lp.name} = setup.idmap['${lp.key}']`).join('\n'),
393
+ ` ${jsProp('params', lp.name)} = setup.idmap['${lp.key}']`).join('\n'),
392
394
  ].filter(Boolean).join('\n')
393
395
  const mockLines = listParams.map((p: any, i: number) =>
394
- ` params.${p.name} = 'direct0${i + 1}'`).join('\n')
396
+ ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')
395
397
 
396
398
  paramsBlock = ` const params: any = {}
397
399
  const query: any = {}
@@ -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
 
@@ -314,6 +315,7 @@ const generateCreate: OpGen = (ctx, step, index) => {
314
315
 
315
316
  const generateList: OpGen = (ctx, step, index) => {
316
317
  const { entity, flow } = ctx
318
+ const hasDataId = null != entityDataIdField(entity)
317
319
  const ref = step.input.ref ?? entity.name + '_ref01'
318
320
  const entvar = step.input.entvar ?? ref + '_ent'
319
321
  const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
@@ -348,12 +350,18 @@ const generateList: OpGen = (ctx, step, index) => {
348
350
  const hasRefData = validRef && allSteps.some(s => 'create' === s.op &&
349
351
  ((s.input.ref ?? entity.name + '_ref01') === validRef))
350
352
 
351
- if ('ItemExists' === validator.apply && hasRefData) {
353
+ // Guard on a DATA id field (entityDataIdField), NOT entity.id (the load-MATCH
354
+ // key): an entity can have a match id in its path while its RESPONSE record
355
+ // has no `id` field (e.g. Multichannel's Template — data fields meta/status/…,
356
+ // no id). Then `${validRef}_data.id` is undefined and select(list, { id:
357
+ // undefined }) spuriously matches id-less records, so ItemExists/ItemNotExists
358
+ // are meaningless. Emit them only when `.id` is a real data field.
359
+ if ('ItemExists' === validator.apply && hasRefData && hasDataId) {
352
360
  Content(`
353
361
  assert(!isempty(select(${listvar}, { id: ${validRef}_data.id })))
354
362
  `)
355
363
  }
356
- else if ('ItemNotExists' === validator.apply && hasRefData) {
364
+ else if ('ItemNotExists' === validator.apply && hasRefData && hasDataId) {
357
365
  Content(`
358
366
  assert(isempty(select(${listvar}, { id: ${validRef}_data.id })))
359
367
  `)
@@ -524,6 +532,14 @@ const generateRemove: OpGen = (ctx, step, index) => {
524
532
  const needsEnt = !priorSteps.some(s =>
525
533
  ['create', 'list', 'load', 'update', 'remove'].includes(s.op))
526
534
 
535
+ // "Remove what you created" needs the created record's id. An entity with
536
+ // no DATA id field (entityDataIdField null — e.g. Multichannel's Template)
537
+ // returns records without `.id`, so `${srcdatavar}.id` is absent (a py
538
+ // KeyError; a silent nil elsewhere). Skip the flow-remove step for those —
539
+ // the remove op is still exercised by the direct() test.
540
+ if (null == entityDataIdField(entity)) {
541
+ return
542
+ }
527
543
  Content(`
528
544
  // REMOVE
529
545
  `)
@@ -93,14 +93,32 @@ pub fn make_config() Value {
93
93
  pub fn make_feature(name: []const u8) Feature {
94
94
  `)
95
95
 
96
+ // The factory must be able to instantiate any built-in feature by name,
97
+ // not just the ones the current API model configures — a caller can enable
98
+ // a shipped feature (e.g. netsim) purely through runtime options even when
99
+ // the API def does not list it. The built-in set mirrors the feature
100
+ // templates in tm/zig/feature/ (excluding `base`, the fallback, and
101
+ // `support`, a helper module). Any model feature not already built in is
102
+ // appended so bespoke features still resolve.
103
+ const builtinFeatures = [
104
+ 'audit', 'cache', 'clienttrack', 'debug', 'idempotency', 'log',
105
+ 'metrics', 'netsim', 'paging', 'proxy', 'ratelimit', 'rbac',
106
+ 'retry', 'streaming', 'telemetry', 'test', 'timeout',
107
+ ]
108
+
109
+ const featureNames: string[] = [...builtinFeatures]
96
110
  each(feature, (f: any) => {
97
- const fname = f.name.charAt(0).toUpperCase() + f.name.slice(1)
98
- if (f.name !== 'base') {
99
- Content(` if (std.mem.eql(u8, name, "${f.name}")) return @import("../feature/${f.name}.zig").${fname}Feature.make();
100
- `)
111
+ if (f.name !== 'base' && !featureNames.includes(f.name)) {
112
+ featureNames.push(f.name)
101
113
  }
102
114
  })
103
115
 
116
+ featureNames.forEach((name: string) => {
117
+ const fname = name.charAt(0).toUpperCase() + name.slice(1)
118
+ Content(` if (std.mem.eql(u8, name, "${name}")) return @import("../feature/${name}.zig").${fname}Feature.make();
119
+ `)
120
+ })
121
+
104
122
  Content(` return @import("../feature/base.zig").BaseFeature.make();
105
123
  }
106
124
  `)
@@ -4,7 +4,7 @@ import * as Path from 'node:path'
4
4
  import {
5
5
  cmp, camelify,
6
6
  File, Content, Folder, Fragment,
7
- entityClassName,
7
+ entityClassName, entityCollection,
8
8
  } from '@voxgig/sdkgen'
9
9
 
10
10
  import {
@@ -20,7 +20,7 @@ const Entity = cmp(function Entity(props: any) {
20
20
  const { model, stdrep } = props.ctx$
21
21
  const { target, entity } = props
22
22
 
23
- const entityColl = getModelPath(model, `main.${KIT}.entity`)
23
+ const entityColl = entityCollection(model)
24
24
  const cls = entityClassName(entity, entityColl)
25
25
 
26
26
  const entrep = {
@@ -34,7 +34,7 @@ const Entity = cmp(function Entity(props: any) {
34
34
 
35
35
  File({ name: zigVarName(entity.name) + '.' + target.ext }, () => {
36
36
 
37
- const opnames = Object.keys(entity.op)
37
+ const opnames = Object.keys(entity.op || {})
38
38
 
39
39
  // For each CRUD op: if the spec defines it, splice in the real
40
40
  // implementation. Otherwise emit a stub returning the unsupported_op
@@ -48,7 +48,7 @@ const Entity = cmp(function Entity(props: any) {
48
48
  ({ indent }: any) => {
49
49
  const arg = ('create' === opname || 'update' === opname) ?
50
50
  'reqdata' : 'reqmatch'
51
- Content({ indent }, `pub fn ${opname}(self: *EntyClass, _${arg}: Value, _ctrl: Value) OpResult {
51
+ Content({ indent }, `pub fn ${opname}(self: *${cls}, _${arg}: Value, _ctrl: Value) OpResult {
52
52
  _ = _${arg};
53
53
  _ = _ctrl;
54
54
  return .{ .err = h.unsupported_op("${opname}", self.name) };
@@ -1,5 +1,5 @@
1
1
 
2
- import { cmp, Content, entityClassName } from '@voxgig/sdkgen'
2
+ import { cmp, Content, entityClassName, entityCollection } from '@voxgig/sdkgen'
3
3
 
4
4
  import {
5
5
  KIT,
@@ -16,7 +16,7 @@ const MainEntity = cmp(async function MainEntity(props: any) {
16
16
  const { entity } = props
17
17
  const { model } = props.ctx$
18
18
 
19
- const entityColl = getModelPath(model, `main.${KIT}.entity`)
19
+ const entityColl = entityCollection(model)
20
20
  const cls = entityClassName(entity, entityColl)
21
21
  const method = zigVarName(entity.name)
22
22
  const mod = zigVarName(entity.name)
@@ -21,6 +21,7 @@ import {
21
21
  import { Config } from './Config_zig'
22
22
  import { Gitignore } from './Gitignore_zig'
23
23
  import { MainEntity } from './MainEntity_zig'
24
+ import { Package } from './Package_zig'
24
25
 
25
26
 
26
27
  const Main = cmp(async function Main(props: any) {
@@ -30,16 +31,21 @@ const Main = cmp(async function Main(props: any) {
30
31
 
31
32
  const entity: ModelEntity = getModelPath(model, `main.${KIT}.entity`)
32
33
 
34
+ // build.zig.zon — the package manifest, stamped with the model package name.
35
+ Package({ target })
36
+
33
37
  Gitignore({})
34
38
 
35
39
  // Copy tm/zig files with replacements. The tm src/ subtree only stages the
36
40
  // per-feature custom-source dirs (target add), so it is excluded here
37
- // exactly like the go/rust targets. The SDK source lives at the tree root
38
- // (core/, feature/, utility/, entity/, test/) Zig's idiomatic src/ is not
39
- // used, to keep the exclude rule identical to the reference targets.
41
+ // exactly like the go/rust targets. build.zig.zon is generated by Package
42
+ // (above), so it is excluded from the verbatim copy. The SDK source lives at
43
+ // the tree root (core/, feature/, utility/, entity/, test/) Zig's
44
+ // idiomatic src/ is not used, to keep the exclude rule identical to the
45
+ // reference targets.
40
46
  Copy({
41
47
  from: 'tm/' + target.name,
42
- exclude: [/src\//],
48
+ exclude: [/src\//, /build\.zig\.zon$/],
43
49
  replace: {
44
50
  ...props.ctx$.stdrep,
45
51
  }