@voxgig/sdkgen 4.34.0 → 4.34.2

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 (1138) 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 +9 -7
  45. package/dist/cmp/ReadmeErrors.js.map +1 -1
  46. package/dist/cmp/ReadmeExplanation.js +7 -6
  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 +6 -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 +108 -38
  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 +120 -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 +12 -1
  106. package/dist/helpers/naming.js +154 -4
  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 +20 -5
  115. package/dist/helpers/opExample.js +86 -24
  116. package/dist/helpers/opExample.js.map +1 -1
  117. package/dist/helpers/opShape.d.ts +22 -4
  118. package/dist/helpers/opShape.js +218 -38
  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 +17 -10
  135. package/dist/sdkgen.js +87 -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 +3 -1
  141. package/dist/utility.js +59 -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 +24 -14
  153. package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +17 -8
  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 +39 -21
  158. package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +41 -22
  159. package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +11 -8
  160. package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +23 -11
  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/c/utility_c.ts +21 -2
  168. package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +1 -1
  169. package/project/.sdk/src/cmp/clojure/Main_clojure.ts +3 -1
  170. package/project/.sdk/src/cmp/clojure/PrepareAuth_clojure.ts +44 -28
  171. package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +11 -5
  172. package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +18 -7
  173. package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +3 -3
  174. package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +3 -3
  175. package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +11 -9
  176. package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +25 -12
  177. package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +42 -22
  178. package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +8 -5
  179. package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +17 -10
  180. package/project/.sdk/src/cmp/clojure/TestClean_clojure.ts +57 -27
  181. package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +64 -5
  182. package/project/.sdk/src/cmp/clojure/fragment/Entity.fragment.clj +24 -12
  183. package/project/.sdk/src/cmp/clojure/fragment/EntityListOp.fragment.clj +7 -9
  184. package/project/.sdk/src/cmp/clojure/fragment/EntityPatchOp.fragment.clj +15 -0
  185. package/project/.sdk/src/cmp/clojure/utility_clojure.ts +14 -0
  186. package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +1 -1
  187. package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +2 -2
  188. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +3 -19
  189. package/project/.sdk/src/cmp/cpp/PrepareAuth_cpp.ts +38 -39
  190. package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +21 -13
  191. package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +18 -9
  192. package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +2 -2
  193. package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +3 -3
  194. package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +10 -9
  195. package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +28 -19
  196. package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +44 -26
  197. package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +9 -8
  198. package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +19 -11
  199. package/project/.sdk/src/cmp/cpp/TestClean_cpp.ts +69 -21
  200. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +135 -6
  201. package/project/.sdk/src/cmp/cpp/fragment/Entity.fragment.cpp +2 -0
  202. package/project/.sdk/src/cmp/cpp/fragment/EntityPatchOp.fragment.cpp +28 -0
  203. package/project/.sdk/src/cmp/cpp/utility_cpp.ts +13 -0
  204. package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +1 -1
  205. package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +1 -1
  206. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +3 -1
  207. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +4 -1
  208. package/project/.sdk/src/cmp/csharp/PrepareAuth_csharp.ts +69 -23
  209. package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +10 -6
  210. package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +21 -9
  211. package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +3 -3
  212. package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +3 -3
  213. package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +11 -9
  214. package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +29 -13
  215. package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +41 -19
  216. package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +15 -8
  217. package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +19 -11
  218. package/project/.sdk/src/cmp/csharp/TestClean_csharp.ts +67 -14
  219. package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +43 -31
  220. package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +187 -15
  221. package/project/.sdk/src/cmp/csharp/fragment/Entity.fragment.cs +2 -0
  222. package/project/.sdk/src/cmp/csharp/fragment/EntityBase.fragment.cs +11 -2
  223. package/project/.sdk/src/cmp/csharp/fragment/EntityPatchOp.fragment.cs +41 -0
  224. package/project/.sdk/src/cmp/csharp/fragment/Main.fragment.cs +28 -4
  225. package/project/.sdk/src/cmp/csharp/utility_csharp.ts +19 -0
  226. package/project/.sdk/src/cmp/elixir/EntityOperation_elixir.ts +5 -0
  227. package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +3 -3
  228. package/project/.sdk/src/cmp/elixir/Entity_elixir.ts +22 -1
  229. package/project/.sdk/src/cmp/elixir/MainEntity_elixir.ts +4 -2
  230. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +6 -2
  231. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +7 -0
  232. package/project/.sdk/src/cmp/elixir/PrepareAuth_elixir.ts +40 -30
  233. package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +17 -13
  234. package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +2 -1
  235. package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +18 -10
  236. package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +2 -2
  237. package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +4 -4
  238. package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +13 -11
  239. package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +36 -20
  240. package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +37 -21
  241. package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +13 -10
  242. package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +18 -13
  243. package/project/.sdk/src/cmp/elixir/TestClean_elixir.ts +41 -12
  244. package/project/.sdk/src/cmp/elixir/TestEntity_elixir.ts +152 -23
  245. package/project/.sdk/src/cmp/elixir/fragment/Entity.fragment.ex +4 -4
  246. package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +4 -3
  247. package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +4 -3
  248. package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +4 -3
  249. package/project/.sdk/src/cmp/elixir/fragment/EntityPatchOp.fragment.ex +36 -0
  250. package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -3
  251. package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +4 -3
  252. package/project/.sdk/src/cmp/elixir/fragment/Main.fragment.ex +29 -5
  253. package/project/.sdk/src/cmp/elixir/fragment/Pipeline.fragment.ex +23 -16
  254. package/project/.sdk/src/cmp/elixir/utility_elixir.ts +12 -0
  255. package/project/.sdk/src/cmp/go/EntityTypes_go.ts +1 -1
  256. package/project/.sdk/src/cmp/go/Entity_go.ts +1 -1
  257. package/project/.sdk/src/cmp/go/Main_go.ts +5 -6
  258. package/project/.sdk/src/cmp/go/PrepareAuth_go.ts +40 -26
  259. package/project/.sdk/src/cmp/go/ReadmeEntity_go.ts +9 -5
  260. package/project/.sdk/src/cmp/go/ReadmeExamplesTest_go.ts +6 -1
  261. package/project/.sdk/src/cmp/go/ReadmeExplanation_go.ts +3 -1
  262. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +21 -9
  263. package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +3 -3
  264. package/project/.sdk/src/cmp/go/ReadmeIntro_go.ts +3 -3
  265. package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +18 -14
  266. package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +27 -12
  267. package/project/.sdk/src/cmp/go/ReadmeRef_go.ts +40 -17
  268. package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +10 -8
  269. package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +7 -3
  270. package/project/.sdk/src/cmp/go/TestClean_go.ts +81 -18
  271. package/project/.sdk/src/cmp/go/TestDirect_go.ts +47 -53
  272. package/project/.sdk/src/cmp/go/TestEntity_go.ts +204 -24
  273. package/project/.sdk/src/cmp/go/fragment/Entity.fragment.go +79 -60
  274. package/project/.sdk/src/cmp/go/fragment/EntityPatchOp.fragment.go +49 -0
  275. package/project/.sdk/src/cmp/go/fragment/Main.fragment.go +26 -5
  276. package/project/.sdk/src/cmp/go/utility_go.ts +1 -1
  277. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +8 -10
  278. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +240 -121
  279. package/project/.sdk/src/cmp/go-mcp/fragment/main.fragment.go +1 -1
  280. package/project/.sdk/src/cmp/go-mcp/fragment/tools.fragment.go +34 -27
  281. package/project/.sdk/src/cmp/java/EntityTypes_java.ts +1 -1
  282. package/project/.sdk/src/cmp/java/Entity_java.ts +1 -1
  283. package/project/.sdk/src/cmp/java/Main_java.ts +3 -1
  284. package/project/.sdk/src/cmp/java/PrepareAuth_java.ts +58 -23
  285. package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +14 -22
  286. package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +20 -23
  287. package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +3 -3
  288. package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +3 -3
  289. package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +11 -9
  290. package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +33 -28
  291. package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +45 -36
  292. package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +22 -25
  293. package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +19 -25
  294. package/project/.sdk/src/cmp/java/TestClean_java.ts +57 -12
  295. package/project/.sdk/src/cmp/java/TestDirect_java.ts +50 -36
  296. package/project/.sdk/src/cmp/java/TestEntity_java.ts +180 -13
  297. package/project/.sdk/src/cmp/java/fragment/Entity.fragment.java +2 -0
  298. package/project/.sdk/src/cmp/java/fragment/EntityBase.fragment.java +5 -3
  299. package/project/.sdk/src/cmp/java/fragment/EntityPatchOp.fragment.java +45 -0
  300. package/project/.sdk/src/cmp/java/utility_java.ts +25 -0
  301. package/project/.sdk/src/cmp/js/EntityOperation_js.ts +3 -1
  302. package/project/.sdk/src/cmp/js/EntityTypes_js.ts +1 -1
  303. package/project/.sdk/src/cmp/js/Entity_js.ts +1 -1
  304. package/project/.sdk/src/cmp/js/Main_js.ts +2 -0
  305. package/project/.sdk/src/cmp/js/Package_js.ts +11 -8
  306. package/project/.sdk/src/cmp/js/PrepareAuth_js.ts +39 -27
  307. package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +8 -11
  308. package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +11 -12
  309. package/project/.sdk/src/cmp/js/ReadmeInstall_js.ts +3 -3
  310. package/project/.sdk/src/cmp/js/ReadmeIntro_js.ts +3 -3
  311. package/project/.sdk/src/cmp/js/ReadmeModel_js.ts +12 -11
  312. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +23 -12
  313. package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +47 -19
  314. package/project/.sdk/src/cmp/js/ReadmeTopHowto_js.ts +2 -3
  315. package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +16 -11
  316. package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +12 -8
  317. package/project/.sdk/src/cmp/js/TestClean_js.ts +52 -8
  318. package/project/.sdk/src/cmp/js/TestDirect_js.ts +81 -54
  319. package/project/.sdk/src/cmp/js/TestEntity_js.ts +95 -2
  320. package/project/.sdk/src/cmp/js/TestLive_js.ts +4 -3
  321. package/project/.sdk/src/cmp/js/fragment/Direct.test.fragment.js +4 -0
  322. package/project/.sdk/src/cmp/js/fragment/Entity.fragment.js +2 -0
  323. package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +2 -0
  324. package/project/.sdk/src/cmp/js/fragment/EntityBase.fragment.js +51 -25
  325. package/project/.sdk/src/cmp/js/fragment/EntityCreateOp.fragment.js +1 -1
  326. package/project/.sdk/src/cmp/js/fragment/EntityListOp.fragment.js +1 -1
  327. package/project/.sdk/src/cmp/js/fragment/EntityLoadOp.fragment.js +1 -1
  328. package/project/.sdk/src/cmp/js/fragment/EntityPatchOp.fragment.js +129 -0
  329. package/project/.sdk/src/cmp/js/fragment/EntityRemoveOp.fragment.js +1 -1
  330. package/project/.sdk/src/cmp/js/fragment/EntityUpdateOp.fragment.js +1 -1
  331. package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +39 -15
  332. package/project/.sdk/src/cmp/js/utility_js.ts +2 -1
  333. package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +4 -0
  334. package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +1 -1
  335. package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +1 -1
  336. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +3 -1
  337. package/project/.sdk/src/cmp/kotlin/PrepareAuth_kotlin.ts +56 -31
  338. package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +10 -6
  339. package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +20 -10
  340. package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +3 -3
  341. package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +3 -3
  342. package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +11 -9
  343. package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +24 -10
  344. package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +38 -18
  345. package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +14 -8
  346. package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +18 -11
  347. package/project/.sdk/src/cmp/kotlin/TestClean_kotlin.ts +45 -10
  348. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +49 -26
  349. package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +168 -10
  350. package/project/.sdk/src/cmp/kotlin/fragment/Entity.fragment.kt +2 -0
  351. package/project/.sdk/src/cmp/kotlin/fragment/EntityBase.fragment.kt +2 -1
  352. package/project/.sdk/src/cmp/kotlin/fragment/EntityPatchOp.fragment.kt +40 -0
  353. package/project/.sdk/src/cmp/kotlin/utility_kotlin.ts +21 -1
  354. package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +1 -1
  355. package/project/.sdk/src/cmp/lua/Entity_lua.ts +1 -1
  356. package/project/.sdk/src/cmp/lua/Main_lua.ts +2 -1
  357. package/project/.sdk/src/cmp/lua/PrepareAuth_lua.ts +42 -23
  358. package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +9 -5
  359. package/project/.sdk/src/cmp/lua/ReadmeExamplesTest_lua.ts +15 -6
  360. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +10 -8
  361. package/project/.sdk/src/cmp/lua/ReadmeInstall_lua.ts +2 -2
  362. package/project/.sdk/src/cmp/lua/ReadmeIntro_lua.ts +3 -3
  363. package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +15 -14
  364. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +29 -10
  365. package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +29 -12
  366. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +15 -7
  367. package/project/.sdk/src/cmp/lua/ReadmeTopTest_lua.ts +7 -6
  368. package/project/.sdk/src/cmp/lua/TestClean_lua.ts +46 -12
  369. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +100 -124
  370. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +173 -20
  371. package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +86 -48
  372. package/project/.sdk/src/cmp/lua/fragment/EntityCreateOp.fragment.lua +1 -1
  373. package/project/.sdk/src/cmp/lua/fragment/EntityListOp.fragment.lua +1 -1
  374. package/project/.sdk/src/cmp/lua/fragment/EntityLoadOp.fragment.lua +1 -1
  375. package/project/.sdk/src/cmp/lua/fragment/EntityPatchOp.fragment.lua +34 -0
  376. package/project/.sdk/src/cmp/lua/fragment/EntityRemoveOp.fragment.lua +1 -1
  377. package/project/.sdk/src/cmp/lua/fragment/EntityUpdateOp.fragment.lua +1 -1
  378. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +28 -6
  379. package/project/.sdk/src/cmp/ocaml/EntityOperation_ocaml.ts +8 -11
  380. package/project/.sdk/src/cmp/ocaml/Entity_ocaml.ts +8 -3
  381. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +2 -1
  382. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +7 -5
  383. package/project/.sdk/src/cmp/ocaml/PrepareAuth_ocaml.ts +39 -34
  384. package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +10 -6
  385. package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +5 -9
  386. package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +2 -2
  387. package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +3 -3
  388. package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +3 -1
  389. package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +14 -4
  390. package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +31 -13
  391. package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +4 -2
  392. package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +5 -8
  393. package/project/.sdk/src/cmp/ocaml/TestClean_ocaml.ts +47 -14
  394. package/project/.sdk/src/cmp/ocaml/TestEntity_ocaml.ts +88 -3
  395. package/project/.sdk/src/cmp/ocaml/fragment/RunOp.fragment.ml +10 -11
  396. package/project/.sdk/src/cmp/ocaml/utility_ocaml.ts +20 -1
  397. package/project/.sdk/src/cmp/perl/Entity_perl.ts +1 -1
  398. package/project/.sdk/src/cmp/perl/Main_perl.ts +3 -1
  399. package/project/.sdk/src/cmp/perl/Package_perl.ts +5 -4
  400. package/project/.sdk/src/cmp/perl/PrepareAuth_perl.ts +48 -33
  401. package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +13 -5
  402. package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +2 -2
  403. package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +11 -6
  404. package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +9 -3
  405. package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +3 -3
  406. package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +11 -9
  407. package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +20 -9
  408. package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +43 -23
  409. package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +8 -5
  410. package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +12 -9
  411. package/project/.sdk/src/cmp/perl/TestClean_perl.ts +42 -11
  412. package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +121 -149
  413. package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +178 -17
  414. package/project/.sdk/src/cmp/perl/fragment/Entity.fragment.pm +17 -3
  415. package/project/.sdk/src/cmp/perl/fragment/EntityCreateOp.fragment.pm +2 -2
  416. package/project/.sdk/src/cmp/perl/fragment/EntityListOp.fragment.pm +2 -13
  417. package/project/.sdk/src/cmp/perl/fragment/EntityLoadOp.fragment.pm +2 -2
  418. package/project/.sdk/src/cmp/perl/fragment/EntityPatchOp.fragment.pm +32 -0
  419. package/project/.sdk/src/cmp/perl/fragment/EntityRemoveOp.fragment.pm +1 -1
  420. package/project/.sdk/src/cmp/perl/fragment/EntityUpdateOp.fragment.pm +2 -2
  421. package/project/.sdk/src/cmp/perl/fragment/Main.fragment.pm +23 -5
  422. package/project/.sdk/src/cmp/perl/utility_perl.ts +26 -0
  423. package/project/.sdk/src/cmp/php/EntityOperation_php.ts +3 -1
  424. package/project/.sdk/src/cmp/php/EntityTypes_php.ts +3 -3
  425. package/project/.sdk/src/cmp/php/Entity_php.ts +4 -3
  426. package/project/.sdk/src/cmp/php/MainEntity_php.ts +1 -1
  427. package/project/.sdk/src/cmp/php/Main_php.ts +3 -1
  428. package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
  429. package/project/.sdk/src/cmp/php/PrepareAuth_php.ts +36 -28
  430. package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +10 -6
  431. package/project/.sdk/src/cmp/php/ReadmeExamplesTest_php.ts +3 -3
  432. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +13 -7
  433. package/project/.sdk/src/cmp/php/ReadmeInstall_php.ts +2 -2
  434. package/project/.sdk/src/cmp/php/ReadmeIntro_php.ts +3 -3
  435. package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +10 -9
  436. package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +12 -3
  437. package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +35 -17
  438. package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +5 -4
  439. package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +14 -8
  440. package/project/.sdk/src/cmp/php/TestClean_php.ts +73 -12
  441. package/project/.sdk/src/cmp/php/TestDirect_php.ts +95 -127
  442. package/project/.sdk/src/cmp/php/TestEntity_php.ts +219 -20
  443. package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +82 -45
  444. package/project/.sdk/src/cmp/php/fragment/EntityCreateOp.fragment.php +2 -2
  445. package/project/.sdk/src/cmp/php/fragment/EntityListOp.fragment.php +2 -2
  446. package/project/.sdk/src/cmp/php/fragment/EntityLoadOp.fragment.php +2 -2
  447. package/project/.sdk/src/cmp/php/fragment/EntityPatchOp.fragment.php +38 -0
  448. package/project/.sdk/src/cmp/php/fragment/EntityRemoveOp.fragment.php +2 -2
  449. package/project/.sdk/src/cmp/php/fragment/EntityUpdateOp.fragment.php +2 -2
  450. package/project/.sdk/src/cmp/php/fragment/Main.fragment.php +26 -5
  451. package/project/.sdk/src/cmp/py/EntityOperation_py.ts +3 -1
  452. package/project/.sdk/src/cmp/py/EntityTypes_py.ts +1 -1
  453. package/project/.sdk/src/cmp/py/Entity_py.ts +2 -2
  454. package/project/.sdk/src/cmp/py/Main_py.ts +6 -2
  455. package/project/.sdk/src/cmp/py/Package_py.ts +7 -0
  456. package/project/.sdk/src/cmp/py/PrepareAuth_py.ts +52 -26
  457. package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +9 -11
  458. package/project/.sdk/src/cmp/py/ReadmeExamplesTest_py.ts +12 -6
  459. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +10 -10
  460. package/project/.sdk/src/cmp/py/ReadmeInstall_py.ts +3 -3
  461. package/project/.sdk/src/cmp/py/ReadmeIntro_py.ts +3 -3
  462. package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +10 -9
  463. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +18 -15
  464. package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +42 -32
  465. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +7 -12
  466. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +9 -8
  467. package/project/.sdk/src/cmp/py/TestClean_py.ts +41 -10
  468. package/project/.sdk/src/cmp/py/TestDirect_py.ts +91 -121
  469. package/project/.sdk/src/cmp/py/TestEntity_py.ts +146 -20
  470. package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +62 -42
  471. package/project/.sdk/src/cmp/py/fragment/EntityCreateOp.fragment.py +1 -1
  472. package/project/.sdk/src/cmp/py/fragment/EntityListOp.fragment.py +1 -1
  473. package/project/.sdk/src/cmp/py/fragment/EntityLoadOp.fragment.py +1 -1
  474. package/project/.sdk/src/cmp/py/fragment/EntityPatchOp.fragment.py +27 -0
  475. package/project/.sdk/src/cmp/py/fragment/EntityRemoveOp.fragment.py +1 -1
  476. package/project/.sdk/src/cmp/py/fragment/EntityUpdateOp.fragment.py +1 -1
  477. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +23 -5
  478. package/project/.sdk/src/cmp/py-data/Main_py-data.ts +1 -1
  479. package/project/.sdk/src/cmp/rb/EntityOperation_rb.ts +3 -1
  480. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +5 -4
  481. package/project/.sdk/src/cmp/rb/Entity_rb.ts +1 -1
  482. package/project/.sdk/src/cmp/rb/Main_rb.ts +5 -6
  483. package/project/.sdk/src/cmp/rb/Package_rb.ts +3 -1
  484. package/project/.sdk/src/cmp/rb/PrepareAuth_rb.ts +30 -28
  485. package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +13 -6
  486. package/project/.sdk/src/cmp/rb/ReadmeExamplesTest_rb.ts +19 -10
  487. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +21 -11
  488. package/project/.sdk/src/cmp/rb/ReadmeInstall_rb.ts +2 -2
  489. package/project/.sdk/src/cmp/rb/ReadmeIntro_rb.ts +3 -3
  490. package/project/.sdk/src/cmp/rb/ReadmeModel_rb.ts +11 -9
  491. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +20 -8
  492. package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +38 -17
  493. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +8 -5
  494. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +15 -11
  495. package/project/.sdk/src/cmp/rb/TestClean_rb.ts +36 -10
  496. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +95 -126
  497. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +177 -21
  498. package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +49 -29
  499. package/project/.sdk/src/cmp/rb/fragment/EntityCreateOp.fragment.rb +2 -1
  500. package/project/.sdk/src/cmp/rb/fragment/EntityListOp.fragment.rb +2 -11
  501. package/project/.sdk/src/cmp/rb/fragment/EntityLoadOp.fragment.rb +2 -1
  502. package/project/.sdk/src/cmp/rb/fragment/EntityPatchOp.fragment.rb +32 -0
  503. package/project/.sdk/src/cmp/rb/fragment/EntityRemoveOp.fragment.rb +2 -1
  504. package/project/.sdk/src/cmp/rb/fragment/EntityUpdateOp.fragment.rb +2 -1
  505. package/project/.sdk/src/cmp/rb/fragment/Main.fragment.rb +19 -5
  506. package/project/.sdk/src/cmp/rb/utility_rb.ts +10 -0
  507. package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +1 -1
  508. package/project/.sdk/src/cmp/rust/Entity_rust.ts +2 -2
  509. package/project/.sdk/src/cmp/rust/Main_rust.ts +7 -6
  510. package/project/.sdk/src/cmp/rust/PrepareAuth_rust.ts +56 -29
  511. package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +19 -11
  512. package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +17 -6
  513. package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +3 -3
  514. package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +3 -3
  515. package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +12 -9
  516. package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +28 -19
  517. package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +38 -23
  518. package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +9 -10
  519. package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +20 -11
  520. package/project/.sdk/src/cmp/rust/TestClean_rust.ts +80 -21
  521. package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +124 -79
  522. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +164 -17
  523. package/project/.sdk/src/cmp/rust/fragment/Entity.fragment.rs +44 -23
  524. package/project/.sdk/src/cmp/rust/fragment/EntityPatchOp.fragment.rs +41 -0
  525. package/project/.sdk/src/cmp/rust/fragment/Main.fragment.rs +39 -9
  526. package/project/.sdk/src/cmp/rust/utility_rust.ts +13 -1
  527. package/project/.sdk/src/cmp/scala/Config_scala.ts +4 -0
  528. package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +6 -3
  529. package/project/.sdk/src/cmp/scala/Entity_scala.ts +1 -1
  530. package/project/.sdk/src/cmp/scala/Main_scala.ts +4 -20
  531. package/project/.sdk/src/cmp/scala/PrepareAuth_scala.ts +56 -24
  532. package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +14 -22
  533. package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +18 -23
  534. package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +3 -3
  535. package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +3 -3
  536. package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +11 -9
  537. package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +27 -28
  538. package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +43 -36
  539. package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +14 -25
  540. package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +17 -25
  541. package/project/.sdk/src/cmp/scala/TestClean_scala.ts +39 -10
  542. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +113 -3
  543. package/project/.sdk/src/cmp/scala/fragment/Entity.fragment.scala +2 -0
  544. package/project/.sdk/src/cmp/scala/fragment/EntityBase.fragment.scala +4 -2
  545. package/project/.sdk/src/cmp/scala/fragment/EntityPatchOp.fragment.scala +33 -0
  546. package/project/.sdk/src/cmp/scala/utility_scala.ts +25 -0
  547. package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +4 -4
  548. package/project/.sdk/src/cmp/swift/Entity_swift.ts +1 -1
  549. package/project/.sdk/src/cmp/swift/Main_swift.ts +6 -2
  550. package/project/.sdk/src/cmp/swift/PrepareAuth_swift.ts +56 -29
  551. package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +10 -6
  552. package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +23 -9
  553. package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +3 -3
  554. package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +3 -3
  555. package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +11 -9
  556. package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +26 -9
  557. package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +39 -18
  558. package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +12 -7
  559. package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +22 -11
  560. package/project/.sdk/src/cmp/swift/TestClean_swift.ts +44 -10
  561. package/project/.sdk/src/cmp/swift/TestEntity_swift.ts +90 -2
  562. package/project/.sdk/src/cmp/swift/fragment/Entity.fragment.swift +2 -0
  563. package/project/.sdk/src/cmp/swift/fragment/EntityBase.fragment.swift +9 -1
  564. package/project/.sdk/src/cmp/swift/fragment/EntityPatchOp.fragment.swift +24 -0
  565. package/project/.sdk/src/cmp/swift/fragment/Main.fragment.swift +23 -3
  566. package/project/.sdk/src/cmp/swift/utility_swift.ts +14 -1
  567. package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +9 -3
  568. package/project/.sdk/src/cmp/ts/Entity_ts.ts +5 -5
  569. package/project/.sdk/src/cmp/ts/Main_ts.ts +4 -3
  570. package/project/.sdk/src/cmp/ts/Package_ts.ts +18 -10
  571. package/project/.sdk/src/cmp/ts/PrepareAuth_ts.ts +37 -28
  572. package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +8 -11
  573. package/project/.sdk/src/cmp/ts/ReadmeExamplesTest_ts.ts +39 -21
  574. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +11 -12
  575. package/project/.sdk/src/cmp/ts/ReadmeInstall_ts.ts +3 -3
  576. package/project/.sdk/src/cmp/ts/ReadmeIntro_ts.ts +3 -3
  577. package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +12 -11
  578. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +17 -14
  579. package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +47 -27
  580. package/project/.sdk/src/cmp/ts/ReadmeTopHowto_ts.ts +2 -3
  581. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +8 -14
  582. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +30 -15
  583. package/project/.sdk/src/cmp/ts/TestClean_ts.ts +52 -8
  584. package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +50 -109
  585. package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +92 -2
  586. package/project/.sdk/src/cmp/ts/TestLive_ts.ts +4 -3
  587. package/project/.sdk/src/cmp/ts/fragment/Direct.test.fragment.ts +3 -0
  588. package/project/.sdk/src/cmp/ts/fragment/Entity.fragment.ts +2 -0
  589. package/project/.sdk/src/cmp/ts/fragment/Entity.test.fragment.ts +3 -1
  590. package/project/.sdk/src/cmp/ts/fragment/EntityBase.fragment.ts +49 -24
  591. package/project/.sdk/src/cmp/ts/fragment/EntityCreateOp.fragment.ts +1 -1
  592. package/project/.sdk/src/cmp/ts/fragment/EntityListOp.fragment.ts +1 -1
  593. package/project/.sdk/src/cmp/ts/fragment/EntityLoadOp.fragment.ts +1 -1
  594. package/project/.sdk/src/cmp/ts/fragment/EntityPatchOp.fragment.ts +126 -0
  595. package/project/.sdk/src/cmp/ts/fragment/EntityUpdateOp.fragment.ts +1 -1
  596. package/project/.sdk/src/cmp/ts/fragment/Main.fragment.ts +50 -18
  597. package/project/.sdk/src/cmp/ts/utility_ts.ts +2 -1
  598. package/project/.sdk/src/cmp/zig/Entity_zig.ts +2 -2
  599. package/project/.sdk/src/cmp/zig/Main_zig.ts +5 -22
  600. package/project/.sdk/src/cmp/zig/Package_zig.ts +11 -2
  601. package/project/.sdk/src/cmp/zig/PrepareAuth_zig.ts +57 -31
  602. package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +20 -11
  603. package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +20 -6
  604. package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +2 -2
  605. package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +3 -3
  606. package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +12 -10
  607. package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +32 -14
  608. package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +48 -24
  609. package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +11 -6
  610. package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +17 -9
  611. package/project/.sdk/src/cmp/zig/TestClean_zig.ts +67 -28
  612. package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +54 -5
  613. package/project/.sdk/src/cmp/zig/Test_zig.ts +1 -0
  614. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +44 -34
  615. package/project/.sdk/src/cmp/zig/fragment/EntityPatchOp.fragment.zig +26 -0
  616. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +30 -6
  617. package/project/.sdk/src/cmp/zig/fragment/Root.fragment.zig +1 -0
  618. package/project/.sdk/src/cmp/zig/utility_zig.ts +13 -0
  619. package/project/.sdk/tm/c/LICENSE +1 -1
  620. package/project/.sdk/tm/c/core/context.c +2 -1
  621. package/project/.sdk/tm/c/core/helpers.c +21 -0
  622. package/project/.sdk/tm/c/core/response.c +103 -0
  623. package/project/.sdk/tm/c/core/sdk.h +26 -0
  624. package/project/.sdk/tm/c/core/spec.c +10 -0
  625. package/project/.sdk/tm/c/feature/test.c +46 -2
  626. package/project/.sdk/tm/c/feature/validate.c +2 -0
  627. package/project/.sdk/tm/c/tests/feature_harness.h +1 -1
  628. package/project/.sdk/tm/c/tests/primary_utility_test.c +9 -5
  629. package/project/.sdk/tm/c/tests/server_variable_test.c +80 -0
  630. package/project/.sdk/tm/c/utility/make_fetch_def.c +5 -1
  631. package/project/.sdk/tm/c/utility/make_options.c +84 -6
  632. package/project/.sdk/tm/c/utility/make_point.c +100 -8
  633. package/project/.sdk/tm/c/utility/make_spec.c +17 -1
  634. package/project/.sdk/tm/c/utility/make_url.c +38 -1
  635. package/project/.sdk/tm/c/utility/media.c +107 -0
  636. package/project/.sdk/tm/c/utility/param.c +52 -28
  637. package/project/.sdk/tm/c/utility/prepare_body.c +1 -0
  638. package/project/.sdk/tm/c/utility/prepare_headers.c +199 -29
  639. package/project/.sdk/tm/c/utility/prepare_query.c +24 -2
  640. package/project/.sdk/tm/c/utility/result_body.c +4 -0
  641. package/project/.sdk/tm/c/utility/transform_request.c +54 -17
  642. package/project/.sdk/tm/clojure/LICENSE +1 -1
  643. package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +0 -3
  644. package/project/.sdk/tm/clojure/src/sdk/client.clj +19 -5
  645. package/project/.sdk/tm/clojure/src/sdk/core.clj +446 -142
  646. package/project/.sdk/tm/clojure/src/sdk/features.clj +44 -20
  647. package/project/.sdk/tm/clojure/test/sdk/test/concurrency.clj +136 -0
  648. package/project/.sdk/tm/clojure/test/sdk/test/feature.clj +21 -1
  649. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +13 -3
  650. package/project/.sdk/tm/cpp/LICENSE +1 -1
  651. package/project/.sdk/tm/cpp/core/types.hpp +167 -13
  652. package/project/.sdk/tm/cpp/feature/test.hpp +32 -2
  653. package/project/.sdk/tm/cpp/feature/timeout.hpp +29 -9
  654. package/project/.sdk/tm/cpp/feature/validate.hpp +2 -0
  655. package/project/.sdk/tm/cpp/test/concurrency_test.cpp +348 -0
  656. package/project/.sdk/tm/cpp/test/feature_test.cpp +37 -0
  657. package/project/.sdk/tm/cpp/test/harness.hpp +1 -1
  658. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +6 -2
  659. package/project/.sdk/tm/cpp/test/server_variable_test.cpp +57 -0
  660. package/project/.sdk/tm/cpp/utility/cookie.hpp +36 -0
  661. package/project/.sdk/tm/cpp/utility/pipeline.hpp +482 -106
  662. package/project/.sdk/tm/csharp/LICENSE +1 -1
  663. package/project/.sdk/tm/csharp/core/Context.cs +9 -6
  664. package/project/.sdk/tm/csharp/core/Helpers.cs +17 -0
  665. package/project/.sdk/tm/csharp/core/Response.cs +75 -0
  666. package/project/.sdk/tm/csharp/core/Spec.cs +3 -0
  667. package/project/.sdk/tm/csharp/feature/TestFeature.cs +41 -3
  668. package/project/.sdk/tm/csharp/feature/TimeoutFeature.cs +31 -3
  669. package/project/.sdk/tm/csharp/feature/ValidateFeature.cs +2 -0
  670. package/project/.sdk/tm/csharp/test/ConcurrencyTest.cs +238 -0
  671. package/project/.sdk/tm/csharp/test/FeatureHarness.cs +1 -1
  672. package/project/.sdk/tm/csharp/test/FeatureTest.cs +35 -0
  673. package/project/.sdk/tm/csharp/test/PipelineTest.cs +28 -0
  674. package/project/.sdk/tm/csharp/test/Runner.cs +119 -0
  675. package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +8 -3
  676. package/project/.sdk/tm/csharp/utility/Clean.cs +12 -10
  677. package/project/.sdk/tm/csharp/utility/Fetcher.cs +25 -7
  678. package/project/.sdk/tm/csharp/utility/MakeFetchDef.cs +1 -5
  679. package/project/.sdk/tm/csharp/utility/MakeOptions.cs +8 -6
  680. package/project/.sdk/tm/csharp/utility/MakePoint.cs +68 -17
  681. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +24 -6
  682. package/project/.sdk/tm/csharp/utility/MakeUrl.cs +21 -1
  683. package/project/.sdk/tm/csharp/utility/Media.cs +124 -0
  684. package/project/.sdk/tm/csharp/utility/Param.cs +57 -20
  685. package/project/.sdk/tm/csharp/utility/PrepareBody.cs +4 -0
  686. package/project/.sdk/tm/csharp/utility/PrepareHeaders.cs +103 -24
  687. package/project/.sdk/tm/csharp/utility/PrepareQuery.cs +33 -3
  688. package/project/.sdk/tm/csharp/utility/ResultBody.cs +5 -0
  689. package/project/.sdk/tm/csharp/utility/TransformRequest.cs +21 -13
  690. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +3 -2
  691. package/project/.sdk/tm/elixir/LICENSE +1 -1
  692. package/project/.sdk/tm/elixir/lib/projectname/context.ex +4 -1
  693. package/project/.sdk/tm/elixir/lib/projectname/core.ex +7 -2
  694. package/project/.sdk/tm/elixir/lib/projectname/entity_base.ex +45 -13
  695. package/project/.sdk/tm/elixir/lib/projectname/feature/test.ex +47 -21
  696. package/project/.sdk/tm/elixir/lib/projectname/feature/validate.ex +2 -0
  697. package/project/.sdk/tm/elixir/lib/projectname/utility.ex +512 -138
  698. package/project/.sdk/tm/elixir/test/concurrency_test.exs +176 -0
  699. package/project/.sdk/tm/elixir/test/support/feature_harness.ex +1 -0
  700. package/project/.sdk/tm/go/LICENSE +1 -1
  701. package/project/.sdk/tm/go/core/context.go +6 -2
  702. package/project/.sdk/tm/go/core/helpers.go +19 -1
  703. package/project/.sdk/tm/go/core/response.go +72 -0
  704. package/project/.sdk/tm/go/core/spec.go +3 -0
  705. package/project/.sdk/tm/go/core/types.go +9 -1
  706. package/project/.sdk/tm/go/feature/test_feature.go +44 -3
  707. package/project/.sdk/tm/go/feature/timeout_feature.go +39 -22
  708. package/project/.sdk/tm/go/feature/validate_feature.go +2 -0
  709. package/project/.sdk/tm/go/test/concurrency_test.go +214 -0
  710. package/project/.sdk/tm/go/test/feature_corpus_test.go +45 -1
  711. package/project/.sdk/tm/go/test/feature_harness_test.go +1 -1
  712. package/project/.sdk/tm/go/test/feature_test.go +86 -0
  713. package/project/.sdk/tm/go/test/primary_utility_test.go +37 -1
  714. package/project/.sdk/tm/go/test/testsupport_test.go +106 -0
  715. package/project/.sdk/tm/go/utility/fetcher.go +20 -6
  716. package/project/.sdk/tm/go/utility/make_fetch_def.go +1 -7
  717. package/project/.sdk/tm/go/utility/make_options.go +12 -6
  718. package/project/.sdk/tm/go/utility/make_point.go +52 -3
  719. package/project/.sdk/tm/go/utility/make_spec.go +23 -3
  720. package/project/.sdk/tm/go/utility/make_url.go +23 -1
  721. package/project/.sdk/tm/go/utility/media.go +111 -0
  722. package/project/.sdk/tm/go/utility/param.go +61 -20
  723. package/project/.sdk/tm/go/utility/prepare_body.go +3 -0
  724. package/project/.sdk/tm/go/utility/prepare_headers.go +108 -22
  725. package/project/.sdk/tm/go/utility/prepare_query.go +25 -2
  726. package/project/.sdk/tm/go/utility/result_body.go +8 -0
  727. package/project/.sdk/tm/go/utility/transform_request.go +20 -9
  728. package/project/.sdk/tm/java/LICENSE +1 -1
  729. package/project/.sdk/tm/java/core/Context.java +7 -4
  730. package/project/.sdk/tm/java/core/Helpers.java +13 -0
  731. package/project/.sdk/tm/java/core/Response.java +61 -0
  732. package/project/.sdk/tm/java/core/SdkClient.java +21 -3
  733. package/project/.sdk/tm/java/core/SdkEntity.java +2 -0
  734. package/project/.sdk/tm/java/core/Spec.java +4 -0
  735. package/project/.sdk/tm/java/feature/TestFeature.java +46 -3
  736. package/project/.sdk/tm/java/feature/TimeoutFeature.java +51 -18
  737. package/project/.sdk/tm/java/feature/ValidateFeature.java +2 -0
  738. package/project/.sdk/tm/java/test/ConcurrencyTest.java +221 -0
  739. package/project/.sdk/tm/java/test/FeatureCorpusTest.java +93 -35
  740. package/project/.sdk/tm/java/test/FeatureHarness.java +1 -0
  741. package/project/.sdk/tm/java/test/FeatureTest.java +33 -0
  742. package/project/.sdk/tm/java/test/PipelineTest.java +4 -1
  743. package/project/.sdk/tm/java/test/RunnerSupport.java +97 -0
  744. package/project/.sdk/tm/java/utility/Clean.java +39 -24
  745. package/project/.sdk/tm/java/utility/Fetcher.java +27 -3
  746. package/project/.sdk/tm/java/utility/MakeFetchDef.java +1 -7
  747. package/project/.sdk/tm/java/utility/MakePoint.java +62 -10
  748. package/project/.sdk/tm/java/utility/MakeSpec.java +26 -1
  749. package/project/.sdk/tm/java/utility/MakeUrl.java +23 -1
  750. package/project/.sdk/tm/java/utility/Media.java +117 -0
  751. package/project/.sdk/tm/java/utility/Param.java +59 -20
  752. package/project/.sdk/tm/java/utility/PrepareBody.java +3 -0
  753. package/project/.sdk/tm/java/utility/PrepareHeaders.java +76 -18
  754. package/project/.sdk/tm/java/utility/PrepareMethod.java +2 -1
  755. package/project/.sdk/tm/java/utility/PrepareQuery.java +26 -2
  756. package/project/.sdk/tm/java/utility/ResultBody.java +5 -0
  757. package/project/.sdk/tm/java/utility/TransformRequest.java +24 -11
  758. package/project/.sdk/tm/js/LICENSE +1 -1
  759. package/project/.sdk/tm/js/src/Context.js +1 -1
  760. package/project/.sdk/tm/js/src/Control.js +1 -0
  761. package/project/.sdk/tm/js/src/Response.js +10 -1
  762. package/project/.sdk/tm/js/src/Spec.js +3 -0
  763. package/project/.sdk/tm/js/src/feature/base/BaseFeature.js +28 -0
  764. package/project/.sdk/tm/js/src/feature/netsim/NetsimFeature.js +10 -8
  765. package/project/.sdk/tm/js/src/feature/ratelimit/RatelimitFeature.js +8 -6
  766. package/project/.sdk/tm/js/src/feature/retry/RetryFeature.js +17 -4
  767. package/project/.sdk/tm/js/src/feature/test/TestFeature.js +40 -12
  768. package/project/.sdk/tm/js/src/feature/timeout/TimeoutFeature.js +17 -3
  769. package/project/.sdk/tm/js/src/feature/validate/ValidateFeature.js +2 -0
  770. package/project/.sdk/tm/js/src/utility/CleanUtility.js +25 -1
  771. package/project/.sdk/tm/js/src/utility/FetcherUtility.js +23 -1
  772. package/project/.sdk/tm/js/src/utility/MakeErrorUtility.js +2 -2
  773. package/project/.sdk/tm/js/src/utility/MakeFetchDefUtility.js +14 -2
  774. package/project/.sdk/tm/js/src/utility/MakeOptionsUtility.js +6 -6
  775. package/project/.sdk/tm/js/src/utility/MakePointUtility.js +39 -2
  776. package/project/.sdk/tm/js/src/utility/MakeRequestUtility.js +27 -2
  777. package/project/.sdk/tm/js/src/utility/MakeResponseUtility.js +2 -1
  778. package/project/.sdk/tm/js/src/utility/MakeSpecUtility.js +14 -1
  779. package/project/.sdk/tm/js/src/utility/MakeUrlUtility.js +23 -0
  780. package/project/.sdk/tm/js/src/utility/MediaUtility.js +145 -0
  781. package/project/.sdk/tm/js/src/utility/ParamUtility.js +46 -18
  782. package/project/.sdk/tm/js/src/utility/PrepareBodyUtility.js +6 -0
  783. package/project/.sdk/tm/js/src/utility/PrepareHeadersUtility.js +55 -14
  784. package/project/.sdk/tm/js/src/utility/PrepareMethodUtility.js +9 -0
  785. package/project/.sdk/tm/js/src/utility/PrepareQueryUtility.js +23 -6
  786. package/project/.sdk/tm/js/src/utility/ResultBodyUtility.js +60 -3
  787. package/project/.sdk/tm/js/src/utility/TransformRequestUtility.js +16 -7
  788. package/project/.sdk/tm/js/test/definition-runner.js +103 -3
  789. package/project/.sdk/tm/js/test/feature/Corpus.test.js +47 -16
  790. package/project/.sdk/tm/js/test/feature/harness.js +4 -1
  791. package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +7 -7
  792. package/project/.sdk/tm/js/test/feature.test.js +134 -0
  793. package/project/.sdk/tm/js/test/live-contract.js +73 -3
  794. package/project/.sdk/tm/js/test/live-entity.js +34 -15
  795. package/project/.sdk/tm/js/test/live-runner.js +52 -7
  796. package/project/.sdk/tm/js/test/live-scenarios.js +4 -4
  797. package/project/.sdk/tm/js/test/pipeline.test.js +52 -1
  798. package/project/.sdk/tm/js/test/utility.js +30 -4
  799. package/project/.sdk/tm/kotlin/LICENSE +1 -1
  800. package/project/.sdk/tm/kotlin/core/Context.kt +6 -4
  801. package/project/.sdk/tm/kotlin/core/Helpers.kt +8 -0
  802. package/project/.sdk/tm/kotlin/core/Interfaces.kt +2 -0
  803. package/project/.sdk/tm/kotlin/core/Response.kt +65 -0
  804. package/project/.sdk/tm/kotlin/core/SdkClient.kt +20 -3
  805. package/project/.sdk/tm/kotlin/core/Spec.kt +3 -0
  806. package/project/.sdk/tm/kotlin/feature/TestFeature.kt +23 -3
  807. package/project/.sdk/tm/kotlin/feature/TimeoutFeature.kt +42 -15
  808. package/project/.sdk/tm/kotlin/feature/ValidateFeature.kt +2 -0
  809. package/project/.sdk/tm/kotlin/test/ConcurrencyTest.kt +193 -0
  810. package/project/.sdk/tm/kotlin/test/FeatureHarness.kt +1 -1
  811. package/project/.sdk/tm/kotlin/test/FeatureTest.kt +32 -0
  812. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +90 -0
  813. package/project/.sdk/tm/kotlin/test/ServerVariableTest.kt +50 -0
  814. package/project/.sdk/tm/kotlin/utility/CoreUtil.kt +9 -7
  815. package/project/.sdk/tm/kotlin/utility/Fetcher.kt +24 -4
  816. package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +26 -0
  817. package/project/.sdk/tm/kotlin/utility/MakePoint.kt +57 -12
  818. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +26 -7
  819. package/project/.sdk/tm/kotlin/utility/Media.kt +83 -0
  820. package/project/.sdk/tm/kotlin/utility/Prepare.kt +127 -48
  821. package/project/.sdk/tm/kotlin/utility/ResultTransform.kt +18 -7
  822. package/project/.sdk/tm/lua/LICENSE +1 -1
  823. package/project/.sdk/tm/lua/core/context.lua +1 -1
  824. package/project/.sdk/tm/lua/core/helpers.lua +103 -0
  825. package/project/.sdk/tm/lua/core/response.lua +3 -0
  826. package/project/.sdk/tm/lua/core/spec.lua +3 -0
  827. package/project/.sdk/tm/lua/feature/test_feature.lua +36 -3
  828. package/project/.sdk/tm/lua/feature/validate_feature.lua +2 -0
  829. package/project/.sdk/tm/lua/test/feature_test.lua +1 -1
  830. package/project/.sdk/tm/lua/test/runner.lua +107 -0
  831. package/project/.sdk/tm/lua/utility/fetcher.lua +9 -2
  832. package/project/.sdk/tm/lua/utility/make_fetch_def.lua +2 -6
  833. package/project/.sdk/tm/lua/utility/make_options.lua +10 -7
  834. package/project/.sdk/tm/lua/utility/make_point.lua +65 -12
  835. package/project/.sdk/tm/lua/utility/make_spec.lua +19 -4
  836. package/project/.sdk/tm/lua/utility/make_url.lua +22 -1
  837. package/project/.sdk/tm/lua/utility/media.lua +106 -0
  838. package/project/.sdk/tm/lua/utility/param.lua +5 -45
  839. package/project/.sdk/tm/lua/utility/prepare_body.lua +5 -0
  840. package/project/.sdk/tm/lua/utility/prepare_headers.lua +71 -21
  841. package/project/.sdk/tm/lua/utility/prepare_query.lua +28 -6
  842. package/project/.sdk/tm/lua/utility/result_body.lua +7 -0
  843. package/project/.sdk/tm/lua/utility/transform_request.lua +23 -10
  844. package/project/.sdk/tm/lua/utility/unreadable_body.lua +70 -0
  845. package/project/.sdk/tm/ocaml/LICENSE +1 -1
  846. package/project/.sdk/tm/ocaml/Makefile +21 -8
  847. package/project/.sdk/tm/ocaml/sdk_features.ml +56 -10
  848. package/project/.sdk/tm/ocaml/sdk_helpers.ml +9 -0
  849. package/project/.sdk/tm/ocaml/sdk_runtime.ml +385 -96
  850. package/project/.sdk/tm/ocaml/sdk_types.ml +12 -2
  851. package/project/.sdk/tm/ocaml/test/concurrency_test.ml +148 -0
  852. package/project/.sdk/tm/ocaml/test/harness.ml +1 -1
  853. package/project/.sdk/tm/ocaml/test/t_pipeline.ml +2 -1
  854. package/project/.sdk/tm/perl/LICENSE +1 -1
  855. package/project/.sdk/tm/perl/core/context.pm +1 -1
  856. package/project/.sdk/tm/perl/core/response.pm +2 -0
  857. package/project/.sdk/tm/perl/core/spec.pm +3 -0
  858. package/project/.sdk/tm/perl/feature/test_feature.pm +26 -3
  859. package/project/.sdk/tm/perl/feature/validate_feature.pm +2 -0
  860. package/project/.sdk/tm/perl/t/feature.t +1 -1
  861. package/project/.sdk/tm/perl/t/feature_corpus.t +72 -33
  862. package/project/.sdk/tm/perl/t/runner.pm +86 -0
  863. package/project/.sdk/tm/perl/t/server_variables.t +39 -0
  864. package/project/.sdk/tm/perl/utility/clean.pm +12 -7
  865. package/project/.sdk/tm/perl/utility/fetcher.pm +32 -19
  866. package/project/.sdk/tm/perl/utility/make_fetch_def.pm +4 -4
  867. package/project/.sdk/tm/perl/utility/make_options.pm +24 -0
  868. package/project/.sdk/tm/perl/utility/make_point.pm +55 -9
  869. package/project/.sdk/tm/perl/utility/make_spec.pm +27 -3
  870. package/project/.sdk/tm/perl/utility/make_url.pm +13 -1
  871. package/project/.sdk/tm/perl/utility/media.pm +109 -0
  872. package/project/.sdk/tm/perl/utility/param.pm +50 -24
  873. package/project/.sdk/tm/perl/utility/prepare_body.pm +11 -3
  874. package/project/.sdk/tm/perl/utility/prepare_headers.pm +63 -16
  875. package/project/.sdk/tm/perl/utility/prepare_method.pm +13 -0
  876. package/project/.sdk/tm/perl/utility/prepare_query.pm +18 -4
  877. package/project/.sdk/tm/perl/utility/result_body.pm +60 -0
  878. package/project/.sdk/tm/perl/utility/transform_request.pm +23 -8
  879. package/project/.sdk/tm/php/LICENSE +1 -1
  880. package/project/.sdk/tm/php/core/Context.php +1 -1
  881. package/project/.sdk/tm/php/core/Response.php +3 -0
  882. package/project/.sdk/tm/php/core/Spec.php +4 -0
  883. package/project/.sdk/tm/php/feature/CostFeature.php +2 -7
  884. package/project/.sdk/tm/php/feature/TestFeature.php +42 -12
  885. package/project/.sdk/tm/php/feature/ValidateFeature.php +14 -12
  886. package/project/.sdk/tm/php/test/FeatureCorpusTest.php +90 -35
  887. package/project/.sdk/tm/php/test/FeatureTest.php +4 -5
  888. package/project/.sdk/tm/php/test/PipelineTest.php +18 -1
  889. package/project/.sdk/tm/php/test/Runner.php +86 -0
  890. package/project/.sdk/tm/php/utility/Clean.php +10 -5
  891. package/project/.sdk/tm/php/utility/Fetcher.php +48 -6
  892. package/project/.sdk/tm/php/utility/MakeFetchDef.php +2 -1
  893. package/project/.sdk/tm/php/utility/MakePoint.php +55 -11
  894. package/project/.sdk/tm/php/utility/MakeSpec.php +21 -4
  895. package/project/.sdk/tm/php/utility/MakeUrl.php +16 -1
  896. package/project/.sdk/tm/php/utility/Media.php +111 -0
  897. package/project/.sdk/tm/php/utility/Param.php +66 -27
  898. package/project/.sdk/tm/php/utility/PrepareBody.php +5 -0
  899. package/project/.sdk/tm/php/utility/PrepareHeaders.php +83 -23
  900. package/project/.sdk/tm/php/utility/PrepareMethod.php +15 -0
  901. package/project/.sdk/tm/php/utility/PrepareQuery.php +22 -8
  902. package/project/.sdk/tm/php/utility/ResultBody.php +71 -0
  903. package/project/.sdk/tm/php/utility/TransformRequest.php +22 -11
  904. package/project/.sdk/tm/py/LICENSE +1 -1
  905. package/project/.sdk/tm/py/pkg/core/context.py +3 -3
  906. package/project/.sdk/tm/py/pkg/core/response.py +3 -0
  907. package/project/.sdk/tm/py/pkg/core/spec.py +3 -0
  908. package/project/.sdk/tm/py/pkg/feature/test_feature.py +27 -3
  909. package/project/.sdk/tm/py/pkg/feature/validate_feature.py +2 -0
  910. package/project/.sdk/tm/py/pkg/utility/clean.py +12 -8
  911. package/project/.sdk/tm/py/pkg/utility/fetcher.py +17 -7
  912. package/project/.sdk/tm/py/pkg/utility/make_fetch_def.py +2 -5
  913. package/project/.sdk/tm/py/pkg/utility/make_options.py +14 -8
  914. package/project/.sdk/tm/py/pkg/utility/make_point.py +40 -4
  915. package/project/.sdk/tm/py/pkg/utility/make_spec.py +12 -4
  916. package/project/.sdk/tm/py/pkg/utility/make_url.py +19 -1
  917. package/project/.sdk/tm/py/pkg/utility/media.py +88 -0
  918. package/project/.sdk/tm/py/pkg/utility/param.py +47 -18
  919. package/project/.sdk/tm/py/pkg/utility/prepare_body.py +4 -0
  920. package/project/.sdk/tm/py/pkg/utility/prepare_headers.py +56 -20
  921. package/project/.sdk/tm/py/pkg/utility/prepare_method.py +7 -0
  922. package/project/.sdk/tm/py/pkg/utility/prepare_query.py +17 -8
  923. package/project/.sdk/tm/py/pkg/utility/result_body.py +51 -0
  924. package/project/.sdk/tm/py/pkg/utility/transform_request.py +18 -9
  925. package/project/.sdk/tm/py/test/feature_harness.py +1 -1
  926. package/project/.sdk/tm/py/test/runner.py +77 -2
  927. package/project/.sdk/tm/py/test/test_concurrency.py +177 -0
  928. package/project/.sdk/tm/py/test/test_feature_corpus.py +69 -32
  929. package/project/.sdk/tm/py-data/LICENSE +1 -1
  930. package/project/.sdk/tm/py-data/Makefile +2 -2
  931. package/project/.sdk/tm/rb/LICENSE +1 -1
  932. package/project/.sdk/tm/rb/core/context.rb +9 -4
  933. package/project/.sdk/tm/rb/core/response.rb +3 -1
  934. package/project/.sdk/tm/rb/core/spec.rb +4 -1
  935. package/project/.sdk/tm/rb/feature/test_feature.rb +27 -8
  936. package/project/.sdk/tm/rb/feature/validate_feature.rb +3 -1
  937. package/project/.sdk/tm/rb/test/concurrency_test.rb +160 -0
  938. package/project/.sdk/tm/rb/test/feature_corpus_test.rb +74 -30
  939. package/project/.sdk/tm/rb/test/feature_test.rb +1 -1
  940. package/project/.sdk/tm/rb/test/runner.rb +54 -2
  941. package/project/.sdk/tm/rb/utility/clean.rb +22 -13
  942. package/project/.sdk/tm/rb/utility/fetcher.rb +22 -14
  943. package/project/.sdk/tm/rb/utility/make_fetch_def.rb +2 -4
  944. package/project/.sdk/tm/rb/utility/make_point.rb +44 -8
  945. package/project/.sdk/tm/rb/utility/make_spec.rb +14 -2
  946. package/project/.sdk/tm/rb/utility/make_url.rb +13 -1
  947. package/project/.sdk/tm/rb/utility/media.rb +75 -0
  948. package/project/.sdk/tm/rb/utility/param.rb +44 -25
  949. package/project/.sdk/tm/rb/utility/prepare_body.rb +4 -1
  950. package/project/.sdk/tm/rb/utility/prepare_headers.rb +50 -16
  951. package/project/.sdk/tm/rb/utility/prepare_method.rb +6 -0
  952. package/project/.sdk/tm/rb/utility/prepare_query.rb +12 -4
  953. package/project/.sdk/tm/rb/utility/result_body.rb +45 -0
  954. package/project/.sdk/tm/rb/utility/transform_request.rb +17 -7
  955. package/project/.sdk/tm/rust/LICENSE +1 -1
  956. package/project/.sdk/tm/rust/core/context.rs +1 -1
  957. package/project/.sdk/tm/rust/core/helpers.rs +10 -0
  958. package/project/.sdk/tm/rust/core/response.rs +80 -1
  959. package/project/.sdk/tm/rust/core/spec.rs +4 -0
  960. package/project/.sdk/tm/rust/core/types.rs +1 -0
  961. package/project/.sdk/tm/rust/feature/test.rs +29 -2
  962. package/project/.sdk/tm/rust/feature/validate.rs +2 -0
  963. package/project/.sdk/tm/rust/tests/common/mod.rs +108 -1
  964. package/project/.sdk/tm/rust/utility/clean.rs +0 -2
  965. package/project/.sdk/tm/rust/utility/fetcher.rs +19 -11
  966. package/project/.sdk/tm/rust/utility/make_fetch_def.rs +12 -1
  967. package/project/.sdk/tm/rust/utility/make_options.rs +6 -5
  968. package/project/.sdk/tm/rust/utility/make_point.rs +80 -16
  969. package/project/.sdk/tm/rust/utility/make_spec.rs +23 -4
  970. package/project/.sdk/tm/rust/utility/make_url.rs +39 -2
  971. package/project/.sdk/tm/rust/utility/media.rs +116 -0
  972. package/project/.sdk/tm/rust/utility/mod.rs +1 -0
  973. package/project/.sdk/tm/rust/utility/param.rs +66 -19
  974. package/project/.sdk/tm/rust/utility/prepare_body.rs +4 -0
  975. package/project/.sdk/tm/rust/utility/prepare_headers.rs +85 -28
  976. package/project/.sdk/tm/rust/utility/prepare_query.rs +27 -5
  977. package/project/.sdk/tm/rust/utility/result_body.rs +15 -2
  978. package/project/.sdk/tm/rust/utility/transform_request.rs +27 -14
  979. package/project/.sdk/tm/scala/LICENSE +1 -1
  980. package/project/.sdk/tm/scala/Makefile +5 -1
  981. package/project/.sdk/tm/scala/core/Context.scala +7 -5
  982. package/project/.sdk/tm/scala/core/Contracts.scala +1 -0
  983. package/project/.sdk/tm/scala/core/Helpers.scala +7 -0
  984. package/project/.sdk/tm/scala/core/Response.scala +55 -0
  985. package/project/.sdk/tm/scala/core/SdkClient.scala +18 -5
  986. package/project/.sdk/tm/scala/core/Spec.scala +3 -0
  987. package/project/.sdk/tm/scala/feature/TestFeature.scala +36 -3
  988. package/project/.sdk/tm/scala/feature/TimeoutFeature.scala +39 -13
  989. package/project/.sdk/tm/scala/feature/ValidateFeature.scala +2 -0
  990. package/project/.sdk/tm/scala/sdktest/ConcurrencyTest.scala +186 -0
  991. package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +16 -1
  992. package/project/.sdk/tm/scala/sdktest/ServerVariableTest.scala +49 -0
  993. package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +1 -0
  994. package/project/.sdk/tm/scala/utility/Fetcher.scala +17 -2
  995. package/project/.sdk/tm/scala/utility/Make.scala +141 -43
  996. package/project/.sdk/tm/scala/utility/MakeSpec.scala +20 -2
  997. package/project/.sdk/tm/scala/utility/Media.scala +96 -0
  998. package/project/.sdk/tm/scala/utility/Misc.scala +56 -23
  999. package/project/.sdk/tm/scala/utility/Prepare.scala +84 -31
  1000. package/project/.sdk/tm/scala/utility/Results.scala +5 -0
  1001. package/project/.sdk/tm/scala/utility/Transform.scala +15 -19
  1002. package/project/.sdk/tm/swift/LICENSE +1 -1
  1003. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Context.swift +3 -1
  1004. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Response.swift +57 -0
  1005. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Spec.swift +3 -0
  1006. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Support.swift +8 -0
  1007. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TestFeature.swift +34 -3
  1008. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TimeoutFeature.swift +19 -3
  1009. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/ValidateFeature.swift +2 -0
  1010. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Fetcher.swift +21 -12
  1011. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Make.swift +85 -18
  1012. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +73 -7
  1013. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Media.swift +76 -0
  1014. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +118 -43
  1015. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/ResultUtil.swift +52 -19
  1016. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/ConcurrencyTest.swift +214 -0
  1017. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/FeatureTest.swift +31 -1
  1018. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +6 -0
  1019. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/ServerVariableTest.swift +42 -0
  1020. package/project/.sdk/tm/ts/LICENSE +1 -1
  1021. package/project/.sdk/tm/ts/src/Context.ts +1 -1
  1022. package/project/.sdk/tm/ts/src/Control.ts +3 -0
  1023. package/project/.sdk/tm/ts/src/Response.ts +10 -1
  1024. package/project/.sdk/tm/ts/src/Spec.ts +4 -0
  1025. package/project/.sdk/tm/ts/src/feature/base/BaseFeature.ts +28 -0
  1026. package/project/.sdk/tm/ts/src/feature/netsim/NetsimFeature.ts +10 -8
  1027. package/project/.sdk/tm/ts/src/feature/ratelimit/RatelimitFeature.ts +8 -6
  1028. package/project/.sdk/tm/ts/src/feature/retry/RetryFeature.ts +17 -4
  1029. package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +41 -13
  1030. package/project/.sdk/tm/ts/src/feature/timeout/TimeoutFeature.ts +17 -3
  1031. package/project/.sdk/tm/ts/src/feature/validate/ValidateFeature.ts +2 -0
  1032. package/project/.sdk/tm/ts/src/tsconfig.json +2 -1
  1033. package/project/.sdk/tm/ts/src/utility/CleanUtility.ts +25 -1
  1034. package/project/.sdk/tm/ts/src/utility/FetcherUtility.ts +24 -1
  1035. package/project/.sdk/tm/ts/src/utility/MakeErrorUtility.ts +2 -2
  1036. package/project/.sdk/tm/ts/src/utility/MakeFetchDefUtility.ts +15 -2
  1037. package/project/.sdk/tm/ts/src/utility/MakeOptionsUtility.ts +6 -6
  1038. package/project/.sdk/tm/ts/src/utility/MakePointUtility.ts +38 -2
  1039. package/project/.sdk/tm/ts/src/utility/MakeRequestUtility.ts +29 -2
  1040. package/project/.sdk/tm/ts/src/utility/MakeResponseUtility.ts +3 -1
  1041. package/project/.sdk/tm/ts/src/utility/MakeSpecUtility.ts +16 -6
  1042. package/project/.sdk/tm/ts/src/utility/MakeUrlUtility.ts +16 -2
  1043. package/project/.sdk/tm/ts/src/utility/MediaUtility.ts +143 -0
  1044. package/project/.sdk/tm/ts/src/utility/ParamUtility.ts +50 -18
  1045. package/project/.sdk/tm/ts/src/utility/PrepareBodyUtility.ts +6 -0
  1046. package/project/.sdk/tm/ts/src/utility/PrepareHeadersUtility.ts +53 -11
  1047. package/project/.sdk/tm/ts/src/utility/PrepareMethodUtility.ts +9 -0
  1048. package/project/.sdk/tm/ts/src/utility/PrepareQueryUtility.ts +22 -6
  1049. package/project/.sdk/tm/ts/src/utility/ResultBodyUtility.ts +68 -3
  1050. package/project/.sdk/tm/ts/src/utility/TransformRequestUtility.ts +16 -6
  1051. package/project/.sdk/tm/ts/test/definition-runner.ts +109 -3
  1052. package/project/.sdk/tm/ts/test/feature/Corpus.test.ts +47 -16
  1053. package/project/.sdk/tm/ts/test/feature/harness.ts +4 -1
  1054. package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +1 -1
  1055. package/project/.sdk/tm/ts/test/feature.test.ts +134 -0
  1056. package/project/.sdk/tm/ts/test/live-contract.ts +60 -2
  1057. package/project/.sdk/tm/ts/test/live-entity.ts +36 -12
  1058. package/project/.sdk/tm/ts/test/live-runner.ts +79 -12
  1059. package/project/.sdk/tm/ts/test/live-scenarios.ts +5 -4
  1060. package/project/.sdk/tm/ts/test/pipeline.test.ts +52 -1
  1061. package/project/.sdk/tm/ts/test/tsconfig.json +2 -1
  1062. package/project/.sdk/tm/ts/test/utility.ts +35 -7
  1063. package/project/.sdk/tm/zig/LICENSE +1 -1
  1064. package/project/.sdk/tm/zig/core/context.zig +2 -1
  1065. package/project/.sdk/tm/zig/core/helpers.zig +33 -0
  1066. package/project/.sdk/tm/zig/core/response.zig +3 -0
  1067. package/project/.sdk/tm/zig/core/spec.zig +27 -0
  1068. package/project/.sdk/tm/zig/core/types.zig +6 -0
  1069. package/project/.sdk/tm/zig/core/utility.zig +456 -84
  1070. package/project/.sdk/tm/zig/feature/test.zig +41 -10
  1071. package/project/.sdk/tm/zig/feature/validate.zig +2 -0
  1072. package/project/.sdk/tm/zig/test/fh.zig +1 -1
  1073. package/project/sdkgen-package.json +1 -1
  1074. package/src/action/copies.ts +179 -46
  1075. package/src/action/doctor.ts +13 -3
  1076. package/src/action/package.ts +17 -9
  1077. package/src/action/resolve.ts +41 -0
  1078. package/src/admin/npm-trust.ts +9 -8
  1079. package/src/cmp/AgentGuide.ts +4 -3
  1080. package/src/cmp/AgentGuideFeature.ts +3 -2
  1081. package/src/cmp/AgentGuideTop.ts +2 -1
  1082. package/src/cmp/Changelog.ts +2 -1
  1083. package/src/cmp/Deploy.ts +2 -1
  1084. package/src/cmp/Entity.ts +1 -3
  1085. package/src/cmp/ExternalTarget.ts +2 -1
  1086. package/src/cmp/Feature.ts +2 -1
  1087. package/src/cmp/FeatureHook.ts +2 -1
  1088. package/src/cmp/License.ts +7 -5
  1089. package/src/cmp/Main.ts +2 -1
  1090. package/src/cmp/PublishWorkflow.ts +2 -1
  1091. package/src/cmp/Readme.ts +2 -1
  1092. package/src/cmp/ReadmeEntity.ts +3 -3
  1093. package/src/cmp/ReadmeErrors.ts +11 -9
  1094. package/src/cmp/ReadmeExplanation.ts +8 -8
  1095. package/src/cmp/ReadmeFeatures.ts +4 -3
  1096. package/src/cmp/ReadmeHowto.ts +4 -3
  1097. package/src/cmp/ReadmeInstall.ts +4 -3
  1098. package/src/cmp/ReadmeIntro.ts +3 -3
  1099. package/src/cmp/ReadmeModel.ts +6 -3
  1100. package/src/cmp/ReadmeOptions.ts +3 -3
  1101. package/src/cmp/ReadmeQuick.ts +7 -4
  1102. package/src/cmp/ReadmeRef.ts +3 -3
  1103. package/src/cmp/ReadmeRefFeatures.ts +2 -1
  1104. package/src/cmp/ReadmeStation.ts +2 -1
  1105. package/src/cmp/ReadmeTop.ts +126 -44
  1106. package/src/cmp/ReadmeUnions.ts +2 -1
  1107. package/src/cmp/Registered.ts +4 -4
  1108. package/src/cmp/Security.ts +14 -7
  1109. package/src/cmp/Test.ts +2 -1
  1110. package/src/cmp/TestControl.ts +1 -1
  1111. package/src/helpers/component.ts +25 -0
  1112. package/src/helpers/definition.ts +2 -2
  1113. package/src/helpers/definitionPlan.ts +139 -13
  1114. package/src/helpers/featureSource.ts +55 -2
  1115. package/src/helpers/flowGuard.ts +111 -0
  1116. package/src/helpers/generated.ts +488 -0
  1117. package/src/helpers/mcpTools.ts +47 -0
  1118. package/src/helpers/media.ts +79 -0
  1119. package/src/helpers/modelNames.ts +186 -16
  1120. package/src/helpers/naming.ts +200 -4
  1121. package/src/helpers/npm.ts +68 -0
  1122. package/src/helpers/npmScripts.ts +37 -0
  1123. package/src/helpers/opExample.ts +111 -31
  1124. package/src/helpers/opShape.ts +259 -37
  1125. package/src/helpers/optional.ts +76 -0
  1126. package/src/helpers/packageMeta.ts +83 -11
  1127. package/src/helpers/stdrep.ts +5 -1
  1128. package/src/helpers/testPolicy.ts +68 -1
  1129. package/src/helpers/text.ts +33 -0
  1130. package/src/sdkgen.ts +110 -16
  1131. package/src/testkit.ts +2 -1
  1132. package/src/utility.ts +68 -19
  1133. package/project/.sdk/src/cmp/go/fragment/SdkError.fragment.go +0 -22
  1134. package/project/.sdk/src/cmp/lua/fragment/SdkError.fragment.lua +0 -38
  1135. package/project/.sdk/src/cmp/perl/fragment/SdkError.fragment.pm +0 -27
  1136. package/project/.sdk/src/cmp/php/fragment/SdkError.fragment.php +0 -35
  1137. package/project/.sdk/src/cmp/py/fragment/SdkError.fragment.py +0 -27
  1138. package/project/.sdk/src/cmp/rb/fragment/SdkError.fragment.rb +0 -25
