@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
@@ -204,24 +204,45 @@ defmodule ProjectName.Utility do
204
204
  def clean_add_impl(ctx, value) do
205
205
  cfg = clean_config(ctx)
206
206
  minlen = numof(S.getprop(cfg, "min"), 4)
207
- values = S.getprop(cfg, "values")
208
207
 
209
- if is_binary(value) and String.length(value) >= minlen and S.islist(values) do
210
- have = list_values(values)
208
+ if is_binary(value) and String.length(value) >= minlen and S.islist(S.getprop(cfg, "values")) do
209
+ forms = Enum.filter(clean_forms(value), &(String.length(&1) >= minlen))
211
210
 
212
- add =
213
- clean_forms(value)
214
- |> Enum.filter(fn f -> String.length(f) >= minlen and f not in have end)
211
+ # A registration reads the registry and writes a new one, so a request
212
+ # in another process registering at once would drop it; they take turns.
213
+ have = list_values(S.getprop(cfg, "values"))
215
214
 
216
- # Longest first, so a value is never masked by a substring of itself.
217
- if add != [] do
218
- S.setprop(cfg, "values", S.jt(Enum.sort_by(have ++ add, &(-String.length(&1)))))
215
+ if Enum.any?(forms, &(&1 not in have)) do
216
+ registering(fn -> publish(cfg, forms) end)
219
217
  end
220
218
  end
221
219
 
222
220
  nil
223
221
  end
224
222
 
223
+ # Retried after a millisecond rather than after global's back-off sleep,
224
+ # which grows to seconds; the lock is released if its holder dies.
225
+ defp registering(fun) do
226
+ case :global.trans({{__MODULE__, :clean_registry}, self()}, fun, [node()], 0) do
227
+ :aborted ->
228
+ Process.sleep(1)
229
+ registering(fun)
230
+
231
+ done ->
232
+ done
233
+ end
234
+ end
235
+
236
+ defp publish(cfg, forms) do
237
+ have = list_values(S.getprop(cfg, "values"))
238
+ add = Enum.reject(forms, &(&1 in have))
239
+
240
+ # Longest first, so a value is never masked by a substring of itself.
241
+ if add != [] do
242
+ S.setprop(cfg, "values", S.jt(Enum.sort_by(have ++ add, &(-String.length(&1)))))
243
+ end
244
+ end
245
+
225
246
  defp mask_value(cfg, value) do
226
247
  hint = numof(S.getprop(cfg, "hint"), 0)
227
248
  mask = strof(S.getprop(cfg, "mask"))
@@ -826,7 +847,8 @@ defmodule ProjectName.Utility do
826
847
  # The options to scan for secrets. The feature map is keyed by feature
827
848
  # names, not field names, so it is scanned as a list: `secrets` must not
828
849
  # make every setting of that feature a secret. Entity blocks hold entity
829
- # settings and seeded records, never a credential, so they are skipped.
850
+ # settings and seeded records, never a credential, so they are skipped, and
851
+ # so are rbac's rules, keyed by entity and operation names.
830
852
  defp secret_scan(opts, names) do
831
853
  out = S.jm([])
832
854
 
@@ -836,10 +858,15 @@ defmodule ProjectName.Utility do
836
858
  nil
837
859
 
838
860
  k == "feature" and (S.ismap(v) or S.islist(v)) ->
839
- S.setprop(out, k, S.jt(Enum.map(H.entries(v), fn {_, f} -> without(f, "entity") end)))
861
+ blocks =
862
+ Enum.map(H.entries(v), fn {fk, f} ->
863
+ plain(f, if(S.ismap(v), do: fk, else: S.getprop(f, "name")))
864
+ end)
865
+
866
+ S.setprop(out, k, S.jt(blocks))
840
867
 
841
868
  k == "test" ->
842
- S.setprop(out, k, without(v, "entity"))
869
+ S.setprop(out, k, plain(v, nil))
843
870
 
844
871
  true ->
845
872
  S.setprop(out, k, v)
@@ -849,6 +876,10 @@ defmodule ProjectName.Utility do
849
876
  out
850
877
  end
851
878
 
879
+ defp plain(node, name) do
880
+ if name == "rbac", do: without(without(node, "entity"), "rules"), else: without(node, "entity")
881
+ end
882
+
852
883
  defp without(node, key) do
853
884
  if S.ismap(node) do
854
885
  out = S.jm([])
@@ -861,6 +892,61 @@ defmodule ProjectName.Utility do
861
892
 
862
893
  # ---- make_point ----------------------------------------------------------
863
894
 
