@voxgig/sdkgen 4.34.0 → 4.34.1

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 (1055) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/copies.d.ts +4 -3
  3. package/dist/action/copies.js +142 -45
  4. package/dist/action/copies.js.map +1 -1
  5. package/dist/action/doctor.d.ts +1 -0
  6. package/dist/action/doctor.js +6 -2
  7. package/dist/action/doctor.js.map +1 -1
  8. package/dist/action/package.d.ts +3 -1
  9. package/dist/action/package.js +12 -5
  10. package/dist/action/package.js.map +1 -1
  11. package/dist/action/resolve.d.ts +11 -2
  12. package/dist/action/resolve.js +27 -0
  13. package/dist/action/resolve.js.map +1 -1
  14. package/dist/admin/npm-trust.js +7 -7
  15. package/dist/admin/npm-trust.js.map +1 -1
  16. package/dist/cmp/AgentGuide.js +4 -3
  17. package/dist/cmp/AgentGuide.js.map +1 -1
  18. package/dist/cmp/AgentGuideFeature.js +3 -2
  19. package/dist/cmp/AgentGuideFeature.js.map +1 -1
  20. package/dist/cmp/AgentGuideTop.js +2 -1
  21. package/dist/cmp/AgentGuideTop.js.map +1 -1
  22. package/dist/cmp/Changelog.js +2 -1
  23. package/dist/cmp/Changelog.js.map +1 -1
  24. package/dist/cmp/Deploy.js +2 -1
  25. package/dist/cmp/Deploy.js.map +1 -1
  26. package/dist/cmp/Entity.js +2 -2
  27. package/dist/cmp/Entity.js.map +1 -1
  28. package/dist/cmp/ExternalTarget.js +2 -1
  29. package/dist/cmp/ExternalTarget.js.map +1 -1
  30. package/dist/cmp/Feature.js +2 -1
  31. package/dist/cmp/Feature.js.map +1 -1
  32. package/dist/cmp/FeatureHook.js +2 -1
  33. package/dist/cmp/FeatureHook.js.map +1 -1
  34. package/dist/cmp/License.js +6 -4
  35. package/dist/cmp/License.js.map +1 -1
  36. package/dist/cmp/Main.js +2 -2
  37. package/dist/cmp/Main.js.map +1 -1
  38. package/dist/cmp/PublishWorkflow.js +2 -1
  39. package/dist/cmp/PublishWorkflow.js.map +1 -1
  40. package/dist/cmp/Readme.js +2 -1
  41. package/dist/cmp/Readme.js.map +1 -1
  42. package/dist/cmp/ReadmeEntity.js +4 -4
  43. package/dist/cmp/ReadmeEntity.js.map +1 -1
  44. package/dist/cmp/ReadmeErrors.js +6 -4
  45. package/dist/cmp/ReadmeErrors.js.map +1 -1
  46. package/dist/cmp/ReadmeExplanation.js +4 -3
  47. package/dist/cmp/ReadmeExplanation.js.map +1 -1
  48. package/dist/cmp/ReadmeFeatures.js +4 -3
  49. package/dist/cmp/ReadmeFeatures.js.map +1 -1
  50. package/dist/cmp/ReadmeHowto.js +4 -3
  51. package/dist/cmp/ReadmeHowto.js.map +1 -1
  52. package/dist/cmp/ReadmeInstall.js +4 -3
  53. package/dist/cmp/ReadmeInstall.js.map +1 -1
  54. package/dist/cmp/ReadmeIntro.js +4 -4
  55. package/dist/cmp/ReadmeIntro.js.map +1 -1
  56. package/dist/cmp/ReadmeModel.js +6 -3
  57. package/dist/cmp/ReadmeModel.js.map +1 -1
  58. package/dist/cmp/ReadmeOptions.js +4 -4
  59. package/dist/cmp/ReadmeOptions.js.map +1 -1
  60. package/dist/cmp/ReadmeQuick.js +4 -3
  61. package/dist/cmp/ReadmeQuick.js.map +1 -1
  62. package/dist/cmp/ReadmeRef.js +4 -4
  63. package/dist/cmp/ReadmeRef.js.map +1 -1
  64. package/dist/cmp/ReadmeRefFeatures.js +2 -1
  65. package/dist/cmp/ReadmeRefFeatures.js.map +1 -1
  66. package/dist/cmp/ReadmeStation.js +2 -1
  67. package/dist/cmp/ReadmeStation.js.map +1 -1
  68. package/dist/cmp/ReadmeTop.js +104 -35
  69. package/dist/cmp/ReadmeTop.js.map +1 -1
  70. package/dist/cmp/ReadmeUnions.js +2 -1
  71. package/dist/cmp/ReadmeUnions.js.map +1 -1
  72. package/dist/cmp/Registered.js +4 -3
  73. package/dist/cmp/Registered.js.map +1 -1
  74. package/dist/cmp/Security.js +10 -6
  75. package/dist/cmp/Security.js.map +1 -1
  76. package/dist/cmp/Test.js +2 -1
  77. package/dist/cmp/Test.js.map +1 -1
  78. package/dist/cmp/TestControl.js +2 -1
  79. package/dist/cmp/TestControl.js.map +1 -1
  80. package/dist/helpers/component.d.ts +4 -0
  81. package/dist/helpers/component.js +54 -0
  82. package/dist/helpers/component.js.map +1 -0
  83. package/dist/helpers/definition.js +2 -2
  84. package/dist/helpers/definition.js.map +1 -1
  85. package/dist/helpers/definitionPlan.d.ts +16 -0
  86. package/dist/helpers/definitionPlan.js +116 -12
  87. package/dist/helpers/definitionPlan.js.map +1 -1
  88. package/dist/helpers/featureSource.d.ts +2 -1
  89. package/dist/helpers/featureSource.js +44 -2
  90. package/dist/helpers/featureSource.js.map +1 -1
  91. package/dist/helpers/flowGuard.d.ts +8 -0
  92. package/dist/helpers/flowGuard.js +84 -0
  93. package/dist/helpers/flowGuard.js.map +1 -0
  94. package/dist/helpers/generated.d.ts +26 -0
  95. package/dist/helpers/generated.js +363 -0
  96. package/dist/helpers/generated.js.map +1 -0
  97. package/dist/helpers/mcpTools.d.ts +11 -0
  98. package/dist/helpers/mcpTools.js +28 -0
  99. package/dist/helpers/mcpTools.js.map +1 -0
  100. package/dist/helpers/media.d.ts +9 -0
  101. package/dist/helpers/media.js +61 -0
  102. package/dist/helpers/media.js.map +1 -0
  103. package/dist/helpers/modelNames.js +147 -14
  104. package/dist/helpers/modelNames.js.map +1 -1
  105. package/dist/helpers/naming.d.ts +11 -1
  106. package/dist/helpers/naming.js +143 -0
  107. package/dist/helpers/naming.js.map +1 -1
  108. package/dist/helpers/npm.d.ts +13 -0
  109. package/dist/helpers/npm.js +41 -0
  110. package/dist/helpers/npm.js.map +1 -0
  111. package/dist/helpers/npmScripts.d.ts +4 -0
  112. package/dist/helpers/npmScripts.js +30 -0
  113. package/dist/helpers/npmScripts.js.map +1 -0
  114. package/dist/helpers/opExample.d.ts +5 -4
  115. package/dist/helpers/opExample.js +10 -7
  116. package/dist/helpers/opExample.js.map +1 -1
  117. package/dist/helpers/opShape.d.ts +20 -4
  118. package/dist/helpers/opShape.js +197 -30
  119. package/dist/helpers/opShape.js.map +1 -1
  120. package/dist/helpers/optional.d.ts +20 -0
  121. package/dist/helpers/optional.js +51 -0
  122. package/dist/helpers/optional.js.map +1 -0
  123. package/dist/helpers/packageMeta.d.ts +9 -1
  124. package/dist/helpers/packageMeta.js +70 -11
  125. package/dist/helpers/packageMeta.js.map +1 -1
  126. package/dist/helpers/stdrep.js +3 -0
  127. package/dist/helpers/stdrep.js.map +1 -1
  128. package/dist/helpers/testPolicy.d.ts +9 -1
  129. package/dist/helpers/testPolicy.js +48 -0
  130. package/dist/helpers/testPolicy.js.map +1 -1
  131. package/dist/helpers/text.d.ts +2 -0
  132. package/dist/helpers/text.js +27 -0
  133. package/dist/helpers/text.js.map +1 -0
  134. package/dist/sdkgen.d.ts +15 -8
  135. package/dist/sdkgen.js +79 -12
  136. package/dist/sdkgen.js.map +1 -1
  137. package/dist/testkit.js +2 -1
  138. package/dist/testkit.js.map +1 -1
  139. package/dist/tsconfig.tsbuildinfo +1 -1
  140. package/dist/utility.d.ts +2 -1
  141. package/dist/utility.js +33 -18
  142. package/dist/utility.js.map +1 -1
  143. package/model/sdkgen.aontu +24 -1
  144. package/package.json +8 -2
  145. package/project/.sdk/model/feature/timeout.aontu +2 -0
  146. package/project/.sdk/model/target/go-mcp.aontu +2 -0
  147. package/project/.sdk/src/cmp/c/Config_c.ts +5 -0
  148. package/project/.sdk/src/cmp/c/EntityTypes_c.ts +1 -1
  149. package/project/.sdk/src/cmp/c/Entity_c.ts +1 -1
  150. package/project/.sdk/src/cmp/c/Main_c.ts +4 -20
  151. package/project/.sdk/src/cmp/c/PrepareAuth_c.ts +169 -51
  152. package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +22 -13
  153. package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +10 -5
  154. package/project/.sdk/src/cmp/c/ReadmeInstall_c.ts +2 -2
  155. package/project/.sdk/src/cmp/c/ReadmeIntro_c.ts +3 -3
  156. package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +11 -10
  157. package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +37 -20
  158. package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +39 -21
  159. package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +9 -7
  160. package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +15 -4
  161. package/project/.sdk/src/cmp/c/TestClean_c.ts +56 -22
  162. package/project/.sdk/src/cmp/c/TestDirect_c.ts +2 -2
  163. package/project/.sdk/src/cmp/c/TestEntity_c.ts +77 -4
  164. package/project/.sdk/src/cmp/c/fragment/Entity.fragment.c +33 -27
  165. package/project/.sdk/src/cmp/c/fragment/EntityPatchOp.fragment.c +36 -0
  166. package/project/.sdk/src/cmp/c/fragment/Main.fragment.c +40 -7
  167. package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +1 -1
  168. package/project/.sdk/src/cmp/clojure/Main_clojure.ts +3 -1
  169. package/project/.sdk/src/cmp/clojure/PrepareAuth_clojure.ts +44 -28
  170. package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +7 -4
  171. package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +1 -1
  172. package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +3 -3
  173. package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +3 -3
  174. package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +7 -5
  175. package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +12 -4
  176. package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +24 -7
  177. package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +2 -2
  178. package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +1 -1
  179. package/project/.sdk/src/cmp/clojure/TestClean_clojure.ts +53 -23
  180. package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +64 -5
  181. package/project/.sdk/src/cmp/clojure/fragment/Entity.fragment.clj +22 -11
  182. package/project/.sdk/src/cmp/clojure/fragment/EntityListOp.fragment.clj +7 -9
  183. package/project/.sdk/src/cmp/clojure/fragment/EntityPatchOp.fragment.clj +15 -0
  184. package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +1 -1
  185. package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +2 -2
  186. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +3 -19
  187. package/project/.sdk/src/cmp/cpp/PrepareAuth_cpp.ts +38 -39
  188. package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +19 -12
  189. package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +11 -6
  190. package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +2 -2
  191. package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +3 -3
  192. package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +10 -9
  193. package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +26 -18
  194. package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +42 -25
  195. package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +7 -7
  196. package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +11 -4
  197. package/project/.sdk/src/cmp/cpp/TestClean_cpp.ts +69 -21
  198. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +135 -6
  199. package/project/.sdk/src/cmp/cpp/fragment/Entity.fragment.cpp +2 -0
  200. package/project/.sdk/src/cmp/cpp/fragment/EntityPatchOp.fragment.cpp +28 -0
  201. package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +1 -1
  202. package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +1 -1
  203. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +3 -1
  204. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +4 -1
  205. package/project/.sdk/src/cmp/csharp/PrepareAuth_csharp.ts +69 -23
  206. package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +7 -4
  207. package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +3 -3
  208. package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +3 -3
  209. package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +3 -3
  210. package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +11 -9
  211. package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +17 -6
  212. package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +33 -16
  213. package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +1 -1
  214. package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +1 -1
  215. package/project/.sdk/src/cmp/csharp/TestClean_csharp.ts +67 -14
  216. package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +43 -31
  217. package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +187 -15
  218. package/project/.sdk/src/cmp/csharp/fragment/Entity.fragment.cs +2 -0
  219. package/project/.sdk/src/cmp/csharp/fragment/EntityBase.fragment.cs +11 -2
  220. package/project/.sdk/src/cmp/csharp/fragment/EntityPatchOp.fragment.cs +41 -0
  221. package/project/.sdk/src/cmp/csharp/fragment/Main.fragment.cs +28 -4
  222. package/project/.sdk/src/cmp/csharp/utility_csharp.ts +6 -0
  223. package/project/.sdk/src/cmp/elixir/EntityOperation_elixir.ts +5 -0
  224. package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +3 -3
  225. package/project/.sdk/src/cmp/elixir/Entity_elixir.ts +22 -1
  226. package/project/.sdk/src/cmp/elixir/MainEntity_elixir.ts +4 -2
  227. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +6 -2
  228. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +7 -0
  229. package/project/.sdk/src/cmp/elixir/PrepareAuth_elixir.ts +40 -30
  230. package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +13 -9
  231. package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +6 -5
  232. package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +2 -2
  233. package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +4 -4
  234. package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +13 -11
  235. package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +25 -12
  236. package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +29 -13
  237. package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +5 -4
  238. package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +5 -4
  239. package/project/.sdk/src/cmp/elixir/TestClean_elixir.ts +41 -12
  240. package/project/.sdk/src/cmp/elixir/TestEntity_elixir.ts +152 -23
  241. package/project/.sdk/src/cmp/elixir/fragment/Entity.fragment.ex +4 -4
  242. package/project/.sdk/src/cmp/elixir/fragment/EntityPatchOp.fragment.ex +35 -0
  243. package/project/.sdk/src/cmp/elixir/fragment/Main.fragment.ex +29 -5
  244. package/project/.sdk/src/cmp/elixir/fragment/Pipeline.fragment.ex +23 -16
  245. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +1 -1
  246. package/project/.sdk/src/cmp/go/Entity_go.ts +1 -1
  247. package/project/.sdk/src/cmp/go/Main_go.ts +5 -6
  248. package/project/.sdk/src/cmp/go/PrepareAuth_go.ts +40 -26
  249. package/project/.sdk/src/cmp/go/ReadmeEntity_go.ts +1 -0
  250. package/project/.sdk/src/cmp/go/ReadmeExamplesTest_go.ts +6 -1
  251. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +1 -1
  252. package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +3 -3
  253. package/project/.sdk/src/cmp/go/ReadmeIntro_go.ts +3 -3
  254. package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +3 -2
  255. package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +14 -0
  256. package/project/.sdk/src/cmp/go/ReadmeRef_go.ts +29 -7
  257. package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +1 -1
  258. package/project/.sdk/src/cmp/go/TestClean_go.ts +81 -18
  259. package/project/.sdk/src/cmp/go/TestDirect_go.ts +47 -53
  260. package/project/.sdk/src/cmp/go/TestEntity_go.ts +204 -24
  261. package/project/.sdk/src/cmp/go/fragment/Entity.fragment.go +79 -60
  262. package/project/.sdk/src/cmp/go/fragment/EntityPatchOp.fragment.go +49 -0
  263. package/project/.sdk/src/cmp/go/fragment/Main.fragment.go +26 -5
  264. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +8 -10
  265. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +240 -121
  266. package/project/.sdk/src/cmp/go-mcp/fragment/main.fragment.go +1 -1
  267. package/project/.sdk/src/cmp/go-mcp/fragment/tools.fragment.go +34 -27
  268. package/project/.sdk/src/cmp/java/EntityTypes_java.ts +1 -1
  269. package/project/.sdk/src/cmp/java/Entity_java.ts +1 -1
  270. package/project/.sdk/src/cmp/java/Main_java.ts +3 -1
  271. package/project/.sdk/src/cmp/java/PrepareAuth_java.ts +58 -23
  272. package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +7 -4
  273. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +1 -1
  274. package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +3 -3
  275. package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +3 -3
  276. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +2 -1
  277. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +10 -1
  278. package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +22 -5
  279. package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +1 -1
  280. package/project/.sdk/src/cmp/java/TestClean_java.ts +57 -12
  281. package/project/.sdk/src/cmp/java/TestDirect_java.ts +50 -36
  282. package/project/.sdk/src/cmp/java/TestEntity_java.ts +180 -13
  283. package/project/.sdk/src/cmp/java/fragment/Entity.fragment.java +2 -0
  284. package/project/.sdk/src/cmp/java/fragment/EntityBase.fragment.java +5 -3
  285. package/project/.sdk/src/cmp/java/fragment/EntityPatchOp.fragment.java +45 -0
  286. package/project/.sdk/src/cmp/js/EntityTypes_js.ts +1 -1
  287. package/project/.sdk/src/cmp/js/Entity_js.ts +1 -1
  288. package/project/.sdk/src/cmp/js/Main_js.ts +2 -0
  289. package/project/.sdk/src/cmp/js/Package_js.ts +11 -8
  290. package/project/.sdk/src/cmp/js/PrepareAuth_js.ts +39 -27
  291. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +7 -4
  292. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +0 -3
  293. package/project/.sdk/src/cmp/js/ReadmeInstall_js.ts +3 -3
  294. package/project/.sdk/src/cmp/js/ReadmeIntro_js.ts +3 -3
  295. package/project/.sdk/src/cmp/js/ReadmeModel_js.ts +4 -3
  296. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +17 -0
  297. package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +37 -8
  298. package/project/.sdk/src/cmp/js/ReadmeTopHowto_js.ts +2 -3
  299. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +1 -1
  300. package/project/.sdk/src/cmp/js/TestClean_js.ts +52 -8
  301. package/project/.sdk/src/cmp/js/TestDirect_js.ts +81 -54
  302. package/project/.sdk/src/cmp/js/TestEntity_js.ts +95 -2
  303. package/project/.sdk/src/cmp/js/TestLive_js.ts +4 -3
  304. package/project/.sdk/src/cmp/js/fragment/Direct.test.fragment.js +4 -0
  305. package/project/.sdk/src/cmp/js/fragment/Entity.fragment.js +2 -0
  306. package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +2 -0
  307. package/project/.sdk/src/cmp/js/fragment/EntityBase.fragment.js +51 -25
  308. package/project/.sdk/src/cmp/js/fragment/EntityPatchOp.fragment.js +129 -0
  309. package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +39 -15
  310. package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +4 -0
  311. package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +1 -1
  312. package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +1 -1
  313. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +3 -1
  314. package/project/.sdk/src/cmp/kotlin/PrepareAuth_kotlin.ts +56 -31
  315. package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +7 -4
  316. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +1 -1
  317. package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +3 -3
  318. package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +3 -3
  319. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +2 -1
  320. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +10 -1
  321. package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +22 -5
  322. package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +1 -1
  323. package/project/.sdk/src/cmp/kotlin/TestClean_kotlin.ts +45 -10
  324. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +49 -26
  325. package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +168 -10
  326. package/project/.sdk/src/cmp/kotlin/fragment/Entity.fragment.kt +2 -0
  327. package/project/.sdk/src/cmp/kotlin/fragment/EntityBase.fragment.kt +2 -1
  328. package/project/.sdk/src/cmp/kotlin/fragment/EntityPatchOp.fragment.kt +40 -0
  329. package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +1 -1
  330. package/project/.sdk/src/cmp/lua/Entity_lua.ts +1 -1
  331. package/project/.sdk/src/cmp/lua/Main_lua.ts +2 -1
  332. package/project/.sdk/src/cmp/lua/PrepareAuth_lua.ts +42 -23
  333. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +7 -4
  334. package/project/.sdk/src/cmp/lua/ReadmeExamplesTest_lua.ts +8 -2
  335. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +1 -1
  336. package/project/.sdk/src/cmp/lua/ReadmeInstall_lua.ts +2 -2
  337. package/project/.sdk/src/cmp/lua/ReadmeIntro_lua.ts +3 -3
  338. package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +3 -2
  339. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +9 -1
  340. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +22 -6
  341. package/project/.sdk/src/cmp/lua/ReadmeTopTest_lua.ts +1 -1
  342. package/project/.sdk/src/cmp/lua/TestClean_lua.ts +46 -12
  343. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +100 -124
  344. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +173 -20
  345. package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +85 -48
  346. package/project/.sdk/src/cmp/lua/fragment/EntityPatchOp.fragment.lua +34 -0
  347. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +28 -6
  348. package/project/.sdk/src/cmp/ocaml/EntityOperation_ocaml.ts +8 -11
  349. package/project/.sdk/src/cmp/ocaml/Entity_ocaml.ts +8 -3
  350. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +2 -1
  351. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +7 -5
  352. package/project/.sdk/src/cmp/ocaml/PrepareAuth_ocaml.ts +39 -34
  353. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +7 -4
  354. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +3 -8
  355. package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +2 -2
  356. package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +3 -3
  357. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +2 -1
  358. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +9 -1
  359. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +22 -6
  360. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +3 -7
  361. package/project/.sdk/src/cmp/ocaml/TestClean_ocaml.ts +47 -14
  362. package/project/.sdk/src/cmp/ocaml/TestEntity_ocaml.ts +88 -3
  363. package/project/.sdk/src/cmp/ocaml/fragment/RunOp.fragment.ml +10 -11
  364. package/project/.sdk/src/cmp/ocaml/utility_ocaml.ts +7 -0
  365. package/project/.sdk/src/cmp/perl/Entity_perl.ts +1 -1
  366. package/project/.sdk/src/cmp/perl/Main_perl.ts +3 -1
  367. package/project/.sdk/src/cmp/perl/Package_perl.ts +5 -4
  368. package/project/.sdk/src/cmp/perl/PrepareAuth_perl.ts +48 -33
  369. package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +9 -4
  370. package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +2 -2
  371. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +1 -1
  372. package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +9 -3
  373. package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +3 -3
  374. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +7 -5
  375. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +12 -4
  376. package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +26 -9
  377. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +2 -2
  378. package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +1 -1
  379. package/project/.sdk/src/cmp/perl/TestClean_perl.ts +42 -11
  380. package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +121 -149
  381. package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +178 -17
  382. package/project/.sdk/src/cmp/perl/fragment/Entity.fragment.pm +16 -2
  383. package/project/.sdk/src/cmp/perl/fragment/EntityListOp.fragment.pm +2 -13
  384. package/project/.sdk/src/cmp/perl/fragment/EntityPatchOp.fragment.pm +32 -0
  385. package/project/.sdk/src/cmp/perl/fragment/Main.fragment.pm +23 -5
  386. package/project/.sdk/src/cmp/perl/utility_perl.ts +16 -0
  387. package/project/.sdk/src/cmp/php/EntityTypes_php.ts +3 -3
  388. package/project/.sdk/src/cmp/php/Entity_php.ts +4 -3
  389. package/project/.sdk/src/cmp/php/MainEntity_php.ts +1 -1
  390. package/project/.sdk/src/cmp/php/Main_php.ts +3 -1
  391. package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
  392. package/project/.sdk/src/cmp/php/PrepareAuth_php.ts +36 -28
  393. package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +7 -4
  394. package/project/.sdk/src/cmp/php/ReadmeExamplesTest_php.ts +3 -3
  395. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +1 -1
  396. package/project/.sdk/src/cmp/php/ReadmeInstall_php.ts +2 -2
  397. package/project/.sdk/src/cmp/php/ReadmeIntro_php.ts +3 -3
  398. package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +2 -1
  399. package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +9 -1
  400. package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +23 -6
  401. package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +1 -1
  402. package/project/.sdk/src/cmp/php/TestClean_php.ts +73 -12
  403. package/project/.sdk/src/cmp/php/TestDirect_php.ts +95 -127
  404. package/project/.sdk/src/cmp/php/TestEntity_php.ts +219 -20
  405. package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +82 -45
  406. package/project/.sdk/src/cmp/php/fragment/EntityPatchOp.fragment.php +38 -0
  407. package/project/.sdk/src/cmp/php/fragment/Main.fragment.php +26 -5
  408. package/project/.sdk/src/cmp/py/EntityTypes_py.ts +1 -1
  409. package/project/.sdk/src/cmp/py/Entity_py.ts +2 -2
  410. package/project/.sdk/src/cmp/py/Main_py.ts +6 -2
  411. package/project/.sdk/src/cmp/py/Package_py.ts +7 -0
  412. package/project/.sdk/src/cmp/py/PrepareAuth_py.ts +52 -26
  413. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +7 -4
  414. package/project/.sdk/src/cmp/py/ReadmeExamplesTest_py.ts +12 -6
  415. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +1 -1
  416. package/project/.sdk/src/cmp/py/ReadmeInstall_py.ts +3 -3
  417. package/project/.sdk/src/cmp/py/ReadmeIntro_py.ts +3 -3
  418. package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +2 -1
  419. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +9 -1
  420. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +23 -6
  421. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +1 -1
  422. package/project/.sdk/src/cmp/py/TestClean_py.ts +41 -10
  423. package/project/.sdk/src/cmp/py/TestDirect_py.ts +91 -121
  424. package/project/.sdk/src/cmp/py/TestEntity_py.ts +146 -20
  425. package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +62 -42
  426. package/project/.sdk/src/cmp/py/fragment/EntityPatchOp.fragment.py +27 -0
  427. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +23 -5
  428. package/project/.sdk/src/cmp/py-data/Main_py-data.ts +1 -1
  429. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +3 -3
  430. package/project/.sdk/src/cmp/rb/Entity_rb.ts +1 -1
  431. package/project/.sdk/src/cmp/rb/Main_rb.ts +5 -6
  432. package/project/.sdk/src/cmp/rb/Package_rb.ts +3 -1
  433. package/project/.sdk/src/cmp/rb/PrepareAuth_rb.ts +30 -28
  434. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +9 -5
  435. package/project/.sdk/src/cmp/rb/ReadmeExamplesTest_rb.ts +16 -8
  436. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +1 -1
  437. package/project/.sdk/src/cmp/rb/ReadmeInstall_rb.ts +2 -2
  438. package/project/.sdk/src/cmp/rb/ReadmeIntro_rb.ts +3 -3
  439. package/project/.sdk/src/cmp/rb/ReadmeModel_rb.ts +3 -2
  440. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +14 -5
  441. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +26 -8
  442. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
  443. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +1 -1
  444. package/project/.sdk/src/cmp/rb/TestClean_rb.ts +36 -10
  445. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +95 -126
  446. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +177 -21
  447. package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +49 -29
  448. package/project/.sdk/src/cmp/rb/fragment/EntityListOp.fragment.rb +2 -11
  449. package/project/.sdk/src/cmp/rb/fragment/EntityPatchOp.fragment.rb +31 -0
  450. package/project/.sdk/src/cmp/rb/fragment/Main.fragment.rb +19 -5
  451. package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +1 -1
  452. package/project/.sdk/src/cmp/rust/Entity_rust.ts +2 -2
  453. package/project/.sdk/src/cmp/rust/Main_rust.ts +7 -6
  454. package/project/.sdk/src/cmp/rust/PrepareAuth_rust.ts +56 -29
  455. package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +16 -9
  456. package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +11 -4
  457. package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +3 -3
  458. package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +3 -3
  459. package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +12 -9
  460. package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +25 -17
  461. package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +35 -21
  462. package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +6 -8
  463. package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +13 -5
  464. package/project/.sdk/src/cmp/rust/TestClean_rust.ts +80 -21
  465. package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +124 -79
  466. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +164 -17
  467. package/project/.sdk/src/cmp/rust/fragment/Entity.fragment.rs +44 -23
  468. package/project/.sdk/src/cmp/rust/fragment/EntityPatchOp.fragment.rs +41 -0
  469. package/project/.sdk/src/cmp/rust/fragment/Main.fragment.rs +39 -9
  470. package/project/.sdk/src/cmp/scala/Config_scala.ts +4 -0
  471. package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +1 -1
  472. package/project/.sdk/src/cmp/scala/Entity_scala.ts +1 -1
  473. package/project/.sdk/src/cmp/scala/Main_scala.ts +4 -20
  474. package/project/.sdk/src/cmp/scala/PrepareAuth_scala.ts +56 -24
  475. package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +7 -4
  476. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +1 -1
  477. package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +3 -3
  478. package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +3 -3
  479. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +2 -1
  480. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +10 -1
  481. package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +22 -5
  482. package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +1 -1
  483. package/project/.sdk/src/cmp/scala/TestClean_scala.ts +39 -10
  484. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +113 -3
  485. package/project/.sdk/src/cmp/scala/fragment/Entity.fragment.scala +2 -0
  486. package/project/.sdk/src/cmp/scala/fragment/EntityBase.fragment.scala +4 -2
  487. package/project/.sdk/src/cmp/scala/fragment/EntityPatchOp.fragment.scala +33 -0
  488. package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +3 -3
  489. package/project/.sdk/src/cmp/swift/Entity_swift.ts +1 -1
  490. package/project/.sdk/src/cmp/swift/Main_swift.ts +6 -2
  491. package/project/.sdk/src/cmp/swift/PrepareAuth_swift.ts +56 -29
  492. package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +7 -4
  493. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +1 -1
  494. package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +3 -3
  495. package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +3 -3
  496. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +2 -1
  497. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +10 -1
  498. package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +21 -5
  499. package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +1 -1
  500. package/project/.sdk/src/cmp/swift/TestClean_swift.ts +44 -10
  501. package/project/.sdk/src/cmp/swift/TestEntity_swift.ts +90 -2
  502. package/project/.sdk/src/cmp/swift/fragment/Entity.fragment.swift +2 -0
  503. package/project/.sdk/src/cmp/swift/fragment/EntityBase.fragment.swift +9 -1
  504. package/project/.sdk/src/cmp/swift/fragment/EntityPatchOp.fragment.swift +24 -0
  505. package/project/.sdk/src/cmp/swift/fragment/Main.fragment.swift +23 -3
  506. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +9 -3
  507. package/project/.sdk/src/cmp/ts/Entity_ts.ts +5 -5
  508. package/project/.sdk/src/cmp/ts/Main_ts.ts +4 -3
  509. package/project/.sdk/src/cmp/ts/Package_ts.ts +18 -10
  510. package/project/.sdk/src/cmp/ts/PrepareAuth_ts.ts +37 -28
  511. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +7 -4
  512. package/project/.sdk/src/cmp/ts/ReadmeExamplesTest_ts.ts +39 -21
  513. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +0 -3
  514. package/project/.sdk/src/cmp/ts/ReadmeInstall_ts.ts +3 -3
  515. package/project/.sdk/src/cmp/ts/ReadmeIntro_ts.ts +3 -3
  516. package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +4 -3
  517. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +10 -1
  518. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +37 -8
  519. package/project/.sdk/src/cmp/ts/ReadmeTopHowto_ts.ts +2 -3
  520. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +1 -1
  521. package/project/.sdk/src/cmp/ts/TestClean_ts.ts +52 -8
  522. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +50 -109
  523. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +92 -2
  524. package/project/.sdk/src/cmp/ts/TestLive_ts.ts +4 -3
  525. package/project/.sdk/src/cmp/ts/fragment/Direct.test.fragment.ts +3 -0
  526. package/project/.sdk/src/cmp/ts/fragment/Entity.fragment.ts +2 -0
  527. package/project/.sdk/src/cmp/ts/fragment/Entity.test.fragment.ts +3 -1
  528. package/project/.sdk/src/cmp/ts/fragment/EntityBase.fragment.ts +49 -24
  529. package/project/.sdk/src/cmp/ts/fragment/EntityPatchOp.fragment.ts +126 -0
  530. package/project/.sdk/src/cmp/ts/fragment/Main.fragment.ts +50 -18
  531. package/project/.sdk/src/cmp/zig/Entity_zig.ts +2 -2
  532. package/project/.sdk/src/cmp/zig/Main_zig.ts +5 -22
  533. package/project/.sdk/src/cmp/zig/Package_zig.ts +11 -2
  534. package/project/.sdk/src/cmp/zig/PrepareAuth_zig.ts +57 -31
  535. package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +17 -9
  536. package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +14 -4
  537. package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +2 -2
  538. package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +3 -3
  539. package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +12 -10
  540. package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +29 -12
  541. package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +45 -22
  542. package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +8 -4
  543. package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +10 -3
  544. package/project/.sdk/src/cmp/zig/TestClean_zig.ts +67 -28
  545. package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +54 -5
  546. package/project/.sdk/src/cmp/zig/Test_zig.ts +1 -0
  547. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +44 -34
  548. package/project/.sdk/src/cmp/zig/fragment/EntityPatchOp.fragment.zig +26 -0
  549. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +30 -6
  550. package/project/.sdk/src/cmp/zig/fragment/Root.fragment.zig +1 -0
  551. package/project/.sdk/tm/c/LICENSE +1 -1
  552. package/project/.sdk/tm/c/core/context.c +2 -1
  553. package/project/.sdk/tm/c/core/helpers.c +21 -0
  554. package/project/.sdk/tm/c/core/response.c +103 -0
  555. package/project/.sdk/tm/c/core/sdk.h +26 -0
  556. package/project/.sdk/tm/c/core/spec.c +10 -0
  557. package/project/.sdk/tm/c/feature/test.c +46 -2
  558. package/project/.sdk/tm/c/feature/validate.c +2 -0
  559. package/project/.sdk/tm/c/tests/feature_harness.h +1 -1
  560. package/project/.sdk/tm/c/tests/primary_utility_test.c +9 -5
  561. package/project/.sdk/tm/c/tests/server_variable_test.c +80 -0
  562. package/project/.sdk/tm/c/utility/make_fetch_def.c +5 -1
  563. package/project/.sdk/tm/c/utility/make_options.c +84 -6
  564. package/project/.sdk/tm/c/utility/make_point.c +100 -8
  565. package/project/.sdk/tm/c/utility/make_spec.c +17 -1
  566. package/project/.sdk/tm/c/utility/make_url.c +38 -1
  567. package/project/.sdk/tm/c/utility/media.c +107 -0
  568. package/project/.sdk/tm/c/utility/param.c +52 -28
  569. package/project/.sdk/tm/c/utility/prepare_body.c +1 -0
  570. package/project/.sdk/tm/c/utility/prepare_headers.c +199 -29
  571. package/project/.sdk/tm/c/utility/prepare_query.c +24 -2
  572. package/project/.sdk/tm/c/utility/result_body.c +4 -0
  573. package/project/.sdk/tm/c/utility/transform_request.c +54 -17
  574. package/project/.sdk/tm/clojure/LICENSE +1 -1
  575. package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +0 -3
  576. package/project/.sdk/tm/clojure/src/sdk/client.clj +19 -5
  577. package/project/.sdk/tm/clojure/src/sdk/core.clj +415 -117
  578. package/project/.sdk/tm/clojure/src/sdk/features.clj +44 -20
  579. package/project/.sdk/tm/clojure/test/sdk/test/feature.clj +21 -1
  580. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +10 -2
  581. package/project/.sdk/tm/cpp/LICENSE +1 -1
  582. package/project/.sdk/tm/cpp/core/types.hpp +131 -7
  583. package/project/.sdk/tm/cpp/feature/test.hpp +32 -2
  584. package/project/.sdk/tm/cpp/feature/timeout.hpp +29 -9
  585. package/project/.sdk/tm/cpp/feature/validate.hpp +2 -0
  586. package/project/.sdk/tm/cpp/test/feature_test.cpp +37 -0
  587. package/project/.sdk/tm/cpp/test/harness.hpp +1 -1
  588. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +6 -2
  589. package/project/.sdk/tm/cpp/test/server_variable_test.cpp +57 -0
  590. package/project/.sdk/tm/cpp/utility/cookie.hpp +36 -0
  591. package/project/.sdk/tm/cpp/utility/pipeline.hpp +441 -82
  592. package/project/.sdk/tm/csharp/LICENSE +1 -1
  593. package/project/.sdk/tm/csharp/core/Context.cs +1 -1
  594. package/project/.sdk/tm/csharp/core/Helpers.cs +17 -0
  595. package/project/.sdk/tm/csharp/core/Response.cs +75 -0
  596. package/project/.sdk/tm/csharp/core/Spec.cs +3 -0
  597. package/project/.sdk/tm/csharp/feature/TestFeature.cs +41 -3
  598. package/project/.sdk/tm/csharp/feature/TimeoutFeature.cs +31 -3
  599. package/project/.sdk/tm/csharp/feature/ValidateFeature.cs +2 -0
  600. package/project/.sdk/tm/csharp/test/FeatureHarness.cs +1 -1
  601. package/project/.sdk/tm/csharp/test/FeatureTest.cs +35 -0
  602. package/project/.sdk/tm/csharp/test/PipelineTest.cs +28 -0
  603. package/project/.sdk/tm/csharp/test/Runner.cs +119 -0
  604. package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +8 -3
  605. package/project/.sdk/tm/csharp/utility/Fetcher.cs +25 -7
  606. package/project/.sdk/tm/csharp/utility/MakeFetchDef.cs +1 -5
  607. package/project/.sdk/tm/csharp/utility/MakeOptions.cs +8 -6
  608. package/project/.sdk/tm/csharp/utility/MakePoint.cs +68 -17
  609. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +24 -6
  610. package/project/.sdk/tm/csharp/utility/MakeUrl.cs +21 -1
  611. package/project/.sdk/tm/csharp/utility/Media.cs +124 -0
  612. package/project/.sdk/tm/csharp/utility/Param.cs +57 -20
  613. package/project/.sdk/tm/csharp/utility/PrepareBody.cs +4 -0
  614. package/project/.sdk/tm/csharp/utility/PrepareHeaders.cs +103 -24
  615. package/project/.sdk/tm/csharp/utility/PrepareQuery.cs +33 -3
  616. package/project/.sdk/tm/csharp/utility/ResultBody.cs +5 -0
  617. package/project/.sdk/tm/csharp/utility/TransformRequest.cs +21 -13
  618. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +3 -2
  619. package/project/.sdk/tm/elixir/LICENSE +1 -1
  620. package/project/.sdk/tm/elixir/lib/projectname/context.ex +1 -1
  621. package/project/.sdk/tm/elixir/lib/projectname/core.ex +7 -2
  622. package/project/.sdk/tm/elixir/lib/projectname/entity_base.ex +43 -12
  623. package/project/.sdk/tm/elixir/lib/projectname/feature/test.ex +47 -21
  624. package/project/.sdk/tm/elixir/lib/projectname/feature/validate.ex +2 -0
  625. package/project/.sdk/tm/elixir/lib/projectname/utility.ex +482 -129
  626. package/project/.sdk/tm/elixir/test/support/feature_harness.ex +1 -0
  627. package/project/.sdk/tm/go/LICENSE +1 -1
  628. package/project/.sdk/tm/go/core/context.go +1 -1
  629. package/project/.sdk/tm/go/core/helpers.go +19 -1
  630. package/project/.sdk/tm/go/core/response.go +72 -0
  631. package/project/.sdk/tm/go/core/spec.go +3 -0
  632. package/project/.sdk/tm/go/core/types.go +9 -1
  633. package/project/.sdk/tm/go/feature/test_feature.go +44 -3
  634. package/project/.sdk/tm/go/feature/timeout_feature.go +39 -22
  635. package/project/.sdk/tm/go/feature/validate_feature.go +2 -0
  636. package/project/.sdk/tm/go/test/feature_corpus_test.go +45 -1
  637. package/project/.sdk/tm/go/test/feature_harness_test.go +1 -1
  638. package/project/.sdk/tm/go/test/feature_test.go +86 -0
  639. package/project/.sdk/tm/go/test/primary_utility_test.go +37 -1
  640. package/project/.sdk/tm/go/test/testsupport_test.go +106 -0
  641. package/project/.sdk/tm/go/utility/fetcher.go +20 -6
  642. package/project/.sdk/tm/go/utility/make_fetch_def.go +1 -7
  643. package/project/.sdk/tm/go/utility/make_options.go +12 -6
  644. package/project/.sdk/tm/go/utility/make_point.go +52 -3
  645. package/project/.sdk/tm/go/utility/make_spec.go +23 -3
  646. package/project/.sdk/tm/go/utility/make_url.go +23 -1
  647. package/project/.sdk/tm/go/utility/media.go +111 -0
  648. package/project/.sdk/tm/go/utility/param.go +61 -20
  649. package/project/.sdk/tm/go/utility/prepare_body.go +3 -0
  650. package/project/.sdk/tm/go/utility/prepare_headers.go +108 -22
  651. package/project/.sdk/tm/go/utility/prepare_query.go +25 -2
  652. package/project/.sdk/tm/go/utility/result_body.go +8 -0
  653. package/project/.sdk/tm/go/utility/transform_request.go +20 -9
  654. package/project/.sdk/tm/java/LICENSE +1 -1
  655. package/project/.sdk/tm/java/core/Context.java +1 -1
  656. package/project/.sdk/tm/java/core/Helpers.java +13 -0
  657. package/project/.sdk/tm/java/core/Response.java +61 -0
  658. package/project/.sdk/tm/java/core/SdkClient.java +21 -3
  659. package/project/.sdk/tm/java/core/SdkEntity.java +2 -0
  660. package/project/.sdk/tm/java/core/Spec.java +4 -0
  661. package/project/.sdk/tm/java/feature/TestFeature.java +46 -3
  662. package/project/.sdk/tm/java/feature/TimeoutFeature.java +51 -18
  663. package/project/.sdk/tm/java/feature/ValidateFeature.java +2 -0
  664. package/project/.sdk/tm/java/test/FeatureCorpusTest.java +93 -35
  665. package/project/.sdk/tm/java/test/FeatureHarness.java +1 -0
  666. package/project/.sdk/tm/java/test/FeatureTest.java +33 -0
  667. package/project/.sdk/tm/java/test/PipelineTest.java +4 -1
  668. package/project/.sdk/tm/java/test/RunnerSupport.java +97 -0
  669. package/project/.sdk/tm/java/utility/Clean.java +17 -7
  670. package/project/.sdk/tm/java/utility/Fetcher.java +27 -3
  671. package/project/.sdk/tm/java/utility/MakeFetchDef.java +1 -7
  672. package/project/.sdk/tm/java/utility/MakePoint.java +62 -10
  673. package/project/.sdk/tm/java/utility/MakeSpec.java +26 -1
  674. package/project/.sdk/tm/java/utility/MakeUrl.java +23 -1
  675. package/project/.sdk/tm/java/utility/Media.java +117 -0
  676. package/project/.sdk/tm/java/utility/Param.java +59 -20
  677. package/project/.sdk/tm/java/utility/PrepareBody.java +3 -0
  678. package/project/.sdk/tm/java/utility/PrepareHeaders.java +76 -18
  679. package/project/.sdk/tm/java/utility/PrepareMethod.java +2 -1
  680. package/project/.sdk/tm/java/utility/PrepareQuery.java +26 -2
  681. package/project/.sdk/tm/java/utility/ResultBody.java +5 -0
  682. package/project/.sdk/tm/java/utility/TransformRequest.java +24 -11
  683. package/project/.sdk/tm/js/LICENSE +1 -1
  684. package/project/.sdk/tm/js/src/Context.js +1 -1
  685. package/project/.sdk/tm/js/src/Control.js +1 -0
  686. package/project/.sdk/tm/js/src/Response.js +10 -1
  687. package/project/.sdk/tm/js/src/Spec.js +3 -0
  688. package/project/.sdk/tm/js/src/feature/base/BaseFeature.js +28 -0
  689. package/project/.sdk/tm/js/src/feature/netsim/NetsimFeature.js +10 -8
  690. package/project/.sdk/tm/js/src/feature/ratelimit/RatelimitFeature.js +8 -6
  691. package/project/.sdk/tm/js/src/feature/retry/RetryFeature.js +17 -4
  692. package/project/.sdk/tm/js/src/feature/test/TestFeature.js +40 -12
  693. package/project/.sdk/tm/js/src/feature/timeout/TimeoutFeature.js +17 -3
  694. package/project/.sdk/tm/js/src/feature/validate/ValidateFeature.js +2 -0
  695. package/project/.sdk/tm/js/src/utility/CleanUtility.js +25 -1
  696. package/project/.sdk/tm/js/src/utility/FetcherUtility.js +23 -1
  697. package/project/.sdk/tm/js/src/utility/MakeErrorUtility.js +2 -2
  698. package/project/.sdk/tm/js/src/utility/MakeFetchDefUtility.js +14 -2
  699. package/project/.sdk/tm/js/src/utility/MakeOptionsUtility.js +6 -6
  700. package/project/.sdk/tm/js/src/utility/MakePointUtility.js +39 -2
  701. package/project/.sdk/tm/js/src/utility/MakeRequestUtility.js +27 -2
  702. package/project/.sdk/tm/js/src/utility/MakeResponseUtility.js +2 -1
  703. package/project/.sdk/tm/js/src/utility/MakeSpecUtility.js +14 -1
  704. package/project/.sdk/tm/js/src/utility/MakeUrlUtility.js +23 -0
  705. package/project/.sdk/tm/js/src/utility/MediaUtility.js +145 -0
  706. package/project/.sdk/tm/js/src/utility/ParamUtility.js +46 -18
  707. package/project/.sdk/tm/js/src/utility/PrepareBodyUtility.js +6 -0
  708. package/project/.sdk/tm/js/src/utility/PrepareHeadersUtility.js +55 -14
  709. package/project/.sdk/tm/js/src/utility/PrepareMethodUtility.js +9 -0
  710. package/project/.sdk/tm/js/src/utility/PrepareQueryUtility.js +23 -6
  711. package/project/.sdk/tm/js/src/utility/ResultBodyUtility.js +60 -3
  712. package/project/.sdk/tm/js/src/utility/TransformRequestUtility.js +16 -7
  713. package/project/.sdk/tm/js/test/definition-runner.js +103 -3
  714. package/project/.sdk/tm/js/test/feature/Corpus.test.js +47 -16
  715. package/project/.sdk/tm/js/test/feature/harness.js +4 -1
  716. package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +7 -7
  717. package/project/.sdk/tm/js/test/feature.test.js +134 -0
  718. package/project/.sdk/tm/js/test/live-contract.js +73 -3
  719. package/project/.sdk/tm/js/test/live-entity.js +34 -15
  720. package/project/.sdk/tm/js/test/live-runner.js +52 -7
  721. package/project/.sdk/tm/js/test/live-scenarios.js +4 -4
  722. package/project/.sdk/tm/js/test/pipeline.test.js +52 -1
  723. package/project/.sdk/tm/js/test/utility.js +30 -4
  724. package/project/.sdk/tm/kotlin/LICENSE +1 -1
  725. package/project/.sdk/tm/kotlin/core/Context.kt +1 -1
  726. package/project/.sdk/tm/kotlin/core/Helpers.kt +8 -0
  727. package/project/.sdk/tm/kotlin/core/Interfaces.kt +2 -0
  728. package/project/.sdk/tm/kotlin/core/Response.kt +65 -0
  729. package/project/.sdk/tm/kotlin/core/SdkClient.kt +20 -3
  730. package/project/.sdk/tm/kotlin/core/Spec.kt +3 -0
  731. package/project/.sdk/tm/kotlin/feature/TestFeature.kt +23 -3
  732. package/project/.sdk/tm/kotlin/feature/TimeoutFeature.kt +42 -15
  733. package/project/.sdk/tm/kotlin/feature/ValidateFeature.kt +2 -0
  734. package/project/.sdk/tm/kotlin/test/FeatureHarness.kt +1 -1
  735. package/project/.sdk/tm/kotlin/test/FeatureTest.kt +32 -0
  736. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +90 -0
  737. package/project/.sdk/tm/kotlin/test/ServerVariableTest.kt +50 -0
  738. package/project/.sdk/tm/kotlin/utility/CoreUtil.kt +9 -7
  739. package/project/.sdk/tm/kotlin/utility/Fetcher.kt +24 -4
  740. package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +26 -0
  741. package/project/.sdk/tm/kotlin/utility/MakePoint.kt +57 -12
  742. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +26 -7
  743. package/project/.sdk/tm/kotlin/utility/Media.kt +83 -0
  744. package/project/.sdk/tm/kotlin/utility/Prepare.kt +127 -48
  745. package/project/.sdk/tm/kotlin/utility/ResultTransform.kt +18 -7
  746. package/project/.sdk/tm/lua/LICENSE +1 -1
  747. package/project/.sdk/tm/lua/core/context.lua +1 -1
  748. package/project/.sdk/tm/lua/core/helpers.lua +103 -0
  749. package/project/.sdk/tm/lua/core/response.lua +3 -0
  750. package/project/.sdk/tm/lua/core/spec.lua +3 -0
  751. package/project/.sdk/tm/lua/feature/test_feature.lua +36 -3
  752. package/project/.sdk/tm/lua/feature/validate_feature.lua +2 -0
  753. package/project/.sdk/tm/lua/test/feature_test.lua +1 -1
  754. package/project/.sdk/tm/lua/test/runner.lua +107 -0
  755. package/project/.sdk/tm/lua/utility/fetcher.lua +9 -2
  756. package/project/.sdk/tm/lua/utility/make_fetch_def.lua +2 -6
  757. package/project/.sdk/tm/lua/utility/make_options.lua +10 -7
  758. package/project/.sdk/tm/lua/utility/make_point.lua +65 -12
  759. package/project/.sdk/tm/lua/utility/make_spec.lua +19 -4
  760. package/project/.sdk/tm/lua/utility/make_url.lua +22 -1
  761. package/project/.sdk/tm/lua/utility/media.lua +106 -0
  762. package/project/.sdk/tm/lua/utility/param.lua +5 -45
  763. package/project/.sdk/tm/lua/utility/prepare_body.lua +5 -0
  764. package/project/.sdk/tm/lua/utility/prepare_headers.lua +71 -21
  765. package/project/.sdk/tm/lua/utility/prepare_query.lua +28 -6
  766. package/project/.sdk/tm/lua/utility/result_body.lua +7 -0
  767. package/project/.sdk/tm/lua/utility/transform_request.lua +23 -10
  768. package/project/.sdk/tm/lua/utility/unreadable_body.lua +70 -0
  769. package/project/.sdk/tm/ocaml/LICENSE +1 -1
  770. package/project/.sdk/tm/ocaml/sdk_features.ml +56 -10
  771. package/project/.sdk/tm/ocaml/sdk_helpers.ml +9 -0
  772. package/project/.sdk/tm/ocaml/sdk_runtime.ml +359 -85
  773. package/project/.sdk/tm/ocaml/sdk_types.ml +6 -0
  774. package/project/.sdk/tm/ocaml/test/harness.ml +1 -1
  775. package/project/.sdk/tm/ocaml/test/t_pipeline.ml +2 -1
  776. package/project/.sdk/tm/perl/LICENSE +1 -1
  777. package/project/.sdk/tm/perl/core/context.pm +1 -1
  778. package/project/.sdk/tm/perl/core/response.pm +2 -0
  779. package/project/.sdk/tm/perl/core/spec.pm +3 -0
  780. package/project/.sdk/tm/perl/feature/test_feature.pm +26 -3
  781. package/project/.sdk/tm/perl/feature/validate_feature.pm +2 -0
  782. package/project/.sdk/tm/perl/t/feature.t +1 -1
  783. package/project/.sdk/tm/perl/t/feature_corpus.t +72 -33
  784. package/project/.sdk/tm/perl/t/runner.pm +86 -0
  785. package/project/.sdk/tm/perl/t/server_variables.t +39 -0
  786. package/project/.sdk/tm/perl/utility/clean.pm +12 -7
  787. package/project/.sdk/tm/perl/utility/fetcher.pm +32 -19
  788. package/project/.sdk/tm/perl/utility/make_fetch_def.pm +4 -4
  789. package/project/.sdk/tm/perl/utility/make_options.pm +24 -0
  790. package/project/.sdk/tm/perl/utility/make_point.pm +55 -9
  791. package/project/.sdk/tm/perl/utility/make_spec.pm +27 -3
  792. package/project/.sdk/tm/perl/utility/make_url.pm +13 -1
  793. package/project/.sdk/tm/perl/utility/media.pm +109 -0
  794. package/project/.sdk/tm/perl/utility/param.pm +50 -24
  795. package/project/.sdk/tm/perl/utility/prepare_body.pm +11 -3
  796. package/project/.sdk/tm/perl/utility/prepare_headers.pm +63 -16
  797. package/project/.sdk/tm/perl/utility/prepare_method.pm +13 -0
  798. package/project/.sdk/tm/perl/utility/prepare_query.pm +18 -4
  799. package/project/.sdk/tm/perl/utility/result_body.pm +60 -0
  800. package/project/.sdk/tm/perl/utility/transform_request.pm +23 -8
  801. package/project/.sdk/tm/php/LICENSE +1 -1
  802. package/project/.sdk/tm/php/core/Context.php +1 -1
  803. package/project/.sdk/tm/php/core/Response.php +3 -0
  804. package/project/.sdk/tm/php/core/Spec.php +4 -0
  805. package/project/.sdk/tm/php/feature/CostFeature.php +2 -7
  806. package/project/.sdk/tm/php/feature/TestFeature.php +33 -3
  807. package/project/.sdk/tm/php/feature/ValidateFeature.php +14 -12
  808. package/project/.sdk/tm/php/test/FeatureCorpusTest.php +90 -35
  809. package/project/.sdk/tm/php/test/FeatureTest.php +4 -5
  810. package/project/.sdk/tm/php/test/PipelineTest.php +18 -1
  811. package/project/.sdk/tm/php/test/Runner.php +86 -0
  812. package/project/.sdk/tm/php/utility/Clean.php +10 -5
  813. package/project/.sdk/tm/php/utility/Fetcher.php +48 -6
  814. package/project/.sdk/tm/php/utility/MakeFetchDef.php +2 -1
  815. package/project/.sdk/tm/php/utility/MakePoint.php +55 -11
  816. package/project/.sdk/tm/php/utility/MakeSpec.php +21 -4
  817. package/project/.sdk/tm/php/utility/MakeUrl.php +16 -1
  818. package/project/.sdk/tm/php/utility/Media.php +111 -0
  819. package/project/.sdk/tm/php/utility/Param.php +66 -27
  820. package/project/.sdk/tm/php/utility/PrepareBody.php +5 -0
  821. package/project/.sdk/tm/php/utility/PrepareHeaders.php +83 -23
  822. package/project/.sdk/tm/php/utility/PrepareMethod.php +15 -0
  823. package/project/.sdk/tm/php/utility/PrepareQuery.php +22 -8
  824. package/project/.sdk/tm/php/utility/ResultBody.php +71 -0
  825. package/project/.sdk/tm/php/utility/TransformRequest.php +22 -11
  826. package/project/.sdk/tm/py/LICENSE +1 -1
  827. package/project/.sdk/tm/py/pkg/core/context.py +1 -1
  828. package/project/.sdk/tm/py/pkg/core/response.py +3 -0
  829. package/project/.sdk/tm/py/pkg/core/spec.py +3 -0
  830. package/project/.sdk/tm/py/pkg/feature/test_feature.py +27 -3
  831. package/project/.sdk/tm/py/pkg/feature/validate_feature.py +2 -0
  832. package/project/.sdk/tm/py/pkg/utility/fetcher.py +17 -7
  833. package/project/.sdk/tm/py/pkg/utility/make_fetch_def.py +2 -5
  834. package/project/.sdk/tm/py/pkg/utility/make_options.py +14 -8
  835. package/project/.sdk/tm/py/pkg/utility/make_point.py +40 -4
  836. package/project/.sdk/tm/py/pkg/utility/make_spec.py +12 -4
  837. package/project/.sdk/tm/py/pkg/utility/make_url.py +19 -1
  838. package/project/.sdk/tm/py/pkg/utility/media.py +88 -0
  839. package/project/.sdk/tm/py/pkg/utility/param.py +47 -18
  840. package/project/.sdk/tm/py/pkg/utility/prepare_body.py +4 -0
  841. package/project/.sdk/tm/py/pkg/utility/prepare_headers.py +56 -20
  842. package/project/.sdk/tm/py/pkg/utility/prepare_method.py +7 -0
  843. package/project/.sdk/tm/py/pkg/utility/prepare_query.py +17 -8
  844. package/project/.sdk/tm/py/pkg/utility/result_body.py +51 -0
  845. package/project/.sdk/tm/py/pkg/utility/transform_request.py +18 -9
  846. package/project/.sdk/tm/py/test/feature_harness.py +1 -1
  847. package/project/.sdk/tm/py/test/runner.py +77 -2
  848. package/project/.sdk/tm/py/test/test_feature_corpus.py +69 -32
  849. package/project/.sdk/tm/py-data/LICENSE +1 -1
  850. package/project/.sdk/tm/py-data/Makefile +2 -2
  851. package/project/.sdk/tm/rb/LICENSE +1 -1
  852. package/project/.sdk/tm/rb/core/context.rb +1 -1
  853. package/project/.sdk/tm/rb/core/response.rb +3 -1
  854. package/project/.sdk/tm/rb/core/spec.rb +4 -1
  855. package/project/.sdk/tm/rb/feature/test_feature.rb +27 -8
  856. package/project/.sdk/tm/rb/feature/validate_feature.rb +3 -1
  857. package/project/.sdk/tm/rb/test/feature_corpus_test.rb +74 -30
  858. package/project/.sdk/tm/rb/test/feature_test.rb +1 -1
  859. package/project/.sdk/tm/rb/test/runner.rb +54 -2
  860. package/project/.sdk/tm/rb/utility/clean.rb +14 -6
  861. package/project/.sdk/tm/rb/utility/fetcher.rb +22 -14
  862. package/project/.sdk/tm/rb/utility/make_fetch_def.rb +2 -4
  863. package/project/.sdk/tm/rb/utility/make_point.rb +44 -8
  864. package/project/.sdk/tm/rb/utility/make_spec.rb +14 -2
  865. package/project/.sdk/tm/rb/utility/make_url.rb +13 -1
  866. package/project/.sdk/tm/rb/utility/media.rb +75 -0
  867. package/project/.sdk/tm/rb/utility/param.rb +44 -25
  868. package/project/.sdk/tm/rb/utility/prepare_body.rb +4 -1
  869. package/project/.sdk/tm/rb/utility/prepare_headers.rb +50 -16
  870. package/project/.sdk/tm/rb/utility/prepare_method.rb +6 -0
  871. package/project/.sdk/tm/rb/utility/prepare_query.rb +12 -4
  872. package/project/.sdk/tm/rb/utility/result_body.rb +45 -0
  873. package/project/.sdk/tm/rb/utility/transform_request.rb +17 -7
  874. package/project/.sdk/tm/rust/LICENSE +1 -1
  875. package/project/.sdk/tm/rust/core/context.rs +1 -1
  876. package/project/.sdk/tm/rust/core/helpers.rs +10 -0
  877. package/project/.sdk/tm/rust/core/response.rs +80 -1
  878. package/project/.sdk/tm/rust/core/spec.rs +4 -0
  879. package/project/.sdk/tm/rust/core/types.rs +1 -0
  880. package/project/.sdk/tm/rust/feature/test.rs +29 -2
  881. package/project/.sdk/tm/rust/feature/validate.rs +2 -0
  882. package/project/.sdk/tm/rust/tests/common/mod.rs +108 -1
  883. package/project/.sdk/tm/rust/utility/clean.rs +0 -2
  884. package/project/.sdk/tm/rust/utility/fetcher.rs +19 -11
  885. package/project/.sdk/tm/rust/utility/make_fetch_def.rs +12 -1
  886. package/project/.sdk/tm/rust/utility/make_options.rs +6 -5
  887. package/project/.sdk/tm/rust/utility/make_point.rs +80 -16
  888. package/project/.sdk/tm/rust/utility/make_spec.rs +23 -4
  889. package/project/.sdk/tm/rust/utility/make_url.rs +39 -2
  890. package/project/.sdk/tm/rust/utility/media.rs +116 -0
  891. package/project/.sdk/tm/rust/utility/mod.rs +1 -0
  892. package/project/.sdk/tm/rust/utility/param.rs +66 -19
  893. package/project/.sdk/tm/rust/utility/prepare_body.rs +4 -0
  894. package/project/.sdk/tm/rust/utility/prepare_headers.rs +85 -28
  895. package/project/.sdk/tm/rust/utility/prepare_query.rs +27 -5
  896. package/project/.sdk/tm/rust/utility/result_body.rs +15 -2
  897. package/project/.sdk/tm/rust/utility/transform_request.rs +27 -14
  898. package/project/.sdk/tm/scala/LICENSE +1 -1
  899. package/project/.sdk/tm/scala/Makefile +3 -1
  900. package/project/.sdk/tm/scala/core/Context.scala +1 -1
  901. package/project/.sdk/tm/scala/core/Contracts.scala +1 -0
  902. package/project/.sdk/tm/scala/core/Helpers.scala +7 -0
  903. package/project/.sdk/tm/scala/core/Response.scala +55 -0
  904. package/project/.sdk/tm/scala/core/SdkClient.scala +18 -5
  905. package/project/.sdk/tm/scala/core/Spec.scala +3 -0
  906. package/project/.sdk/tm/scala/feature/TestFeature.scala +36 -3
  907. package/project/.sdk/tm/scala/feature/TimeoutFeature.scala +39 -13
  908. package/project/.sdk/tm/scala/feature/ValidateFeature.scala +2 -0
  909. package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +16 -1
  910. package/project/.sdk/tm/scala/sdktest/ServerVariableTest.scala +49 -0
  911. package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +1 -0
  912. package/project/.sdk/tm/scala/utility/Fetcher.scala +17 -2
  913. package/project/.sdk/tm/scala/utility/Make.scala +141 -43
  914. package/project/.sdk/tm/scala/utility/MakeSpec.scala +20 -2
  915. package/project/.sdk/tm/scala/utility/Media.scala +96 -0
  916. package/project/.sdk/tm/scala/utility/Misc.scala +56 -23
  917. package/project/.sdk/tm/scala/utility/Prepare.scala +84 -31
  918. package/project/.sdk/tm/scala/utility/Results.scala +5 -0
  919. package/project/.sdk/tm/scala/utility/Transform.scala +15 -19
  920. package/project/.sdk/tm/swift/LICENSE +1 -1
  921. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Context.swift +1 -1
  922. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Response.swift +57 -0
  923. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Spec.swift +3 -0
  924. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Support.swift +8 -0
  925. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TestFeature.swift +34 -3
  926. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TimeoutFeature.swift +19 -3
  927. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/ValidateFeature.swift +2 -0
  928. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Fetcher.swift +21 -12
  929. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Make.swift +85 -18
  930. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +73 -7
  931. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Media.swift +76 -0
  932. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +118 -43
  933. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/ResultUtil.swift +18 -8
  934. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/FeatureTest.swift +31 -1
  935. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +6 -0
  936. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/ServerVariableTest.swift +42 -0
  937. package/project/.sdk/tm/ts/LICENSE +1 -1
  938. package/project/.sdk/tm/ts/src/Context.ts +1 -1
  939. package/project/.sdk/tm/ts/src/Control.ts +3 -0
  940. package/project/.sdk/tm/ts/src/Response.ts +10 -1
  941. package/project/.sdk/tm/ts/src/Spec.ts +4 -0
  942. package/project/.sdk/tm/ts/src/feature/base/BaseFeature.ts +28 -0
  943. package/project/.sdk/tm/ts/src/feature/netsim/NetsimFeature.ts +10 -8
  944. package/project/.sdk/tm/ts/src/feature/ratelimit/RatelimitFeature.ts +8 -6
  945. package/project/.sdk/tm/ts/src/feature/retry/RetryFeature.ts +17 -4
  946. package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +41 -13
  947. package/project/.sdk/tm/ts/src/feature/timeout/TimeoutFeature.ts +17 -3
  948. package/project/.sdk/tm/ts/src/feature/validate/ValidateFeature.ts +2 -0
  949. package/project/.sdk/tm/ts/src/tsconfig.json +2 -1
  950. package/project/.sdk/tm/ts/src/utility/CleanUtility.ts +25 -1
  951. package/project/.sdk/tm/ts/src/utility/FetcherUtility.ts +24 -1
  952. package/project/.sdk/tm/ts/src/utility/MakeErrorUtility.ts +2 -2
  953. package/project/.sdk/tm/ts/src/utility/MakeFetchDefUtility.ts +15 -2
  954. package/project/.sdk/tm/ts/src/utility/MakeOptionsUtility.ts +6 -6
  955. package/project/.sdk/tm/ts/src/utility/MakePointUtility.ts +38 -2
  956. package/project/.sdk/tm/ts/src/utility/MakeRequestUtility.ts +29 -2
  957. package/project/.sdk/tm/ts/src/utility/MakeResponseUtility.ts +3 -1
  958. package/project/.sdk/tm/ts/src/utility/MakeSpecUtility.ts +16 -6
  959. package/project/.sdk/tm/ts/src/utility/MakeUrlUtility.ts +16 -2
  960. package/project/.sdk/tm/ts/src/utility/MediaUtility.ts +143 -0
  961. package/project/.sdk/tm/ts/src/utility/ParamUtility.ts +50 -18
  962. package/project/.sdk/tm/ts/src/utility/PrepareBodyUtility.ts +6 -0
  963. package/project/.sdk/tm/ts/src/utility/PrepareHeadersUtility.ts +53 -11
  964. package/project/.sdk/tm/ts/src/utility/PrepareMethodUtility.ts +9 -0
  965. package/project/.sdk/tm/ts/src/utility/PrepareQueryUtility.ts +22 -6
  966. package/project/.sdk/tm/ts/src/utility/ResultBodyUtility.ts +68 -3
  967. package/project/.sdk/tm/ts/src/utility/TransformRequestUtility.ts +16 -6
  968. package/project/.sdk/tm/ts/test/definition-runner.ts +109 -3
  969. package/project/.sdk/tm/ts/test/feature/Corpus.test.ts +47 -16
  970. package/project/.sdk/tm/ts/test/feature/harness.ts +4 -1
  971. package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +1 -1
  972. package/project/.sdk/tm/ts/test/feature.test.ts +134 -0
  973. package/project/.sdk/tm/ts/test/live-contract.ts +60 -2
  974. package/project/.sdk/tm/ts/test/live-entity.ts +36 -12
  975. package/project/.sdk/tm/ts/test/live-runner.ts +79 -12
  976. package/project/.sdk/tm/ts/test/live-scenarios.ts +5 -4
  977. package/project/.sdk/tm/ts/test/pipeline.test.ts +52 -1
  978. package/project/.sdk/tm/ts/test/tsconfig.json +2 -1
  979. package/project/.sdk/tm/ts/test/utility.ts +35 -7
  980. package/project/.sdk/tm/zig/LICENSE +1 -1
  981. package/project/.sdk/tm/zig/core/context.zig +2 -1
  982. package/project/.sdk/tm/zig/core/helpers.zig +33 -0
  983. package/project/.sdk/tm/zig/core/response.zig +3 -0
  984. package/project/.sdk/tm/zig/core/spec.zig +27 -0
  985. package/project/.sdk/tm/zig/core/types.zig +6 -0
  986. package/project/.sdk/tm/zig/core/utility.zig +456 -84
  987. package/project/.sdk/tm/zig/feature/test.zig +31 -2
  988. package/project/.sdk/tm/zig/feature/validate.zig +2 -0
  989. package/project/.sdk/tm/zig/test/fh.zig +1 -1
  990. package/project/sdkgen-package.json +1 -1
  991. package/src/action/copies.ts +179 -46
  992. package/src/action/doctor.ts +13 -3
  993. package/src/action/package.ts +17 -9
  994. package/src/action/resolve.ts +41 -0
  995. package/src/admin/npm-trust.ts +9 -8
  996. package/src/cmp/AgentGuide.ts +4 -3
  997. package/src/cmp/AgentGuideFeature.ts +3 -2
  998. package/src/cmp/AgentGuideTop.ts +2 -1
  999. package/src/cmp/Changelog.ts +2 -1
  1000. package/src/cmp/Deploy.ts +2 -1
  1001. package/src/cmp/Entity.ts +1 -3
  1002. package/src/cmp/ExternalTarget.ts +2 -1
  1003. package/src/cmp/Feature.ts +2 -1
  1004. package/src/cmp/FeatureHook.ts +2 -1
  1005. package/src/cmp/License.ts +7 -5
  1006. package/src/cmp/Main.ts +2 -1
  1007. package/src/cmp/PublishWorkflow.ts +2 -1
  1008. package/src/cmp/Readme.ts +2 -1
  1009. package/src/cmp/ReadmeEntity.ts +3 -3
  1010. package/src/cmp/ReadmeErrors.ts +6 -4
  1011. package/src/cmp/ReadmeExplanation.ts +4 -3
  1012. package/src/cmp/ReadmeFeatures.ts +4 -3
  1013. package/src/cmp/ReadmeHowto.ts +4 -3
  1014. package/src/cmp/ReadmeInstall.ts +4 -3
  1015. package/src/cmp/ReadmeIntro.ts +3 -3
  1016. package/src/cmp/ReadmeModel.ts +6 -3
  1017. package/src/cmp/ReadmeOptions.ts +3 -3
  1018. package/src/cmp/ReadmeQuick.ts +4 -3
  1019. package/src/cmp/ReadmeRef.ts +3 -3
  1020. package/src/cmp/ReadmeRefFeatures.ts +2 -1
  1021. package/src/cmp/ReadmeStation.ts +2 -1
  1022. package/src/cmp/ReadmeTop.ts +121 -37
  1023. package/src/cmp/ReadmeUnions.ts +2 -1
  1024. package/src/cmp/Registered.ts +4 -4
  1025. package/src/cmp/Security.ts +14 -7
  1026. package/src/cmp/Test.ts +2 -1
  1027. package/src/cmp/TestControl.ts +1 -1
  1028. package/src/helpers/component.ts +25 -0
  1029. package/src/helpers/definition.ts +2 -2
  1030. package/src/helpers/definitionPlan.ts +135 -13
  1031. package/src/helpers/featureSource.ts +55 -2
  1032. package/src/helpers/flowGuard.ts +111 -0
  1033. package/src/helpers/generated.ts +488 -0
  1034. package/src/helpers/mcpTools.ts +47 -0
  1035. package/src/helpers/media.ts +79 -0
  1036. package/src/helpers/modelNames.ts +186 -16
  1037. package/src/helpers/naming.ts +188 -0
  1038. package/src/helpers/npm.ts +68 -0
  1039. package/src/helpers/npmScripts.ts +37 -0
  1040. package/src/helpers/opExample.ts +19 -11
  1041. package/src/helpers/opShape.ts +235 -29
  1042. package/src/helpers/optional.ts +76 -0
  1043. package/src/helpers/packageMeta.ts +83 -11
  1044. package/src/helpers/stdrep.ts +5 -1
  1045. package/src/helpers/testPolicy.ts +68 -1
  1046. package/src/helpers/text.ts +33 -0
  1047. package/src/sdkgen.ts +97 -14
  1048. package/src/testkit.ts +2 -1
  1049. package/src/utility.ts +41 -19
  1050. package/project/.sdk/src/cmp/go/fragment/SdkError.fragment.go +0 -22
  1051. package/project/.sdk/src/cmp/lua/fragment/SdkError.fragment.lua +0 -38
  1052. package/project/.sdk/src/cmp/perl/fragment/SdkError.fragment.pm +0 -27
  1053. package/project/.sdk/src/cmp/php/fragment/SdkError.fragment.php +0 -35
  1054. package/project/.sdk/src/cmp/py/fragment/SdkError.fragment.py +0 -27
  1055. package/project/.sdk/src/cmp/rb/fragment/SdkError.fragment.rb +0 -25