@@ -9,6 +9,8 @@
9
9
 
10
10
  #include <algorithm>
11
11
  #include <memory>
12
+ #include <mutex>
13
+ #include <shared_mutex>
12
14
  #include <cctype>
13
15
  #include <string>
14
16
  #include <vector>
@@ -19,6 +21,7 @@
19
21
  // (it includes only core/struct.hpp), so this cannot close a cycle with
20
22
  // core/config.hpp, which pulls in the feature headers.
21
23
  #include "../core/schema.hpp"
24
+ #include "cookie.hpp"
22
25
 
23
26
  // prepareAuth is GENERATED, not templated: WHERE the credential goes -
24
27
  // header, query or cookie, and under what name - is a fact about THIS API
@@ -65,7 +68,7 @@ inline CtxPtr makeContext(const CtxSpec& cs, CtxPtr basectx) {
65
68
  //
66
69
  // The configuration is the derived clean block makeOptions builds
67
70
  // (`options.__derived__.clean`): a plain map, so the registry list inside
68
- // it stays mutable after construction - features register later.
71
+ // it can be replaced after construction - features register later.
69
72
 
70
73
  constexpr int CLEAN_MAXDEPTH = 32;
71
74
 
@@ -175,36 +178,51 @@ inline std::vector<std::string> cleanForms(const std::string& value) {
175
178
  return out;
176
179
  }
177
180
 
181
+ inline Value cleanValues(const Value& cfg) {
182
+ std::shared_lock<std::shared_mutex> guard(cleanRegistryLock());
183
+ return getp(cfg, "values");
184
+ }
185
+
186
+ inline bool cleanKnown(const Value& values, const std::string& form) {
187
+ if (!values.is_list()) return false;
188
+ for (const auto& v : *values.as_list()) {
189
+ if (v.is_string() && v.as_string() == form) return true;
190
+ }
191
+ return false;
192
+ }
193
+
178
194
  // Register a secret value. Idempotent; shorter than `min` is not a secret
179
- // the SDK can mask without blanking ordinary text.
195
+ // the SDK can mask without blanking ordinary text. A registration publishes
196
+ // a new list and never changes a published one.
180
197
  inline void cleanAddCfg(const Value& cfg, const Value& value) {
181
198
  if (!cfg.is_map() || !value.is_string()) return;
182
199
  size_t min = static_cast<size_t>(cleanCount(getp(cfg, "min"), 4));
183
200
  const std::string& raw = value.as_string();
184
201
  if (raw.size() < min) return;
185
- Value values = getp(cfg, "values");
186
- if (!values.is_list()) {
187
- values = vlist();
188
- map_put(cfg, "values", values);
189
- }
190
- auto& list = *values.as_list();
191
- bool changed = false;
202
+ std::vector<std::string> forms;
192
203
  for (const auto& form : cleanForms(raw)) {
193
- if (form.size() < min) continue;
194
- bool known = false;
195
- for (const auto& v : list) {
196
- if (v.is_string() && v.as_string() == form) { known = true; break; }
197
- }
198
- if (!known) {
199
- list.push_back(Value(form));
200
- changed = true;
201
- }
202
- }
203
- if (changed) {
204
- std::stable_sort(list.begin(), list.end(), [](const Value& a, const Value& b) {
205
- return a.as_string().size() > b.as_string().size();
206
- });
204
+ if (min <= form.size()) forms.push_back(form);
207
205
  }
206
+ auto unknown = [&forms](const Value& values) {
207
+ std::vector<std::string> out;
208
+ for (const auto& form : forms) {
209
+ if (!cleanKnown(values, form)) out.push_back(form);
210
+ }
211
+ return out;
212
+ };
213
+ if (unknown(cleanValues(cfg)).empty()) return;
214
+ std::unique_lock<std::shared_mutex> guard(cleanRegistryLock());
215
+ Value values = getp(cfg, "values");
216
+ std::vector<std::string> added = unknown(values);
217
+ if (added.empty()) return;
218
+ Value next = vlist();
219
+ if (values.is_list()) *next.as_list() = *values.as_list();
220
+ auto& list = *next.as_list();
221
+ for (const auto& form : added) list.push_back(Value(form));
222
+ std::stable_sort(list.begin(), list.end(), [](const Value& a, const Value& b) {
223
+ return a.as_string().size() > b.as_string().size();
224
+ });
225
+ map_put(cfg, "values", next);
208
226
  }
209
227
 
210
228
  inline void cleanAdd(CtxPtr ctx, const Value& value) {
@@ -220,7 +238,7 @@ inline std::string cleanMaskValue(const Value& cfg, const std::string& value) {
220
238
 
221
239
  inline std::string cleanString(const Value& cfg, const std::string& text) {
222
240
  std::string out = text;
223
- Value values = getp(cfg, "values");
241
+ Value values = cleanValues(cfg);
224
242
  if (!values.is_list()) return out;
225
243
  for (const auto& v : *values.as_list()) {
226
244
  if (!v.is_string() || v.as_string().empty()) continue;
@@ -579,6 +597,8 @@ inline Value fetcher(CtxPtr ctx, const std::string& fullurl, const Value& fetchd
579
597
 
580
598
  // ---- makeFetchDef -----------------------------------------------------
581
599
 
600
+ inline bool isJsonRequest(const Value& point);
601
+
582
602
  inline Value makeFetchDef(CtxPtr ctx) {
583
603
  SpecPtr spec = ctx->spec;
584
604
  if (!spec) {
@@ -597,11 +617,15 @@ inline Value makeFetchDef(CtxPtr ctx) {
597
617
  map_put(fetchdef, "method", Value(spec->method));
598
618
  map_put(fetchdef, "headers", spec->headers);
599
619
 
620
+ // A map or a list is JSON, and so is a scalar on a point that declares a
621
+ // JSON body. Anything else goes as given.
600
622
  if (!is_nullish(spec->body)) {
601
- if (spec->body.is_map()) {
602
- map_put(fetchdef, "body", Value(Struct::jsonify(spec->body)));
623
+ const Value& body = spec->body;
624
+ bool scalar = body.is_string() || body.is_number() || body.is_bool();
625
+ if (body.is_map() || body.is_list() || (scalar && isJsonRequest(ctx->point))) {
626
+ map_put(fetchdef, "body", Value(Struct::jsonify(body)));
603
627
  } else {
604
- map_put(fetchdef, "body", spec->body);
628
+ map_put(fetchdef, "body", body);
605
629
  }
606
630
  }
607
631
 
@@ -638,6 +662,23 @@ inline std::string makeUrl(CtxPtr ctx) {
638
662
  }
639
663
  }
640
664
 
665
+ // A placeholder left in the route would send the request to the wrong route.
666
+ // The base's own placeholders are server variables, resolved with the options.
667
+ std::string base = spec->base;
668
+ while (!base.empty() && '/' == base.back()) base.pop_back();
669
+ const std::string route = 0 == url.compare(0, base.size(), base) ? url.substr(base.size()) : url;
670
+ std::string unfilled;
671
+ for (size_t at = route.find('{'); std::string::npos != at; at = route.find('{', at + 1)) {
672
+ size_t end = route.find_first_of("{}/", at + 1);
673
+ if (std::string::npos != end && '}' == route[end] && end > at + 1) {
674
+ unfilled += (unfilled.empty() ? "" : ", ") + route.substr(at, end - at + 1);
675
+ at = end;
676
+ }
677
+ }
678
+ if (!unfilled.empty()) {
679
+ throw ctx->makeError("url_param_missing", "URL path has no value for " + unfilled + ".");
680
+ }
681
+
641
682
  std::string qsep = "?";
642
683
  for (const auto& item : Struct::items(spec->query)) {
643
684
  std::string key = as_str(pair_key(item));
@@ -645,7 +686,10 @@ inline std::string makeUrl(CtxPtr ctx) {
645
686
  if (!is_nullish(val)) {
646
687
  url += qsep + Struct::escurl(Value(key)) + "=" + Struct::escurl(Value(Struct::stringify(val)));
647
688
  qsep = "&";
648
- map_put(resmatch, key, val);
689
+ // Sent with the request, never recorded as the entity's match.
690
+ if (spec->authquery.end() == std::find(spec->authquery.begin(), spec->authquery.end(), key)) {
691
+ map_put(resmatch, key, val);
692
+ }
649
693
  }
650
694
  }
651
695
 
@@ -655,6 +699,50 @@ inline std::string makeUrl(CtxPtr ctx) {
655
699
 
656
700
  // ---- makePoint --------------------------------------------------------
657
701
 
702
+ // The name a point gives a parameter in the call, if it renames it.
703
+ inline std::string paramAlias(const Value& point, const std::string& key) {
704
+ if (!point.is_map()) return "";
705
+ Value alias = Helpers::toMapAny(getp(point, "alias"));
706
+ if (!alias.is_map()) return "";
707
+ Value ak = getp(alias, key);
708
+ return ak.is_string() ? ak.as_string() : "";
709
+ }
710
+
711
+ // The value the call or its entity gives a point's parameter, under its name
712
+ // or the point's alias for it.
713
+ inline Value paramValue(CtxPtr ctx, const Value& point, const std::string& key) {
714
+ std::string akey = paramAlias(point, key);
715
+
716
+ Value val = getp(ctx->reqmatch, key, Value(nullptr));
717
+ if (val.is_null()) val = getp(ctx->match, key, Value(nullptr));
718
+ if (val.is_null() && !akey.empty()) val = getp(ctx->reqmatch, akey, Value(nullptr));
719
+ if (val.is_null()) val = getp(ctx->reqdata, key, Value(nullptr));
720
+ if (val.is_null()) val = getp(ctx->data, key, Value(nullptr));
721
+ if (val.is_null() && !akey.empty()) {
722
+ val = getp(ctx->reqdata, akey, Value(nullptr));
723
+ if (val.is_null()) val = getp(ctx->data, akey, Value(nullptr));
724
+ }
725
+
726
+ return val;
727
+ }
728
+
729
+ // The path parameters of a point that neither the call nor the entity gives a
730
+ // value for, looked up as param looks them up.
731
+ inline std::vector<std::string> unfilledParams(CtxPtr ctx, const Value& point) {
732
+ std::vector<std::string> missing;
733
+ Value parts = getp(point, "parts");
734
+ if (!parts.is_list()) return missing;
735
+ for (const auto& part : *parts.as_list()) {
736
+ if (!part.is_string()) continue;
737
+ const std::string& text = part.as_string();
738
+ if (text.size() < 3 || '{' != text.front() ||
739
+ text.size() - 1 != text.find_first_of("{}/", 1) || '}' != text.back()) continue;
740
+ std::string name = text.substr(1, text.size() - 2);
741
+ if (is_nullish(paramValue(ctx, point, name))) missing.push_back(name);
742
+ }
743
+ return missing;
744
+ }
745
+
658
746
  inline Value makePoint(CtxPtr ctx) {
659
747
  // A PrePoint feature hook (e.g. rbac) may short-circuit by storing an
660
748
  // error; surface it before any endpoint resolution or network activity.
@@ -669,8 +757,9 @@ inline Value makePoint(CtxPtr ctx) {
669
757
  OperationPtr op = ctx->op;
670
758
  Value options = ctx->options;
671
759
 
672
- std::string allowOp = as_str(Struct::getpath(options, {"allow", "op"}));
673
- if (allowOp.find(op->name) == std::string::npos) {
760
+ Value allowOpVal = Struct::getpath(options, {"allow", "op"});
761
+ std::string allowOp = as_str(allowOpVal);
762
+ if (!Helpers::allowed(allowOpVal, op->name)) {
674
763
  throw ctx->makeError("point_op_allow",
675
764
  "Operation \"" + op->name + "\" not allowed by SDK option allow.op value: \"" + allowOp + "\"");
676
765
  }
@@ -761,18 +850,50 @@ inline Value makePoint(CtxPtr ctx) {
761
850
  return last.is_string() && 0 == last.as_string().rfind("{", 0);
762
851
  };
763
852
 
764
- point = op->points[0];
765
- for (size_t i = 0; i < op->points.size(); i++) {
766
- const Value& cand = op->points[i];
767
- bool candTerm = terminalParam(cand);
768
- bool bestTerm = terminalParam(point);
769
- if (candTerm != bestTerm) {
770
- if (candTerm) point = cand;
853
+ auto ownPoint = [&](const std::vector<Value>& points) {
854
+ Value best = points[0];
855
+ for (const auto& cand : points) {
856
+ bool candTerm = terminalParam(cand);
857
+ bool bestTerm = terminalParam(best);
858
+ if (candTerm != bestTerm) {
859
+ if (candTerm) best = cand;
860
+ }
861
+ else if (partsLen(cand) < partsLen(best)) {
862
+ best = cand;
863
+ }
771
864
  }
772
- else if (partsLen(cand) < partsLen(point)) {
773
- point = cand;
865
+ return best;
866
+ };
867
+
868
+ // A call without an action falls back to a point without one, as
869
+ // generation does, and only to a route the call can fill.
870
+ std::vector<Value> plain;
871
+ for (const auto& cand : op->points) {
872
+ if (getp(Helpers::toMapAny(getp(cand, "select")), "$action", Value(nullptr)).is_null()) {
873
+ plain.push_back(cand);
874
+ }
875
+ }
876
+ if (plain.empty()) {
877
+ throw ctx->makeError("point_action_required",
878
+ "Operation \"" + op->name +
879
+ "\" has only action endpoints; pass $action to choose one.");
880
+ }
881
+ std::vector<Value> fillable;
882
+ for (const auto& cand : plain) {
883
+ if (unfilledParams(ctx, cand).empty()) fillable.push_back(cand);
884
+ }
885
+
886
+ if (fillable.empty()) {
887
+ std::string missing;
888
+ for (const auto& name : unfilledParams(ctx, ownPoint(plain))) {
889
+ missing += (missing.empty() ? "" : ", ") + name;
774
890
  }
891
+ throw ctx->makeError("point_no_match",
892
+ "Operation \"" + op->name +
893
+ "\" has no endpoint whose path parameters are all given (missing: " + missing + ").");
775
894
  }
895
+
896
+ point = ownPoint(fillable);
776
897
  }
777
898
 
778
899
  if (reqselector.is_map()) {
@@ -953,8 +1074,9 @@ inline SpecPtr makeSpec(CtxPtr ctx) {
953
1074
 
954
1075
  ctx->spec->method = utility->prepareMethod(ctx);
955
1076
 
956
- std::string allowMethod = as_str(Struct::getpath(options, {"allow", "method"}));
957
- if (allowMethod.find(ctx->spec->method) == std::string::npos) {
1077
+ Value allowMethodVal = Struct::getpath(options, {"allow", "method"});
1078
+ std::string allowMethod = as_str(allowMethodVal);
1079
+ if (!Helpers::allowed(allowMethodVal, ctx->spec->method)) {
958
1080
  throw ctx->makeError("spec_method_allow",
959
1081
  "Method \"" + ctx->spec->method + "\" not allowed by SDK option allow.method value: \"" + allowMethod + "\"");
960
1082
  }
@@ -984,7 +1106,25 @@ inline SpecPtr makeSpec(CtxPtr ctx) {
984
1106
  map_put(ctx->ctrl->explain, "spec", ctx->spec->toValue());
985
1107
  }
986
1108
 
1109
+ // Whatever prepareAuth sets in the query, under whichever name, is the
1110
+ // credential; a key it leaves as it was is the caller's.
1111
+ std::vector<std::pair<std::string, Value>> query;
1112
+ for (const auto& item : Struct::items(ctx->spec->query)) {
1113
+ query.emplace_back(as_str(pair_key(item)), pair_val(item));
1114
+ }
1115
+
987
1116
  SpecPtr spec = utility->prepareAuth(ctx);
1117
+ if (spec) {
1118
+ spec->authquery.clear();
1119
+ for (const auto& item : Struct::items(spec->query)) {
1120
+ std::string key = as_str(pair_key(item));
1121
+ auto was = std::find_if(query.begin(), query.end(),
1122
+ [&](const std::pair<std::string, Value>& kv) { return kv.first == key; });
1123
+ if (query.end() == was || !(was->second == pair_val(item))) {
1124
+ spec->authquery.push_back(key);
1125
+ }
1126
+ }
1127
+ }
988
1128
  ctx->spec = spec;
989
1129
  return spec;
990
1130
  }
@@ -1101,6 +1241,11 @@ inline ResultPtr resultBody(CtxPtr ctx) {
1101
1241
  if (response && response->jsonFunc && !is_nullish(response->body)) {
1102
1242
  result->body = response->jsonFunc();
1103
1243
  }
1244
+ if (response && response->unreadable) {
1245
+ Value sent = ctx->spec ? ctx->spec->headers : Value::undef();
1246
+ result->err = unreadableBody(ctx, result->status, result->headers, response->body, sent,
1247
+ result->err);
1248
+ }
1104
1249
  }
1105
1250
  return result;
1106
1251
  }
@@ -1255,44 +1400,216 @@ inline std::string prepareMethod(CtxPtr ctx) {
1255
1400
 
1256
1401
  // ---- prepareBody ------------------------------------------------------
1257
1402
 
1403
+ // ---- media ------------------------------------------------------------
1404
+
1405
+ // The media types a point declares: `response` (the model's `rs`) for the
1406
+ // Accept header, and `body` (the model's `rb`) for the request body.
1407
+
1408
+ // The data key holding a raw request body. Like `$action`, it can never be a
1409
+ // declared argument name.
1410
+ inline const char* rawBodyKey() { return "$body"; }
1411
+
1412
+ inline std::string mediaLower(std::string s) {
1413
+ for (auto& ch : s) ch = (char)std::tolower((unsigned char)ch);
1414
+ return s;
1415
+ }
1416
+
1417
+ inline bool isJsonMedia(const Value& v) {
1418
+ if (!v.is_string()) return false;
1419
+ std::string m = v.as_string().substr(0, v.as_string().find(';'));
1420
+ size_t b = m.find_first_not_of(" \t");
1421
+ size_t e = m.find_last_not_of(" \t");
1422
+ m = std::string::npos == b ? "" : mediaLower(m.substr(b, e - b + 1));
1423
+ return m == "application/json" || m == "text/json" ||
1424
+ (m.size() >= 5 && 0 == m.compare(m.size() - 5, 5, "+json"));
1425
+ }
1426
+
1427
+ // The declared JSON type alone, else every declared type in the model's
1428
+ // order; empty when no success response declares a body.
1429
+ inline std::string acceptOf(const Value& point) {
1430
+ Value res = getp(point, "response");
1431
+ Value media = getp(res, "media");
1432
+ if (!media.is_string() || media.as_string().empty()) return "";
1433
+ Value kind = getp(res, "kind");
1434
+ if (kind.is_string() && kind.as_string() == "json") return media.as_string();
1435
+ std::string out = media.as_string();
1436
+ Value alts = getp(res, "alternatives");
1437
+ if (alts.is_list()) {
1438
+ for (const auto& alt : *alts.as_list()) {
1439
+ Value m = getp(alt, "media");
1440
+ if (m.is_string() && !m.as_string().empty()) out += ", " + m.as_string();
1441
+ }
1442
+ }
1443
+ return out;
1444
+ }
1445
+
1446
+ inline bool isRawRequest(const Value& point) {
1447
+ Value kind = getp(getp(point, "body"), "kind");
1448
+ return kind.is_string() && kind.as_string() == "raw";
1449
+ }
1450
+
1451
+ inline bool isJsonRequest(const Value& point) {
1452
+ Value kind = getp(getp(point, "body"), "kind");
1453
+ return kind.is_string() && kind.as_string() == "json";
1454
+ }
1455
+
1456
+ inline bool hasMediaHeader(const Value& headers, const std::string& name) {
1457
+ for (const auto& item : Struct::items(headers)) {
1458
+ if (mediaLower(as_str(pair_key(item))) == name) return true;
1459
+ }
1460
+ return false;
1461
+ }
1462
+
1463
+ // A caller's accept wins. A declared request type replaces each JSON
1464
+ // content-type, the SDK default, and leaves any other the caller set.
1465
+ inline Value mediaHeaders(const Value& point, Value headers) {
1466
+ std::string accept = acceptOf(point);
1467
+ if (!accept.empty() && !hasMediaHeader(headers, "accept")) {
1468
+ map_put(headers, "accept", Value(accept));
1469
+ }
1470
+
1471
+ Value body = getp(point, "body");
1472
+ Value kind = getp(body, "kind");
1473
+ Value media = getp(body, "media");
1474
+ if (kind.is_string() && (kind.as_string() == "raw" || kind.as_string() == "json") &&
1475
+ media.is_string() && !media.as_string().empty()) {
1476
+ for (const auto& item : Struct::items(headers)) {
1477
+ std::string key = as_str(pair_key(item));
1478
+ if (mediaLower(key) == "content-type" && isJsonMedia(getp(headers, key))) {
1479
+ headers.as_map()->erase(key);
1480
+ }
1481
+ }
1482
+ if (!hasMediaHeader(headers, "content-type")) map_put(headers, "content-type", media);
1483
+ }
1484
+ return headers;
1485
+ }
1486
+
1487
+ // A string Value holds any bytes, and they are sent as they are.
1488
+ inline Value rawBody(const Value& reqdata) { return getp(reqdata, rawBodyKey()); }
1489
+
1258
1490
  inline Value prepareBody(CtxPtr ctx) {
1259
1491
  if (ctx->op->input == "data") {
1492
+ if (isRawRequest(ctx->point)) return rawBody(ctx->reqdata);
1260
1493
  return ctx->utility->transformRequest(ctx);
1261
1494
  }
1262
1495
  return Value::undef();
1263
1496
  }
1264
1497
 
1498
+ // ---- callArgs ---------------------------------------------------------
1499
+
1500
+ // One argument a point declares, with the name it travels under and the
1501
+ // value the call passes for it.
1502
+ struct CallArg {
1503
+ std::string name;
1504
+ std::string wire;
1505
+ Value val;
1506
+ };
1507
+
1508
+ // The arguments a point declares in one location, query or header, each with
1509
+ // the name it travels under and the value this call passes in its match or
1510
+ // else its data. Unlike a path parameter, the entity's stored match and data
1511
+ // never supply one.
1512
+ inline std::vector<CallArg> callArgs(CtxPtr ctx, const std::string& kind) {
1513
+ std::vector<CallArg> out;
1514
+ Value defs = ctx->point.is_map() ? getp(getp(ctx->point, "args"), kind) : Value::undef();
1515
+ if (!defs.is_list()) return out;
1516
+ for (const auto& ad : *defs.as_list()) {
1517
+ Value name = getp(ad, "name");
1518
+ if (!name.is_string() || name.as_string().empty()) continue;
1519
+ Value orig = getp(ad, "orig");
1520
+ std::string wire = orig.is_string() && !orig.as_string().empty() ?
1521
+ orig.as_string() : name.as_string();
1522
+ Value val = getp(ctx->reqmatch, name.as_string(), Value(nullptr));
1523
+ if (is_nullish(val)) val = getp(ctx->reqdata, name.as_string(), Value(nullptr));
1524
+ out.push_back({name.as_string(), wire, val});
1525
+ }
1526
+ return out;
1527
+ }
1528
+
1265
1529
  // ---- prepareHeaders ---------------------------------------------------
1266
1530
 
1531
+ // Strips the blanks around a cookie piece.
1532
+ inline std::string trimBlank(const std::string& s) {
1533
+ size_t from = s.find_first_not_of(" \t");
1534
+ if (std::string::npos == from) return "";
1535
+ return s.substr(from, s.find_last_not_of(" \t") - from + 1);
1536
+ }
1537
+
1538
+ // The form style of a cookie parameter: a list repeats the name, a map sends
1539
+ // its own keys, and every value is percent-encoded.
1540
+ inline std::string cookiePair(const std::string& wire, const Value& val) {
1541
+ auto esc = [](const Value& v) { return Struct::escurl(Value(Struct::stringify(v))); };
1542
+ std::vector<std::string> pairs;
1543
+ if (val.is_list()) {
1544
+ for (const auto& item : *val.as_list()) pairs.push_back(wire + "=" + esc(item));
1545
+ } else if (val.is_map()) {
1546
+ for (const auto& item : Struct::items(val)) {
1547
+ pairs.push_back(Struct::escurl(pair_key(item)) + "=" + esc(pair_val(item)));
1548
+ }
1549
+ } else {
1550
+ pairs.push_back(wire + "=" + esc(val));
1551
+ }
1552
+ std::string joined;
1553
+ for (size_t i = 0; i < pairs.size(); i++) joined += (0 < i ? "; " : "") + pairs[i];
1554
+ return joined;
1555
+ }
1556
+
1267
1557
  inline Value prepareHeaders(CtxPtr ctx) {
1268
1558
  Value options = ctx->client->optionsMap();
1269
1559
  Value headers = getp(options, "headers");
1270
1560
  Value out = is_nullish(headers) ? vmap() : Helpers::toMapAny(Struct::clone(headers));
1271
1561
  if (!out.is_map()) out = vmap();
1562
+ out = mediaHeaders(ctx->point, out);
1272
1563
 
1273
- // A header parameter travels as a header, under the name the definition
1274
- // gives it, and only from this call's own arguments. It replaces a default
1275
- // of the same name, whatever its case.
1564
+ // A header argument replaces a default of the same name, whatever its case.
1276
1565
  auto lower = [](std::string s) {
1277
1566
  for (auto& ch : s) ch = (char)std::tolower((unsigned char)ch);
1278
1567
  return s;
1279
1568
  };
1280
- Value aheader = ctx->point.is_map() ? getp(getp(ctx->point, "args"), "header") : Value::undef();
1281
- if (aheader.is_list()) {
1282
- for (const auto& hd : *aheader.as_list()) {
1283
- Value name = getp(hd, "name");
1284
- if (!name.is_string() || name.as_string().empty()) continue;
1285
- Value orig = getp(hd, "orig");
1286
- std::string wire = lower(orig.is_string() && !orig.as_string().empty() ?
1287
- orig.as_string() : name.as_string());
1288
- Value val = getp(ctx->reqmatch, name.as_string(), Value(nullptr));
1289
- if (val.is_null()) val = getp(ctx->reqdata, name.as_string(), Value(nullptr));
1290
- if (is_nullish(val)) continue;
1291
- for (const auto& item : Struct::items(out)) {
1292
- std::string key = as_str(pair_key(item));
1293
- if (lower(key) == wire) out.as_map()->erase(key);
1569
+ for (const auto& arg : callArgs(ctx, "header")) {
1570
+ if (is_nullish(arg.val)) continue;
1571
+ std::string wire = lower(arg.wire);
1572
+ for (const auto& item : Struct::items(out)) {
1573
+ std::string key = as_str(pair_key(item));
1574
+ if (lower(key) == wire) out.as_map()->erase(key);
1575
+ }
1576
+ map_put(out, wire, Value(Struct::stringify(arg.val)));
1577
+ }
1578
+
1579
+ // A cookie argument travels in the cookie header, form serialized and
1580
+ // percent-encoded, replacing a cookie of the same name among those the
1581
+ // caller's headers already send.
1582
+ std::vector<CallArg> sent;
1583
+ for (const auto& arg : callArgs(ctx, "cookie")) {
1584
+ if (!is_nullish(arg.val)) sent.push_back(arg);
1585
+ }
1586
+ if (!sent.empty()) {
1587
+ std::vector<std::string> names;
1588
+ for (const auto& arg : sent) {
1589
+ if (arg.val.is_map()) {
1590
+ for (const auto& item : Struct::items(arg.val)) names.push_back(Struct::escurl(pair_key(item)));
1591
+ } else {
1592
+ names.push_back(arg.wire);
1294
1593
  }
1295
- map_put(out, wire, Value(Struct::stringify(val)));
1594
+ }
1595
+ std::vector<std::string> kept;
1596
+ for (const auto& item : Struct::items(out)) {
1597
+ std::string key = as_str(pair_key(item));
1598
+ if (lower(key) != "cookie") continue;
1599
+ Value given = getp(out, key);
1600
+ if (given.is_string()) {
1601
+ for (const auto& cookie : cookieKeep(given.as_string(), names)) kept.push_back(cookie);
1602
+ }
1603
+ out.as_map()->erase(key);
1604
+ }
1605
+ for (const auto& arg : sent) {
1606
+ std::string pair = cookiePair(arg.wire, arg.val);
1607
+ if (!pair.empty()) kept.push_back(pair);
1608
+ }
1609
+ if (!kept.empty()) {
1610
+ std::string joined;
1611
+ for (size_t i = 0; i < kept.size(); i++) joined += (0 < i ? "; " : "") + kept[i];
1612
+ map_put(out, "cookie", Value(joined));
1296
1613
  }
1297
1614
  }
1298
1615
  return out;
@@ -1301,13 +1618,6 @@ inline Value prepareHeaders(CtxPtr ctx) {
1301
1618
  // ---- param ------------------------------------------------------------
1302
1619
 
1303
1620
  inline Value param(CtxPtr ctx, const Value& paramdef) {
1304
- Value point = ctx->point;
1305
- SpecPtr spec = ctx->spec;
1306
- Value match = ctx->match;
1307
- Value reqmatch = ctx->reqmatch;
1308
- Value data = ctx->data;
1309
- Value reqdata = ctx->reqdata;
1310
-
1311
1621
  int pt = Struct::typify(paramdef);
1312
1622
 
1313
1623
  std::string key;
@@ -1318,29 +1628,14 @@ inline Value param(CtxPtr ctx, const Value& paramdef) {
1318
1628
  key = k.is_string() ? k.as_string() : "";
1319
1629
  }
1320
1630
 
1321
- std::string akey = "";
1322
- if (point.is_map()) {
1323
- Value alias = Helpers::toMapAny(getp(point, "alias"));
1324
- if (alias.is_map()) {
1325
- Value ak = getp(alias, key);
1326
- if (ak.is_string()) akey = ak.as_string();
1327
- }
1631
+ std::string akey = paramAlias(ctx->point, key);
1632
+ if (ctx->spec && !akey.empty() &&
1633
+ getp(ctx->reqmatch, key, Value(nullptr)).is_null() &&
1634
+ getp(ctx->match, key, Value(nullptr)).is_null()) {
1635
+ map_put(ctx->spec->alias, akey, Value(key));
1328
1636
  }
1329
1637
 
1330
- Value val = getp(reqmatch, key, Value(nullptr));
1331
- if (val.is_null()) val = getp(match, key, Value(nullptr));
1332
- if (val.is_null() && !akey.empty()) {
1333
- if (spec) map_put(spec->alias, akey, Value(key));
1334
- val = getp(reqmatch, akey, Value(nullptr));
1335
- }
1336
- if (val.is_null()) val = getp(reqdata, key, Value(nullptr));
1337
- if (val.is_null()) val = getp(data, key, Value(nullptr));
1338
- if (val.is_null() && !akey.empty()) {
1339
- val = getp(reqdata, akey, Value(nullptr));
1340
- if (val.is_null()) val = getp(data, akey, Value(nullptr));
1341
- }
1342
-
1343
- return val;
1638
+ return paramValue(ctx, ctx->point, key);
1344
1639
  }
1345
1640
 
1346
1641
  // ---- prepareParams ----------------------------------------------------
@@ -1396,9 +1691,9 @@ inline Value prepareQuery(CtxPtr ctx) {
1396
1691
 
1397
1692
  // A path parameter travels in the path. The generated config lists them as
1398
1693
  // args.params, which prepareParams reads; params is the older list of names.
1399
- // A header parameter travels in the headers, which prepareHeaders fills.
1400
1694
  Value aparams = point.is_map() ? getp(getp(point, "args"), "params") : Value::undef();
1401
1695
  Value aheader = point.is_map() ? getp(getp(point, "args"), "header") : Value::undef();
1696
+ Value acookie = point.is_map() ? getp(getp(point, "args"), "cookie") : Value::undef();
1402
1697
  auto named = [&](const Value& defs, const std::string& s) {
1403
1698
  if (!defs.is_list()) return false;
1404
1699
  for (const auto& pd : *defs.as_list()) {
@@ -1408,9 +1703,13 @@ inline Value prepareQuery(CtxPtr ctx) {
1408
1703
  return false;
1409
1704
  };
1410
1705
 
1706
+ // A header or cookie parameter travels in the headers, which prepareHeaders
1707
+ // fills, unless a query parameter shares its name: then both are sent.
1708
+ Value aquery = point.is_map() ? getp(getp(point, "args"), "query") : Value::undef();
1709
+ auto elsewhere = [&](const std::string& s) { return (named(aheader, s) || named(acookie, s)) && !named(aquery, s); };
1710
+
1411
1711
  // A query parameter travels under the name the definition gives it, its
1412
1712
  // orig, which the model may have renamed for the caller.
1413
- Value aquery = point.is_map() ? getp(getp(point, "args"), "query") : Value::undef();
1414
1713
  auto wire_name = [&](const std::string& s) {
1415
1714
  if (aquery.is_list()) {
1416
1715
  for (const auto& qd : *aquery.as_list()) {
@@ -1430,10 +1729,18 @@ inline Value prepareQuery(CtxPtr ctx) {
1430
1729
  std::string key = as_str(pair_key(item));
1431
1730
  Value val = pair_val(item);
1432
1731
  if (!is_nullish(val) && "$action" != key && !contains_str(params, key) &&
1433
- !named(aparams, key) && !named(aheader, key)) {
1732
+ !named(aparams, key) && !elsewhere(key)) {
1434
1733
  map_put(out, wire_name(key), val);
1435
1734
  }
1436
1735
  }
1736
+
1737
+ // A create or update passes its query arguments in its data.
1738
+ for (const auto& arg : callArgs(ctx, "query")) {
1739
+ if (!is_nullish(arg.val) && !contains_str(params, arg.name) &&
1740
+ !named(aparams, arg.name) && !elsewhere(arg.name)) {
1741
+ map_put(out, arg.wire, arg.val);
1742
+ }
1743
+ }
1437
1744
  return out;
1438
1745
  }
1439
1746
 
@@ -1470,15 +1777,28 @@ inline Value omitKeys(const Value& reqdata, const std::vector<std::string>& name
1470
1777
  // the body is a copy without it. The caller's map is left untouched.
1471
1778
  inline Value stripAction(const Value& reqdata) { return omitKeys(reqdata, {"$action"}); }
1472
1779
 
1473
- // A header argument travels as a header, which prepareHeaders sends, so the
1474
- // body is built from the request data without it.
1475
- inline std::vector<std::string> headerArgNames(CtxPtr ctx) {
1780
+ inline bool fieldArg(CtxPtr ctx, const std::string& name) {
1781
+ if (!ctx->point.is_map()) return false;
1782
+ for (const char* kind : {"header", "cookie", "query"}) {
1783
+ Value defs = getp(getp(ctx->point, "args"), kind);
1784
+ if (!defs.is_list()) continue;
1785
+ for (const auto& ad : *defs.as_list()) {
1786
+ Value n = getp(ad, "name");
1787
+ Value f = getp(ad, "field");
1788
+ if (n.is_string() && n.as_string() == name && f.is_bool() && f.as_bool()) return true;
1789
+ }
1790
+ }
1791
+ return false;
1792
+ }
1793
+
1794
+ // A header, cookie or query argument travels where prepareHeaders or
1795
+ // prepareQuery sends it, so the body is built from the request data without
1796
+ // it, unless the point marks it as a field the body keeps.
1797
+ inline std::vector<std::string> routedArgNames(CtxPtr ctx) {
1476
1798
  std::vector<std::string> names;
1477
- Value aheader = ctx->point.is_map() ? getp(getp(ctx->point, "args"), "header") : Value::undef();
1478
- if (aheader.is_list()) {
1479
- for (const auto& hd : *aheader.as_list()) {
1480
- Value name = getp(hd, "name");
1481
- if (name.is_string() && !name.as_string().empty()) names.push_back(name.as_string());
1799
+ for (const char* kind : {"header", "cookie", "query"}) {
1800
+ for (const auto& arg : callArgs(ctx, kind)) {
1801
+ if (!fieldArg(ctx, arg.name)) names.push_back(arg.name);
1482
1802
  }
1483
1803
  }
1484
1804
  return names;
@@ -1487,7 +1807,7 @@ inline std::vector<std::string> headerArgNames(CtxPtr ctx) {
1487
1807
  inline Value transformRequest(CtxPtr ctx) {
1488
1808
  if (ctx->spec) ctx->spec->step = "reqform";
1489
1809
 
1490
- Value reqdata = omitKeys(ctx->reqdata, headerArgNames(ctx));
1810
+ Value reqdata = omitKeys(ctx->reqdata, routedArgNames(ctx));
1491
1811
 
1492
1812
  Value transform = Helpers::toMapAny(getp(ctx->point, "transform"));
1493
1813
  if (!transform.is_map()) return stripAction(reqdata);
@@ -1502,11 +1822,13 @@ inline Value transformRequest(CtxPtr ctx) {
1502
1822
 
1503
1823
  // ---- makeOptions ------------------------------------------------------
1504
1824
 
1505
- inline Value optsNoEntity(const Value& settings) {
1825
+ inline Value optsPlain(const Value& settings, const std::string& name) {
1506
1826
  if (!settings.is_map()) return settings;
1507
1827
  Value out = vmap();
1508
1828
  for (const auto& kv : *settings.as_map()) {
1509
- if ("entity" != kv.first) map_put(out, kv.first, kv.second);
1829
+ if ("entity" != kv.first && !("rbac" == name && "rules" == kv.first)) {
1830
+ map_put(out, kv.first, kv.second);
1831
+ }
1510
1832
  }
1511
1833
  return out;
1512
1834
  }
@@ -1514,8 +1836,9 @@ inline Value optsNoEntity(const Value& settings) {
1514
1836
  // The options to scan for secrets. The feature map is keyed by feature
1515
1837
  // names, not field names, so it is scanned as a list: `secrets` must not
1516
1838
  // make every setting of that feature a secret. Entity blocks hold entity
1517
- // settings and seeded records, never a credential, so none is scanned. The
1518
- // raw scan still sees the feature list form, whose entries each carry `name`.
1839
+ // settings and seeded records, never a credential, so none is scanned, and
1840
+ // nor are rbac's rules, keyed by entity and operation names. The raw scan
1841
+ // still sees the feature list form, whose entries each carry `name`.
1519
1842
  inline Value optsWithout(const Value& opts, std::initializer_list<const char*> keys) {
1520
1843
  Value out = vmap();
1521
1844
  if (!opts.is_map()) return out;
@@ -1526,13 +1849,16 @@ inline Value optsWithout(const Value& opts, std::initializer_list<const char*> k
1526
1849
  if ("feature" == kv.first && (kv.second.is_map() || kv.second.is_list())) {
1527
1850
  Value list = vlist();
1528
1851
  if (kv.second.is_map()) {
1529
- for (const auto& f : *kv.second.as_map()) list.as_list()->push_back(optsNoEntity(f.second));
1852
+ for (const auto& f : *kv.second.as_map()) list.as_list()->push_back(optsPlain(f.second, f.first));
1530
1853
  } else {
1531
- for (const auto& f : *kv.second.as_list()) list.as_list()->push_back(optsNoEntity(f));
1854
+ for (const auto& f : *kv.second.as_list()) {
1855
+ Value name = f.is_map() ? getp(f, "name") : Value::undef();
1856
+ list.as_list()->push_back(optsPlain(f, name.is_string() ? name.as_string() : ""));
1857
+ }
1532
1858
  }
1533
1859
  map_put(out, kv.first, list);
1534
1860
  } else if ("test" == kv.first) {
1535
- map_put(out, kv.first, optsNoEntity(kv.second));
1861
+ map_put(out, kv.first, optsPlain(kv.second, ""));
1536
1862
  } else {
1537
1863
  map_put(out, kv.first, kv.second);
1538
1864
  }
@@ -1540,6 +1866,51 @@ inline Value optsWithout(const Value& opts, std::initializer_list<const char*> k
1540
1866
  return out;
1541
1867
  }
1542
1868
 
1869
+ // A templated base URL takes each {name} from options.server. An empty value
1870
+ // cannot make a working URL, so it fails construction, except in test mode,
1871
+ // where it becomes test-<name>.
1872
+ inline std::string resolveServerBase(const std::string& base, const Value& opts,
1873
+ const Value& config, CtxPtr ctx) {
1874
+ bool testmode = is_true(Struct::getpath(opts, {"test", "active"}))
1875
+ || is_true(Struct::getpath(opts, {"feature", "test", "active"}));
1876
+ Value server = Helpers::toMapAny(getp(opts, "server"));
1877
+ Value nameV = Struct::getpath(config, {"main", "name"});
1878
+ std::string sdkname = nameV.is_string() && !nameV.as_string().empty()
1879
+ ? nameV.as_string() : "SDK";
1880
+ auto namechar = [](char c) {
1881
+ return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') || '_' == c;
1882
+ };
1883
+
1884
+ std::string out;
1885
+ size_t i = 0;
1886
+ while (i < base.size()) {
1887
+ size_t j = i + 1;
1888
+ if ('{' == base[i]) {
1889
+ while (j < base.size() && namechar(base[j])) j++;
1890
+ }
1891
+ // A placeholder only when it closes and the name is [A-Za-z0-9_]+.
1892
+ if ('{' != base[i] || j == i + 1 || j >= base.size() || '}' != base[j]) {
1893
+ out += base[i];
1894
+ i++;
1895
+ continue;
1896
+ }
1897
+ std::string name = base.substr(i + 1, j - i - 1);
1898
+ Value val = server.is_map() ? getp(server, name) : Value::undef();
1899
+ if (val.is_string() && !val.as_string().empty()) {
1900
+ out += val.as_string();
1901
+ } else if (testmode) {
1902
+ out += "test-" + name;
1903
+ } else {
1904
+ throw std::make_shared<SdkError>("server_var_required",
1905
+ sdkname + ": the server variable '" + name + "' is required: the API base URL is '" +
1906
+ base + "' - pass {\"server\", vmap({{\"" + name + "\", Value(\"...\")}})} in the SDK options",
1907
+ ctx.get());
1908
+ }
1909
+ i = j + 1;
1910
+ }
1911
+ return out;
1912
+ }
1913
+
1543
1914
  inline Value makeOptions(CtxPtr ctx) {
1544
1915
  Value options = ctx->options;
1545
1916
  if (!options.is_map()) options = vmap();
@@ -1676,6 +2047,11 @@ inline Value makeOptions(CtxPtr ctx) {
1676
2047
  }
1677
2048
  }
1678
2049
 
2050
+ Value baseV = getp(opts, "base");
2051
+ if (baseV.is_string() && std::string::npos != baseV.as_string().find('{')) {
2052
+ map_put(opts, "base", Value(resolveServerBase(baseV.as_string(), opts, config, ctx)));
2053
+ }
2054
+
1679
2055
  // Resolve the feature add-order: an explicit list order (above) wins;
1680
2056
  // otherwise order the map test-first, then the remaining names sorted, so
1681
2057
  // the outcome is deterministic and `test` is always the base transport.