895
+ # A terminal parameter marks a record route (/boards/{id}); a
896
+ # cross-reference ends in the relationship's name (/posts/{id}/author), and
897
+ # failing that the shallower path wins. The same rule runs at generation
898
+ # time, in helpers/opShape.ts — both sides must move together.
899
+ defp parts_len(p) do
900
+ parts = S.getprop(p, "parts")
901
+ if S.islist(parts), do: S.size(parts), else: 0
902
+ end
903
+
904
+ defp terminal_param?(p) do
905
+ parts = S.getprop(p, "parts")
906
+
907
+ if S.islist(parts) and S.size(parts) > 0 do
908
+ last = S.getelem(parts, S.size(parts) - 1)
909
+ is_binary(last) and String.starts_with?(last, "{")
910
+ else
911
+ false
912
+ end
913
+ end
914
+
915
+ defp own_point(points) do
916
+ Enum.reduce(points, hd(points), fn cand, best ->
917
+ ct = terminal_param?(cand)
918
+ bt = terminal_param?(best)
919
+
920
+ cond do
921
+ ct != bt -> if ct, do: cand, else: best
922
+ parts_len(cand) < parts_len(best) -> cand
923
+ true -> best
924
+ end
925
+ end)
926
+ end
927
+
928
+ # The path parameters of a point that neither the call nor the entity gives
929
+ # a value for, looked up as param_impl looks them up.
930
+ defp unfilled(ctx, point) do
931
+ parts = S.getprop(point, "parts")
932
+
933
+ if S.islist(parts) and S.size(parts) > 0 do
934
+ Enum.flat_map(0..(S.size(parts) - 1), fn i ->
935
+ part = S.getelem(parts, i)
936
+
937
+ case is_binary(part) && Regex.run(~r/\A\{([^{}\/]+)\}\z/, part) do
938
+ [_, name] ->
939
+ if param_value(ctx, point, name) != nil, do: [], else: [name]
940
+
941
+ _ ->
942
+ []
943
+ end
944
+ end)
945
+ else
946
+ []
947
+ end
948
+ end
949
+
864
950
  def make_point_impl(ctx) do
865
951
  out = S.getprop(ctx, "out")
866
952
  pre = S.getprop(out, "point")
@@ -877,15 +963,16 @@ defmodule ProjectName.Utility do
877
963
  op = S.getprop(ctx, "op")
878
964
  options = S.getprop(ctx, "options")
879
965
  opname = S.getprop(op, "name")
880
- allow_op = H.or_(S.getpath(options, "allow.op"), "")
966
+ allow_op = S.getpath(options, "allow.op")
881
967
  points = S.getprop(op, "points")
882
968
  npoints = S.size(points)
883
969
 
884
970
  cond do
885
- is_binary(allow_op) and not String.contains?(allow_op, opname) ->
971
+ not allowed?(allow_op, opname) ->
886
972
  {nil,
887
973
  Context.make_error(ctx, "point_op_allow",
888
- "Operation \"" <> opname <> "\" not allowed by SDK option allow.op value: \"" <> allow_op <> "\"")}
974
+ "Operation \"" <> opname <> "\" not allowed by SDK option allow.op value: \"" <>
975
+ H.str_or(allow_op, "") <> "\"")}
889
976
 
890
977
  npoints == 0 ->
891
978
  {nil,
@@ -950,44 +1037,18 @@ defmodule ProjectName.Utility do
950
1037
 
951
1038
  matched? = match?({:halt, _}, point)
952
1039
 
953
- point =
1040
+ # select.exist can list more than the params needed to pick a point,
1041
+ # so nothing matched. A call without an action falls back to a
1042
+ # point without one, as generation does, and only to a route the
1043
+ # call can fill.
1044
+ {point, plain} =
954
1045
  if matched? do
955
- elem(point, 1)
1046
+ {elem(point, 1), nil}
956
1047
  else
957
- # select.exist can list more than the params needed to pick a
958
- # point, so nothing matched. Fall back to the entity's own
959
- # route: a terminal parameter marks a record route
960
- # (/boards/{id}) where a cross-reference ends in the
961
- # relationship's name (/posts/{id}/author), and failing that
962
- # the shallower path wins. The same rule runs at generation
963
- # time, in helpers/opShape.ts — both sides must move together.
964
- parts_len = fn p ->
965
- parts = S.getprop(p, "parts")
966
- if S.islist(parts), do: S.size(parts), else: 0
967
- end
968
-
969
- terminal_param? = fn p ->
970
- parts = S.getprop(p, "parts")
971
-
972
- if S.islist(parts) and S.size(parts) > 0 do
973
- last = S.getelem(parts, S.size(parts) - 1)
974
- is_binary(last) and String.starts_with?(last, "{")
975
- else
976
- false
977
- end
978
- end
979
-
980
- Enum.reduce(0..(npoints - 1), S.getelem(points, 0), fn i, best ->
981
- cand = S.getelem(points, i)
982
- ct = terminal_param?.(cand)
983
- bt = terminal_param?.(best)
984
-
985
- cond do
986
- ct != bt -> if ct, do: cand, else: best
987
- parts_len.(cand) < parts_len.(best) -> cand
988
- true -> best
989
- end
990
- end)
1048
+ all = Enum.map(0..(npoints - 1), &S.getelem(points, &1))
1049
+ plain = Enum.filter(all, &(S.getprop(H.to_map(S.getprop(&1, "select")), "$action") == nil))
1050
+ fillable = Enum.filter(plain, &(unfilled(ctx, &1) == []))
1051
+ {if(fillable == [], do: nil, else: own_point(fillable)), plain}
991
1052
  end
992
1053
 
993
1054
  unmatched_action =
@@ -1007,6 +1068,15 @@ defmodule ProjectName.Utility do
1007
1068
  Context.make_error(ctx, "point_action_invalid",
1008
1069
  "Operation \"" <> opname <> "\" action \"" <> S.stringify(unmatched_action) <> "\" is not valid.")
1009
1070
 
1071
+ plain == [] ->
1072
+ Context.make_error(ctx, "point_action_required",
1073
+ "Operation \"" <> opname <> "\" has only action endpoints; pass $action to choose one.")
1074
+
1075
+ point == nil and plain != nil ->
1076
+ Context.make_error(ctx, "point_no_match",
1077
+ "Operation \"" <> opname <> "\" has no endpoint whose path parameters are all given (missing: " <>
1078
+ Enum.join(unfilled(ctx, own_point(plain)), ", ") <> ").")
1079
+
1010
1080
  reqselector != nil ->
1011
1081
  req_action = S.getprop(reqselector, "$action")
1012
1082
 
@@ -1068,13 +1138,14 @@ defmodule ProjectName.Utility do
1068
1138
  S.setprop(ctx, "spec", spec)
1069
1139
  S.setprop(spec, "method", prepare_method(ctx))
1070
1140
 
1071
- allow_method = H.or_(S.getpath(options, "allow.method"), "")
1141
+ allow_method = S.getpath(options, "allow.method")
1072
1142
  method = S.getprop(spec, "method")
1073
1143
 
1074
- if is_binary(allow_method) and not String.contains?(allow_method, method) do
1144
+ if not allowed?(allow_method, method) do
1075
1145
  {nil,
1076
1146
  Context.make_error(ctx, "spec_method_allow",
1077
- "Method \"" <> method <> "\" not allowed by SDK option allow.method value: \"" <> allow_method <> "\"")}
1147
+ "Method \"" <> H.str_or(method, "") <> "\" not allowed by SDK option allow.method value: \"" <>
1148
+ H.str_or(allow_method, "") <> "\"")}
1078
1149
  else