@@ -622,12 +622,15 @@ fn mo_str_less(_: void, a: []const u8, b: []const u8) bool {
622
622
  return std.mem.order(u8, a, b) == .lt;
623
623
  }
624
624
 
625
- fn mo_noentity(val: Value) Value {
625
+ fn mo_plain(val: Value, name: ?[]const u8) Value {
626
626
  if (val != .object) return val;
627
+ const rbac = if (name) |n| std.mem.eql(u8, n, "rbac") else false;
627
628
  const out = h.omap();
628
629
  var it = val.object.iterator();
629
630
  while (it.next()) |kv| {
630
- if (!std.mem.eql(u8, kv.key_ptr.*, "entity")) h.setp(out, kv.key_ptr.*, kv.value_ptr.*);
631
+ const k = kv.key_ptr.*;
632
+ if (std.mem.eql(u8, k, "entity") or (rbac and std.mem.eql(u8, k, "rules"))) continue;
633
+ h.setp(out, k, kv.value_ptr.*);
631
634
  }
632
635
  return out;
633
636
  }
@@ -635,8 +638,9 @@ fn mo_noentity(val: Value) Value {
635
638
  // The options to scan for secrets. The feature map is keyed by feature
636
639
  // names, not field names, so it is scanned as a list: `secrets` must not
637
640
  // make every setting of that feature a secret. Entity blocks hold entity
638
- // settings and seeded records, never a credential, so none is scanned. The
639
- // raw scan still sees the feature list form, whose entries each carry `name`.
641
+ // settings and seeded records, never a credential, so none is scanned, and
642
+ // nor are rbac's rules, keyed by entity and operation names. The raw scan
643
+ // still sees the feature list form, whose entries each carry `name`.
640
644
  fn mo_without(opts: Value, keys: []const []const u8) Value {
641
645
  const out = h.omap();
642
646
  if (opts != .object) return out;
@@ -652,13 +656,13 @@ fn mo_without(opts: Value, keys: []const []const u8) Value {
652
656
  const list = h.olist();
653
657
  if (v == .object) {
654
658
  var fit = v.object.iterator();
655
- while (fit.next()) |f| list.array.append(mo_noentity(f.value_ptr.*)) catch {};
659
+ while (fit.next()) |f| list.array.append(mo_plain(f.value_ptr.*, f.key_ptr.*)) catch {};
656
660
  } else {
657
- for (v.array.data.items) |f| list.array.append(mo_noentity(f)) catch {};
661
+ for (v.array.data.items) |f| list.array.append(mo_plain(f, h.get_str(f, "name"))) catch {};
658
662
  }
659
663
  h.setp(out, key, list);
660
664
  } else if (std.mem.eql(u8, key, "test")) {
661
- h.setp(out, key, mo_noentity(v));
665
+ h.setp(out, key, mo_plain(v, null));
662
666
  } else {
663
667
  h.setp(out, key, v);
664
668
  }
@@ -913,6 +917,38 @@ fn point_terminal_param(point: Value) bool {
913
917
  return 0 < last.string.len and '{' == last.string[0];
914
918
  }
915
919
 
920
+ fn own_point(points: []const Value) Value {
921
+ var best = points[0];
922
+ for (points) |cand| {
923
+ const cand_term = point_terminal_param(cand);
924
+ const best_term = point_terminal_param(best);
925
+ if (cand_term != best_term) {
926
+ if (cand_term) best = cand;
927
+ } else if (point_parts_len(cand) < point_parts_len(best)) {
928
+ best = cand;
929
+ }
930
+ }
931
+ return best;
932
+ }
933
+
934
+ // The path parameters of a point that neither the call nor the entity gives a
935
+ // value for, looked up as param_util looks them up.
936
+ fn unfilled_params(ctx: *Context, point: Value) [][]const u8 {
937
+ var missing: std.ArrayList([]const u8) = .empty;
938
+ const parts = h.getp(point, "parts");
939
+ if (parts == .array) {
940
+ for (parts.array.data.items) |part| {
941
+ if (part != .string) continue;
942
+ const text = part.string;
943
+ if (text.len < 3 or '{' != text[0] or '}' != text[text.len - 1] or
944
+ std.mem.indexOfAny(u8, text[1 .. text.len - 1], "{}/") != null) continue;
945
+ const name = text[1 .. text.len - 1];
946
+ if (h.is_noval(param_value(ctx, point, name))) missing.append(h.A(), name) catch {};
947
+ }
948
+ }
949
+ return missing.toOwnedSlice(h.A()) catch &.{};
950
+ }
951
+
916
952
  pub fn make_point_util(ctx: *Context) E!Value {
917
953
  if (ctx.out_get("point")) |ov| {
918
954
  switch (ov) {
@@ -934,7 +970,7 @@ pub fn make_point_util(ctx: *Context) E!Value {
934
970
  .string => |s| s,
935
971
  else => "",
936
972
  };
937
- if (std.mem.indexOf(u8, allow_op, op.name) == null) {
973
+ if (!h.allow_list_has(h.getpath(&.{ "allow", "op" }, options), op.name)) {
938
974
  return ctx.fail("point_op_allow", fmt("Operation \"{s}\" not allowed by SDK option allow.op value: \"{s}\"", .{ op.name, allow_op }));
939
975
  }
940
976
 
@@ -1005,23 +1041,28 @@ pub fn make_point_util(ctx: *Context) E!Value {
1005
1041
  return ctx.fail("point_action_invalid", fmt("Operation \"{s}\" action \"{s}\" is not valid.", .{ op.name, h.stringify(unmatched_action) }));
1006
1042
  }
1007
1043
 
1008
- // A terminal parameter marks a record route (/boards/{id}); a
1009
- // cross-reference ends in the relationship's name
1010
- // (/posts/{id}/author). Failing that, the shallower path wins.
1011
- // The same rule runs at generation time, in helpers/opShape.ts —
1012
- // both sides must move together.
1013
- point = h.get_elem(points, h.vnum(0), h.vnull());
1044
+ // A call without an action falls back to a point without one, as
1045
+ // generation does, and only to a route the call can fill.
1046
+ var plain: std.ArrayList(Value) = .empty;
1014
1047
  var j: i64 = 0;
1015
1048
  while (j < plen) : (j += 1) {
1016
1049
  const cand = h.get_elem(points, h.vnum(j), h.vnull());
1017
- const cand_term = point_terminal_param(cand);
1018
- const best_term = point_terminal_param(point);
1019
- if (cand_term != best_term) {
1020
- if (cand_term) point = cand;
1021
- } else if (point_parts_len(cand) < point_parts_len(point)) {
1022
- point = cand;
1023
- }
1050
+ if (h.is_noval(h.getp(h.to_map(h.getp(cand, "select")), "$action"))) plain.append(h.A(), cand) catch {};
1051
+ }
1052
+ if (0 == plain.items.len) {
1053
+ return ctx.fail("point_action_required", fmt("Operation \"{s}\" has only action endpoints; pass $action to choose one.", .{op.name}));
1054
+ }
1055
+ var fillable: std.ArrayList(Value) = .empty;
1056
+ for (plain.items) |cand| {
1057
+ if (0 == unfilled_params(ctx, cand).len) fillable.append(h.A(), cand) catch {};
1058
+ }
1059
+
1060
+ if (0 == fillable.items.len) {
1061
+ const missing = std.mem.join(h.A(), ", ", unfilled_params(ctx, own_point(plain.items))) catch "";
1062
+ return ctx.fail("point_no_match", fmt("Operation \"{s}\" has no endpoint whose path parameters are all given (missing: {s}).", .{ op.name, missing }));
1024
1063
  }
1064
+
1065
+ point = own_point(fillable.items);
1025
1066
  }
1026
1067
 
1027
1068
  const req_action = h.getp(reqselector, "$action");
@@ -1079,7 +1120,7 @@ pub fn make_spec_util(ctx: *Context) E!*Spec {
1079
1120
  .string => |s| s,
1080
1121
  else => "",
1081
1122
  };
1082
- if (std.mem.indexOf(u8, allow_method, method) == null) {
1123
+ if (!h.allow_list_has(h.getpath(&.{ "allow", "method" }, options), method)) {
1083
1124
  return ctx.fail("spec_method_allow", fmt("Method \"{s}\" not allowed by SDK option allow.method value: \"{s}\"", .{ method, allow_method }));
1084
1125
  }
1085
1126
 
@@ -1112,11 +1153,29 @@ pub fn make_spec_util(ctx: *Context) E!*Spec {
1112
1153
  const c = ctx.ctrl;
1113
1154
  if (c.has_explain()) h.setp(c.explain, "spec", spec.to_value());
1114
1155
 
1156
+ const query = h.clone(spec.query);
1115
1157
  const spec2 = try prepare_auth_util(ctx);
1158
+ spec2.note_authquery(query);
1116
1159
  ctx.spec = spec2;
1117
1160
  return spec2;
1118
1161
  }
1119
1162
 
1163
+ // The {name} placeholders in a text, in order.
1164
+ fn placeholders(text: []const u8) [][]const u8 {
1165
+ var out: std.ArrayList([]const u8) = .empty;
1166
+ var i: usize = 0;
1167
+ while (i < text.len) : (i += 1) {
1168
+ if ('{' != text[i]) continue;
1169
+ const rest = text[i + 1 ..];
1170
+ const n = std.mem.indexOfAny(u8, rest, "{}/") orelse rest.len;
1171
+ if (0 < n and n < rest.len and '}' == rest[n]) {
1172
+ out.append(h.A(), text[i .. i + n + 2]) catch {};
1173
+ i += n + 1;
1174
+ }
1175
+ }
1176
+ return out.toOwnedSlice(h.A()) catch &.{};
1177
+ }
1178
+
1120
1179
  pub fn make_url_util(ctx: *Context) E![]const u8 {
1121
1180
  const spec = ctx.spec orelse return ctx.fail("url_no_spec", "Expected context spec property to be defined.");
1122
1181
  const result = ctx.result orelse return ctx.fail("url_no_result", "Expected context result property to be defined.");
@@ -1153,6 +1212,16 @@ pub fn make_url_util(ctx: *Context) E![]const u8 {
1153
1212
  }
1154
1213
  }
1155
1214
 
1215
+ // A placeholder left in the route would send the request to the wrong route.
1216
+ // The base's own placeholders are server variables, resolved with the options.
1217
+ var blen = spec.base.len;
1218
+ while (0 < blen and '/' == spec.base[blen - 1]) blen -= 1;
1219
+ const route = if (std.mem.startsWith(u8, url, spec.base[0..blen])) url[blen..] else url;
1220
+ const unfilled = placeholders(route);
1221
+ if (0 < unfilled.len) {
1222
+ return ctx.fail("url_param_missing", fmt("URL path has no value for {s}.", .{std.mem.join(h.A(), ", ", unfilled) catch ""}));
1223
+ }
1224
+
1156
1225
  var qsep: []const u8 = "?";
1157
1226
  if (spec.query == .object) {
1158
1227
  var it = spec.query.object.iterator();
@@ -1162,7 +1231,8 @@ pub fn make_url_util(ctx: *Context) E![]const u8 {
1162
1231
  if (!h.is_noval(val)) {
1163
1232
  url = fmt("{s}{s}{s}={s}", .{ url, qsep, h.esc_url(key), h.esc_url(h.scalar_str(val)) });
1164
1233
  qsep = "&";
1165
- h.setp(resmatch, key, val);
1234
+ // Sent with the request, never recorded as the entity's match.
1235
+ if (!spec.authquery_has(key)) h.setp(resmatch, key, val);
1166
1236
  }
1167
1237
  }
1168
1238
  }
@@ -1186,9 +1256,16 @@ pub fn make_fetch_def_util(ctx: *Context) E!Value {
1186
1256
  h.setp(fetchdef, "method", h.vstr(spec.method));
1187
1257
  h.setp(fetchdef, "headers", spec.headers);
1188
1258
 
1259
+ // A map or a list is JSON, and so is a scalar on a point that declares a
1260
+ // JSON body. Anything else goes as given.
1189
1261
  const body = spec.body;
1190
1262
  if (!h.is_noval(body)) {
1191
- if (body == .object) {
1263
+ const encode = switch (body) {
1264
+ .object, .array => true,
1265
+ .string, .integer, .float, .number_string, .bool => is_json_request(ctx.point),
1266
+ else => false,
1267
+ };
1268
+ if (encode) {
1192
1269
  h.setp(fetchdef, "body", h.vstr(h.jsonify_compact(body)));
1193
1270
  } else {
1194
1271
  h.setp(fetchdef, "body", body);
@@ -1333,13 +1410,6 @@ pub fn make_result_util(ctx: *Context) E!*SdkResult {
1333
1410
  // ============================================================================
1334
1411
 
1335
1412
  pub fn param_util(ctx: *Context, paramdef: Value) Value {
1336
- const point = ctx.point;
1337
- const spec = ctx.spec;
1338
- const mtch = ctx.mtch;
1339
- const reqmatch = ctx.reqmatch;
1340
- const data = ctx.data;
1341
- const reqdata = ctx.reqdata;
1342
-
1343
1413
  const pt = h.typify(paramdef);
1344
1414
 
1345
1415
  const key: []const u8 = if (0 != ((@as(i64, vs.T_string)) & pt))
@@ -1350,30 +1420,38 @@ pub fn param_util(ctx: *Context, paramdef: Value) Value {
1350
1420
  else
1351
1421
  (h.get_str(paramdef, "name") orelse "");
1352
1422
 
1353
- var akey: []const u8 = "";
1354
- if (!h.is_noval(point)) {
1355
- const alias = h.to_map(h.getp(point, "alias"));
1356
- if (!h.is_noval(alias)) {
1357
- if (h.get_str(alias, key)) |ak| akey = ak;
1423
+ const akey = param_alias(ctx.point, key);
1424
+ if (akey.len != 0 and h.is_noval(h.getp(ctx.reqmatch, key)) and h.is_noval(h.getp(ctx.mtch, key))) {
1425
+ if (ctx.spec) |sp| {
1426
+ h.setp(sp.alias, akey, h.vstr(key));
1358
1427
  }
1359
1428
  }
1360
1429
 
1361
- var val = h.getp(reqmatch, key);
1362
- if (h.is_noval(val)) val = h.getp(mtch, key);
1430
+ return param_value(ctx, ctx.point, key);
1431
+ }
1363
1432
 
1364
- if (h.is_noval(val) and akey.len != 0) {
1365
- if (spec) |sp| {
1366
- h.setp(sp.alias, akey, h.vstr(key));
1367
- }
1368
- val = h.getp(reqmatch, akey);
1369
- }
1433
+ // The name a point gives a parameter in the call, if it renames it.
1434
+ fn param_alias(point: Value, key: []const u8) []const u8 {
1435
+ if (h.is_noval(point)) return "";
1436
+ const alias = h.to_map(h.getp(point, "alias"));
1437
+ if (h.is_noval(alias)) return "";
1438
+ return h.get_str(alias, key) orelse "";
1439
+ }
1440
+
1441
+ // The value the call or its entity gives a point's parameter, under its name
1442
+ // or the point's alias for it.
1443
+ pub fn param_value(ctx: *Context, point: Value, key: []const u8) Value {
1444
+ const akey = param_alias(point, key);
1370
1445
 
1371
- if (h.is_noval(val)) val = h.getp(reqdata, key);
1372
- if (h.is_noval(val)) val = h.getp(data, key);
1446
+ var val = h.getp(ctx.reqmatch, key);
1447
+ if (h.is_noval(val)) val = h.getp(ctx.mtch, key);
1448
+ if (h.is_noval(val) and akey.len != 0) val = h.getp(ctx.reqmatch, akey);
1449
+ if (h.is_noval(val)) val = h.getp(ctx.reqdata, key);
1450
+ if (h.is_noval(val)) val = h.getp(ctx.data, key);
1373
1451
 
1374
1452
  if (h.is_noval(val) and akey.len != 0) {
1375
- val = h.getp(reqdata, akey);
1376
- if (h.is_noval(val)) val = h.getp(data, akey);
1453
+ val = h.getp(ctx.reqdata, akey);
1454
+ if (h.is_noval(val)) val = h.getp(ctx.data, akey);
1377
1455
  }
1378
1456
 
1379
1457
  return val;
@@ -1412,6 +1490,122 @@ pub fn prepare_method_util(ctx: *Context) []const u8 {
1412
1490
  return "";
1413
1491
  }
1414
1492
 
1493
+ // One argument a point declares, with the name it travels under and the value
1494
+ // the call passes for it.
1495
+ const CallArg = struct { name: []const u8, wire: []const u8, val: Value };
1496
+
1497
+ // The arguments a point declares in one location, query or header, each with
1498
+ // the name it travels under and the value this call passes in its match or
1499
+ // else its data. Unlike a path parameter, the entity's stored match and data
1500
+ // never supply one.
1501
+ fn call_args(ctx: *Context, kind: []const u8) []CallArg {
1502
+ var out: std.ArrayList(CallArg) = .empty;
1503
+ const defs: Value = h.getpath(&.{ "args", kind }, ctx.point);
1504
+ if (defs == .array) {
1505
+ for (defs.array.data.items) |ad| {
1506
+ const name = h.getp(ad, "name");
1507
+ if (name != .string or name.string.len == 0) continue;
1508
+ const orig = h.getp(ad, "orig");
1509
+ const wire: []const u8 = if (orig == .string and orig.string.len != 0) orig.string else name.string;
1510
+ var val = h.getp(ctx.reqmatch, name.string);
1511
+ if (h.is_noval(val)) val = h.getp(ctx.reqdata, name.string);
1512
+ out.append(h.A(), .{ .name = name.string, .wire = wire, .val = val }) catch {};
1513
+ }
1514
+ }
1515
+ return out.toOwnedSlice(h.A()) catch &.{};
1516
+ }
1517
+
1518
+ // ============================================================================
1519
+ // media
1520
+ // ============================================================================
1521
+
1522
+ // The media types a point declares: `response` (the model's `rs`) for the
1523
+ // Accept header, and `body` (the model's `rb`) for the request body.
1524
+
1525
+ // The data key holding a raw request body. Like `$action`, it can never be a
1526
+ // declared argument name.
1527
+ pub const RAW_BODY = "$body";
1528
+
1529
+ pub fn is_json_media(media: []const u8) bool {
1530
+ const semi = std.mem.indexOfScalar(u8, media, ';') orelse media.len;
1531
+ const m = std.mem.trim(u8, media[0..semi], " \t");
1532
+ return std.ascii.eqlIgnoreCase(m, "application/json") or
1533
+ std.ascii.eqlIgnoreCase(m, "text/json") or
1534
+ (m.len >= 5 and std.ascii.eqlIgnoreCase(m[m.len - 5 ..], "+json"));
1535
+ }
1536
+
1537
+ fn media_text(v: Value) ?[]const u8 {
1538
+ return if (v == .string and v.string.len != 0) v.string else null;
1539
+ }
1540
+
1541
+ // The declared JSON type alone, else every declared type in the model's
1542
+ // order; null when no success response declares a body.
1543
+ pub fn accept_of(point: Value) ?[]const u8 {
1544
+ const res = h.getp(point, "response");
1545
+ const media = media_text(h.getp(res, "media")) orelse return null;
1546
+ if (media_text(h.getp(res, "kind"))) |kind| {
1547
+ if (std.mem.eql(u8, kind, "json")) return media;
1548
+ }
1549
+ var out: std.ArrayList(u8) = .empty;
1550
+ out.appendSlice(h.A(), media) catch return media;
1551
+ const alts = h.getp(res, "alternatives");
1552
+ if (alts == .array) {
1553
+ for (alts.array.data.items) |alt| {
1554
+ const m = media_text(h.getp(alt, "media")) orelse continue;
1555
+ out.appendSlice(h.A(), ", ") catch return media;
1556
+ out.appendSlice(h.A(), m) catch return media;
1557
+ }
1558
+ }
1559
+ return out.toOwnedSlice(h.A()) catch media;
1560
+ }
1561
+
1562
+ pub fn is_raw_request(point: Value) bool {
1563
+ const kind = media_text(h.getp(h.getp(point, "body"), "kind")) orelse return false;
1564
+ return std.mem.eql(u8, kind, "raw");
1565
+ }
1566
+
1567
+ pub fn is_json_request(point: Value) bool {
1568
+ const kind = media_text(h.getp(h.getp(point, "body"), "kind")) orelse return false;
1569
+ return std.mem.eql(u8, kind, "json");
1570
+ }
1571
+
1572
+ fn has_media_header(headers: Value, name: []const u8) bool {
1573
+ var kit = headers.object.iterator();
1574
+ while (kit.next()) |kv| {
1575
+ if (std.ascii.eqlIgnoreCase(kv.key_ptr.*, name)) return true;
1576
+ }
1577
+ return false;
1578
+ }
1579
+
1580
+ // A caller's accept wins. A declared request type replaces each JSON
1581
+ // content-type, the SDK default, and leaves any other the caller set.
1582
+ pub fn media_headers(point: Value, headers: Value) void {
1583
+ if (headers != .object) return;
1584
+ if (accept_of(point)) |accept| {
1585
+ if (!has_media_header(headers, "accept")) h.setp(headers, "accept", h.vstr(accept));
1586
+ }
1587
+
1588
+ const body = h.getp(point, "body");
1589
+ const kind = media_text(h.getp(body, "kind")) orelse return;
1590
+ const media = media_text(h.getp(body, "media")) orelse return;
1591
+ if (!std.mem.eql(u8, kind, "raw") and !std.mem.eql(u8, kind, "json")) return;
1592
+ while (true) {
1593
+ var kit = headers.object.iterator();
1594
+ const json: ?[]const u8 = while (kit.next()) |kv| {
1595
+ const v = kv.value_ptr.*;
1596
+ if (std.ascii.eqlIgnoreCase(kv.key_ptr.*, "content-type") and
1597
+ v == .string and is_json_media(v.string)) break kv.key_ptr.*;
1598
+ } else null;
1599
+ _ = headers.object.fetchOrderedRemove(json orelse break);
1600
+ }
1601
+ if (!has_media_header(headers, "content-type")) h.setp(headers, "content-type", h.vstr(media));
1602
+ }
1603
+
1604
+ // A string of text or bytes, sent as it is.
1605
+ pub fn raw_body(reqdata: Value) Value {
1606
+ return h.getp(reqdata, RAW_BODY);
1607
+ }
1608
+
1415
1609
  pub fn prepare_headers_util(ctx: *Context) Value {
1416
1610
  const options: Value = if (ctx.client) |client| client.options_map() else ctx.options;
1417
1611
 
@@ -1420,37 +1614,98 @@ pub fn prepare_headers_util(ctx: *Context) Value {
1420
1614
  .object => h.clone(headers),
1421
1615
  else => h.omap(),
1422
1616
  };
1617
+ media_headers(ctx.point, out);
1618
+
1619
+ // A header argument replaces a default of the same name, whatever its case.
1620
+ for (call_args(ctx, "header")) |arg| {
1621
+ if (h.is_noval(arg.val)) continue;
1622
+ const key = std.ascii.allocLowerString(h.A(), arg.wire) catch arg.wire;
1623
+ while (true) {
1624
+ var kit = out.object.iterator();
1625
+ const same: ?[]const u8 = while (kit.next()) |kv| {
1626
+ if (std.ascii.eqlIgnoreCase(kv.key_ptr.*, key)) break kv.key_ptr.*;
1627
+ } else null;
1628
+ _ = out.object.fetchOrderedRemove(same orelse break);
1629
+ }
1630
+ h.setp(out, key, h.vstr(h.stringify(arg.val)));
1631
+ }
1423
1632
 
1424
- // A header parameter travels as a header, under the name the definition
1425
- // gives it, and only from this call's own arguments. It replaces a default
1426
- // of the same name, whatever its case.
1427
- const aheader: Value = h.getpath(&.{ "args", "header" }, ctx.point);
1428
- if (aheader == .array) {
1429
- for (aheader.array.data.items) |hd| {
1430
- const name = h.getp(hd, "name");
1431
- if (name != .string or name.string.len == 0) continue;
1432
- const orig = h.getp(hd, "orig");
1433
- const wire: []const u8 = if (orig == .string and orig.string.len != 0) orig.string else name.string;
1434
- var val = h.getp(ctx.reqmatch, name.string);
1435
- if (h.is_noval(val)) val = h.getp(ctx.reqdata, name.string);
1436
- if (h.is_noval(val)) continue;
1437
- const key = std.ascii.allocLowerString(h.A(), wire) catch wire;
1438
- while (true) {
1439
- var kit = out.object.iterator();
1440
- const same: ?[]const u8 = while (kit.next()) |kv| {
1441
- if (std.ascii.eqlIgnoreCase(kv.key_ptr.*, key)) break kv.key_ptr.*;
1442
- } else null;
1443
- _ = out.object.fetchOrderedRemove(same orelse break);
1633
+ // A cookie argument travels in the cookie header, form serialized and
1634
+ // percent-encoded, replacing a cookie of the same name among those the
1635
+ // caller's headers already send.
1636
+ var sent: std.ArrayList(CallArg) = .empty;
1637
+ for (call_args(ctx, "cookie")) |arg| {
1638
+ if (!h.is_noval(arg.val)) sent.append(h.A(), arg) catch {};
1639
+ }
1640
+ if (0 < sent.items.len) {
1641
+ var names: std.ArrayList([]const u8) = .empty;
1642
+ for (sent.items) |arg| {
1643
+ if (arg.val == .object) {
1644
+ for (h.keysof_vec(arg.val)) |key| names.append(h.A(), h.esc_url(key)) catch {};
1645
+ } else {
1646
+ names.append(h.A(), arg.wire) catch {};
1444
1647
  }
1445
- h.setp(out, key, h.vstr(h.stringify(val)));
1648
+ }
1649
+ var kept: std.ArrayList([]const u8) = .empty;
1650
+ while (true) {
1651
+ var kit = out.object.iterator();
1652
+ const same: ?[]const u8 = while (kit.next()) |kv| {
1653
+ if (std.ascii.eqlIgnoreCase(kv.key_ptr.*, "cookie")) break kv.key_ptr.*;
1654
+ } else null;
1655
+ const removed = out.object.fetchOrderedRemove(same orelse break) orelse break;
1656
+ if (removed.value != .string) continue;
1657
+ for (h.cookie_keep(removed.value.string, names.items)) |cookie| kept.append(h.A(), cookie) catch {};
1658
+ }
1659
+ for (sent.items) |arg| {
1660
+ const pair = cookie_pair(arg.wire, arg.val);
1661
+ if (0 < pair.len) kept.append(h.A(), pair) catch {};
1662
+ }
1663
+ if (0 < kept.items.len) {
1664
+ const joined = std.mem.join(h.A(), "; ", kept.items) catch "";
1665
+ h.setp(out, "cookie", h.vstr(joined));
1446
1666
  }
1447
1667
  }
1448
1668
 
1449
1669
  return out;
1450
1670
  }
1451
1671
 
1672
+ fn keyLessThan(_: void, a: []const u8, b: []const u8) bool {
1673
+ return std.mem.lessThan(u8, a, b);
1674
+ }
1675
+
1676
+ // The form style of a cookie parameter: a list repeats the name, a map sends
1677
+ // its own keys, and every value is percent-encoded.
1678
+ fn cookie_pair(wire: []const u8, val: Value) []const u8 {
1679
+ var pairs: std.ArrayList([]const u8) = .empty;
1680
+ switch (val) {
1681
+ .array => |items| {
1682
+ for (items.data.items) |item| {
1683
+ const text = h.esc_url(h.stringify(item));
1684
+ const pair = std.fmt.allocPrint(h.A(), "{s}={s}", .{ wire, text }) catch continue;
1685
+ pairs.append(h.A(), pair) catch {};
1686
+ }
1687
+ },
1688
+ .object => {
1689
+ const keys = h.keysof_vec(val);
1690
+ std.mem.sort([]const u8, keys, {}, keyLessThan);
1691
+ for (keys) |key| {
1692
+ const text = h.esc_url(h.stringify(h.getp(val, key)));
1693
+ const pair = std.fmt.allocPrint(h.A(), "{s}={s}", .{ h.esc_url(key), text }) catch continue;
1694
+ pairs.append(h.A(), pair) catch {};
1695
+ }
1696
+ },
1697
+ else => {
1698
+ const text = h.esc_url(h.stringify(val));
1699
+ const pair = std.fmt.allocPrint(h.A(), "{s}={s}", .{ wire, text }) catch return "";
1700
+ pairs.append(h.A(), pair) catch {};
1701
+ },
1702
+ }
1703
+ return std.mem.join(h.A(), "; ", pairs.items) catch "";
1704
+ }
1705
+
1452
1706
  pub fn prepare_body_util(ctx: *Context) Value {
1453
1707
  if (std.mem.eql(u8, ctx.op.input, "data")) {
1708
+ if (is_raw_request(ctx.point)) return raw_body(ctx.reqdata);
1454
1709
  return transform_request_util(ctx);
1455
1710
  }
1456
1711
  return h.vnull();
@@ -1515,8 +1770,10 @@ pub fn prepare_query_util(ctx: *Context) Value {
1515
1770
  // A path parameter travels in the path. The generated config lists them
1516
1771
  // as args.params, which prepare_params reads; params is the older list.
1517
1772
  const aparams: Value = h.getpath(&.{ "args", "params" }, point);
1518
- // A header parameter travels in the headers, which prepare_headers fills.
1773
+ // A header or cookie parameter travels in the headers, which prepare_headers
1774
+ // fills, unless a query parameter shares its name: then both are sent.
1519
1775
  const aheader: Value = h.getpath(&.{ "args", "header" }, point);
1776
+ const acookie: Value = h.getpath(&.{ "args", "cookie" }, point);
1520
1777
  // A query parameter travels under the name the definition gives it, its
1521
1778
  // orig, which the model may have renamed for the caller.
1522
1779
  const aquery: Value = h.getpath(&.{ "args", "query" }, point);
@@ -1536,7 +1793,8 @@ pub fn prepare_query_util(ctx: *Context) Value {
1536
1793
  }
1537
1794
  }
1538
1795
  }
1539
- if (!contained) contained = names_key(aparams, key) or names_key(aheader, key);
1796
+ if (!contained) contained = names_key(aparams, key) or
1797
+ ((names_key(aheader, key) or names_key(acookie, key)) and !names_key(aquery, key));
1540
1798
  var wire: []const u8 = key;
1541
1799
  if (aquery == .array) {
1542
1800
  for (aquery.array.data.items) |qd| {
@@ -1553,6 +1811,18 @@ pub fn prepare_query_util(ctx: *Context) Value {
1553
1811
  if (!h.is_noval(val) and !std.mem.eql(u8, key, "$action") and !contained) h.setp(out, wire, val);
1554
1812
  }
1555
1813
  }
1814
+
1815
+ // A create or update passes its query arguments in its data.
1816
+ for (call_args(ctx, "query")) |arg| {
1817
+ var contained = h.is_noval(arg.val) or names_key(aparams, arg.name) or
1818
+ ((names_key(aheader, arg.name) or names_key(acookie, arg.name)) and !names_key(aquery, arg.name));
1819
+ if (params == .array) {
1820
+ for (params.array.data.items) |v| {
1821
+ if (v == .string and std.mem.eql(u8, v.string, arg.name)) contained = true;
1822
+ }
1823
+ }
1824
+ if (!contained) h.setp(out, arg.wire, arg.val);
1825
+ }
1556
1826
  return out;
1557
1827
  }
1558
1828
 
@@ -1800,41 +2070,130 @@ pub fn result_body_util(ctx: *Context) ?*SdkResult {
1800
2070
  if (json == .function and !h.is_noval(body)) {
1801
2071
  res.body = h.call_json(json);
1802
2072
  }
2073
+ if (resp.unreadable) {
2074
+ const sent: Value = if (ctx.spec) |sp| sp.headers else h.vnull();
2075
+ res.err = unreadable_body(ctx, res.status, res.headers, body, sent, res.err);
2076
+ }
1803
2077
  }
1804
2078
  }
1805
2079
  return result;
1806
2080
  }
1807
2081
 
2082
+ const PREVIEW_LENGTH = 160;
2083
+
2084
+ // A body that is not JSON. An HTTP failure keeps its own error, with the
2085
+ // response described; otherwise the code tells a wrong content type from
2086
+ // malformed JSON.
2087
+ pub fn unreadable_body(
2088
+ ctx: *Context,
2089
+ status: i64,
2090
+ headers: Value,
2091
+ text: Value,
2092
+ sent: Value,
2093
+ failed: ?*err.ProjectNameError,
2094
+ ) *err.ProjectNameError {
2095
+ const ctype = body_header(headers, "content-type");
2096
+ const agent = clean_str_util(ctx, body_header(sent, "user-agent"));
2097
+ const detail = fmt("HTTP {d}, content-type {s}, user-agent {s}{s}", .{
2098
+ status,
2099
+ if (ctype.len == 0) "none" else ctype,
2100
+ if (agent.len == 0) "transport default" else agent,
2101
+ if (h.is_noval(text) or text == .null) "" else fmt(", body: {s}", .{body_preview(ctx, text)}),
2102
+ });
2103
+
2104
+ if (failed) |f| {
2105
+ f.msg = fmt("{s} ({s})", .{ f.msg, detail });
2106
+ return f;
2107
+ }
2108
+ if (ctype.len == 0 or std.ascii.indexOfIgnoreCase(ctype, "json") != null) {
2109
+ return ctx.make_error("response_json_invalid", fmt("response: body is not valid JSON ({s})", .{detail}));
2110
+ }
2111
+ return ctx.make_error("response_content_type", fmt("response: expected JSON, got {s} ({s})", .{ ctype, detail }));
2112
+ }
2113
+
2114
+ fn body_header(headers: Value, name: []const u8) []const u8 {
2115
+ if (headers == .object) {
2116
+ var it = headers.object.iterator();
2117
+ while (it.next()) |kv| {
2118
+ if (std.ascii.eqlIgnoreCase(kv.key_ptr.*, name)) {
2119
+ return switch (kv.value_ptr.*) {
2120
+ .string => |sv| sv,
2121
+ else => h.stringify(kv.value_ptr.*),
2122
+ };
2123
+ }
2124
+ }
2125
+ }
2126
+ return "";
2127
+ }
2128
+
2129
+ // Cleaned whole: a secret the bound would split could leave its prefix.
2130
+ fn body_preview(ctx: *Context, text: Value) []const u8 {
2131
+ const raw: []const u8 = switch (text) {
2132
+ .string => |sv| sv,
2133
+ else => h.stringify(text),
2134
+ };
2135
+ var spaced: std.ArrayList(u8) = .empty;
2136
+ var space = false;
2137
+ for (raw) |c| {
2138
+ if (std.ascii.isWhitespace(c)) {
2139
+ space = spaced.items.len > 0;
2140
+ continue;
2141
+ }
2142
+ if (space) {
2143
+ spaced.append(h.A(), ' ') catch {};
2144
+ space = false;
2145
+ }
2146
+ spaced.append(h.A(), c) catch {};
2147
+ }
2148
+ const flat = clean_str_util(ctx, spaced.items);
2149
+ var points: usize = 0;
2150
+ var end: usize = 0;
2151
+ while (end < flat.len) : (end += 1) {
2152
+ if ((flat[end] & 0xC0) == 0x80) continue;
2153
+ if (points == PREVIEW_LENGTH) return fmt("{s}...", .{flat[0..end]});
2154
+ points += 1;
2155
+ }
2156
+ return flat;
2157
+ }
2158
+
1808
2159
  // `$action` selects the point (see make_point_util); it is never an API
1809
2160
  // field, so the body is a copy without it. The caller's map is left untouched.
1810
2161
  fn strip_action(reqdata: Value) Value {
1811
- return omit_keys(reqdata, h.vnull(), true);
2162
+ return omit_keys(reqdata, &.{}, true);
2163
+ }
2164
+
2165
+ // A header, cookie or query argument travels where prepare_headers_util or
2166
+ // prepare_query_util sends it, so the body is built from the request data
2167
+ // without it, unless the entity declares it as a field too.
2168
+ fn routed_arg_names(ctx: *Context) [][]const u8 {
2169
+ var names: std.ArrayList([]const u8) = .empty;
2170
+ for ([_][]const u8{ "header", "cookie", "query" }) |kind| {
2171
+ for (call_args(ctx, kind)) |arg| {
2172
+ if (!field_arg(ctx, arg.name)) names.append(h.A(), arg.name) catch {};
2173
+ }
2174
+ }
2175
+ return names.toOwnedSlice(h.A()) catch &.{};
1812
2176
  }
1813
2177
 
1814
- // A header argument travels as a header, which prepare_headers_util sends, so
1815
- // the body is built from the request data without it.
1816
- fn dropped(key: []const u8, point: Value, action: bool) bool {
2178
+ fn dropped(key: []const u8, routed: []const []const u8, action: bool) bool {
1817
2179
  if (action) return std.mem.eql(u8, key, "$action");
1818
- const aheader: Value = h.getpath(&.{ "args", "header" }, point);
1819
- if (aheader != .array) return false;
1820
- for (aheader.array.data.items) |hd| {
1821
- const name = h.getp(hd, "name");
1822
- if (name == .string and std.mem.eql(u8, name.string, key)) return true;
2180
+ for (routed) |name| {
2181
+ if (std.mem.eql(u8, name, key)) return true;
1823
2182
  }
1824
2183
  return false;
1825
2184
  }
1826
2185
 
1827
- fn omit_keys(reqdata: Value, point: Value, action: bool) Value {
2186
+ fn omit_keys(reqdata: Value, routed: []const []const u8, action: bool) Value {
1828
2187
  if (reqdata != .object) return reqdata;
1829
2188
  var found = false;
1830
2189
  var it = reqdata.object.iterator();
1831
- while (it.next()) |kv| found = found or dropped(kv.key_ptr.*, point, action);
2190
+ while (it.next()) |kv| found = found or dropped(kv.key_ptr.*, routed, action);
1832
2191
  if (!found) return reqdata;
1833
2192
  const body = h.omap();
1834
2193
  var bit = reqdata.object.iterator();
1835
2194
  while (bit.next()) |kv| {
1836
2195
  const key = kv.key_ptr.*;
1837
- if (!dropped(key, point, action)) h.setp(body, key, kv.value_ptr.*);
2196
+ if (!dropped(key, routed, action)) h.setp(body, key, kv.value_ptr.*);
1838
2197
  }
1839
2198
  return body;
1840
2199
  }
@@ -1845,7 +2204,7 @@ pub fn transform_request_util(ctx: *Context) Value {
1845
2204
 
1846
2205
  if (spec) |sp| sp.step = "reqform";
1847
2206
 
1848
- const reqdata = omit_keys(ctx.reqdata, point, false);
2207
+ const reqdata = omit_keys(ctx.reqdata, routed_arg_names(ctx), false);
1849
2208
 
1850
2209
  const transform = h.to_map(h.getp(point, "transform"));
1851
2210
  if (h.is_noval(transform)) return strip_action(reqdata);
@@ -1860,6 +2219,19 @@ pub fn transform_request_util(ctx: *Context) Value {
1860
2219
  return strip_action(tres.out);
1861
2220
  }
1862
2221
 
2222
+ fn field_arg(ctx: *Context, name: []const u8) bool {
2223
+ for ([_][]const u8{ "header", "cookie", "query" }) |kind| {
2224
+ const defs: Value = h.getpath(&.{ "args", kind }, ctx.point);
2225
+ if (defs != .array) continue;
2226
+ for (defs.array.data.items) |ad| {
2227
+ const n = h.getp(ad, "name");
2228
+ const f = h.getp(ad, "field");
2229
+ if (n == .string and std.mem.eql(u8, n.string, name) and f == .bool and f.bool) return true;
2230
+ }
2231
+ }
2232
+ return false;
2233
+ }
2234
+
1863
2235
  pub fn transform_response_util(ctx: *Context) Value {
1864
2236
  const spec = ctx.spec;
1865
2237
  const result = ctx.result;