@voxgig/sdkgen 4.22.0 → 4.24.0

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 (315) hide show
  1. package/bin/voxgig-sdkgen +18 -2
  2. package/dist/action/doctor.d.ts +1 -1
  3. package/dist/action/doctor.js +12 -10
  4. package/dist/action/doctor.js.map +1 -1
  5. package/dist/action/edition.js +4 -0
  6. package/dist/action/edition.js.map +1 -1
  7. package/dist/action/feature.js +5 -1
  8. package/dist/action/feature.js.map +1 -1
  9. package/dist/action/remove.d.ts +16 -0
  10. package/dist/action/remove.js +345 -0
  11. package/dist/action/remove.js.map +1 -0
  12. package/dist/action/target.js +6 -1
  13. package/dist/action/target.js.map +1 -1
  14. package/dist/cmp/ReadmeTop.js +1 -1
  15. package/dist/cmp/ReadmeTop.js.map +1 -1
  16. package/dist/cmp/ReadmeUnions.js +1 -1
  17. package/dist/cmp/ReadmeUnions.js.map +1 -1
  18. package/dist/cmp/Test.js +1 -1
  19. package/dist/cmp/Test.js.map +1 -1
  20. package/dist/helpers/buildIdNames.d.ts +3 -1
  21. package/dist/helpers/buildIdNames.js +15 -7
  22. package/dist/helpers/buildIdNames.js.map +1 -1
  23. package/dist/helpers/canonSpec.js +2 -2
  24. package/dist/helpers/canonSpec.js.map +1 -1
  25. package/dist/helpers/getMatchEntries.js +2 -2
  26. package/dist/helpers/getMatchEntries.js.map +1 -1
  27. package/dist/helpers/modelNames.js +5 -1
  28. package/dist/helpers/modelNames.js.map +1 -1
  29. package/dist/helpers/opShape.js +33 -33
  30. package/dist/helpers/opShape.js.map +1 -1
  31. package/dist/helpers/pointPath.js +5 -10
  32. package/dist/helpers/pointPath.js.map +1 -1
  33. package/dist/helpers/resolved.js +2 -29
  34. package/dist/helpers/resolved.js.map +1 -1
  35. package/dist/sdkgen.d.ts +2 -2
  36. package/dist/sdkgen.js +5 -3
  37. package/dist/sdkgen.js.map +1 -1
  38. package/dist/tsconfig.tsbuildinfo +1 -1
  39. package/dist/utility.js +15 -7
  40. package/dist/utility.js.map +1 -1
  41. package/package.json +3 -3
  42. package/project/.sdk/src/cmp/c/EntityTypes_c.ts +4 -4
  43. package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +3 -3
  44. package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +3 -3
  45. package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +5 -5
  46. package/project/.sdk/src/cmp/c/Schema_c.ts +1 -1
  47. package/project/.sdk/src/cmp/c/TestDirect_c.ts +12 -12
  48. package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +3 -3
  49. package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +3 -3
  50. package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +5 -5
  51. package/project/.sdk/src/cmp/clojure/Schema_clojure.ts +1 -1
  52. package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +3 -3
  53. package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +3 -3
  54. package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +3 -3
  55. package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +5 -5
  56. package/project/.sdk/src/cmp/cpp/Schema_cpp.ts +1 -1
  57. package/project/.sdk/src/cmp/cpp/TestDirect_cpp.ts +14 -14
  58. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +51 -50
  59. package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +4 -4
  60. package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +3 -3
  61. package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +3 -3
  62. package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +5 -5
  63. package/project/.sdk/src/cmp/csharp/Schema_csharp.ts +1 -1
  64. package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +30 -30
  65. package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +66 -65
  66. package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +4 -4
  67. package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +3 -3
  68. package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +3 -3
  69. package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +4 -4
  70. package/project/.sdk/src/cmp/elixir/Schema_elixir.ts +1 -1
  71. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +4 -4
  72. package/project/.sdk/src/cmp/go/ReadmeEntity_go.ts +3 -3
  73. package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +3 -3
  74. package/project/.sdk/src/cmp/go/ReadmeRef_go.ts +5 -5
  75. package/project/.sdk/src/cmp/go/Schema_go.ts +1 -1
  76. package/project/.sdk/src/cmp/go/TestDirect_go.ts +38 -38
  77. package/project/.sdk/src/cmp/go/TestEntity_go.ts +75 -74
  78. package/project/.sdk/src/cmp/go/utility_go.ts +5 -5
  79. package/project/.sdk/src/cmp/java/EntityTypes_java.ts +4 -4
  80. package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +3 -3
  81. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +3 -3
  82. package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +5 -5
  83. package/project/.sdk/src/cmp/java/Schema_java.ts +1 -1
  84. package/project/.sdk/src/cmp/java/TestDirect_java.ts +30 -30
  85. package/project/.sdk/src/cmp/java/TestEntity_java.ts +69 -68
  86. package/project/.sdk/src/cmp/js/EntityTypes_js.ts +5 -5
  87. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +3 -3
  88. package/project/.sdk/src/cmp/js/ReadmeModel_js.ts +3 -3
  89. package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +5 -5
  90. package/project/.sdk/src/cmp/js/Schema_js.ts +1 -1
  91. package/project/.sdk/src/cmp/js/TestDirect_js.ts +27 -27
  92. package/project/.sdk/src/cmp/js/TestEntity_js.ts +66 -69
  93. package/project/.sdk/src/cmp/js/TestLive_js.ts +3 -3
  94. package/project/.sdk/src/cmp/js/utility_js.ts +5 -5
  95. package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +4 -4
  96. package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +3 -3
  97. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +3 -3
  98. package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +5 -5
  99. package/project/.sdk/src/cmp/kotlin/Schema_kotlin.ts +1 -1
  100. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +30 -30
  101. package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +67 -66
  102. package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +5 -5
  103. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +3 -3
  104. package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +3 -3
  105. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +4 -4
  106. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +5 -5
  107. package/project/.sdk/src/cmp/lua/Schema_lua.ts +1 -1
  108. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +25 -25
  109. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +66 -65
  110. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +3 -3
  111. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +3 -3
  112. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +5 -5
  113. package/project/.sdk/src/cmp/ocaml/Schema_ocaml.ts +1 -1
  114. package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +3 -3
  115. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +3 -3
  116. package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +5 -5
  117. package/project/.sdk/src/cmp/perl/Schema_perl.ts +1 -1
  118. package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +25 -25
  119. package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +60 -59
  120. package/project/.sdk/src/cmp/php/EntityTypes_php.ts +4 -4
  121. package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +3 -3
  122. package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +3 -3
  123. package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +4 -4
  124. package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +5 -5
  125. package/project/.sdk/src/cmp/php/Schema_php.ts +1 -1
  126. package/project/.sdk/src/cmp/php/TestDirect_php.ts +25 -25
  127. package/project/.sdk/src/cmp/php/TestEntity_php.ts +66 -65
  128. package/project/.sdk/src/cmp/py/EntityTypes_py.ts +4 -4
  129. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +3 -3
  130. package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +3 -3
  131. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +5 -5
  132. package/project/.sdk/src/cmp/py/Schema_py.ts +1 -1
  133. package/project/.sdk/src/cmp/py/TestDirect_py.ts +25 -25
  134. package/project/.sdk/src/cmp/py/TestEntity_py.ts +66 -65
  135. package/project/.sdk/src/cmp/py-data/Main_py-data.ts +4 -4
  136. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +4 -4
  137. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +3 -3
  138. package/project/.sdk/src/cmp/rb/ReadmeModel_rb.ts +3 -3
  139. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +4 -4
  140. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +5 -5
  141. package/project/.sdk/src/cmp/rb/Schema_rb.ts +1 -1
  142. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +25 -25
  143. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +66 -65
  144. package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +4 -4
  145. package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +3 -3
  146. package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +3 -3
  147. package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +5 -5
  148. package/project/.sdk/src/cmp/rust/Schema_rust.ts +1 -1
  149. package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +18 -18
  150. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +63 -62
  151. package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +4 -4
  152. package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +3 -3
  153. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +3 -3
  154. package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +5 -5
  155. package/project/.sdk/src/cmp/scala/Schema_scala.ts +1 -1
  156. package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +14 -14
  157. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +60 -59
  158. package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +4 -4
  159. package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +3 -3
  160. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +3 -3
  161. package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +5 -5
  162. package/project/.sdk/src/cmp/swift/Schema_swift.ts +1 -1
  163. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +5 -5
  164. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +3 -3
  165. package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +3 -3
  166. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +1 -1
  167. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +5 -5
  168. package/project/.sdk/src/cmp/ts/Schema_ts.ts +1 -1
  169. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +40 -40
  170. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +72 -75
  171. package/project/.sdk/src/cmp/ts/TestLive_ts.ts +3 -3
  172. package/project/.sdk/src/cmp/ts/utility_ts.ts +5 -5
  173. package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +3 -3
  174. package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +3 -3
  175. package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +5 -5
  176. package/project/.sdk/src/cmp/zig/Schema_zig.ts +1 -1
  177. package/project/.sdk/tm/c/core/context.c +3 -1
  178. package/project/.sdk/tm/c/feature/paging.c +37 -3
  179. package/project/.sdk/tm/c/feature/test.c +71 -31
  180. package/project/.sdk/tm/c/utility/prepare_query.c +2 -1
  181. package/project/.sdk/tm/c/utility/transform_request.c +25 -3
  182. package/project/.sdk/tm/clojure/src/sdk/core.clj +21 -7
  183. package/project/.sdk/tm/clojure/src/sdk/features.clj +74 -22
  184. package/project/.sdk/tm/cpp/core/types.hpp +1 -1
  185. package/project/.sdk/tm/cpp/feature/paging.hpp +36 -3
  186. package/project/.sdk/tm/cpp/feature/test.hpp +58 -19
  187. package/project/.sdk/tm/cpp/utility/pipeline.hpp +16 -4
  188. package/project/.sdk/tm/csharp/core/Context.cs +1 -1
  189. package/project/.sdk/tm/csharp/feature/PagingFeature.cs +58 -4
  190. package/project/.sdk/tm/csharp/feature/TestFeature.cs +23 -25
  191. package/project/.sdk/tm/csharp/utility/Fetcher.cs +19 -12
  192. package/project/.sdk/tm/csharp/utility/PrepareQuery.cs +1 -1
  193. package/project/.sdk/tm/csharp/utility/TransformRequest.cs +23 -3
  194. package/project/.sdk/tm/elixir/lib/projectname/context.ex +1 -1
  195. package/project/.sdk/tm/elixir/lib/projectname/feature/paging.ex +52 -10
  196. package/project/.sdk/tm/elixir/lib/projectname/feature/test.ex +58 -22
  197. package/project/.sdk/tm/elixir/lib/projectname/utility.ex +30 -9
  198. package/project/.sdk/tm/go/core/context.go +13 -13
  199. package/project/.sdk/tm/go/feature/paging_feature.go +40 -2
  200. package/project/.sdk/tm/go/feature/test_feature.go +3 -15
  201. package/project/.sdk/tm/go/test/feature_corpus_test.go +1 -0
  202. package/project/.sdk/tm/go/test/feature_test.go +54 -0
  203. package/project/.sdk/tm/go/utility/fetcher.go +41 -20
  204. package/project/.sdk/tm/go/utility/prepare_query.go +1 -1
  205. package/project/.sdk/tm/go/utility/transform_request.go +22 -3
  206. package/project/.sdk/tm/java/core/Context.java +2 -1
  207. package/project/.sdk/tm/java/feature/PagingFeature.java +46 -4
  208. package/project/.sdk/tm/java/feature/TestFeature.java +21 -19
  209. package/project/.sdk/tm/java/test/FeatureCorpusTest.java +3 -0
  210. package/project/.sdk/tm/java/test/FeatureTest.java +42 -0
  211. package/project/.sdk/tm/java/utility/Fetcher.java +36 -28
  212. package/project/.sdk/tm/java/utility/PrepareQuery.java +1 -1
  213. package/project/.sdk/tm/java/utility/TransformRequest.java +18 -3
  214. package/project/.sdk/tm/js/src/Context.js +7 -2
  215. package/project/.sdk/tm/js/src/feature/paging/PagingFeature.js +24 -6
  216. package/project/.sdk/tm/js/src/feature/test/TestFeature.js +7 -5
  217. package/project/.sdk/tm/js/src/utility/PrepareQueryUtility.js +1 -1
  218. package/project/.sdk/tm/js/test/feature/Corpus.test.js +4 -0
  219. package/project/.sdk/tm/js/test/live-entity.js +29 -29
  220. package/project/.sdk/tm/js/test/live-scenarios.js +4 -4
  221. package/project/.sdk/tm/kotlin/core/Context.kt +1 -1
  222. package/project/.sdk/tm/kotlin/feature/PagingFeature.kt +36 -4
  223. package/project/.sdk/tm/kotlin/feature/TestFeature.kt +19 -18
  224. package/project/.sdk/tm/kotlin/utility/Fetcher.kt +33 -24
  225. package/project/.sdk/tm/kotlin/utility/Prepare.kt +1 -1
  226. package/project/.sdk/tm/kotlin/utility/ResultTransform.kt +18 -3
  227. package/project/.sdk/tm/lua/core/context.lua +8 -1
  228. package/project/.sdk/tm/lua/core/control.lua +3 -0
  229. package/project/.sdk/tm/lua/feature/paging_feature.lua +44 -5
  230. package/project/.sdk/tm/lua/feature/test_feature.lua +32 -14
  231. package/project/.sdk/tm/lua/utility/prepare_query.lua +2 -1
  232. package/project/.sdk/tm/lua/utility/transform_request.lua +19 -3
  233. package/project/.sdk/tm/ocaml/sdk_features.ml +78 -25
  234. package/project/.sdk/tm/ocaml/sdk_runtime.ml +23 -8
  235. package/project/.sdk/tm/perl/core/context.pm +2 -1
  236. package/project/.sdk/tm/perl/feature/paging_feature.pm +31 -5
  237. package/project/.sdk/tm/perl/feature/test_feature.pm +52 -20
  238. package/project/.sdk/tm/perl/feature/timeout_feature.pm +17 -13
  239. package/project/.sdk/tm/perl/t/feature_corpus.t +14 -1
  240. package/project/.sdk/tm/perl/utility/fetcher.pm +15 -1
  241. package/project/.sdk/tm/perl/utility/prepare_query.pm +1 -0
  242. package/project/.sdk/tm/perl/utility/transform_request.pm +13 -3
  243. package/project/.sdk/tm/php/core/Context.php +5 -1
  244. package/project/.sdk/tm/php/core/Control.php +5 -0
  245. package/project/.sdk/tm/php/feature/PagingFeature.php +26 -5
  246. package/project/.sdk/tm/php/feature/TestFeature.php +27 -42
  247. package/project/.sdk/tm/php/test/FeatureCorpusTest.php +17 -1
  248. package/project/.sdk/tm/php/test/FeatureTest.php +44 -0
  249. package/project/.sdk/tm/php/utility/Fetcher.php +17 -3
  250. package/project/.sdk/tm/php/utility/PrepareQuery.php +1 -1
  251. package/project/.sdk/tm/php/utility/TransformRequest.php +15 -3
  252. package/project/.sdk/tm/py/pkg/core/context.py +2 -1
  253. package/project/.sdk/tm/py/pkg/feature/paging_feature.py +29 -4
  254. package/project/.sdk/tm/py/pkg/feature/test_feature.py +29 -12
  255. package/project/.sdk/tm/py/pkg/utility/fetcher.py +63 -65
  256. package/project/.sdk/tm/py/pkg/utility/prepare_query.py +2 -1
  257. package/project/.sdk/tm/py/pkg/utility/transform_request.py +11 -3
  258. package/project/.sdk/tm/py/test/test_feature.py +27 -0
  259. package/project/.sdk/tm/py/test/test_feature_corpus.py +11 -1
  260. package/project/.sdk/tm/rb/core/context.rb +1 -1
  261. package/project/.sdk/tm/rb/feature/paging_feature.rb +27 -5
  262. package/project/.sdk/tm/rb/feature/test_feature.rb +39 -11
  263. package/project/.sdk/tm/rb/test/feature_corpus_test.rb +12 -1
  264. package/project/.sdk/tm/rb/test/feature_test.rb +38 -0
  265. package/project/.sdk/tm/rb/utility/fetcher.rb +49 -3
  266. package/project/.sdk/tm/rb/utility/prepare_query.rb +1 -1
  267. package/project/.sdk/tm/rb/utility/transform_request.rb +10 -3
  268. package/project/.sdk/tm/rust/core/context.rs +2 -6
  269. package/project/.sdk/tm/rust/feature/paging.rs +44 -3
  270. package/project/.sdk/tm/rust/feature/secrets.rs +1 -1
  271. package/project/.sdk/tm/rust/feature/test.rs +74 -37
  272. package/project/.sdk/tm/rust/utility/fetcher.rs +41 -14
  273. package/project/.sdk/tm/rust/utility/prepare_query.rs +1 -1
  274. package/project/.sdk/tm/rust/utility/transform_request.rs +31 -5
  275. package/project/.sdk/tm/scala/core/Context.scala +2 -1
  276. package/project/.sdk/tm/scala/feature/PagingFeature.scala +41 -4
  277. package/project/.sdk/tm/scala/feature/TestFeature.scala +21 -18
  278. package/project/.sdk/tm/scala/utility/Fetcher.scala +34 -13
  279. package/project/.sdk/tm/scala/utility/Prepare.scala +1 -1
  280. package/project/.sdk/tm/scala/utility/Transform.scala +19 -3
  281. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Context.swift +1 -1
  282. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/PagingFeature.swift +31 -4
  283. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TestFeature.swift +22 -15
  284. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Fetcher.swift +22 -3
  285. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +1 -1
  286. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/ResultUtil.swift +14 -3
  287. package/project/.sdk/tm/ts/src/Context.ts +7 -2
  288. package/project/.sdk/tm/ts/src/feature/paging/PagingFeature.ts +19 -3
  289. package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +3 -0
  290. package/project/.sdk/tm/ts/src/utility/PrepareQueryUtility.ts +1 -1
  291. package/project/.sdk/tm/ts/test/feature/Corpus.test.ts +1 -0
  292. package/project/.sdk/tm/ts/test/live-entity.ts +26 -26
  293. package/project/.sdk/tm/ts/test/live-scenarios.ts +3 -3
  294. package/project/.sdk/tm/zig/core/context.zig +1 -1
  295. package/project/.sdk/tm/zig/core/utility.zig +19 -5
  296. package/project/.sdk/tm/zig/feature/paging.zig +34 -4
  297. package/project/.sdk/tm/zig/feature/test.zig +65 -30
  298. package/project/sdkgen-package.json +1 -1
  299. package/src/action/doctor.ts +12 -9
  300. package/src/action/edition.ts +8 -0
  301. package/src/action/feature.ts +7 -1
  302. package/src/action/remove.ts +492 -0
  303. package/src/action/target.ts +8 -1
  304. package/src/cmp/ReadmeTop.ts +1 -1
  305. package/src/cmp/ReadmeUnions.ts +1 -1
  306. package/src/cmp/Test.ts +1 -1
  307. package/src/helpers/buildIdNames.ts +17 -7
  308. package/src/helpers/canonSpec.ts +2 -2
  309. package/src/helpers/getMatchEntries.ts +2 -2
  310. package/src/helpers/modelNames.ts +6 -1
  311. package/src/helpers/opShape.ts +33 -33
  312. package/src/helpers/pointPath.ts +5 -10
  313. package/src/helpers/resolved.ts +3 -14
  314. package/src/sdkgen.ts +3 -1
  315. package/src/utility.ts +16 -7