1079
1150
  S.setprop(spec, "params", prepare_params(ctx))
1080
1151
  S.setprop(spec, "query", prepare_query(ctx))
@@ -1101,11 +1172,21 @@ defmodule ProjectName.Utility do
1101
1172
  explain = S.getprop(ctrl, "explain")
1102
1173
  if explain != nil, do: S.setprop(explain, "spec", spec)
1103
1174
 
1175
+ # Whatever prepare_auth sets in the query, under whichever name, is
1176
+ # the credential; a key it leaves as it was is the caller's.
1177
+ query = Map.new(H.entries(S.getprop(spec, "query")))
1178
+
1104
1179
  {spec2, err} = prepare_auth(ctx)
1105
1180
 
1106
1181
  if err != nil do
1107
1182
  {nil, err}
1108
1183
  else
1184
+ authquery =
1185
+ for {key, val} <- H.entries(S.getprop(spec2, "query")),
1186
+ not Map.has_key?(query, key) or Map.get(query, key) != val,
1187
+ do: key
1188
+
1189
+ S.setprop(spec2, "authquery", S.jt(authquery))
1109
1190
  S.setprop(ctx, "spec", spec2)
1110
1191
  {spec2, nil}
1111
1192
  end
@@ -1402,11 +1483,19 @@ defmodule ProjectName.Utility do
1402
1483
  ])
1403
1484
 
1404
1485
  body = S.getprop(spec, "body")
1486
+ scalar = is_binary(body) or is_number(body) or is_boolean(body)
1405
1487
 
1488
+ # A map or a list is JSON, and so is a scalar on a point that declares
1489
+ # a JSON body. Anything else goes as given.
1406
1490
  cond do
1407
- body == nil -> :ok
1408
- S.ismap(body) -> S.setprop(fetchdef, "body", S.jsonify(body))
1409
- true -> S.setprop(fetchdef, "body", body)
1491
+ body == nil ->
1492
+ :ok
1493
+
1494
+ S.isnode(body) or (scalar and json_request?(S.getprop(ctx, "point"))) ->
1495
+ S.setprop(fetchdef, "body", S.jsonify(body))
1496
+
1497
+ true ->
1498
+ S.setprop(fetchdef, "body", body)
1410
1499
  end
1411
1500
 
1412
1501
  {fetchdef, nil}
@@ -1446,6 +1535,9 @@ defmodule ProjectName.Utility do
1446
1535
 
1447
1536
  resmatch = S.jm([])
1448
1537
 
1538
+ # Sent with the request, never recorded as the entity's match.
1539
+ authquery = for {_, name} <- H.entries(S.getprop(spec, "authquery")), do: name
1540
+
1449
1541
  url1 =
1450
1542
  Enum.reduce(H.entries(S.getprop(spec, "params")), url0, fn {key, val}, acc ->
1451
1543
  if val != nil and is_binary(key) do
@@ -1457,19 +1549,32 @@ defmodule ProjectName.Utility do
1457
1549
  end
1458
1550
  end)
1459
1551
 
1552
+ # A placeholder left in the route would send the request to the wrong
1553
+ # route. The base's own placeholders are server variables, resolved
1554
+ # with the options.
1555
+ base = S.getprop(spec, "base")
1556
+ base = if is_binary(base), do: String.trim_trailing(base, "/"), else: ""
1557
+ route = String.replace_prefix(url1, base, "")
1558
+ unfilled = Regex.scan(~r/\{[^{}\/]+\}/, route) |> Enum.map(&hd/1)
1559
+
1460
1560
  {url2, _qsep} =
1461
1561
  Enum.reduce(H.entries(S.getprop(spec, "query")), {url1, "?"}, fn {key, val}, {acc, qsep} ->
1462
1562
  if val != nil and is_binary(key) do
1463
1563
  vstr = if is_binary(val), do: val, else: S.stringify(val)
1464
- S.setprop(resmatch, key, val)
1564
+ if key not in authquery, do: S.setprop(resmatch, key, val)
1465
1565
  {acc <> qsep <> S.escurl(key) <> "=" <> S.escurl(vstr), "&"}
1466
1566
  else
1467
1567
  {acc, qsep}
1468
1568
  end
1469
1569
  end)
1470
1570
 
1471
- S.setprop(result, "resmatch", resmatch)
1472
- {url2, nil}
1571
+ if unfilled != [] do
1572
+ {"", Context.make_error(ctx, "url_param_missing",
1573
+ "URL path has no value for " <> Enum.join(unfilled, ", ") <> ".")}
1574
+ else
1575
+ S.setprop(result, "resmatch", resmatch)
1576
+ {url2, nil}
1577
+ end
1473
1578
  end
1474
1579
  end
1475
1580
 
@@ -1478,10 +1583,6 @@ defmodule ProjectName.Utility do
1478
1583
  def param_impl(ctx, paramdef) do
1479
1584
  point = S.getprop(ctx, "point")
1480
1585
  spec = S.getprop(ctx, "spec")
1481
- match = S.getprop(ctx, "match")
1482
- reqmatch = S.getprop(ctx, "reqmatch")
1483
- data = S.getprop(ctx, "data")
1484
- reqdata = S.getprop(ctx, "reqdata")
1485
1586
 
1486
1587
  key =
1487
1588
  if is_binary(paramdef) do
@@ -1491,45 +1592,158 @@ defmodule ProjectName.Utility do
1491
1592
  if is_binary(k), do: k, else: ""
1492
1593
  end
1493
1594
 
1494
- akey =
1495
- if point != nil do
1496
- alias = H.to_map(S.getprop(point, "alias"))
1595
+ akey = param_alias(point, key)
1497
1596
 
1498
- if alias != nil do
1499
- ak = S.getprop(alias, key)
1500
- if is_binary(ak), do: ak, else: ""
1501
- else
1502
- ""
1503
- end
1504
- else
1505
- ""
1506
- end
1597
+ if spec != nil and akey != "" and S.getprop(S.getprop(ctx, "reqmatch"), key) == nil and
1598
+ S.getprop(S.getprop(ctx, "match"), key) == nil do
1599
+ S.setprop(S.getprop(spec, "alias"), akey, key)
1600
+ end
1507
1601
 
1508
- val = S.getprop(reqmatch, key)
1509
- val = if val == nil, do: S.getprop(match, key), else: val
1602
+ param_value(ctx, point, key)
1603
+ end
1510
1604
 
1511
- val =
1512
- if val == nil and akey != "" do
1513
- if spec != nil, do: S.setprop(S.getprop(spec, "alias"), akey, key)
1514
- S.getprop(reqmatch, akey)
1515
- else
1516
- val
1517
- end
1605
+ # The name a point gives a parameter in the call, if it renames it.
1606
+ defp param_alias(point, key) do
1607
+ alias = if point != nil, do: H.to_map(S.getprop(point, "alias")), else: nil
1608
+ ak = if alias != nil, do: S.getprop(alias, key), else: nil
1609
+ if is_binary(ak), do: ak, else: ""
1610
+ end
1518
1611
 
1612
+ # The value the call or its entity gives a point's parameter, under its name
1613
+ # or the point's alias for it.
1614
+ defp param_value(ctx, point, key) do
1615
+ akey = param_alias(point, key)
1616
+ reqmatch = S.getprop(ctx, "reqmatch")
1617
+ reqdata = S.getprop(ctx, "reqdata")
1618
+ data = S.getprop(ctx, "data")
1619
+
1620
+ val = S.getprop(reqmatch, key)
1621
+ val = if val == nil, do: S.getprop(S.getprop(ctx, "match"), key), else: val
1622
+ val = if val == nil and akey != "", do: S.getprop(reqmatch, akey), else: val
1519
1623
  val = if val == nil, do: S.getprop(reqdata, key), else: val
1520
1624
  val = if val == nil, do: S.getprop(data, key), else: val
1521
1625
 
1522
- val =
1523
- if val == nil and akey != "" do
1524
- v2 = S.getprop(reqdata, akey)
1525
- if v2 == nil, do: S.getprop(data, akey), else: v2
1526
- else
1527
- val
1528
- end
1626
+ if val == nil and akey != "" do
1627
+ v2 = S.getprop(reqdata, akey)
1628
+ if v2 == nil, do: S.getprop(data, akey), else: v2
1629
+ else
1630
+ val
1631
+ end
1632
+ end
1633
+
1634
+ # The arguments a point declares in one location, query or header, each as
1635
+ # {name, wire, val}: the name it travels under and the value this call
1636
+ # passes in its match or else its data. Unlike a path parameter, the
1637
+ # entity's stored match and data never supply one.
1638
+ defp call_args(ctx, kind) do
1639
+ point = S.getprop(ctx, "point")
1640
+ defs = if point != nil, do: S.getpath(point, "args." <> kind), else: nil
1641
+
1642
+ if S.islist(defs) and S.size(defs) > 0 do
1643
+ Enum.flat_map(0..(S.size(defs) - 1), fn i ->
1644
+ ad = S.getelem(defs, i)
1645
+ name = S.getprop(ad, "name")
1529
1646
 
1530
- val
1647
+ if is_binary(name) and name != "" do
1648
+ orig = S.getprop(ad, "orig")
1649
+ wire = if is_binary(orig) and orig != "", do: orig, else: name
1650
+ val = S.getprop(S.getprop(ctx, "reqmatch"), name)
1651
+ val = if val == nil, do: S.getprop(S.getprop(ctx, "reqdata"), name), else: val
1652
+ [{name, wire, val}]
1653
+ else
1654
+ []
1655
+ end
1656
+ end)
1657
+ else
1658
+ []
1659
+ end
1660
+ end
1661
+
1662
+ # ---- media ---------------------------------------------------------------
1663
+
1664
+ # The media types a point declares: `response` (the model's `rs`) for the
1665
+ # Accept header, and `body` (the model's `rb`) for the request body.
1666
+
1667
+ # The data key holding a raw request body. Like `$action`, it can never be
1668
+ # a declared argument name.
1669
+ @raw_body "$body"
1670
+
1671
+ def json_media?(media) do
1672
+ m =
1673
+ if(is_binary(media), do: media, else: "")
1674
+ |> String.split(";", parts: 2)
1675
+ |> hd()
1676
+ |> String.trim()
1677
+ |> String.downcase()
1678
+
1679
+ m == "application/json" or m == "text/json" or String.ends_with?(m, "+json")
1531
1680
  end