@@ -1,3 +1,4 @@
1
+ import { flowSteps } from '@voxgig/sdkgen'
1
2
 
2
3
  import {
3
4
  flatten,
@@ -92,10 +93,10 @@ const TestEntity = cmp(function TestEntity(props: any) {
92
93
  const idnames = buildIdNames(entity, basicflow)
93
94
  const idnamesStr = idnames.map(n => `"${n}"`).join(', ')
94
95
 
95
- const allSteps = Object.values(basicflow.step) as any[]
96
- const updateStep = allSteps.find((s: any) => s.op === 'update')
97
- const updateData = updateStep?.data
98
- ? Object.entries(updateStep.data).filter(([k]: any) => k !== 'id' && !k.endsWith('$'))
96
+ const allSteps = Object.values(flowSteps(basicflow)) as any[]
97
+ const updateStep = allSteps.find((s: any) => s.o === 'update')
98
+ const updateData = updateStep?.d
99
+ ? Object.entries(updateStep.d).filter(([k]: any) => k !== 'id' && !k.endsWith('$'))
99
100
  : []
100
101
  const aliases = updateData.map(([k, v]: any) => [k, v])
101
102
 
@@ -167,7 +168,7 @@ ${hasList ? `
167
168
  $setup = ${entity.name}_basic_setup(null);
168
169
  // Per-op sdk-test-control.json skip.
169
170
  $_live = !empty($setup["live"]);
170
- foreach ([${(Array.from(new Set((allSteps as any[]).map((s: any) => s.op).filter(Boolean)))).map(o => `"${o}"`).join(', ')}] as $_op) {
171
+ foreach ([${(Array.from(new Set((allSteps as any[]).map((s: any) => s.o).filter(Boolean)))).map(o => `"${o}"`).join(', ')}] as $_op) {
171
172
  [$_shouldSkip, $_reason] = Runner::is_control_skipped("entityOp", "${entity.name}." . $_op, $_live ? "live" : "unit");
172
173
  if ($_shouldSkip) {
173
174
  $this->markTestSkipped($_reason ?? "skipped via sdk-test-control.json");
@@ -185,7 +186,7 @@ ${hasList ? `
185
186
  `)
186
187
 
187
188
  // Check if the flow has a create step
188
- const flowHasCreate = allSteps.some((s: any) => s.op === 'create')
189
+ const flowHasCreate = allSteps.some((s: any) => s.o === 'create')
189
190
  if (!flowHasCreate) {
190
191
  Content(` // Bootstrap entity data from existing test data.
191
192
  $${entity.name}_ref01_data_raw = Vs::items(Helpers::to_map(
@@ -199,16 +200,16 @@ ${hasList ? `
199
200
  }
200
201
 
201
202
  // Model-driven step iteration
202
- each(basicflow.step, (step: any, index: any) => {
203
+ each(flowSteps(basicflow), (step: any, index: any) => {
203
204
  // Never emit a REMOVE (or its removed-item verify LIST) without a
204
205
  // preceding CREATE: a coherent CRUD flow only removes what it created,
205
206
  // so a create-less remove would mutate pre-existing (live) data.
206
207
  if (!flowHasCreate) {
207
- if ('remove' === step.op) { return }
208
- if ('list' === step.op &&
209
- (step.valid || []).some((v: any) => 'ItemNotExists' === v.apply)) { return }
208
+ if ('remove' === step.o) { return }
209
+ if ('list' === step.o &&
210
+ (step.v || []).some((v: any) => 'ItemNotExists' === v.apply)) { return }
210
211
  }
211
- const opgen: OpGen = GENERATE_OP[step.op]
212
+ const opgen: OpGen = GENERATE_OP[step.o]
212
213
  if (opgen) {
213
214
  opgen(genCtx, step, index)
214
215
  Content('\n')
@@ -316,18 +317,18 @@ ${hasList ? `
316
317
 
317
318
  const generateCreate: OpGen = (ctx, step, index) => {
318
319
  const { entity, flow, accessor } = ctx
319
- const ref = step.input.ref ?? entity.name + '_ref01'
320
- const entvar = step.input.entvar ?? ref + '_ent'
321
- const datavar = step.input.datavar ?? (ref + '_data' + (step.input.suffix ?? ''))
320
+ const ref = step.i.ref ?? entity.name + '_ref01'
321
+ const entvar = step.i.entvar ?? ref + '_ent'
322
+ const datavar = step.i.datavar ?? (ref + '_data' + (step.i.suffix ?? ''))
322
323
 
323
- const priorSteps = Object.values(flow.step).slice(0, Number(index)) as any[]
324
+ const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
324
325
  const needsEnt = !priorSteps.some((s: any) =>
325
- ['create', 'list', 'load', 'update', 'remove'].includes(s.op))
326
+ ['create', 'list', 'load', 'update', 'remove'].includes(s.o))
326
327
 
327
328
  const hasDatvar = priorSteps.some((s: any) => {
328
- if ('create' === s.op) {
329
- const priorRef = s.input.ref ?? entity.name + '_ref01'
330
- const priorDatvar = s.input.datavar ?? (priorRef + '_data' + (s.input.suffix ?? ''))
329
+ if ('create' === s.o) {
330
+ const priorRef = s.i.ref ?? entity.name + '_ref01'
331
+ const priorDatvar = s.i.datavar ?? (priorRef + '_data' + (s.i.suffix ?? ''))
331
332
  return priorDatvar === datavar
332
333
  }
333
334
  return false
@@ -371,14 +372,14 @@ const generateCreate: OpGen = (ctx, step, index) => {
371
372
  const generateList: OpGen = (ctx, step, index) => {
372
373
  const { entity, flow, accessor } = ctx
373
374
  const hasDataId = null != entityDataIdField(entity)
374
- const ref = step.input.ref ?? entity.name + '_ref01'
375
- const entvar = step.input.entvar ?? ref + '_ent'
376
- const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
377
- const listvar = step.input.listvar ?? (ref + '_list' + (step.input.suffix ?? ''))
375
+ const ref = step.i.ref ?? entity.name + '_ref01'
376
+ const entvar = step.i.entvar ?? ref + '_ent'
377
+ const matchvar = step.i.matchvar ?? (ref + '_match' + (step.i.suffix ?? ''))
378
+ const listvar = step.i.listvar ?? (ref + '_list' + (step.i.suffix ?? ''))
378
379
 
379
- const priorSteps = Object.values(flow.step).slice(0, Number(index)) as any[]
380
+ const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
380
381
  const needsEnt = !priorSteps.some((s: any) =>
381
- ['create', 'list', 'load', 'update', 'remove'].includes(s.op))
382
+ ['create', 'list', 'load', 'update', 'remove'].includes(s.o))
382
383
 
383
384
  Content(` // LIST
384
385
  `)
@@ -408,12 +409,12 @@ const generateList: OpGen = (ctx, step, index) => {
408
409
  `)
409
410
 
410
411
  // Handle validators
411
- const allSteps = Object.values(flow.step) as any[]
412
- if (step.valid) {
413
- for (const validator of step.valid) {
412
+ const allSteps = Object.values(flowSteps(flow)) as any[]
413
+ if (step.v) {
414
+ for (const validator of step.v) {
414
415
  const validRef = validator.def?.ref
415
- const hasRefData = validRef && allSteps.some((s: any) => 'create' === s.op &&
416
- ((s.input.ref ?? entity.name + '_ref01') === validRef))
416
+ const hasRefData = validRef && allSteps.some((s: any) => 'create' === s.o &&
417
+ ((s.i.ref ?? entity.name + '_ref01') === validRef))
417
418
 
418
419
  if ('ItemExists' === validator.apply && hasRefData && hasDataId) {
419
420
  const refDataVar = validRef + '_data'
@@ -439,16 +440,16 @@ const generateList: OpGen = (ctx, step, index) => {
439
440
 
440
441
  const generateUpdate: OpGen = (ctx, step, index) => {
441
442
  const { entity, flow, accessor } = ctx
442
- const ref = step.input.ref ?? entity.name + '_ref01'
443
- const entvar = step.input.entvar ?? ref + '_ent'
444
- const datavar = step.input.datavar ?? (ref + '_data' + (step.input.suffix ?? ''))
445
- const resdatavar = step.input.resdatavar ?? (ref + '_resdata' + (step.input.suffix ?? ''))
446
- const markdefvar = step.input.markdefvar ?? (ref + '_markdef' + (step.input.suffix ?? ''))
447
- const srcdatavar = step.input.srcdatavar ?? (ref + '_data' + (step.input.suffix ?? ''))
448
-
449
- const priorSteps = Object.values(flow.step).slice(0, Number(index)) as any[]
443
+ const ref = step.i.ref ?? entity.name + '_ref01'
444
+ const entvar = step.i.entvar ?? ref + '_ent'
445
+ const datavar = step.i.datavar ?? (ref + '_data' + (step.i.suffix ?? ''))
446
+ const resdatavar = step.i.resdatavar ?? (ref + '_resdata' + (step.i.suffix ?? ''))
447
+ const markdefvar = step.i.markdefvar ?? (ref + '_markdef' + (step.i.suffix ?? ''))
448
+ const srcdatavar = step.i.srcdatavar ?? (ref + '_data' + (step.i.suffix ?? ''))
449
+
450
+ const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
450
451
  const needsEnt = !priorSteps.some((s: any) =>
451
- ['create', 'list', 'load', 'update', 'remove'].includes(s.op))
452
+ ['create', 'list', 'load', 'update', 'remove'].includes(s.o))
452
453
 
453
454
  const hasEntIdU = null != entity.id
454
455
 
@@ -465,8 +466,8 @@ const generateUpdate: OpGen = (ctx, step, index) => {
465
466
  `)
466
467
  }
467
468
 
468
- if (step.data) {
469
- const dataEntries = Object.entries(step.data).filter(([k]: any) => k !== 'id' && !k.endsWith('$'))
469
+ if (step.d) {
470
+ const dataEntries = Object.entries(step.d).filter(([k]: any) => k !== 'id' && !k.endsWith('$'))
470
471
  for (const [key] of dataEntries) {
471
472
  Content(` "${key}" => $setup["idmap"]["${key}"],
472
473
  `)
@@ -476,10 +477,10 @@ const generateUpdate: OpGen = (ctx, step, index) => {
476
477
  Content(` ];
477
478
  `)
478
479
 
479
- if (step.spec) {
480
- for (const spec of step.spec) {
481
- if ('TextFieldMark' === spec.apply && null != step.input.textfield) {
482
- const fieldname = step.input.textfield
480
+ if (step.s) {
481
+ for (const spec of step.s) {
482
+ if ('TextFieldMark' === spec.apply && null != step.i.textfield) {
483
+ const fieldname = step.i.textfield
483
484
  const fieldvalue = spec.def?.mark ?? `Mark01-${ref}`
484
485
  Content(`
485
486
  $${markdefvar}_name = "${fieldname}";
@@ -500,9 +501,9 @@ const generateUpdate: OpGen = (ctx, step, index) => {
500
501
  `)
501
502
  }
502
503
 
503
- if (step.spec) {
504
- for (const spec of step.spec) {
505
- if ('TextFieldMark' === spec.apply && null != step.input.textfield) {
504
+ if (step.s) {
505
+ for (const spec of step.s) {
506
+ if ('TextFieldMark' === spec.apply && null != step.i.textfield) {
506
507
  Content(` $this->assertEquals($${resdatavar}[$${markdefvar}_name], $${markdefvar}_value);
507
508
  `)
508
509
  }
@@ -513,23 +514,23 @@ const generateUpdate: OpGen = (ctx, step, index) => {
513
514
 
514
515
  const generateLoad: OpGen = (ctx, step, index) => {
515
516
  const { entity, flow, accessor } = ctx
516
- const ref = step.input.ref ?? entity.name + '_ref01'
517
- const entvar = step.input.entvar ?? ref + '_ent'
518
- const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
519
- const datavar = step.input.datavar ?? (ref + '_data' + (step.input.suffix ?? ''))
520
- const srcdatavar = step.input.srcdatavar ?? (ref + '_data' + (step.input.suffix ?? ''))
517
+ const ref = step.i.ref ?? entity.name + '_ref01'
518
+ const entvar = step.i.entvar ?? ref + '_ent'
519
+ const matchvar = step.i.matchvar ?? (ref + '_match' + (step.i.suffix ?? ''))
520
+ const datavar = step.i.datavar ?? (ref + '_data' + (step.i.suffix ?? ''))
521
+ const srcdatavar = step.i.srcdatavar ?? (ref + '_data' + (step.i.suffix ?? ''))
521
522
 
522
- const priorSteps = Object.values(flow.step).slice(0, Number(index)) as any[]
523
+ const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
523
524
  const hasEntVar = priorSteps.some((s: any) =>
524
- ['create', 'list', 'load', 'update', 'remove'].includes(s.op))
525
+ ['create', 'list', 'load', 'update', 'remove'].includes(s.o))
525
526
 
526
- const flowHasCreate = Object.values(flow.step).some((s: any) => (s as any).op === 'create')
527
+ const flowHasCreate = Object.values(flowSteps(flow)).some((s: any) => (s as any).o === 'create')
527
528
  const preambleRef = entity.name + '_ref01'
528
529
  const hasSrcData = (!flowHasCreate && srcdatavar === (preambleRef + '_data')) ||
529
530
  priorSteps.some((s: any) => {
530
- if ('create' === s.op) {
531
- const priorRef = s.input.ref ?? entity.name + '_ref01'
532
- const priorDatvar = s.input.datavar ?? (priorRef + '_data' + (s.input.suffix ?? ''))
531
+ if ('create' === s.o) {
532
+ const priorRef = s.i.ref ?? entity.name + '_ref01'
533
+ const priorDatvar = s.i.datavar ?? (priorRef + '_data' + (s.i.suffix ?? ''))
533
534
  return priorDatvar === srcdatavar
534
535
  }
535
536
  return false
@@ -576,14 +577,14 @@ const generateRemove: OpGen = (ctx, step, index) => {
576
577
  if (null == entityDataIdField(entity)) {
577
578
  return
578
579
  }
579
- const ref = step.input.ref ?? entity.name + '_ref01'
580
- const entvar = step.input.entvar ?? ref + '_ent'
581
- const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
582
- const srcdatavar = step.input.srcdatavar ?? (ref + '_data')
580
+ const ref = step.i.ref ?? entity.name + '_ref01'
581
+ const entvar = step.i.entvar ?? ref + '_ent'
582
+ const matchvar = step.i.matchvar ?? (ref + '_match' + (step.i.suffix ?? ''))
583
+ const srcdatavar = step.i.srcdatavar ?? (ref + '_data')
583
584
 
584
- const priorSteps = Object.values(flow.step).slice(0, Number(index)) as any[]
585
+ const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
585
586
  const needsEnt = !priorSteps.some((s: any) =>
586
- ['create', 'list', 'load', 'update', 'remove'].includes(s.op))
587
+ ['create', 'list', 'load', 'update', 'remove'].includes(s.o))
587
588
 
588
589
  Content(` // REMOVE
589
590
  `)
@@ -105,8 +105,8 @@ const EntityTypes = cmp(function EntityTypes(props: any) {
105
105
 
106
106
  Content(`# Typed models for the ${model.const.Name} SDK.
107
107
  #
108
- # GENERATED from the API model: main.${KIT}.entity.<e>.fields[] and per-op
109
- # params (op.<name>.points[].args.params[]). Field/param types come from the
108
+ # GENERATED from the API model: main.${KIT}.entity.<e>.fields{} and per-op
109
+ # params (op.<name>.points[].g.params[]). Field/param types come from the
110
110
  # canonical type sentinels via @voxgig/sdkgen canonToType (source of truth:
111
111
  # @voxgig/apidef VALID_CANON). Do not edit by hand.
112
112
  #
@@ -124,13 +124,13 @@ from typing import TypedDict, Any
124
124
  entityList.forEach((ent: any) => {
125
125
  const Name = ent.Name
126
126
  const fields = (ent.fields ? each(ent.fields) : [])
127
- .filter((f: any) => f.active !== false)
127
+ .filter((f: any) => f.a !== false)
128
128
 
129
129
  Content(`
130
130
 
131
131
  `)
132
132
  emitTypedDict(Name, fields.map((f: any) => ({
133
- name: f.name, type: f.type, optional: false === f.req,
133
+ name: f.n, type: f.t, optional: false === f.r,
134
134
  })), log)
135
135
 
136
136
  const ops = ent.op || {}
@@ -53,7 +53,7 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
53
53
 
54
54
  publishedEntities.map((entity: any) => {
55
55
  const opnames = Object.keys(entity.op || {})
56
- const fields = entity.fields || []
56
+ const fields = Object.values(entity.fields || {})
57
57
  // Model-driven id key: null when this entity has no id-like field.
58
58
  const idF = entityIdField(entity)
59
59
  // Sanitise the local variable name — an entity whose lowercased name is a
@@ -101,8 +101,8 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
101
101
  `)
102
102
 
103
103
  each(fields, (field: any) => {
104
- const desc = field.short || ''
105
- Content(`| \`${field.name}\` | \`${canonToType(field.type, target.name)}\` | ${desc} |
104
+ const desc = field.sh || ''
105
+ Content(`| \`${field.n}\` | \`${canonToType(field.t, target.name)}\` | ${desc} |
106
106
  `)
107
107
  })
108
108
 
@@ -117,13 +117,13 @@ On error, \`ok\` is \`False\` and \`err\` contains the error value.
117
117
 
118
118
  `)
119
119
  each(entityList, (ent: any) => {
120
- const fields = ent.fields || []
120
+ const fields = Object.values(ent.fields || {})
121
121
  const opnames = Object.keys(ent.op || {})
122
122
  const ops = ent.op || {}
123
123
  const points = each(ops).map((op: any) =>
124
124
  op.points ? each(op.points) : []
125
125
  ).flat()
126
- const path = points.length > 0 ? (points[0] as any).orig || '' : ''
126
+ const path = points.length > 0 ? (points[0] as any).o || '' : ''
127
127
 
128
128
  Content(`#### ${ent.Name}
129
129
 
@@ -131,7 +131,7 @@ On error, \`ok\` is \`False\` and \`err\` contains the error value.
131
131
  | --- | --- |
132
132
  `)
133
133
  each(fields, (field: any) => {
134
- Content(`| \`${field.name}\` | ${field.short || ''} |
134
+ Content(`| \`${field.n}\` | ${field.sh || ''} |
135
135
  `)
136
136
  })
137
137
 
@@ -167,7 +167,7 @@ Prepare a fetch definition without sending. Returns the \`fetchdef\` and raises
167
167
 
168
168
  publishedEntities.map((ent: any) => {
169
169
  const opnames = Object.keys(ent.op || {})
170
- const fields = ent.fields || []
170
+ const fields = Object.values(ent.fields || {})
171
171
  // Model-driven id key: null when this entity has no id-like field, in
172
172
  // which case load/remove match on no argument and update omits the id.
173
173
  const idF = entityIdField(ent)
@@ -202,9 +202,9 @@ ${eVar} = client.${ent.Name}()
202
202
  | --- | --- | --- | --- |
203
203
  `)
204
204
  each(fields, (field: any) => {
205
- const req = field.req ? 'Yes' : 'No'
206
- const desc = field.short || ''
207
- Content(`| \`${field.name}\` | \`${canonToType(field.type, target.name)}\` | ${req} | ${desc} |
205
+ const req = field.r ? 'Yes' : 'No'
206
+ const desc = field.sh || ''
207
+ Content(`| \`${field.n}\` | \`${canonToType(field.t, target.name)}\` | ${req} | ${desc} |
208
208
  `)
209
209
  })
210
210
 
@@ -231,7 +231,7 @@ ${eVar} = client.${ent.Name}()
231
231
  if (fop.active === false) return '-'
232
232
  return 'Yes'
233
233
  })
234
- Content(`| \`${field.name}\` | ${cols.join(' | ')} |
234
+ Content(`| \`${field.n}\` | ${cols.join(' | ')} |
235
235
  `)
236
236
  })
237
237
 
@@ -25,7 +25,7 @@ const Schema = cmp(async function Schema(props: any) {
25
25
  Content(`# ${model.const.Name} ${target.Name} SDK: generated schemas. Do not edit.
26
26
  #
27
27
  # Generated from the model: \`main.kit.optspec\` and each feature's
28
- # \`config.options\` for OPTSPEC; entity \`fields[].type\` for ENTITYSPEC.
28
+ # \`config.options\` for OPTSPEC; entity \`fields{}.type\` for ENTITYSPEC.
29
29
 
30
30
  from __future__ import annotations
31
31
 
@@ -31,10 +31,10 @@ function normalizePathParams(
31
31
  // original name was renamed to another param's current name (e.g. badge
32
32
  // load: param 'group_id' has orig 'id', and another param has name 'id').
33
33
  const param = params.find((p: any) =>
34
- p.name === snaked || p.name === depluralized) ||
34
+ p.n === snaked || p.n === depluralized) ||
35
35
  params.find((p: any) =>
36
- p.orig === snaked || p.orig === depluralized)
37
- if (param) return '{' + param.name + '}'
36
+ p.or === snaked || p.or === depluralized)
37
+ if (param) return '{' + param.n + '}'
38
38
 
39
39
  if (rename) {
40
40
  for (const [origCamel, renamedTo] of Object.entries(rename)) {
@@ -42,10 +42,10 @@ function normalizePathParams(
42
42
  const origSnaked = snakify(origCamel)
43
43
  const origDepluralized = depluralize(origSnaked)
44
44
  const renamedParam = params.find(
45
- (p: any) => p.orig === origSnaked || p.name === origSnaked ||
46
- p.orig === origDepluralized || p.name === origDepluralized
45
+ (p: any) => p.or === origSnaked || p.n === origSnaked ||
46
+ p.or === origDepluralized || p.n === origDepluralized
47
47
  )
48
- if (renamedParam) return '{' + renamedParam.name + '}'
48
+ if (renamedParam) return '{' + renamedParam.n + '}'
49
49
  }
50
50
  }
51
51
  }
@@ -99,8 +99,8 @@ const TestDirect = cmp(function TestDirect(props: any) {
99
99
  const listOp = entity.op?.list
100
100
 
101
101
  const loadPoint = loadOp?.points?.[0]
102
- const loadPath = loadPoint ? normalizePathParams(pointParts(loadPoint), loadPoint?.args?.params || [], loadPoint?.rename?.param) : ''
103
- const allLoadParams = loadPoint?.args?.params || []
102
+ const loadPath = loadPoint ? normalizePathParams(pointParts(loadPoint), loadPoint?.g?.params || [], loadPoint?.r?.param) : ''
103
+ const allLoadParams = loadPoint?.g?.params || []
104
104
  // Some upstream OpenAPI specs declare a parameter as `in: path` even when
105
105
  // that path has no `{name}` placeholder for it. Only path params that
106
106
  // actually appear in the URL template should drive direct-test path-param
@@ -112,7 +112,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
112
112
  _pathPlaceholders.add(part.slice(1, -1))
113
113
  }
114
114
  }
115
- const _renameMap = (loadPoint?.rename?.param || {}) as Record<string, string>
115
+ const _renameMap = (loadPoint?.r?.param || {}) as Record<string, string>
116
116
  const _renamedPlaceholders = new Set<string>()
117
117
  for (const ph of _pathPlaceholders) {
118
118
  _renamedPlaceholders.add(ph)
@@ -121,26 +121,26 @@ const TestDirect = cmp(function TestDirect(props: any) {
121
121
  }
122
122
  }
123
123
  const loadParams = allLoadParams.filter((p: any) =>
124
- _renamedPlaceholders.has(p.name) || _renamedPlaceholders.has(p.orig))
124
+ _renamedPlaceholders.has(p.n) || _renamedPlaceholders.has(p.or))
125
125
 
126
126
  const listPoint = listOp?.points?.[0]
127
- const listPath = listPoint ? normalizePathParams(pointParts(listPoint), listPoint?.args?.params || [], listPoint?.rename?.param) : ''
128
- const listParams = listPoint?.args?.params || []
127
+ const listPath = listPoint ? normalizePathParams(pointParts(listPoint), listPoint?.g?.params || [], listPoint?.r?.param) : ''
128
+ const listParams = listPoint?.g?.params || []
129
129
 
130
- const loadQuery = loadPoint?.args?.query || []
130
+ const loadQuery = loadPoint?.g?.query || []
131
131
  const loadLiveQueryEntries = loadQuery
132
- .filter((q: any) => q.reqd && undefined !== q.example && null !== q.example)
132
+ .filter((q: any) => q.r && undefined !== q.ex && null !== q.ex)
133
133
  const loadLiveQueryLines = loadLiveQueryEntries
134
- .map((q: any) => ` query["${q.name}"] = ${JSON.stringify(q.example)}`)
134
+ .map((q: any) => ` query["${q.n}"] = ${JSON.stringify(q.ex)}`)
135
135
  .join('\n')
136
136
 
137
137
  // Path params with spec-provided examples — when ALL load params have
138
138
  // spec examples, prefer them over list-bootstrap.
139
139
  const loadAllHaveExamples =
140
140
  loadParams.length > 0 &&
141
- loadParams.every((p: any) => undefined !== p.example && null !== p.example)
141
+ loadParams.every((p: any) => undefined !== p.ex && null !== p.ex)
142
142
  const loadExampleLines = loadAllHaveExamples
143
- ? loadParams.map((p: any) => ` params["${p.name}"] = ${JSON.stringify(p.example)}`).join('\n')
143
+ ? loadParams.map((p: any) => ` params["${p.n}"] = ${JSON.stringify(p.ex)}`).join('\n')
144
144
  : ''
145
145
 
146
146
  const entidEnvVar = `${PROJECTNAME}_TEST_${envToken(entity.name)}_ENTID`
@@ -165,9 +165,9 @@ class Test${entity.Name}Direct:
165
165
  if (hasList && listPoint) {
166
166
  // Track idmap keys this list test consumes in live mode.
167
167
  const listLiveIdKeys: string[] = listParams.map((lp: any) => {
168
- return lp.name === 'id'
168
+ return lp.n === 'id'
169
169
  ? entity.name + '01'
170
- : lp.name.replace(/_id$/, '') + '01'
170
+ : lp.n.replace(/_id$/, '') + '01'
171
171
  })
172
172
  const listSkipBlock = listLiveIdKeys.length > 0
173
173
  ? ` if setup["live"]:
@@ -197,13 +197,13 @@ ${listSkipBlock} client = setup["client"]
197
197
  Content(` params = {}
198
198
  `)
199
199
  for (const lp of listParams) {
200
- const key = lp.name === 'id'
200
+ const key = lp.n === 'id'
201
201
  ? entity.name + '01'
202
- : lp.name.replace(/_id$/, '') + '01'
202
+ : lp.n.replace(/_id$/, '') + '01'
203
203
  Content(` if setup["live"]:
204
- params["${lp.name}"] = setup["idmap"]["${key}"]
204
+ params["${lp.n}"] = setup["idmap"]["${key}"]
205
205
  else:
206
- params["${lp.name}"] = "direct01"
206
+ params["${lp.n}"] = "direct01"
207
207
  `)
208
208
  }
209
209
  Content(`
@@ -281,7 +281,7 @@ ${loadLiveQueryLines ? loadLiveQueryLines + '\n' : ''}${loadExampleLines}
281
281
  else:
282
282
  `)
283
283
  for (let i = 0; i < loadParams.length; i++) {
284
- Content(` params["${loadParams[i].name}"] = "direct0${i + 1}"
284
+ Content(` params["${loadParams[i].n}"] = "direct0${i + 1}"
285
285
  `)
286
286
  }
287
287
  } else if (loadParams.length > 0) {
@@ -293,7 +293,7 @@ ${loadLiveQueryLines}
293
293
  Content(` if not setup["live"]:
294
294
  `)
295
295
  for (let i = 0; i < loadParams.length; i++) {
296
- Content(` params["${loadParams[i].name}"] = "direct0${i + 1}"
296
+ Content(` params["${loadParams[i].n}"] = "direct0${i + 1}"
297
297
  `)
298
298
  }
299
299
  } else if (loadLiveQueryLines) {