1532
1681
 
1682
+ # The declared JSON type alone, else every declared type in the model's
1683
+ # order; nil when no success response declares a body.
1684
+ def accept_of(point) do
1685
+ res = S.getprop(point, "response")
1686
+ media = S.getprop(res, "media")
1687
+
1688
+ cond do
1689
+ not is_binary(media) or media == "" ->
1690
+ nil
1691
+
1692
+ S.getprop(res, "kind") == "json" ->
1693
+ media
1694
+
1695
+ true ->
1696
+ alts = S.getprop(res, "alternatives")
1697
+ n = if S.islist(alts), do: S.size(alts), else: 0
1698
+
1699
+ others =
1700
+ if n == 0 do
1701
+ []
1702
+ else
1703
+ Enum.flat_map(0..(n - 1), fn i ->
1704
+ m = S.getprop(S.getelem(alts, i), "media")
1705
+ if is_binary(m) and m != "", do: [m], else: []
1706
+ end)
1707
+ end
1708
+
1709
+ Enum.join([media | others], ", ")
1710
+ end
1711
+ end
1712
+
1713
+ def raw_request?(point), do: S.getprop(S.getprop(point, "body"), "kind") == "raw"
1714
+ def json_request?(point), do: S.getprop(S.getprop(point, "body"), "kind") == "json"
1715
+
1716
+ defp media_header?(headers, name) do
1717
+ Enum.any?(H.entries(headers), fn {k, _} -> is_binary(k) and String.downcase(k) == name end)
1718
+ end
1719
+
1720
+ # A caller's accept wins. A declared request type replaces each JSON
1721
+ # content-type, the SDK default, and leaves any other the caller set.
1722
+ def media_headers(point, headers) do
1723
+ accept = accept_of(point)
1724
+
1725
+ if accept != nil and not media_header?(headers, "accept"),
1726
+ do: S.setprop(headers, "accept", accept)
1727
+
1728
+ body = S.getprop(point, "body")
1729
+ media = S.getprop(body, "media")
1730
+
1731
+ if S.getprop(body, "kind") in ["raw", "json"] and is_binary(media) and media != "" do
1732
+ Enum.each(H.entries(headers), fn {k, v} ->
1733
+ if is_binary(k) and String.downcase(k) == "content-type" and json_media?(v),
1734
+ do: S.delprop(headers, k)
1735
+ end)
1736
+
1737
+ if not media_header?(headers, "content-type"),
1738
+ do: S.setprop(headers, "content-type", media)
1739
+ end
1740
+
1741
+ headers
1742
+ end
1743
+
1744
+ # A binary, of bytes or text, sent as it is.
1745
+ def raw_body(reqdata), do: if(S.ismap(reqdata), do: S.getprop(reqdata, @raw_body), else: nil)
1746
+
1533
1747
  # ---- prepare_* -----------------------------------------------------------
1534
1748
 
1535
1749
  @method_map %{
@@ -1541,6 +1755,14 @@ defmodule ProjectName.Utility do
1541
1755
  "patch" => "PATCH"
1542
1756
  }
1543
1757
 
1758
+ # Whether a comma-separated allow option names the item: whole names, any case.
1759
+ def allowed?(names, item) when is_binary(names) and is_binary(item) and item != "" do
1760
+ want = String.upcase(item)
1761
+ names |> String.split(",") |> Enum.any?(fn name -> String.upcase(String.trim(name)) == want end)
1762
+ end
1763
+
1764
+ def allowed?(_names, _item), do: false
1765
+
1544
1766
  def prepare_method_impl(ctx) do
1545
1767
  opname = S.getprop(S.getprop(ctx, "op"), "name")
1546
1768
 
@@ -1567,41 +1789,92 @@ defmodule ProjectName.Utility do
1567
1789
  if S.ismap(cloned), do: cloned, else: S.jm([])
1568
1790
  end
1569
1791
 
1570
- # A header parameter travels as a header, under the name the definition
1571
- # gives it, and only from this call's own arguments. It replaces a default
1572
- # of the same name, whatever its case.
1573
- point = S.getprop(ctx, "point")
1574
- aheader = if point != nil, do: S.getpath(point, "args.header"), else: nil
1792
+ out = media_headers(S.getprop(ctx, "point"), out)
1575
1793
 
1576
- if S.islist(aheader) and S.size(aheader) > 0 do
1577
- Enum.each(0..(S.size(aheader) - 1), fn i ->
1578
- hd = S.getelem(aheader, i)
1579
- name = S.getprop(hd, "name")
1794
+ # A header argument replaces a default of the same name, whatever its case.
1795
+ Enum.each(call_args(ctx, "header"), fn {_name, wire, val} ->
1796
+ if val != nil do
1797
+ key = String.downcase(wire)
1580
1798
 
1581
- if is_binary(name) and name != "" do
1582
- orig = S.getprop(hd, "orig")
1583
- wire = if is_binary(orig) and orig != "", do: orig, else: name
1584
- val = S.getprop(S.getprop(ctx, "reqmatch"), name)
1585
- val = if val == nil, do: S.getprop(S.getprop(ctx, "reqdata"), name), else: val
1586
- if val != nil do
1587
- key = String.downcase(wire)
1799
+ Enum.each(H.entries(out), fn {k, _} ->
1800
+ if is_binary(k) and String.downcase(k) == key, do: S.delprop(out, k)
1801
+ end)
1588
1802
 
1589
- Enum.each(H.entries(out), fn {k, _} ->
1590
- if is_binary(k) and String.downcase(k) == key, do: S.delprop(out, k)
1591
- end)
1803
+ S.setprop(out, key, S.stringify(val))
1804
+ end
1805
+ end)
1806
+
1807
+ # A cookie argument travels in the cookie header, form serialized and
1808
+ # percent-encoded, replacing a cookie of the same name among those the
1809
+ # caller's headers already send.
1810
+ sent = Enum.filter(call_args(ctx, "cookie"), fn {_name, _wire, val} -> val != nil end)
1592
1811
 
1593
- S.setprop(out, key, S.stringify(val))
1812
+ if sent != [] do
1813
+ names =
1814
+ Enum.flat_map(sent, fn {_name, wire, val} ->
1815
+ if S.ismap(val), do: Enum.map(S.keysof(val), &S.escurl/1), else: [wire]
1816
+ end)
1817
+
1818
+ given =
1819
+ Enum.filter(H.entries(out), fn {k, _} -> is_binary(k) and String.downcase(k) == "cookie" end)
1820
+
1821
+ kept = Enum.flat_map(given, fn {_, v} -> if is_binary(v), do: cookie_keep(v, names), else: [] end)
1822
+
1823
+ Enum.each(given, fn {k, _} -> S.delprop(out, k) end)
1824
+
1825
+ pairs =
1826
+ Enum.flat_map(sent, fn {_name, wire, val} ->
1827
+ case cookie_pair(wire, val) do
1828
+ "" -> []
1829
+ pair -> [pair]
1594
1830
  end
1595
- end
1596
- end)
1831
+ end)
1832
+
1833
+ if kept ++ pairs != [], do: S.setprop(out, "cookie", Enum.join(kept ++ pairs, "; "))
1597
1834
  end
1598
1835
 
1599
1836
  out
1600
1837
  end
1601
1838
 
1839
+ # The caller's cookie pieces with the named cookies removed: a cookie is one
1840
+ # ;-delimited piece, whatever its value holds.
1841
+ def cookie_keep(header, names) do
1842
+ header
1843
+ |> String.split(";")
1844
+ |> Enum.map(&String.trim/1)
1845
+ |> Enum.reject(fn cookie -> cookie == "" or cookie_name(cookie) in names end)
1846
+ end
1847
+
1848
+ defp cookie_name(cookie), do: cookie |> String.split("=", parts: 2) |> hd() |> String.trim()
1849
+
1850
+ # The form style of a cookie parameter: a list repeats the name, a map sends
1851
+ # its own keys, and every value is percent-encoded.
1852
+ defp cookie_pair(wire, val) do
1853
+ esc = fn v -> S.escurl(S.stringify(v)) end
1854
+
1855
+ pairs =
1856
+ cond do
1857
+ S.islist(val) ->
1858
+ Enum.map(H.entries(val), fn {_i, item} -> wire <> "=" <> esc.(item) end)
1859
+
1860
+ S.ismap(val) ->
1861
+ Enum.map(S.keysof(val), fn k -> S.escurl(k) <> "=" <> esc.(S.getprop(val, k)) end)
1862
+
1863
+ true ->
1864
+ [wire <> "=" <> esc.(val)]
1865
+ end
1866
+
1867
+ Enum.join(pairs, "; ")
1868
+ end
1869
+
1602
1870
  def prepare_body_impl(ctx) do
1603
1871
  op = S.getprop(ctx, "op")
1604
- if S.getprop(op, "input") == "data", do: transform_request(ctx), else: nil
1872
+
1873
+ cond do
1874
+ S.getprop(op, "input") != "data" -> nil
1875
+ raw_request?(S.getprop(ctx, "point")) -> raw_body(S.getprop(ctx, "reqdata"))
1876
+ true -> transform_request(ctx)
1877
+ end
1605
1878
  end
1606
1879
 
1607
1880
  def prepare_params_impl(ctx) do
@@ -1687,8 +1960,14 @@ defmodule ProjectName.Utility do
1687
1960
 
1688
1961
  # A path parameter travels in the path. The generated config lists them
1689
1962
  # as args.params, which prepare_params reads; params is the older list.
1690
- # A header parameter travels in the headers, which prepare_headers fills.
1691
- param_strs = param_strs ++ arg_names(point, "args.params") ++ arg_names(point, "args.header")
1963
+ # A header or cookie parameter travels in the headers, which prepare_headers
1964
+ # fills, unless a query parameter shares its name: then both are sent.
1965
+ declared = arg_names(point, "args.query")
1966
+
1967
+ param_strs =
1968
+ param_strs ++
1969
+ arg_names(point, "args.params") ++
1970
+ Enum.reject(arg_names(point, "args.header") ++ arg_names(point, "args.cookie"), &(&1 in declared))
1692
1971
 
1693
1972
  # A query parameter travels under the name the definition gives it, its
1694
1973
  # orig, which the model may have renamed for the caller.
@@ -1718,6 +1997,11 @@ defmodule ProjectName.Utility do
1718
1997
  end
1719
1998
  end)
1720
1999
 
2000
+ # A create or update passes its query arguments in its data.
2001
+ Enum.each(call_args(ctx, "query"), fn {name, orig, val} ->
2002
+ if val != nil and not Enum.member?(param_strs, name), do: S.setprop(out, orig, val)
2003
+ end)
2004
+
1721
2005
  out
1722
2006
  end
1723
2007
 
@@ -1927,11 +2211,71 @@ defmodule ProjectName.Utility do
1927
2211
  jf = S.getprop(response, "json_func")
1928
2212
  body = S.getprop(response, "body")
1929
2213
  if jf != nil and body != nil and S.isfunc(jf), do: S.setprop(result, "body", jf.())
2214
+
2215
+ if S.getprop(response, "unreadable") == true do
2216
+ spec = S.getprop(ctx, "spec")
2217
+ sent = if spec != nil, do: S.getprop(spec, "headers")
2218
+
2219
+ S.setprop(result, "err",
2220
+ unreadable_body(ctx, S.getprop(result, "status"), S.getprop(result, "headers"), body, sent,
2221
+ S.getprop(result, "err")))
2222
+ end
1930
2223
  end
1931
2224
 
1932
2225
  result
1933
2226
  end
1934
2227
 
2228
+ @body_preview_length 160
2229
+
2230
+ # A body that is not JSON. An HTTP failure keeps its own error, with the
2231
+ # response described; otherwise the code tells a wrong content type from
2232
+ # malformed JSON.
2233
+ def unreadable_body(ctx, status, headers, text, sent, failed) do
2234
+ type = body_header(headers, "content-type")
2235
+ agent = to_string(clean(ctx, body_header(sent, "user-agent")))
2236
+
2237
+ detail =
2238
+ "HTTP " <> to_string(status) <> ", content-type " <> if(type == "", do: "none", else: type) <>
2239
+ ", user-agent " <> if(agent == "", do: "transport default", else: agent) <>
2240
+ if(text == nil, do: "", else: ", body: " <> body_preview(ctx, text))
2241
+
2242
+ cond do
2243
+ match?(%ProjectName.Error{}, failed) ->
2244
+ %{failed | msg: failed.msg <> " (" <> detail <> ")"}
2245
+
2246
+ failed != nil ->
2247
+ %RuntimeError{message: err_msg(failed) <> " (" <> detail <> ")"}
2248
+
2249
+ type == "" or String.contains?(String.downcase(type), "json") ->
2250
+ Context.make_error(ctx, "response_json_invalid", "response: body is not valid JSON (" <> detail <> ")")
2251
+
2252
+ true ->
2253
+ Context.make_error(ctx, "response_content_type",
2254
+ "response: expected JSON, got " <> type <> " (" <> detail <> ")")
2255
+ end
2256
+ end
2257
+
2258
+ defp body_header(headers, name) do
2259
+ if S.ismap(headers) do
2260
+ case Enum.find(H.entries(headers), fn {k, _v} -> String.downcase(to_string(k)) == name end) do
2261
+ {_k, v} -> to_string(v)
2262
+ nil -> ""
2263
+ end
2264
+ else
2265
+ ""
2266
+ end
2267
+ end
2268
+
2269
+ # Cleaned whole: a secret the bound would split could leave its prefix.
2270
+ defp body_preview(ctx, text) do
2271
+ flat = to_string(clean(ctx, String.trim(Regex.replace(~r/\s+/, to_string(text), " "))))
2272
+ points = String.codepoints(flat)
2273
+
2274
+ if length(points) > @body_preview_length,
2275
+ do: Enum.join(Enum.take(points, @body_preview_length)) <> "...",
2276
+ else: flat
2277
+ end
2278
+
1935
2279
  def result_headers_impl(ctx) do
1936
2280
  response = S.getprop(ctx, "response")
1937
2281
  result = S.getprop(ctx, "result")
@@ -1955,17 +2299,28 @@ defmodule ProjectName.Utility do
1955
2299
  # untouched.
1956
2300
  defp strip_action(reqdata), do: omit_keys(reqdata, ["$action"])
1957
2301
 
1958
- # A header argument travels as a header, which prepare_headers_impl sends, so
1959
- # the body is built from the request data without it.
1960
- defp header_arg_names(point) do
1961
- aheader = if point != nil, do: S.getpath(point, "args.header"), else: nil
2302
+ # A header, cookie or query argument travels where prepare_headers_impl or
2303
+ # prepare_query_impl sends it, so the body is built from the request data
2304
+ # without it, unless the point marks it as a field the body keeps.
2305
+ defp routed_arg_names(ctx) do
2306
+ (call_args(ctx, "header") ++ call_args(ctx, "cookie") ++ call_args(ctx, "query"))
2307
+ |> Enum.map(&elem(&1, 0))
2308
+ |> Enum.reject(&field_arg?(ctx, &1))
2309
+ end
1962
2310
 
1963
- if S.islist(aheader) and S.size(aheader) > 0 do
1964
- Enum.map(0..(S.size(aheader) - 1), &S.getprop(S.getelem(aheader, &1), "name"))
1965
- |> Enum.filter(&(is_binary(&1) and &1 != ""))
1966
- else
1967
- []
1968
- end
2311
+ defp field_arg?(ctx, name) do
2312
+ point = S.getprop(ctx, "point")
2313
+
2314
+ point != nil and
2315
+ Enum.any?(["header", "cookie", "query"], fn kind ->
2316
+ defs = S.getpath(point, "args." <> kind)
2317
+
2318
+ S.islist(defs) and S.size(defs) > 0 and
2319
+ Enum.any?(0..(S.size(defs) - 1), fn i ->
2320
+ ad = S.getelem(defs, i)
2321
+ name == S.getprop(ad, "name") and true == S.getprop(ad, "field")
2322
+ end)
2323
+ end)
1969
2324
  end
1970
2325
 
1971
2326
  defp omit_keys(reqdata, names) do
@@ -1987,7 +2342,7 @@ defmodule ProjectName.Utility do
1987
2342
  point = S.getprop(ctx, "point")
1988
2343
  if spec != nil, do: S.setprop(spec, "step", "reqform")
1989
2344
 
1990
- data = omit_keys(S.getprop(ctx, "reqdata"), header_arg_names(point))
2345
+ data = omit_keys(S.getprop(ctx, "reqdata"), routed_arg_names(ctx))
1991
2346
  transform = H.to_map(S.getprop(point, "transform"))
1992
2347
 
1993
2348
  reqdata =
@@ -2089,19 +2444,37 @@ defmodule ProjectName.Utility do
2089
2444
  has_ua =
2090
2445
  Enum.any?(H.entries(headers_node), fn {k, _v} -> String.downcase(to_string(k)) == "user-agent" end)
2091
2446
 
2447
+ with_body = method in [:post, :put, :patch, :delete] and is_binary(body)
2448
+ content_type? = fn {k, _v} -> String.downcase(to_string(k)) == "content-type" end
2449
+
2450
+ # :httpc takes a body's content type beside the headers, not among them.
2451
+ ctype =
2452
+ case Enum.find(H.entries(headers_node), content_type?) do
2453
+ {_k, v} -> to_string(v)
2454
+ nil -> "application/json"
2455
+ end
2456
+
2457
+ pairs =
2458
+ if with_body,
2459
+ do: Enum.reject(H.entries(headers_node), content_type?),
2460
+ else: H.entries(headers_node)
2461
+
2092
2462
  hlist0 =
2093
- Enum.map(H.entries(headers_node), fn {k, v} ->
2463
+ Enum.map(pairs, fn {k, v} ->
2094
2464
  {String.to_charlist(to_string(k)), String.to_charlist(to_string(v))}
2095
2465
  end)
2096
2466
 
2097
2467
  hlist =
2098
2468
  if has_ua, do: hlist0, else: [{~c"User-Agent", String.to_charlist(@default_user_agent)} | hlist0]
2099
2469
 
2470
+ # The default User-Agent is recorded with the headers the request sent.
2471
+ if not has_ua, do: S.setprop(headers_node, "user-agent", @default_user_agent)
2472
+
2100
2473
  url = String.to_charlist(fullurl)
2101
2474
 
2102
2475
  request =
2103
- if method in [:post, :put, :patch, :delete] and is_binary(body) do
2104
- {url, hlist, ~c"application/json", body}
2476
+ if with_body do
2477
+ {url, hlist, String.to_charlist(ctype), body}
2105
2478
  else
2106
2479
  {url, hlist}
2107
2480
  end
@@ -2124,14 +2497,14 @@ defmodule ProjectName.Utility do
2124
2497
 
2125
2498
  body_str = if is_binary(resp_body), do: resp_body, else: to_string(resp_body)
2126
2499
 
2127
- json_body =
2128
- if String.length(body_str) > 0 do
2500
+ {json_body, unreadable} =
2501
+ if String.trim(body_str) != "" do
2129
2502
  case safe_json(body_str) do
2130
- {:ok, v} -> v
2131
- _ -> nil
2503
+ {:ok, v} -> {v, false}
2504
+ _ -> {nil, true}
2132
2505
  end
2133
2506
  else
2134
- nil
2507
+ {nil, false}
2135
2508
  end
2136
2509
 
2137
2510
  status_text = if status < 400, do: "OK", else: "Error"
@@ -2141,7 +2514,8 @@ defmodule ProjectName.Utility do
2141
2514
  "statusText", status_text,
2142
2515
  "headers", rh,
2143
2516
  "json", fn -> json_body end,
2144
- "body", body_str
2517
+ "body", body_str,
2518
+ "unreadable", unreadable
2145
2519
  ]), nil}
2146
2520
 
2147
2521
  {:error, reason} ->