@voxgig/sdkgen 4.34.0 → 4.34.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/voxgig-sdkgen +1 -1
- package/dist/action/copies.d.ts +4 -3
- package/dist/action/copies.js +142 -45
- package/dist/action/copies.js.map +1 -1
- package/dist/action/doctor.d.ts +1 -0
- package/dist/action/doctor.js +6 -2
- package/dist/action/doctor.js.map +1 -1
- package/dist/action/package.d.ts +3 -1
- package/dist/action/package.js +12 -5
- package/dist/action/package.js.map +1 -1
- package/dist/action/resolve.d.ts +11 -2
- package/dist/action/resolve.js +27 -0
- package/dist/action/resolve.js.map +1 -1
- package/dist/admin/npm-trust.js +7 -7
- package/dist/admin/npm-trust.js.map +1 -1
- package/dist/cmp/AgentGuide.js +4 -3
- package/dist/cmp/AgentGuide.js.map +1 -1
- package/dist/cmp/AgentGuideFeature.js +3 -2
- package/dist/cmp/AgentGuideFeature.js.map +1 -1
- package/dist/cmp/AgentGuideTop.js +2 -1
- package/dist/cmp/AgentGuideTop.js.map +1 -1
- package/dist/cmp/Changelog.js +2 -1
- package/dist/cmp/Changelog.js.map +1 -1
- package/dist/cmp/Deploy.js +2 -1
- package/dist/cmp/Deploy.js.map +1 -1
- package/dist/cmp/Entity.js +2 -2
- package/dist/cmp/Entity.js.map +1 -1
- package/dist/cmp/ExternalTarget.js +2 -1
- package/dist/cmp/ExternalTarget.js.map +1 -1
- package/dist/cmp/Feature.js +2 -1
- package/dist/cmp/Feature.js.map +1 -1
- package/dist/cmp/FeatureHook.js +2 -1
- package/dist/cmp/FeatureHook.js.map +1 -1
- package/dist/cmp/License.js +6 -4
- package/dist/cmp/License.js.map +1 -1
- package/dist/cmp/Main.js +2 -2
- package/dist/cmp/Main.js.map +1 -1
- package/dist/cmp/PublishWorkflow.js +2 -1
- package/dist/cmp/PublishWorkflow.js.map +1 -1
- package/dist/cmp/Readme.js +2 -1
- package/dist/cmp/Readme.js.map +1 -1
- package/dist/cmp/ReadmeEntity.js +4 -4
- package/dist/cmp/ReadmeEntity.js.map +1 -1
- package/dist/cmp/ReadmeErrors.js +6 -4
- package/dist/cmp/ReadmeErrors.js.map +1 -1
- package/dist/cmp/ReadmeExplanation.js +4 -3
- package/dist/cmp/ReadmeExplanation.js.map +1 -1
- package/dist/cmp/ReadmeFeatures.js +4 -3
- package/dist/cmp/ReadmeFeatures.js.map +1 -1
- package/dist/cmp/ReadmeHowto.js +4 -3
- package/dist/cmp/ReadmeHowto.js.map +1 -1
- package/dist/cmp/ReadmeInstall.js +4 -3
- package/dist/cmp/ReadmeInstall.js.map +1 -1
- package/dist/cmp/ReadmeIntro.js +4 -4
- package/dist/cmp/ReadmeIntro.js.map +1 -1
- package/dist/cmp/ReadmeModel.js +6 -3
- package/dist/cmp/ReadmeModel.js.map +1 -1
- package/dist/cmp/ReadmeOptions.js +4 -4
- package/dist/cmp/ReadmeOptions.js.map +1 -1
- package/dist/cmp/ReadmeQuick.js +4 -3
- package/dist/cmp/ReadmeQuick.js.map +1 -1
- package/dist/cmp/ReadmeRef.js +4 -4
- package/dist/cmp/ReadmeRef.js.map +1 -1
- package/dist/cmp/ReadmeRefFeatures.js +2 -1
- package/dist/cmp/ReadmeRefFeatures.js.map +1 -1
- package/dist/cmp/ReadmeStation.js +2 -1
- package/dist/cmp/ReadmeStation.js.map +1 -1
- package/dist/cmp/ReadmeTop.js +104 -35
- package/dist/cmp/ReadmeTop.js.map +1 -1
- package/dist/cmp/ReadmeUnions.js +2 -1
- package/dist/cmp/ReadmeUnions.js.map +1 -1
- package/dist/cmp/Registered.js +4 -3
- package/dist/cmp/Registered.js.map +1 -1
- package/dist/cmp/Security.js +10 -6
- package/dist/cmp/Security.js.map +1 -1
- package/dist/cmp/Test.js +2 -1
- package/dist/cmp/Test.js.map +1 -1
- package/dist/cmp/TestControl.js +2 -1
- package/dist/cmp/TestControl.js.map +1 -1
- package/dist/helpers/component.d.ts +4 -0
- package/dist/helpers/component.js +54 -0
- package/dist/helpers/component.js.map +1 -0
- package/dist/helpers/definition.js +2 -2
- package/dist/helpers/definition.js.map +1 -1
- package/dist/helpers/definitionPlan.d.ts +16 -0
- package/dist/helpers/definitionPlan.js +116 -12
- package/dist/helpers/definitionPlan.js.map +1 -1
- package/dist/helpers/featureSource.d.ts +2 -1
- package/dist/helpers/featureSource.js +44 -2
- package/dist/helpers/featureSource.js.map +1 -1
- package/dist/helpers/flowGuard.d.ts +8 -0
- package/dist/helpers/flowGuard.js +84 -0
- package/dist/helpers/flowGuard.js.map +1 -0
- package/dist/helpers/generated.d.ts +26 -0
- package/dist/helpers/generated.js +363 -0
- package/dist/helpers/generated.js.map +1 -0
- package/dist/helpers/mcpTools.d.ts +11 -0
- package/dist/helpers/mcpTools.js +28 -0
- package/dist/helpers/mcpTools.js.map +1 -0
- package/dist/helpers/media.d.ts +9 -0
- package/dist/helpers/media.js +61 -0
- package/dist/helpers/media.js.map +1 -0
- package/dist/helpers/modelNames.js +147 -14
- package/dist/helpers/modelNames.js.map +1 -1
- package/dist/helpers/naming.d.ts +11 -1
- package/dist/helpers/naming.js +143 -0
- package/dist/helpers/naming.js.map +1 -1
- package/dist/helpers/npm.d.ts +13 -0
- package/dist/helpers/npm.js +41 -0
- package/dist/helpers/npm.js.map +1 -0
- package/dist/helpers/npmScripts.d.ts +4 -0
- package/dist/helpers/npmScripts.js +30 -0
- package/dist/helpers/npmScripts.js.map +1 -0
- package/dist/helpers/opExample.d.ts +5 -4
- package/dist/helpers/opExample.js +10 -7
- package/dist/helpers/opExample.js.map +1 -1
- package/dist/helpers/opShape.d.ts +20 -4
- package/dist/helpers/opShape.js +197 -30
- package/dist/helpers/opShape.js.map +1 -1
- package/dist/helpers/optional.d.ts +20 -0
- package/dist/helpers/optional.js +51 -0
- package/dist/helpers/optional.js.map +1 -0
- package/dist/helpers/packageMeta.d.ts +9 -1
- package/dist/helpers/packageMeta.js +70 -11
- package/dist/helpers/packageMeta.js.map +1 -1
- package/dist/helpers/stdrep.js +3 -0
- package/dist/helpers/stdrep.js.map +1 -1
- package/dist/helpers/testPolicy.d.ts +9 -1
- package/dist/helpers/testPolicy.js +48 -0
- package/dist/helpers/testPolicy.js.map +1 -1
- package/dist/helpers/text.d.ts +2 -0
- package/dist/helpers/text.js +27 -0
- package/dist/helpers/text.js.map +1 -0
- package/dist/sdkgen.d.ts +15 -8
- package/dist/sdkgen.js +79 -12
- package/dist/sdkgen.js.map +1 -1
- package/dist/testkit.js +2 -1
- package/dist/testkit.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility.d.ts +2 -1
- package/dist/utility.js +33 -18
- package/dist/utility.js.map +1 -1
- package/model/sdkgen.aontu +24 -1
- package/package.json +8 -2
- package/project/.sdk/model/feature/timeout.aontu +2 -0
- package/project/.sdk/model/target/go-mcp.aontu +2 -0
- package/project/.sdk/src/cmp/c/Config_c.ts +5 -0
- package/project/.sdk/src/cmp/c/EntityTypes_c.ts +1 -1
- package/project/.sdk/src/cmp/c/Entity_c.ts +1 -1
- package/project/.sdk/src/cmp/c/Main_c.ts +4 -20
- package/project/.sdk/src/cmp/c/PrepareAuth_c.ts +169 -51
- package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +22 -13
- package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +10 -5
- package/project/.sdk/src/cmp/c/ReadmeInstall_c.ts +2 -2
- package/project/.sdk/src/cmp/c/ReadmeIntro_c.ts +3 -3
- package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +11 -10
- package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +37 -20
- package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +39 -21
- package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +9 -7
- package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +15 -4
- package/project/.sdk/src/cmp/c/TestClean_c.ts +56 -22
- package/project/.sdk/src/cmp/c/TestDirect_c.ts +2 -2
- package/project/.sdk/src/cmp/c/TestEntity_c.ts +77 -4
- package/project/.sdk/src/cmp/c/fragment/Entity.fragment.c +33 -27
- package/project/.sdk/src/cmp/c/fragment/EntityPatchOp.fragment.c +36 -0
- package/project/.sdk/src/cmp/c/fragment/Main.fragment.c +40 -7
- package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +1 -1
- package/project/.sdk/src/cmp/clojure/Main_clojure.ts +3 -1
- package/project/.sdk/src/cmp/clojure/PrepareAuth_clojure.ts +44 -28
- package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +7 -4
- package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +1 -1
- package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +3 -3
- package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +3 -3
- package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +7 -5
- package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +12 -4
- package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +24 -7
- package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +2 -2
- package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +1 -1
- package/project/.sdk/src/cmp/clojure/TestClean_clojure.ts +53 -23
- package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +64 -5
- package/project/.sdk/src/cmp/clojure/fragment/Entity.fragment.clj +22 -11
- package/project/.sdk/src/cmp/clojure/fragment/EntityListOp.fragment.clj +7 -9
- package/project/.sdk/src/cmp/clojure/fragment/EntityPatchOp.fragment.clj +15 -0
- package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +1 -1
- package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +2 -2
- package/project/.sdk/src/cmp/cpp/Main_cpp.ts +3 -19
- package/project/.sdk/src/cmp/cpp/PrepareAuth_cpp.ts +38 -39
- package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +19 -12
- package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +11 -6
- package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +2 -2
- package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +3 -3
- package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +10 -9
- package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +26 -18
- package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +42 -25
- package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +7 -7
- package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +11 -4
- package/project/.sdk/src/cmp/cpp/TestClean_cpp.ts +69 -21
- package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +135 -6
- package/project/.sdk/src/cmp/cpp/fragment/Entity.fragment.cpp +2 -0
- package/project/.sdk/src/cmp/cpp/fragment/EntityPatchOp.fragment.cpp +28 -0
- package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +1 -1
- package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +1 -1
- package/project/.sdk/src/cmp/csharp/Main_csharp.ts +3 -1
- package/project/.sdk/src/cmp/csharp/Package_csharp.ts +4 -1
- package/project/.sdk/src/cmp/csharp/PrepareAuth_csharp.ts +69 -23
- package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +7 -4
- package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +11 -9
- package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +17 -6
- package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +33 -16
- package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +1 -1
- package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +1 -1
- package/project/.sdk/src/cmp/csharp/TestClean_csharp.ts +67 -14
- package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +43 -31
- package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +187 -15
- package/project/.sdk/src/cmp/csharp/fragment/Entity.fragment.cs +2 -0
- package/project/.sdk/src/cmp/csharp/fragment/EntityBase.fragment.cs +11 -2
- package/project/.sdk/src/cmp/csharp/fragment/EntityPatchOp.fragment.cs +41 -0
- package/project/.sdk/src/cmp/csharp/fragment/Main.fragment.cs +28 -4
- package/project/.sdk/src/cmp/csharp/utility_csharp.ts +6 -0
- package/project/.sdk/src/cmp/elixir/EntityOperation_elixir.ts +5 -0
- package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +3 -3
- package/project/.sdk/src/cmp/elixir/Entity_elixir.ts +22 -1
- package/project/.sdk/src/cmp/elixir/MainEntity_elixir.ts +4 -2
- package/project/.sdk/src/cmp/elixir/Main_elixir.ts +6 -2
- package/project/.sdk/src/cmp/elixir/Package_elixir.ts +7 -0
- package/project/.sdk/src/cmp/elixir/PrepareAuth_elixir.ts +40 -30
- package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +13 -9
- package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +6 -5
- package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +2 -2
- package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +4 -4
- package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +13 -11
- package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +25 -12
- package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +29 -13
- package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +5 -4
- package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +5 -4
- package/project/.sdk/src/cmp/elixir/TestClean_elixir.ts +41 -12
- package/project/.sdk/src/cmp/elixir/TestEntity_elixir.ts +152 -23
- package/project/.sdk/src/cmp/elixir/fragment/Entity.fragment.ex +4 -4
- package/project/.sdk/src/cmp/elixir/fragment/EntityPatchOp.fragment.ex +35 -0
- package/project/.sdk/src/cmp/elixir/fragment/Main.fragment.ex +29 -5
- package/project/.sdk/src/cmp/elixir/fragment/Pipeline.fragment.ex +23 -16
- package/project/.sdk/src/cmp/go/EntityTypes_go.ts +1 -1
- package/project/.sdk/src/cmp/go/Entity_go.ts +1 -1
- package/project/.sdk/src/cmp/go/Main_go.ts +5 -6
- package/project/.sdk/src/cmp/go/PrepareAuth_go.ts +40 -26
- package/project/.sdk/src/cmp/go/ReadmeEntity_go.ts +1 -0
- package/project/.sdk/src/cmp/go/ReadmeExamplesTest_go.ts +6 -1
- package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +1 -1
- package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +3 -3
- package/project/.sdk/src/cmp/go/ReadmeIntro_go.ts +3 -3
- package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +3 -2
- package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +14 -0
- package/project/.sdk/src/cmp/go/ReadmeRef_go.ts +29 -7
- package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +1 -1
- package/project/.sdk/src/cmp/go/TestClean_go.ts +81 -18
- package/project/.sdk/src/cmp/go/TestDirect_go.ts +47 -53
- package/project/.sdk/src/cmp/go/TestEntity_go.ts +204 -24
- package/project/.sdk/src/cmp/go/fragment/Entity.fragment.go +79 -60
- package/project/.sdk/src/cmp/go/fragment/EntityPatchOp.fragment.go +49 -0
- package/project/.sdk/src/cmp/go/fragment/Main.fragment.go +26 -5
- package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +8 -10
- package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +240 -121
- package/project/.sdk/src/cmp/go-mcp/fragment/main.fragment.go +1 -1
- package/project/.sdk/src/cmp/go-mcp/fragment/tools.fragment.go +34 -27
- package/project/.sdk/src/cmp/java/EntityTypes_java.ts +1 -1
- package/project/.sdk/src/cmp/java/Entity_java.ts +1 -1
- package/project/.sdk/src/cmp/java/Main_java.ts +3 -1
- package/project/.sdk/src/cmp/java/PrepareAuth_java.ts +58 -23
- package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +7 -4
- package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +1 -1
- package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +3 -3
- package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +3 -3
- package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +2 -1
- package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +10 -1
- package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +22 -5
- package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +1 -1
- package/project/.sdk/src/cmp/java/TestClean_java.ts +57 -12
- package/project/.sdk/src/cmp/java/TestDirect_java.ts +50 -36
- package/project/.sdk/src/cmp/java/TestEntity_java.ts +180 -13
- package/project/.sdk/src/cmp/java/fragment/Entity.fragment.java +2 -0
- package/project/.sdk/src/cmp/java/fragment/EntityBase.fragment.java +5 -3
- package/project/.sdk/src/cmp/java/fragment/EntityPatchOp.fragment.java +45 -0
- package/project/.sdk/src/cmp/js/EntityTypes_js.ts +1 -1
- package/project/.sdk/src/cmp/js/Entity_js.ts +1 -1
- package/project/.sdk/src/cmp/js/Main_js.ts +2 -0
- package/project/.sdk/src/cmp/js/Package_js.ts +11 -8
- package/project/.sdk/src/cmp/js/PrepareAuth_js.ts +39 -27
- package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +7 -4
- package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +0 -3
- package/project/.sdk/src/cmp/js/ReadmeInstall_js.ts +3 -3
- package/project/.sdk/src/cmp/js/ReadmeIntro_js.ts +3 -3
- package/project/.sdk/src/cmp/js/ReadmeModel_js.ts +4 -3
- package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +17 -0
- package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +37 -8
- package/project/.sdk/src/cmp/js/ReadmeTopHowto_js.ts +2 -3
- package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +1 -1
- package/project/.sdk/src/cmp/js/TestClean_js.ts +52 -8
- package/project/.sdk/src/cmp/js/TestDirect_js.ts +81 -54
- package/project/.sdk/src/cmp/js/TestEntity_js.ts +95 -2
- package/project/.sdk/src/cmp/js/TestLive_js.ts +4 -3
- package/project/.sdk/src/cmp/js/fragment/Direct.test.fragment.js +4 -0
- package/project/.sdk/src/cmp/js/fragment/Entity.fragment.js +2 -0
- package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +2 -0
- package/project/.sdk/src/cmp/js/fragment/EntityBase.fragment.js +51 -25
- package/project/.sdk/src/cmp/js/fragment/EntityPatchOp.fragment.js +129 -0
- package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +39 -15
- package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +4 -0
- package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +1 -1
- package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +1 -1
- package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +3 -1
- package/project/.sdk/src/cmp/kotlin/PrepareAuth_kotlin.ts +56 -31
- package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +7 -4
- package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +1 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +2 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +10 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +22 -5
- package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +1 -1
- package/project/.sdk/src/cmp/kotlin/TestClean_kotlin.ts +45 -10
- package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +49 -26
- package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +168 -10
- package/project/.sdk/src/cmp/kotlin/fragment/Entity.fragment.kt +2 -0
- package/project/.sdk/src/cmp/kotlin/fragment/EntityBase.fragment.kt +2 -1
- package/project/.sdk/src/cmp/kotlin/fragment/EntityPatchOp.fragment.kt +40 -0
- package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/Entity_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/Main_lua.ts +2 -1
- package/project/.sdk/src/cmp/lua/PrepareAuth_lua.ts +42 -23
- package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +7 -4
- package/project/.sdk/src/cmp/lua/ReadmeExamplesTest_lua.ts +8 -2
- package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/ReadmeInstall_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeIntro_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +3 -2
- package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +9 -1
- package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +22 -6
- package/project/.sdk/src/cmp/lua/ReadmeTopTest_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/TestClean_lua.ts +46 -12
- package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +100 -124
- package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +173 -20
- package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +85 -48
- package/project/.sdk/src/cmp/lua/fragment/EntityPatchOp.fragment.lua +34 -0
- package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +28 -6
- package/project/.sdk/src/cmp/ocaml/EntityOperation_ocaml.ts +8 -11
- package/project/.sdk/src/cmp/ocaml/Entity_ocaml.ts +8 -3
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +2 -1
- package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +7 -5
- package/project/.sdk/src/cmp/ocaml/PrepareAuth_ocaml.ts +39 -34
- package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +7 -4
- package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +3 -8
- package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +2 -2
- package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +3 -3
- package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +2 -1
- package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +9 -1
- package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +22 -6
- package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +3 -7
- package/project/.sdk/src/cmp/ocaml/TestClean_ocaml.ts +47 -14
- package/project/.sdk/src/cmp/ocaml/TestEntity_ocaml.ts +88 -3
- package/project/.sdk/src/cmp/ocaml/fragment/RunOp.fragment.ml +10 -11
- package/project/.sdk/src/cmp/ocaml/utility_ocaml.ts +7 -0
- package/project/.sdk/src/cmp/perl/Entity_perl.ts +1 -1
- package/project/.sdk/src/cmp/perl/Main_perl.ts +3 -1
- package/project/.sdk/src/cmp/perl/Package_perl.ts +5 -4
- package/project/.sdk/src/cmp/perl/PrepareAuth_perl.ts +48 -33
- package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +9 -4
- package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +1 -1
- package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +9 -3
- package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +3 -3
- package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +7 -5
- package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +12 -4
- package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +26 -9
- package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +1 -1
- package/project/.sdk/src/cmp/perl/TestClean_perl.ts +42 -11
- package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +121 -149
- package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +178 -17
- package/project/.sdk/src/cmp/perl/fragment/Entity.fragment.pm +16 -2
- package/project/.sdk/src/cmp/perl/fragment/EntityListOp.fragment.pm +2 -13
- package/project/.sdk/src/cmp/perl/fragment/EntityPatchOp.fragment.pm +32 -0
- package/project/.sdk/src/cmp/perl/fragment/Main.fragment.pm +23 -5
- package/project/.sdk/src/cmp/perl/utility_perl.ts +16 -0
- package/project/.sdk/src/cmp/php/EntityTypes_php.ts +3 -3
- package/project/.sdk/src/cmp/php/Entity_php.ts +4 -3
- package/project/.sdk/src/cmp/php/MainEntity_php.ts +1 -1
- package/project/.sdk/src/cmp/php/Main_php.ts +3 -1
- package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
- package/project/.sdk/src/cmp/php/PrepareAuth_php.ts +36 -28
- package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +7 -4
- package/project/.sdk/src/cmp/php/ReadmeExamplesTest_php.ts +3 -3
- package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +1 -1
- package/project/.sdk/src/cmp/php/ReadmeInstall_php.ts +2 -2
- package/project/.sdk/src/cmp/php/ReadmeIntro_php.ts +3 -3
- package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +2 -1
- package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +9 -1
- package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +23 -6
- package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +1 -1
- package/project/.sdk/src/cmp/php/TestClean_php.ts +73 -12
- package/project/.sdk/src/cmp/php/TestDirect_php.ts +95 -127
- package/project/.sdk/src/cmp/php/TestEntity_php.ts +219 -20
- package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +82 -45
- package/project/.sdk/src/cmp/php/fragment/EntityPatchOp.fragment.php +38 -0
- package/project/.sdk/src/cmp/php/fragment/Main.fragment.php +26 -5
- package/project/.sdk/src/cmp/py/EntityTypes_py.ts +1 -1
- package/project/.sdk/src/cmp/py/Entity_py.ts +2 -2
- package/project/.sdk/src/cmp/py/Main_py.ts +6 -2
- package/project/.sdk/src/cmp/py/Package_py.ts +7 -0
- package/project/.sdk/src/cmp/py/PrepareAuth_py.ts +52 -26
- package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +7 -4
- package/project/.sdk/src/cmp/py/ReadmeExamplesTest_py.ts +12 -6
- package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +1 -1
- package/project/.sdk/src/cmp/py/ReadmeInstall_py.ts +3 -3
- package/project/.sdk/src/cmp/py/ReadmeIntro_py.ts +3 -3
- package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +2 -1
- package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +9 -1
- package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +23 -6
- package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +1 -1
- package/project/.sdk/src/cmp/py/TestClean_py.ts +41 -10
- package/project/.sdk/src/cmp/py/TestDirect_py.ts +91 -121
- package/project/.sdk/src/cmp/py/TestEntity_py.ts +146 -20
- package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +62 -42
- package/project/.sdk/src/cmp/py/fragment/EntityPatchOp.fragment.py +27 -0
- package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +23 -5
- package/project/.sdk/src/cmp/py-data/Main_py-data.ts +1 -1
- package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/Entity_rb.ts +1 -1
- package/project/.sdk/src/cmp/rb/Main_rb.ts +5 -6
- package/project/.sdk/src/cmp/rb/Package_rb.ts +3 -1
- package/project/.sdk/src/cmp/rb/PrepareAuth_rb.ts +30 -28
- package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +9 -5
- package/project/.sdk/src/cmp/rb/ReadmeExamplesTest_rb.ts +16 -8
- package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +1 -1
- package/project/.sdk/src/cmp/rb/ReadmeInstall_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeIntro_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/ReadmeModel_rb.ts +3 -2
- package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +14 -5
- package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +26 -8
- package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +1 -1
- package/project/.sdk/src/cmp/rb/TestClean_rb.ts +36 -10
- package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +95 -126
- package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +177 -21
- package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +49 -29
- package/project/.sdk/src/cmp/rb/fragment/EntityListOp.fragment.rb +2 -11
- package/project/.sdk/src/cmp/rb/fragment/EntityPatchOp.fragment.rb +31 -0
- package/project/.sdk/src/cmp/rb/fragment/Main.fragment.rb +19 -5
- package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +1 -1
- package/project/.sdk/src/cmp/rust/Entity_rust.ts +2 -2
- package/project/.sdk/src/cmp/rust/Main_rust.ts +7 -6
- package/project/.sdk/src/cmp/rust/PrepareAuth_rust.ts +56 -29
- package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +16 -9
- package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +11 -4
- package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +3 -3
- package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +3 -3
- package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +12 -9
- package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +25 -17
- package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +35 -21
- package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +6 -8
- package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +13 -5
- package/project/.sdk/src/cmp/rust/TestClean_rust.ts +80 -21
- package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +124 -79
- package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +164 -17
- package/project/.sdk/src/cmp/rust/fragment/Entity.fragment.rs +44 -23
- package/project/.sdk/src/cmp/rust/fragment/EntityPatchOp.fragment.rs +41 -0
- package/project/.sdk/src/cmp/rust/fragment/Main.fragment.rs +39 -9
- package/project/.sdk/src/cmp/scala/Config_scala.ts +4 -0
- package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +1 -1
- package/project/.sdk/src/cmp/scala/Entity_scala.ts +1 -1
- package/project/.sdk/src/cmp/scala/Main_scala.ts +4 -20
- package/project/.sdk/src/cmp/scala/PrepareAuth_scala.ts +56 -24
- package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +7 -4
- package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +1 -1
- package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +2 -1
- package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +10 -1
- package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +22 -5
- package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +1 -1
- package/project/.sdk/src/cmp/scala/TestClean_scala.ts +39 -10
- package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +113 -3
- package/project/.sdk/src/cmp/scala/fragment/Entity.fragment.scala +2 -0
- package/project/.sdk/src/cmp/scala/fragment/EntityBase.fragment.scala +4 -2
- package/project/.sdk/src/cmp/scala/fragment/EntityPatchOp.fragment.scala +33 -0
- package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +3 -3
- package/project/.sdk/src/cmp/swift/Entity_swift.ts +1 -1
- package/project/.sdk/src/cmp/swift/Main_swift.ts +6 -2
- package/project/.sdk/src/cmp/swift/PrepareAuth_swift.ts +56 -29
- package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +7 -4
- package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +1 -1
- package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +3 -3
- package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +3 -3
- package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +2 -1
- package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +10 -1
- package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +21 -5
- package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +1 -1
- package/project/.sdk/src/cmp/swift/TestClean_swift.ts +44 -10
- package/project/.sdk/src/cmp/swift/TestEntity_swift.ts +90 -2
- package/project/.sdk/src/cmp/swift/fragment/Entity.fragment.swift +2 -0
- package/project/.sdk/src/cmp/swift/fragment/EntityBase.fragment.swift +9 -1
- package/project/.sdk/src/cmp/swift/fragment/EntityPatchOp.fragment.swift +24 -0
- package/project/.sdk/src/cmp/swift/fragment/Main.fragment.swift +23 -3
- package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +9 -3
- package/project/.sdk/src/cmp/ts/Entity_ts.ts +5 -5
- package/project/.sdk/src/cmp/ts/Main_ts.ts +4 -3
- package/project/.sdk/src/cmp/ts/Package_ts.ts +18 -10
- package/project/.sdk/src/cmp/ts/PrepareAuth_ts.ts +37 -28
- package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +7 -4
- package/project/.sdk/src/cmp/ts/ReadmeExamplesTest_ts.ts +39 -21
- package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +0 -3
- package/project/.sdk/src/cmp/ts/ReadmeInstall_ts.ts +3 -3
- package/project/.sdk/src/cmp/ts/ReadmeIntro_ts.ts +3 -3
- package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +4 -3
- package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +10 -1
- package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +37 -8
- package/project/.sdk/src/cmp/ts/ReadmeTopHowto_ts.ts +2 -3
- package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +1 -1
- package/project/.sdk/src/cmp/ts/TestClean_ts.ts +52 -8
- package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +50 -109
- package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +92 -2
- package/project/.sdk/src/cmp/ts/TestLive_ts.ts +4 -3
- package/project/.sdk/src/cmp/ts/fragment/Direct.test.fragment.ts +3 -0
- package/project/.sdk/src/cmp/ts/fragment/Entity.fragment.ts +2 -0
- package/project/.sdk/src/cmp/ts/fragment/Entity.test.fragment.ts +3 -1
- package/project/.sdk/src/cmp/ts/fragment/EntityBase.fragment.ts +49 -24
- package/project/.sdk/src/cmp/ts/fragment/EntityPatchOp.fragment.ts +126 -0
- package/project/.sdk/src/cmp/ts/fragment/Main.fragment.ts +50 -18
- package/project/.sdk/src/cmp/zig/Entity_zig.ts +2 -2
- package/project/.sdk/src/cmp/zig/Main_zig.ts +5 -22
- package/project/.sdk/src/cmp/zig/Package_zig.ts +11 -2
- package/project/.sdk/src/cmp/zig/PrepareAuth_zig.ts +57 -31
- package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +17 -9
- package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +14 -4
- package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +2 -2
- package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +3 -3
- package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +12 -10
- package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +29 -12
- package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +45 -22
- package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +8 -4
- package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +10 -3
- package/project/.sdk/src/cmp/zig/TestClean_zig.ts +67 -28
- package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +54 -5
- package/project/.sdk/src/cmp/zig/Test_zig.ts +1 -0
- package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +44 -34
- package/project/.sdk/src/cmp/zig/fragment/EntityPatchOp.fragment.zig +26 -0
- package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +30 -6
- package/project/.sdk/src/cmp/zig/fragment/Root.fragment.zig +1 -0
- package/project/.sdk/tm/c/LICENSE +1 -1
- package/project/.sdk/tm/c/core/context.c +2 -1
- package/project/.sdk/tm/c/core/helpers.c +21 -0
- package/project/.sdk/tm/c/core/response.c +103 -0
- package/project/.sdk/tm/c/core/sdk.h +26 -0
- package/project/.sdk/tm/c/core/spec.c +10 -0
- package/project/.sdk/tm/c/feature/test.c +46 -2
- package/project/.sdk/tm/c/feature/validate.c +2 -0
- package/project/.sdk/tm/c/tests/feature_harness.h +1 -1
- package/project/.sdk/tm/c/tests/primary_utility_test.c +9 -5
- package/project/.sdk/tm/c/tests/server_variable_test.c +80 -0
- package/project/.sdk/tm/c/utility/make_fetch_def.c +5 -1
- package/project/.sdk/tm/c/utility/make_options.c +84 -6
- package/project/.sdk/tm/c/utility/make_point.c +100 -8
- package/project/.sdk/tm/c/utility/make_spec.c +17 -1
- package/project/.sdk/tm/c/utility/make_url.c +38 -1
- package/project/.sdk/tm/c/utility/media.c +107 -0
- package/project/.sdk/tm/c/utility/param.c +52 -28
- package/project/.sdk/tm/c/utility/prepare_body.c +1 -0
- package/project/.sdk/tm/c/utility/prepare_headers.c +199 -29
- package/project/.sdk/tm/c/utility/prepare_query.c +24 -2
- package/project/.sdk/tm/c/utility/result_body.c +4 -0
- package/project/.sdk/tm/c/utility/transform_request.c +54 -17
- package/project/.sdk/tm/clojure/LICENSE +1 -1
- package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +0 -3
- package/project/.sdk/tm/clojure/src/sdk/client.clj +19 -5
- package/project/.sdk/tm/clojure/src/sdk/core.clj +415 -117
- package/project/.sdk/tm/clojure/src/sdk/features.clj +44 -20
- package/project/.sdk/tm/clojure/test/sdk/test/feature.clj +21 -1
- package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +10 -2
- package/project/.sdk/tm/cpp/LICENSE +1 -1
- package/project/.sdk/tm/cpp/core/types.hpp +131 -7
- package/project/.sdk/tm/cpp/feature/test.hpp +32 -2
- package/project/.sdk/tm/cpp/feature/timeout.hpp +29 -9
- package/project/.sdk/tm/cpp/feature/validate.hpp +2 -0
- package/project/.sdk/tm/cpp/test/feature_test.cpp +37 -0
- package/project/.sdk/tm/cpp/test/harness.hpp +1 -1
- package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +6 -2
- package/project/.sdk/tm/cpp/test/server_variable_test.cpp +57 -0
- package/project/.sdk/tm/cpp/utility/cookie.hpp +36 -0
- package/project/.sdk/tm/cpp/utility/pipeline.hpp +441 -82
- package/project/.sdk/tm/csharp/LICENSE +1 -1
- package/project/.sdk/tm/csharp/core/Context.cs +1 -1
- package/project/.sdk/tm/csharp/core/Helpers.cs +17 -0
- package/project/.sdk/tm/csharp/core/Response.cs +75 -0
- package/project/.sdk/tm/csharp/core/Spec.cs +3 -0
- package/project/.sdk/tm/csharp/feature/TestFeature.cs +41 -3
- package/project/.sdk/tm/csharp/feature/TimeoutFeature.cs +31 -3
- package/project/.sdk/tm/csharp/feature/ValidateFeature.cs +2 -0
- package/project/.sdk/tm/csharp/test/FeatureHarness.cs +1 -1
- package/project/.sdk/tm/csharp/test/FeatureTest.cs +35 -0
- package/project/.sdk/tm/csharp/test/PipelineTest.cs +28 -0
- package/project/.sdk/tm/csharp/test/Runner.cs +119 -0
- package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +8 -3
- package/project/.sdk/tm/csharp/utility/Fetcher.cs +25 -7
- package/project/.sdk/tm/csharp/utility/MakeFetchDef.cs +1 -5
- package/project/.sdk/tm/csharp/utility/MakeOptions.cs +8 -6
- package/project/.sdk/tm/csharp/utility/MakePoint.cs +68 -17
- package/project/.sdk/tm/csharp/utility/MakeSpec.cs +24 -6
- package/project/.sdk/tm/csharp/utility/MakeUrl.cs +21 -1
- package/project/.sdk/tm/csharp/utility/Media.cs +124 -0
- package/project/.sdk/tm/csharp/utility/Param.cs +57 -20
- package/project/.sdk/tm/csharp/utility/PrepareBody.cs +4 -0
- package/project/.sdk/tm/csharp/utility/PrepareHeaders.cs +103 -24
- package/project/.sdk/tm/csharp/utility/PrepareQuery.cs +33 -3
- package/project/.sdk/tm/csharp/utility/ResultBody.cs +5 -0
- package/project/.sdk/tm/csharp/utility/TransformRequest.cs +21 -13
- package/project/.sdk/tm/csharp/utility/struct/Struct.cs +3 -2
- package/project/.sdk/tm/elixir/LICENSE +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/context.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/core.ex +7 -2
- package/project/.sdk/tm/elixir/lib/projectname/entity_base.ex +43 -12
- package/project/.sdk/tm/elixir/lib/projectname/feature/test.ex +47 -21
- package/project/.sdk/tm/elixir/lib/projectname/feature/validate.ex +2 -0
- package/project/.sdk/tm/elixir/lib/projectname/utility.ex +482 -129
- package/project/.sdk/tm/elixir/test/support/feature_harness.ex +1 -0
- package/project/.sdk/tm/go/LICENSE +1 -1
- package/project/.sdk/tm/go/core/context.go +1 -1
- package/project/.sdk/tm/go/core/helpers.go +19 -1
- package/project/.sdk/tm/go/core/response.go +72 -0
- package/project/.sdk/tm/go/core/spec.go +3 -0
- package/project/.sdk/tm/go/core/types.go +9 -1
- package/project/.sdk/tm/go/feature/test_feature.go +44 -3
- package/project/.sdk/tm/go/feature/timeout_feature.go +39 -22
- package/project/.sdk/tm/go/feature/validate_feature.go +2 -0
- package/project/.sdk/tm/go/test/feature_corpus_test.go +45 -1
- package/project/.sdk/tm/go/test/feature_harness_test.go +1 -1
- package/project/.sdk/tm/go/test/feature_test.go +86 -0
- package/project/.sdk/tm/go/test/primary_utility_test.go +37 -1
- package/project/.sdk/tm/go/test/testsupport_test.go +106 -0
- package/project/.sdk/tm/go/utility/fetcher.go +20 -6
- package/project/.sdk/tm/go/utility/make_fetch_def.go +1 -7
- package/project/.sdk/tm/go/utility/make_options.go +12 -6
- package/project/.sdk/tm/go/utility/make_point.go +52 -3
- package/project/.sdk/tm/go/utility/make_spec.go +23 -3
- package/project/.sdk/tm/go/utility/make_url.go +23 -1
- package/project/.sdk/tm/go/utility/media.go +111 -0
- package/project/.sdk/tm/go/utility/param.go +61 -20
- package/project/.sdk/tm/go/utility/prepare_body.go +3 -0
- package/project/.sdk/tm/go/utility/prepare_headers.go +108 -22
- package/project/.sdk/tm/go/utility/prepare_query.go +25 -2
- package/project/.sdk/tm/go/utility/result_body.go +8 -0
- package/project/.sdk/tm/go/utility/transform_request.go +20 -9
- package/project/.sdk/tm/java/LICENSE +1 -1
- package/project/.sdk/tm/java/core/Context.java +1 -1
- package/project/.sdk/tm/java/core/Helpers.java +13 -0
- package/project/.sdk/tm/java/core/Response.java +61 -0
- package/project/.sdk/tm/java/core/SdkClient.java +21 -3
- package/project/.sdk/tm/java/core/SdkEntity.java +2 -0
- package/project/.sdk/tm/java/core/Spec.java +4 -0
- package/project/.sdk/tm/java/feature/TestFeature.java +46 -3
- package/project/.sdk/tm/java/feature/TimeoutFeature.java +51 -18
- package/project/.sdk/tm/java/feature/ValidateFeature.java +2 -0
- package/project/.sdk/tm/java/test/FeatureCorpusTest.java +93 -35
- package/project/.sdk/tm/java/test/FeatureHarness.java +1 -0
- package/project/.sdk/tm/java/test/FeatureTest.java +33 -0
- package/project/.sdk/tm/java/test/PipelineTest.java +4 -1
- package/project/.sdk/tm/java/test/RunnerSupport.java +97 -0
- package/project/.sdk/tm/java/utility/Clean.java +17 -7
- package/project/.sdk/tm/java/utility/Fetcher.java +27 -3
- package/project/.sdk/tm/java/utility/MakeFetchDef.java +1 -7
- package/project/.sdk/tm/java/utility/MakePoint.java +62 -10
- package/project/.sdk/tm/java/utility/MakeSpec.java +26 -1
- package/project/.sdk/tm/java/utility/MakeUrl.java +23 -1
- package/project/.sdk/tm/java/utility/Media.java +117 -0
- package/project/.sdk/tm/java/utility/Param.java +59 -20
- package/project/.sdk/tm/java/utility/PrepareBody.java +3 -0
- package/project/.sdk/tm/java/utility/PrepareHeaders.java +76 -18
- package/project/.sdk/tm/java/utility/PrepareMethod.java +2 -1
- package/project/.sdk/tm/java/utility/PrepareQuery.java +26 -2
- package/project/.sdk/tm/java/utility/ResultBody.java +5 -0
- package/project/.sdk/tm/java/utility/TransformRequest.java +24 -11
- package/project/.sdk/tm/js/LICENSE +1 -1
- package/project/.sdk/tm/js/src/Context.js +1 -1
- package/project/.sdk/tm/js/src/Control.js +1 -0
- package/project/.sdk/tm/js/src/Response.js +10 -1
- package/project/.sdk/tm/js/src/Spec.js +3 -0
- package/project/.sdk/tm/js/src/feature/base/BaseFeature.js +28 -0
- package/project/.sdk/tm/js/src/feature/netsim/NetsimFeature.js +10 -8
- package/project/.sdk/tm/js/src/feature/ratelimit/RatelimitFeature.js +8 -6
- package/project/.sdk/tm/js/src/feature/retry/RetryFeature.js +17 -4
- package/project/.sdk/tm/js/src/feature/test/TestFeature.js +40 -12
- package/project/.sdk/tm/js/src/feature/timeout/TimeoutFeature.js +17 -3
- package/project/.sdk/tm/js/src/feature/validate/ValidateFeature.js +2 -0
- package/project/.sdk/tm/js/src/utility/CleanUtility.js +25 -1
- package/project/.sdk/tm/js/src/utility/FetcherUtility.js +23 -1
- package/project/.sdk/tm/js/src/utility/MakeErrorUtility.js +2 -2
- package/project/.sdk/tm/js/src/utility/MakeFetchDefUtility.js +14 -2
- package/project/.sdk/tm/js/src/utility/MakeOptionsUtility.js +6 -6
- package/project/.sdk/tm/js/src/utility/MakePointUtility.js +39 -2
- package/project/.sdk/tm/js/src/utility/MakeRequestUtility.js +27 -2
- package/project/.sdk/tm/js/src/utility/MakeResponseUtility.js +2 -1
- package/project/.sdk/tm/js/src/utility/MakeSpecUtility.js +14 -1
- package/project/.sdk/tm/js/src/utility/MakeUrlUtility.js +23 -0
- package/project/.sdk/tm/js/src/utility/MediaUtility.js +145 -0
- package/project/.sdk/tm/js/src/utility/ParamUtility.js +46 -18
- package/project/.sdk/tm/js/src/utility/PrepareBodyUtility.js +6 -0
- package/project/.sdk/tm/js/src/utility/PrepareHeadersUtility.js +55 -14
- package/project/.sdk/tm/js/src/utility/PrepareMethodUtility.js +9 -0
- package/project/.sdk/tm/js/src/utility/PrepareQueryUtility.js +23 -6
- package/project/.sdk/tm/js/src/utility/ResultBodyUtility.js +60 -3
- package/project/.sdk/tm/js/src/utility/TransformRequestUtility.js +16 -7
- package/project/.sdk/tm/js/test/definition-runner.js +103 -3
- package/project/.sdk/tm/js/test/feature/Corpus.test.js +47 -16
- package/project/.sdk/tm/js/test/feature/harness.js +4 -1
- package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +7 -7
- package/project/.sdk/tm/js/test/feature.test.js +134 -0
- package/project/.sdk/tm/js/test/live-contract.js +73 -3
- package/project/.sdk/tm/js/test/live-entity.js +34 -15
- package/project/.sdk/tm/js/test/live-runner.js +52 -7
- package/project/.sdk/tm/js/test/live-scenarios.js +4 -4
- package/project/.sdk/tm/js/test/pipeline.test.js +52 -1
- package/project/.sdk/tm/js/test/utility.js +30 -4
- package/project/.sdk/tm/kotlin/LICENSE +1 -1
- package/project/.sdk/tm/kotlin/core/Context.kt +1 -1
- package/project/.sdk/tm/kotlin/core/Helpers.kt +8 -0
- package/project/.sdk/tm/kotlin/core/Interfaces.kt +2 -0
- package/project/.sdk/tm/kotlin/core/Response.kt +65 -0
- package/project/.sdk/tm/kotlin/core/SdkClient.kt +20 -3
- package/project/.sdk/tm/kotlin/core/Spec.kt +3 -0
- package/project/.sdk/tm/kotlin/feature/TestFeature.kt +23 -3
- package/project/.sdk/tm/kotlin/feature/TimeoutFeature.kt +42 -15
- package/project/.sdk/tm/kotlin/feature/ValidateFeature.kt +2 -0
- package/project/.sdk/tm/kotlin/test/FeatureHarness.kt +1 -1
- package/project/.sdk/tm/kotlin/test/FeatureTest.kt +32 -0
- package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +90 -0
- package/project/.sdk/tm/kotlin/test/ServerVariableTest.kt +50 -0
- package/project/.sdk/tm/kotlin/utility/CoreUtil.kt +9 -7
- package/project/.sdk/tm/kotlin/utility/Fetcher.kt +24 -4
- package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +26 -0
- package/project/.sdk/tm/kotlin/utility/MakePoint.kt +57 -12
- package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +26 -7
- package/project/.sdk/tm/kotlin/utility/Media.kt +83 -0
- package/project/.sdk/tm/kotlin/utility/Prepare.kt +127 -48
- package/project/.sdk/tm/kotlin/utility/ResultTransform.kt +18 -7
- package/project/.sdk/tm/lua/LICENSE +1 -1
- package/project/.sdk/tm/lua/core/context.lua +1 -1
- package/project/.sdk/tm/lua/core/helpers.lua +103 -0
- package/project/.sdk/tm/lua/core/response.lua +3 -0
- package/project/.sdk/tm/lua/core/spec.lua +3 -0
- package/project/.sdk/tm/lua/feature/test_feature.lua +36 -3
- package/project/.sdk/tm/lua/feature/validate_feature.lua +2 -0
- package/project/.sdk/tm/lua/test/feature_test.lua +1 -1
- package/project/.sdk/tm/lua/test/runner.lua +107 -0
- package/project/.sdk/tm/lua/utility/fetcher.lua +9 -2
- package/project/.sdk/tm/lua/utility/make_fetch_def.lua +2 -6
- package/project/.sdk/tm/lua/utility/make_options.lua +10 -7
- package/project/.sdk/tm/lua/utility/make_point.lua +65 -12
- package/project/.sdk/tm/lua/utility/make_spec.lua +19 -4
- package/project/.sdk/tm/lua/utility/make_url.lua +22 -1
- package/project/.sdk/tm/lua/utility/media.lua +106 -0
- package/project/.sdk/tm/lua/utility/param.lua +5 -45
- package/project/.sdk/tm/lua/utility/prepare_body.lua +5 -0
- package/project/.sdk/tm/lua/utility/prepare_headers.lua +71 -21
- package/project/.sdk/tm/lua/utility/prepare_query.lua +28 -6
- package/project/.sdk/tm/lua/utility/result_body.lua +7 -0
- package/project/.sdk/tm/lua/utility/transform_request.lua +23 -10
- package/project/.sdk/tm/lua/utility/unreadable_body.lua +70 -0
- package/project/.sdk/tm/ocaml/LICENSE +1 -1
- package/project/.sdk/tm/ocaml/sdk_features.ml +56 -10
- package/project/.sdk/tm/ocaml/sdk_helpers.ml +9 -0
- package/project/.sdk/tm/ocaml/sdk_runtime.ml +359 -85
- package/project/.sdk/tm/ocaml/sdk_types.ml +6 -0
- package/project/.sdk/tm/ocaml/test/harness.ml +1 -1
- package/project/.sdk/tm/ocaml/test/t_pipeline.ml +2 -1
- package/project/.sdk/tm/perl/LICENSE +1 -1
- package/project/.sdk/tm/perl/core/context.pm +1 -1
- package/project/.sdk/tm/perl/core/response.pm +2 -0
- package/project/.sdk/tm/perl/core/spec.pm +3 -0
- package/project/.sdk/tm/perl/feature/test_feature.pm +26 -3
- package/project/.sdk/tm/perl/feature/validate_feature.pm +2 -0
- package/project/.sdk/tm/perl/t/feature.t +1 -1
- package/project/.sdk/tm/perl/t/feature_corpus.t +72 -33
- package/project/.sdk/tm/perl/t/runner.pm +86 -0
- package/project/.sdk/tm/perl/t/server_variables.t +39 -0
- package/project/.sdk/tm/perl/utility/clean.pm +12 -7
- package/project/.sdk/tm/perl/utility/fetcher.pm +32 -19
- package/project/.sdk/tm/perl/utility/make_fetch_def.pm +4 -4
- package/project/.sdk/tm/perl/utility/make_options.pm +24 -0
- package/project/.sdk/tm/perl/utility/make_point.pm +55 -9
- package/project/.sdk/tm/perl/utility/make_spec.pm +27 -3
- package/project/.sdk/tm/perl/utility/make_url.pm +13 -1
- package/project/.sdk/tm/perl/utility/media.pm +109 -0
- package/project/.sdk/tm/perl/utility/param.pm +50 -24
- package/project/.sdk/tm/perl/utility/prepare_body.pm +11 -3
- package/project/.sdk/tm/perl/utility/prepare_headers.pm +63 -16
- package/project/.sdk/tm/perl/utility/prepare_method.pm +13 -0
- package/project/.sdk/tm/perl/utility/prepare_query.pm +18 -4
- package/project/.sdk/tm/perl/utility/result_body.pm +60 -0
- package/project/.sdk/tm/perl/utility/transform_request.pm +23 -8
- package/project/.sdk/tm/php/LICENSE +1 -1
- package/project/.sdk/tm/php/core/Context.php +1 -1
- package/project/.sdk/tm/php/core/Response.php +3 -0
- package/project/.sdk/tm/php/core/Spec.php +4 -0
- package/project/.sdk/tm/php/feature/CostFeature.php +2 -7
- package/project/.sdk/tm/php/feature/TestFeature.php +33 -3
- package/project/.sdk/tm/php/feature/ValidateFeature.php +14 -12
- package/project/.sdk/tm/php/test/FeatureCorpusTest.php +90 -35
- package/project/.sdk/tm/php/test/FeatureTest.php +4 -5
- package/project/.sdk/tm/php/test/PipelineTest.php +18 -1
- package/project/.sdk/tm/php/test/Runner.php +86 -0
- package/project/.sdk/tm/php/utility/Clean.php +10 -5
- package/project/.sdk/tm/php/utility/Fetcher.php +48 -6
- package/project/.sdk/tm/php/utility/MakeFetchDef.php +2 -1
- package/project/.sdk/tm/php/utility/MakePoint.php +55 -11
- package/project/.sdk/tm/php/utility/MakeSpec.php +21 -4
- package/project/.sdk/tm/php/utility/MakeUrl.php +16 -1
- package/project/.sdk/tm/php/utility/Media.php +111 -0
- package/project/.sdk/tm/php/utility/Param.php +66 -27
- package/project/.sdk/tm/php/utility/PrepareBody.php +5 -0
- package/project/.sdk/tm/php/utility/PrepareHeaders.php +83 -23
- package/project/.sdk/tm/php/utility/PrepareMethod.php +15 -0
- package/project/.sdk/tm/php/utility/PrepareQuery.php +22 -8
- package/project/.sdk/tm/php/utility/ResultBody.php +71 -0
- package/project/.sdk/tm/php/utility/TransformRequest.php +22 -11
- package/project/.sdk/tm/py/LICENSE +1 -1
- package/project/.sdk/tm/py/pkg/core/context.py +1 -1
- package/project/.sdk/tm/py/pkg/core/response.py +3 -0
- package/project/.sdk/tm/py/pkg/core/spec.py +3 -0
- package/project/.sdk/tm/py/pkg/feature/test_feature.py +27 -3
- package/project/.sdk/tm/py/pkg/feature/validate_feature.py +2 -0
- package/project/.sdk/tm/py/pkg/utility/fetcher.py +17 -7
- package/project/.sdk/tm/py/pkg/utility/make_fetch_def.py +2 -5
- package/project/.sdk/tm/py/pkg/utility/make_options.py +14 -8
- package/project/.sdk/tm/py/pkg/utility/make_point.py +40 -4
- package/project/.sdk/tm/py/pkg/utility/make_spec.py +12 -4
- package/project/.sdk/tm/py/pkg/utility/make_url.py +19 -1
- package/project/.sdk/tm/py/pkg/utility/media.py +88 -0
- package/project/.sdk/tm/py/pkg/utility/param.py +47 -18
- package/project/.sdk/tm/py/pkg/utility/prepare_body.py +4 -0
- package/project/.sdk/tm/py/pkg/utility/prepare_headers.py +56 -20
- package/project/.sdk/tm/py/pkg/utility/prepare_method.py +7 -0
- package/project/.sdk/tm/py/pkg/utility/prepare_query.py +17 -8
- package/project/.sdk/tm/py/pkg/utility/result_body.py +51 -0
- package/project/.sdk/tm/py/pkg/utility/transform_request.py +18 -9
- package/project/.sdk/tm/py/test/feature_harness.py +1 -1
- package/project/.sdk/tm/py/test/runner.py +77 -2
- package/project/.sdk/tm/py/test/test_feature_corpus.py +69 -32
- package/project/.sdk/tm/py-data/LICENSE +1 -1
- package/project/.sdk/tm/py-data/Makefile +2 -2
- package/project/.sdk/tm/rb/LICENSE +1 -1
- package/project/.sdk/tm/rb/core/context.rb +1 -1
- package/project/.sdk/tm/rb/core/response.rb +3 -1
- package/project/.sdk/tm/rb/core/spec.rb +4 -1
- package/project/.sdk/tm/rb/feature/test_feature.rb +27 -8
- package/project/.sdk/tm/rb/feature/validate_feature.rb +3 -1
- package/project/.sdk/tm/rb/test/feature_corpus_test.rb +74 -30
- package/project/.sdk/tm/rb/test/feature_test.rb +1 -1
- package/project/.sdk/tm/rb/test/runner.rb +54 -2
- package/project/.sdk/tm/rb/utility/clean.rb +14 -6
- package/project/.sdk/tm/rb/utility/fetcher.rb +22 -14
- package/project/.sdk/tm/rb/utility/make_fetch_def.rb +2 -4
- package/project/.sdk/tm/rb/utility/make_point.rb +44 -8
- package/project/.sdk/tm/rb/utility/make_spec.rb +14 -2
- package/project/.sdk/tm/rb/utility/make_url.rb +13 -1
- package/project/.sdk/tm/rb/utility/media.rb +75 -0
- package/project/.sdk/tm/rb/utility/param.rb +44 -25
- package/project/.sdk/tm/rb/utility/prepare_body.rb +4 -1
- package/project/.sdk/tm/rb/utility/prepare_headers.rb +50 -16
- package/project/.sdk/tm/rb/utility/prepare_method.rb +6 -0
- package/project/.sdk/tm/rb/utility/prepare_query.rb +12 -4
- package/project/.sdk/tm/rb/utility/result_body.rb +45 -0
- package/project/.sdk/tm/rb/utility/transform_request.rb +17 -7
- package/project/.sdk/tm/rust/LICENSE +1 -1
- package/project/.sdk/tm/rust/core/context.rs +1 -1
- package/project/.sdk/tm/rust/core/helpers.rs +10 -0
- package/project/.sdk/tm/rust/core/response.rs +80 -1
- package/project/.sdk/tm/rust/core/spec.rs +4 -0
- package/project/.sdk/tm/rust/core/types.rs +1 -0
- package/project/.sdk/tm/rust/feature/test.rs +29 -2
- package/project/.sdk/tm/rust/feature/validate.rs +2 -0
- package/project/.sdk/tm/rust/tests/common/mod.rs +108 -1
- package/project/.sdk/tm/rust/utility/clean.rs +0 -2
- package/project/.sdk/tm/rust/utility/fetcher.rs +19 -11
- package/project/.sdk/tm/rust/utility/make_fetch_def.rs +12 -1
- package/project/.sdk/tm/rust/utility/make_options.rs +6 -5
- package/project/.sdk/tm/rust/utility/make_point.rs +80 -16
- package/project/.sdk/tm/rust/utility/make_spec.rs +23 -4
- package/project/.sdk/tm/rust/utility/make_url.rs +39 -2
- package/project/.sdk/tm/rust/utility/media.rs +116 -0
- package/project/.sdk/tm/rust/utility/mod.rs +1 -0
- package/project/.sdk/tm/rust/utility/param.rs +66 -19
- package/project/.sdk/tm/rust/utility/prepare_body.rs +4 -0
- package/project/.sdk/tm/rust/utility/prepare_headers.rs +85 -28
- package/project/.sdk/tm/rust/utility/prepare_query.rs +27 -5
- package/project/.sdk/tm/rust/utility/result_body.rs +15 -2
- package/project/.sdk/tm/rust/utility/transform_request.rs +27 -14
- package/project/.sdk/tm/scala/LICENSE +1 -1
- package/project/.sdk/tm/scala/Makefile +3 -1
- package/project/.sdk/tm/scala/core/Context.scala +1 -1
- package/project/.sdk/tm/scala/core/Contracts.scala +1 -0
- package/project/.sdk/tm/scala/core/Helpers.scala +7 -0
- package/project/.sdk/tm/scala/core/Response.scala +55 -0
- package/project/.sdk/tm/scala/core/SdkClient.scala +18 -5
- package/project/.sdk/tm/scala/core/Spec.scala +3 -0
- package/project/.sdk/tm/scala/feature/TestFeature.scala +36 -3
- package/project/.sdk/tm/scala/feature/TimeoutFeature.scala +39 -13
- package/project/.sdk/tm/scala/feature/ValidateFeature.scala +2 -0
- package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +16 -1
- package/project/.sdk/tm/scala/sdktest/ServerVariableTest.scala +49 -0
- package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +1 -0
- package/project/.sdk/tm/scala/utility/Fetcher.scala +17 -2
- package/project/.sdk/tm/scala/utility/Make.scala +141 -43
- package/project/.sdk/tm/scala/utility/MakeSpec.scala +20 -2
- package/project/.sdk/tm/scala/utility/Media.scala +96 -0
- package/project/.sdk/tm/scala/utility/Misc.scala +56 -23
- package/project/.sdk/tm/scala/utility/Prepare.scala +84 -31
- package/project/.sdk/tm/scala/utility/Results.scala +5 -0
- package/project/.sdk/tm/scala/utility/Transform.scala +15 -19
- package/project/.sdk/tm/swift/LICENSE +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Context.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Response.swift +57 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Spec.swift +3 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Support.swift +8 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TestFeature.swift +34 -3
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TimeoutFeature.swift +19 -3
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/ValidateFeature.swift +2 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Fetcher.swift +21 -12
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Make.swift +85 -18
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +73 -7
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Media.swift +76 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +118 -43
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/ResultUtil.swift +18 -8
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/FeatureTest.swift +31 -1
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +6 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/ServerVariableTest.swift +42 -0
- package/project/.sdk/tm/ts/LICENSE +1 -1
- package/project/.sdk/tm/ts/src/Context.ts +1 -1
- package/project/.sdk/tm/ts/src/Control.ts +3 -0
- package/project/.sdk/tm/ts/src/Response.ts +10 -1
- package/project/.sdk/tm/ts/src/Spec.ts +4 -0
- package/project/.sdk/tm/ts/src/feature/base/BaseFeature.ts +28 -0
- package/project/.sdk/tm/ts/src/feature/netsim/NetsimFeature.ts +10 -8
- package/project/.sdk/tm/ts/src/feature/ratelimit/RatelimitFeature.ts +8 -6
- package/project/.sdk/tm/ts/src/feature/retry/RetryFeature.ts +17 -4
- package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +41 -13
- package/project/.sdk/tm/ts/src/feature/timeout/TimeoutFeature.ts +17 -3
- package/project/.sdk/tm/ts/src/feature/validate/ValidateFeature.ts +2 -0
- package/project/.sdk/tm/ts/src/tsconfig.json +2 -1
- package/project/.sdk/tm/ts/src/utility/CleanUtility.ts +25 -1
- package/project/.sdk/tm/ts/src/utility/FetcherUtility.ts +24 -1
- package/project/.sdk/tm/ts/src/utility/MakeErrorUtility.ts +2 -2
- package/project/.sdk/tm/ts/src/utility/MakeFetchDefUtility.ts +15 -2
- package/project/.sdk/tm/ts/src/utility/MakeOptionsUtility.ts +6 -6
- package/project/.sdk/tm/ts/src/utility/MakePointUtility.ts +38 -2
- package/project/.sdk/tm/ts/src/utility/MakeRequestUtility.ts +29 -2
- package/project/.sdk/tm/ts/src/utility/MakeResponseUtility.ts +3 -1
- package/project/.sdk/tm/ts/src/utility/MakeSpecUtility.ts +16 -6
- package/project/.sdk/tm/ts/src/utility/MakeUrlUtility.ts +16 -2
- package/project/.sdk/tm/ts/src/utility/MediaUtility.ts +143 -0
- package/project/.sdk/tm/ts/src/utility/ParamUtility.ts +50 -18
- package/project/.sdk/tm/ts/src/utility/PrepareBodyUtility.ts +6 -0
- package/project/.sdk/tm/ts/src/utility/PrepareHeadersUtility.ts +53 -11
- package/project/.sdk/tm/ts/src/utility/PrepareMethodUtility.ts +9 -0
- package/project/.sdk/tm/ts/src/utility/PrepareQueryUtility.ts +22 -6
- package/project/.sdk/tm/ts/src/utility/ResultBodyUtility.ts +68 -3
- package/project/.sdk/tm/ts/src/utility/TransformRequestUtility.ts +16 -6
- package/project/.sdk/tm/ts/test/definition-runner.ts +109 -3
- package/project/.sdk/tm/ts/test/feature/Corpus.test.ts +47 -16
- package/project/.sdk/tm/ts/test/feature/harness.ts +4 -1
- package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +1 -1
- package/project/.sdk/tm/ts/test/feature.test.ts +134 -0
- package/project/.sdk/tm/ts/test/live-contract.ts +60 -2
- package/project/.sdk/tm/ts/test/live-entity.ts +36 -12
- package/project/.sdk/tm/ts/test/live-runner.ts +79 -12
- package/project/.sdk/tm/ts/test/live-scenarios.ts +5 -4
- package/project/.sdk/tm/ts/test/pipeline.test.ts +52 -1
- package/project/.sdk/tm/ts/test/tsconfig.json +2 -1
- package/project/.sdk/tm/ts/test/utility.ts +35 -7
- package/project/.sdk/tm/zig/LICENSE +1 -1
- package/project/.sdk/tm/zig/core/context.zig +2 -1
- package/project/.sdk/tm/zig/core/helpers.zig +33 -0
- package/project/.sdk/tm/zig/core/response.zig +3 -0
- package/project/.sdk/tm/zig/core/spec.zig +27 -0
- package/project/.sdk/tm/zig/core/types.zig +6 -0
- package/project/.sdk/tm/zig/core/utility.zig +456 -84
- package/project/.sdk/tm/zig/feature/test.zig +31 -2
- package/project/.sdk/tm/zig/feature/validate.zig +2 -0
- package/project/.sdk/tm/zig/test/fh.zig +1 -1
- package/project/sdkgen-package.json +1 -1
- package/src/action/copies.ts +179 -46
- package/src/action/doctor.ts +13 -3
- package/src/action/package.ts +17 -9
- package/src/action/resolve.ts +41 -0
- package/src/admin/npm-trust.ts +9 -8
- package/src/cmp/AgentGuide.ts +4 -3
- package/src/cmp/AgentGuideFeature.ts +3 -2
- package/src/cmp/AgentGuideTop.ts +2 -1
- package/src/cmp/Changelog.ts +2 -1
- package/src/cmp/Deploy.ts +2 -1
- package/src/cmp/Entity.ts +1 -3
- package/src/cmp/ExternalTarget.ts +2 -1
- package/src/cmp/Feature.ts +2 -1
- package/src/cmp/FeatureHook.ts +2 -1
- package/src/cmp/License.ts +7 -5
- package/src/cmp/Main.ts +2 -1
- package/src/cmp/PublishWorkflow.ts +2 -1
- package/src/cmp/Readme.ts +2 -1
- package/src/cmp/ReadmeEntity.ts +3 -3
- package/src/cmp/ReadmeErrors.ts +6 -4
- package/src/cmp/ReadmeExplanation.ts +4 -3
- package/src/cmp/ReadmeFeatures.ts +4 -3
- package/src/cmp/ReadmeHowto.ts +4 -3
- package/src/cmp/ReadmeInstall.ts +4 -3
- package/src/cmp/ReadmeIntro.ts +3 -3
- package/src/cmp/ReadmeModel.ts +6 -3
- package/src/cmp/ReadmeOptions.ts +3 -3
- package/src/cmp/ReadmeQuick.ts +4 -3
- package/src/cmp/ReadmeRef.ts +3 -3
- package/src/cmp/ReadmeRefFeatures.ts +2 -1
- package/src/cmp/ReadmeStation.ts +2 -1
- package/src/cmp/ReadmeTop.ts +121 -37
- package/src/cmp/ReadmeUnions.ts +2 -1
- package/src/cmp/Registered.ts +4 -4
- package/src/cmp/Security.ts +14 -7
- package/src/cmp/Test.ts +2 -1
- package/src/cmp/TestControl.ts +1 -1
- package/src/helpers/component.ts +25 -0
- package/src/helpers/definition.ts +2 -2
- package/src/helpers/definitionPlan.ts +135 -13
- package/src/helpers/featureSource.ts +55 -2
- package/src/helpers/flowGuard.ts +111 -0
- package/src/helpers/generated.ts +488 -0
- package/src/helpers/mcpTools.ts +47 -0
- package/src/helpers/media.ts +79 -0
- package/src/helpers/modelNames.ts +186 -16
- package/src/helpers/naming.ts +188 -0
- package/src/helpers/npm.ts +68 -0
- package/src/helpers/npmScripts.ts +37 -0
- package/src/helpers/opExample.ts +19 -11
- package/src/helpers/opShape.ts +235 -29
- package/src/helpers/optional.ts +76 -0
- package/src/helpers/packageMeta.ts +83 -11
- package/src/helpers/stdrep.ts +5 -1
- package/src/helpers/testPolicy.ts +68 -1
- package/src/helpers/text.ts +33 -0
- package/src/sdkgen.ts +97 -14
- package/src/testkit.ts +2 -1
- package/src/utility.ts +41 -19
- package/project/.sdk/src/cmp/go/fragment/SdkError.fragment.go +0 -22
- package/project/.sdk/src/cmp/lua/fragment/SdkError.fragment.lua +0 -38
- package/project/.sdk/src/cmp/perl/fragment/SdkError.fragment.pm +0 -27
- package/project/.sdk/src/cmp/php/fragment/SdkError.fragment.php +0 -35
- package/project/.sdk/src/cmp/py/fragment/SdkError.fragment.py +0 -27
- package/project/.sdk/src/cmp/rb/fragment/SdkError.fragment.rb +0 -25
|
@@ -112,6 +112,16 @@
|
|
|
112
112
|
|
|
113
113
|
(declare test-build-args make-netsim)
|
|
114
114
|
|
|
115
|
+
;; The key a list's response transform
|
|
116
|
+
;; ["`$EACH`", "body", {"`$MERGE`": "`.<key>`"}] reads each item's record under.
|
|
117
|
+
(defn- item-envelope-key [spec]
|
|
118
|
+
(when (and (vs/islist spec) (= 3 (count spec))
|
|
119
|
+
(= "`$EACH`" (first spec)) (= "body" (second spec))
|
|
120
|
+
(vs/ismap (nth spec 2)))
|
|
121
|
+
(let [merge (vs/getprop (nth spec 2) "`$MERGE`")]
|
|
122
|
+
(when (string? merge)
|
|
123
|
+
(second (re-matches #"`\.([^.`$]+)`" merge))))))
|
|
124
|
+
|
|
115
125
|
(defn test-feature []
|
|
116
126
|
(let [fa (new-feature "test" true "0.0.1")]
|
|
117
127
|
(swap! fa assoc
|
|
@@ -136,16 +146,20 @@
|
|
|
136
146
|
;; scope here, so the point is the one being served.
|
|
137
147
|
(let [envelope (fn [data]
|
|
138
148
|
(let [tm (vs/getprop (core/oget fctx :point) "transform")
|
|
139
|
-
spec (vs/getprop tm "res")
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
149
|
+
spec (vs/getprop tm "res")
|
|
150
|
+
ikey (item-envelope-key spec)]
|
|
151
|
+
(cond
|
|
152
|
+
(and (some? ikey) (vs/islist data))
|
|
153
|
+
(apply vs/jt (map (fn [item] (vs/jm ikey item)) data))
|
|
154
|
+
;; Rebuild whatever nesting the transform unwraps;
|
|
155
|
+
;; GraphQL ops unwrap `body.data.<field>`.
|
|
156
|
+
(and (some? data) (string? spec))
|
|
143
157
|
(if-let [m (re-matches #"`body\.(.+)`" spec)]
|
|
144
158
|
(reduce (fn [out seg] (vs/jm seg out))
|
|
145
159
|
data
|
|
146
160
|
(reverse (str/split (second m) #"\." -1)))
|
|
147
161
|
data)
|
|
148
|
-
data)))
|
|
162
|
+
:else data)))
|
|
149
163
|
respond (fn [status data extra]
|
|
150
164
|
(let [payload (envelope data)
|
|
151
165
|
out (vs/jm "status" status "statusText" "OK"
|
|
@@ -177,7 +191,7 @@
|
|
|
177
191
|
(if (nil? found) (respond 404 nil (vs/jm "statusText" "Not found"))
|
|
178
192
|
(do (when (vs/islist found) (doseq [item (vec found)] (vs/delprop item "$KEY")))
|
|
179
193
|
(respond 200 (vs/clone found) nil))))
|
|
180
|
-
(= opn "update")
|
|
194
|
+
(or (= opn "update") (= opn "patch"))
|
|
181
195
|
(let [update-match (vs/jm)
|
|
182
196
|
reqdata (core/oget fctx :reqdata)]
|
|
183
197
|
(when (vs/ismap reqdata)
|
|
@@ -194,7 +208,8 @@
|
|
|
194
208
|
;; update miss: 404, never another record
|
|
195
209
|
(if (nil? ent) (respond 404 nil (vs/jm "statusText" "Not found"))
|
|
196
210
|
(do (when (and (vs/ismap ent) (vs/ismap reqdata))
|
|
197
|
-
|
|
211
|
+
;; `$body` travels on the wire alone; the record is the rest.
|
|
212
|
+
(vs/merge (vs/jt ent (doto (vs/clone reqdata) (vs/delprop "$body")))))
|
|
198
213
|
(vs/delprop ent "$KEY")
|
|
199
214
|
(respond 200 (vs/clone ent) nil)))))
|
|
200
215
|
(= opn "remove")
|
|
@@ -209,7 +224,8 @@
|
|
|
209
224
|
(format "%04x%04x%04x%04x" (rand-int 0x10000) (rand-int 0x10000) (rand-int 0x10000) (rand-int 0x10000)))
|
|
210
225
|
ent (vs/clone (core/oget fctx :reqdata))]
|
|
211
226
|
(if (vs/ismap ent)
|
|
212
|
-
(do (
|
|
227
|
+
(do (vs/delprop ent "$body")
|
|
228
|
+
(.put ^java.util.Map ent "id" id)
|
|
213
229
|
(when (string? id) (.put ^java.util.Map entmap (str id) ent))
|
|
214
230
|
(vs/delprop ent "$KEY")
|
|
215
231
|
(respond 200 (vs/clone ent) nil))
|
|
@@ -380,18 +396,24 @@
|
|
|
380
396
|
(fn [ctx url fetchdef inner]
|
|
381
397
|
(let [ms (opt fa "ms" 30000)]
|
|
382
398
|
(if (<= ms 0) (inner ctx url fetchdef)
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
(
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
399
|
+
;; The deadline runs from here, not from the deref below: a
|
|
400
|
+
;; caller paused between the two would otherwise find a late
|
|
401
|
+
;; response complete and take it. The future notes when it
|
|
402
|
+
;; finished, so a response or a failure after the deadline is
|
|
403
|
+
;; a timeout however late the caller looks.
|
|
404
|
+
(let [now (let [n (opt fa "now")] (if (fn? n) n #(System/currentTimeMillis)))
|
|
405
|
+
start (now)
|
|
406
|
+
arrived (atom Long/MAX_VALUE)
|
|
407
|
+
fut (future (try (inner ctx url fetchdef) (finally (reset! arrived (now)))))
|
|
408
|
+
remaining (max 0 (- ms (- (now) start)))
|
|
409
|
+
late? (fn [] (< ms (- @arrived start)))
|
|
410
|
+
r (try (deref fut (long remaining) ::timeout)
|
|
411
|
+
(catch java.util.concurrent.ExecutionException e
|
|
412
|
+
(if (late?) ::timeout (throw (or (.getCause e) e)))))]
|
|
413
|
+
(if (or (= r ::timeout) (late?))
|
|
414
|
+
(do (future-cancel fut) (track! ms)
|
|
415
|
+
[nil (core/ctx-error ctx "timeout" (str "Request exceeded timeout of " ms "ms"))])
|
|
416
|
+
r)))))]
|
|
395
417
|
(swap! fa assoc
|
|
396
418
|
"init" (fn [ctx options]
|
|
397
419
|
(swap! fa assoc :client (core/oget ctx :client)
|
|
@@ -1471,6 +1493,8 @@
|
|
|
1471
1493
|
;; call would be rejected for the one key that made it
|
|
1472
1494
|
;; reachable.
|
|
1473
1495
|
(.remove ^java.util.Map out "$action")
|
|
1496
|
+
;; Nor is `$body`, the raw request body.
|
|
1497
|
+
(.remove ^java.util.Map out "$body")
|
|
1474
1498
|
out))]
|
|
1475
1499
|
(swap! fa assoc :spec (vs/jm) :request true :response false :mode "throw")
|
|
1476
1500
|
(swap! fa assoc
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
(defn fspec [name & kvs] {"name" name "options" (if (seq kvs) (apply vs/jm kvs) (vs/jm))})
|
|
22
22
|
|
|
23
23
|
(defn default-method [opname]
|
|
24
|
-
(cond (= opname "create") "POST" (= opname "update") "PATCH" (= opname "remove") "DELETE" :else "GET"))
|
|
24
|
+
(cond (= opname "create") "POST" (or (= opname "update") (= opname "patch")) "PATCH" (= opname "remove") "DELETE" :else "GET"))
|
|
25
25
|
|
|
26
26
|
(defn make-response [status data headers]
|
|
27
27
|
(let [h (vs/jm)]
|
|
@@ -51,6 +51,11 @@
|
|
|
51
51
|
(defn clock-sleeper [c] (fn [ms] (swap! c + (or ms 0))))
|
|
52
52
|
(defn clock-advance [c ms] (swap! c + ms))
|
|
53
53
|
|
|
54
|
+
;; A clock standing at 0 for the calling thread and at `later` for any other.
|
|
55
|
+
(defn worker-clock [later]
|
|
56
|
+
(let [caller (Thread/currentThread)]
|
|
57
|
+
(fn [] (if (identical? (Thread/currentThread) caller) 0 later))))
|
|
58
|
+
|
|
54
59
|
(defn fake-entity [name] {:get-name (fn [] name)})
|
|
55
60
|
|
|
56
61
|
(defn- merge-headers [base extra]
|
|
@@ -265,6 +270,21 @@
|
|
|
265
270
|
(fn [] (let [c (make-clock)
|
|
266
271
|
h (make-harness [(fspec "timeout" "ms" 1000 "now" (clock-now c))])]
|
|
267
272
|
(t/is-eq (get (h-op h) "ok") true "ok"))))
|
|
273
|
+
;; The deadline runs from the request's start, not from the wait: the
|
|
274
|
+
;; clock stands at the start for the caller and 300 ms later for the worker.
|
|
275
|
+
(check "timeout-late-response-however-late-the-caller-looks" "timeout"
|
|
276
|
+
(fn [] (let [h (make-harness [(fspec "timeout" "ms" 20 "now" (worker-clock 300))])
|
|
277
|
+
res (h-op h)]
|
|
278
|
+
(t/is-eq (rcode res) "timeout" "timeout")
|
|
279
|
+
(t/is-eq (mget (h-track h "_timeout") "count") 1 "count"))))
|
|
280
|
+
;; A transport failure after the deadline is a timeout too, not the failure.
|
|
281
|
+
(check "timeout-late-failure-times-out" "timeout"
|
|
282
|
+
(fn [] (let [failing (fn [fctx _url _fetchdef]
|
|
283
|
+
(core/sdk-throw (core/ctx-error fctx "socket_closed" "socket closed")))
|
|
284
|
+
h (make-harness [(fspec "timeout" "ms" 20 "now" (worker-clock 300))] :server failing)
|
|
285
|
+
res (h-op h)]
|
|
286
|
+
(t/is-eq (rcode res) "timeout" "timeout")
|
|
287
|
+
(t/is-eq (mget (h-track h "_timeout") "count") 1 "count"))))
|
|
268
288
|
(check "timeout-ms-zero-disables" "timeout"
|
|
269
289
|
(fn [] (let [h (make-harness [(fspec "timeout" "ms" 0)])]
|
|
270
290
|
(t/is-eq (get (h-op h) "ok") true "ok"))))
|
|
@@ -89,6 +89,14 @@
|
|
|
89
89
|
(first (filter (fn [p] (.exists (java.io.File. ^String p)))
|
|
90
90
|
["../.sdk/test/test.json" ".sdk/test/test.json" "../../.sdk/test/test.json" "test/test.json"])))
|
|
91
91
|
|
|
92
|
+
;; The agent pool keeps the JVM alive for a minute after the last task, so a
|
|
93
|
+
;; run that passes exits as one that fails does.
|
|
94
|
+
(defn- all-green []
|
|
95
|
+
(println "ALL GREEN")
|
|
96
|
+
(flush)
|
|
97
|
+
(shutdown-agents)
|
|
98
|
+
(System/exit 0))
|
|
99
|
+
|
|
92
100
|
;; `--sdk-only` runs the SDK's OWN suites and skips the three steps that read
|
|
93
101
|
;; the shared corpus (.sdk/test/test.json): the omni smoke test, the primary
|
|
94
102
|
;; corpus and the struct corpus. create-sdkgen compiles that corpus into
|
|
@@ -126,7 +134,7 @@
|
|
|
126
134
|
(flush)
|
|
127
135
|
(if (pos? nf)
|
|
128
136
|
(System/exit 1)
|
|
129
|
-
(
|
|
137
|
+
(all-green)))
|
|
130
138
|
(let [cf (find-corpus-file)]
|
|
131
139
|
(if (nil? cf)
|
|
132
140
|
(do (println "STRUCT CORPUS: test.json not found on any candidate path") (flush) (System/exit 1))
|
|
@@ -136,4 +144,4 @@
|
|
|
136
144
|
(flush)
|
|
137
145
|
(if (or (pos? nf) (pos? cfail))
|
|
138
146
|
(System/exit 1)
|
|
139
|
-
(
|
|
147
|
+
(all-green)))))))))
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
#ifndef SDK_CORE_TYPES_HPP
|
|
12
12
|
#define SDK_CORE_TYPES_HPP
|
|
13
13
|
|
|
14
|
+
#include <algorithm>
|
|
15
|
+
#include <cctype>
|
|
14
16
|
#include <functional>
|
|
15
17
|
#include <map>
|
|
16
18
|
#include <memory>
|
|
@@ -70,6 +72,26 @@ inline long long toLong(const Value& v, long long def) {
|
|
|
70
72
|
}
|
|
71
73
|
inline Value toMapAny(const Value& v) { return v.is_map() ? v : Value::undef(); }
|
|
72
74
|
|
|
75
|
+
// Whether a comma-separated allow option names the item: whole names, any case.
|
|
76
|
+
inline bool allowed(const Value& names, const std::string& item) {
|
|
77
|
+
if (!names.is_string() || item.empty()) return false;
|
|
78
|
+
const std::string list = names.as_string();
|
|
79
|
+
size_t start = 0;
|
|
80
|
+
for (;;) {
|
|
81
|
+
size_t end = list.find(',', start);
|
|
82
|
+
size_t s = start;
|
|
83
|
+
size_t e = std::string::npos == end ? list.size() : end;
|
|
84
|
+
while (s < e && std::isspace((unsigned char)list[s])) s++;
|
|
85
|
+
while (e > s && std::isspace((unsigned char)list[e - 1])) e--;
|
|
86
|
+
if (e - s == item.size() && std::equal(item.begin(), item.end(), list.begin() + s,
|
|
87
|
+
[](char a, char b) { return std::toupper((unsigned char)a) == std::toupper((unsigned char)b); })) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
if (std::string::npos == end) return false;
|
|
91
|
+
start = end + 1;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
73
95
|
SdkErrorPtr unsupportedOp(const std::string& opname, const std::string& entityname);
|
|
74
96
|
|
|
75
97
|
} // namespace Helpers
|
|
@@ -146,6 +168,9 @@ public:
|
|
|
146
168
|
Value body = Value::undef();
|
|
147
169
|
std::string url = "";
|
|
148
170
|
std::string path = "";
|
|
171
|
+
// The query parameters prepareAuth placed: the credential, which the
|
|
172
|
+
// request sends and the entity's match leaves out.
|
|
173
|
+
std::vector<std::string> authquery;
|
|
149
174
|
|
|
150
175
|
Spec() {
|
|
151
176
|
headers = vmap();
|
|
@@ -214,6 +239,8 @@ public:
|
|
|
214
239
|
JsonFunc jsonFunc;
|
|
215
240
|
Value body = Value::undef();
|
|
216
241
|
SdkErrorPtr err;
|
|
242
|
+
// Set by a transport that could not read a non-blank body as JSON.
|
|
243
|
+
bool unreadable = false;
|
|
217
244
|
|
|
218
245
|
Response() = default;
|
|
219
246
|
|
|
@@ -237,6 +264,8 @@ public:
|
|
|
237
264
|
};
|
|
238
265
|
}
|
|
239
266
|
body = getp(m, "body");
|
|
267
|
+
Value ur = getp(m, "unreadable");
|
|
268
|
+
unreadable = ur.is_bool() && ur.as_bool();
|
|
240
269
|
}
|
|
241
270
|
};
|
|
242
271
|
|
|
@@ -650,6 +679,7 @@ public:
|
|
|
650
679
|
virtual std::vector<SdkEntityPtr> list(const Value& reqmatch, const Value& ctrl) = 0;
|
|
651
680
|
virtual SdkEntityPtr create(const Value& reqdata, const Value& ctrl) = 0;
|
|
652
681
|
virtual SdkEntityPtr update(const Value& reqdata, const Value& ctrl) = 0;
|
|
682
|
+
virtual SdkEntityPtr patch(const Value& reqdata, const Value& ctrl) = 0;
|
|
653
683
|
virtual SdkEntityPtr remove(const Value& reqmatch, const Value& ctrl) = 0;
|
|
654
684
|
};
|
|
655
685
|
|
|
@@ -806,7 +836,7 @@ inline OperationPtr Context::resolveOp(const std::string& opname) {
|
|
|
806
836
|
Value opcfg = Struct::getpath(config, {"entity", entname, "op", opname});
|
|
807
837
|
|
|
808
838
|
std::string input = "match";
|
|
809
|
-
if (opname == "update" || opname == "create") input = "data";
|
|
839
|
+
if (opname == "update" || opname == "create" || opname == "patch") input = "data";
|
|
810
840
|
|
|
811
841
|
Value points = Value::undef();
|
|
812
842
|
if (opcfg.is_map()) {
|
|
@@ -954,6 +984,14 @@ inline Value SdkClient::prepare(const Value& fetchargs_) {
|
|
|
954
984
|
Value methodRaw = getp(fetchargs, "method");
|
|
955
985
|
std::string method = methodRaw.is_string() ? methodRaw.as_string() : "";
|
|
956
986
|
if (method.empty()) method = "GET";
|
|
987
|
+
for (auto& ch : method) ch = (char)std::toupper((unsigned char)ch);
|
|
988
|
+
|
|
989
|
+
Value allowMethod = Struct::getpath(opts, {"allow", "method"});
|
|
990
|
+
if (!Helpers::allowed(allowMethod, method)) {
|
|
991
|
+
throw ctx->makeError("spec_method_allow",
|
|
992
|
+
"Method \"" + method + "\" not allowed by SDK option allow.method value: \"" +
|
|
993
|
+
(allowMethod.is_string() ? allowMethod.as_string() : std::string()) + "\"");
|
|
994
|
+
}
|
|
957
995
|
|
|
958
996
|
Value params = Helpers::toMapAny(getp(fetchargs, "params"));
|
|
959
997
|
if (!params.is_map()) params = vmap();
|
|
@@ -993,9 +1031,7 @@ inline Value SdkClient::prepare(const Value& fetchargs_) {
|
|
|
993
1031
|
|
|
994
1032
|
// Is this raw-access op permitted by the SDK's allow.op option?
|
|
995
1033
|
inline bool SdkClient::opAllowed(const std::string& op) {
|
|
996
|
-
|
|
997
|
-
if (!allow.is_string()) return false;
|
|
998
|
-
return std::string::npos != allow.as_string().find(op);
|
|
1034
|
+
return Helpers::allowed(Struct::getpath(options, {"allow", "op"}), op);
|
|
999
1035
|
}
|
|
1000
1036
|
|
|
1001
1037
|
inline Value SdkClient::opDenied(const std::string& op) {
|
|
@@ -1061,6 +1097,74 @@ inline Value SdkClient::graphql(const std::string& query, const Value& variables
|
|
|
1061
1097
|
return res;
|
|
1062
1098
|
}
|
|
1063
1099
|
|
|
1100
|
+
// A body that is not JSON. An HTTP failure keeps its own error, with the
|
|
1101
|
+
// response described; otherwise the code tells a wrong content type from
|
|
1102
|
+
// malformed JSON.
|
|
1103
|
+
inline SdkErrorPtr unreadableBody(CtxPtr ctx, int status, const Value& headers, const Value& text,
|
|
1104
|
+
const Value& sent, SdkErrorPtr failed) {
|
|
1105
|
+
auto lower = [](std::string s) {
|
|
1106
|
+
for (auto& c : s) c = static_cast<char>(std::tolower(static_cast<unsigned char>(c)));
|
|
1107
|
+
return s;
|
|
1108
|
+
};
|
|
1109
|
+
auto headerValue = [&lower](const Value& h, const std::string& name) -> std::string {
|
|
1110
|
+
if (!h.is_map()) return "";
|
|
1111
|
+
for (const auto& kv : *h.as_map()) {
|
|
1112
|
+
if (lower(kv.first) == name) {
|
|
1113
|
+
return kv.second.is_string() ? kv.second.as_string() : Struct::stringify(kv.second);
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
return "";
|
|
1117
|
+
};
|
|
1118
|
+
auto clean = [&ctx](const std::string& s) -> std::string {
|
|
1119
|
+
if (!ctx->utility || !ctx->utility->clean) return s;
|
|
1120
|
+
Value v = ctx->utility->clean(ctx, Value(s));
|
|
1121
|
+
return v.is_string() ? v.as_string() : s;
|
|
1122
|
+
};
|
|
1123
|
+
|
|
1124
|
+
std::string type = headerValue(headers, "content-type");
|
|
1125
|
+
std::string agent = clean(headerValue(sent, "user-agent"));
|
|
1126
|
+
std::string detail = "HTTP " + std::to_string(status) + ", content-type " +
|
|
1127
|
+
(type.empty() ? std::string("none") : type) + ", user-agent " +
|
|
1128
|
+
(agent.empty() ? std::string("transport default") : agent);
|
|
1129
|
+
|
|
1130
|
+
if (!is_nullish(text)) {
|
|
1131
|
+
// Cleaned whole: a secret the bound would split could leave its prefix.
|
|
1132
|
+
std::string raw = text.is_string() ? text.as_string() : Struct::stringify(text);
|
|
1133
|
+
std::string flat;
|
|
1134
|
+
bool space = false;
|
|
1135
|
+
for (unsigned char c : raw) {
|
|
1136
|
+
if (std::isspace(c)) {
|
|
1137
|
+
space = !flat.empty();
|
|
1138
|
+
continue;
|
|
1139
|
+
}
|
|
1140
|
+
if (space) {
|
|
1141
|
+
flat += ' ';
|
|
1142
|
+
space = false;
|
|
1143
|
+
}
|
|
1144
|
+
flat += static_cast<char>(c);
|
|
1145
|
+
}
|
|
1146
|
+
flat = clean(flat);
|
|
1147
|
+
size_t points = 0;
|
|
1148
|
+
size_t end = 0;
|
|
1149
|
+
for (; end < flat.size(); end++) {
|
|
1150
|
+
if ((static_cast<unsigned char>(flat[end]) & 0xC0) == 0x80) continue;
|
|
1151
|
+
if (160 == points) break;
|
|
1152
|
+
points++;
|
|
1153
|
+
}
|
|
1154
|
+
detail += ", body: " + (end < flat.size() ? flat.substr(0, end) + "..." : flat);
|
|
1155
|
+
}
|
|
1156
|
+
|
|
1157
|
+
if (failed) {
|
|
1158
|
+
failed->msg += " (" + detail + ")";
|
|
1159
|
+
return failed;
|
|
1160
|
+
}
|
|
1161
|
+
if (type.empty() || lower(type).find("json") != std::string::npos) {
|
|
1162
|
+
return ctx->makeError("response_json_invalid", "response: body is not valid JSON (" + detail + ")");
|
|
1163
|
+
}
|
|
1164
|
+
return ctx->makeError("response_content_type",
|
|
1165
|
+
"response: expected JSON, got " + type + " (" + detail + ")");
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1064
1168
|
// Ungated request path shared by direct and graphql, each of which checks its
|
|
1065
1169
|
// own allow.op token first. Private, rather than a flag on fetchargs: a
|
|
1066
1170
|
// caller-supplied marker would let anyone opt straight back out of the gate
|
|
@@ -1125,10 +1229,24 @@ inline Value SdkClient::rawRequest(const Value& fetchargs_) {
|
|
|
1125
1229
|
}
|
|
1126
1230
|
}
|
|
1127
1231
|
|
|
1128
|
-
|
|
1232
|
+
SdkErrorPtr bodyErr;
|
|
1233
|
+
Value ur = getp(fetched, "unreadable");
|
|
1234
|
+
if (!noBody && ur.is_bool() && ur.as_bool()) {
|
|
1235
|
+
SdkErrorPtr failed;
|
|
1236
|
+
if (status < 200 || status >= 300) {
|
|
1237
|
+
Value st = getp(fetched, "statusText");
|
|
1238
|
+
failed = ctx->makeError("request_status", "request: " + std::to_string(status) + ": " +
|
|
1239
|
+
(st.is_string() ? st.as_string() : std::string("")));
|
|
1240
|
+
}
|
|
1241
|
+
bodyErr = unreadableBody(ctx, status, headers, getp(fetched, "body"),
|
|
1242
|
+
getp(fetchdef, "headers"), failed);
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1245
|
+
map_put(out, "ok", Value(!bodyErr && status >= 200 && status < 300));
|
|
1129
1246
|
map_put(out, "status", Value(status));
|
|
1130
1247
|
map_put(out, "headers", headers);
|
|
1131
1248
|
map_put(out, "data", jsonData);
|
|
1249
|
+
if (bodyErr) map_put(out, "err", vmap({{"message", u->clean(ctx, Value(bodyErr->msg))}}));
|
|
1132
1250
|
return out;
|
|
1133
1251
|
}
|
|
1134
1252
|
|
|
@@ -1233,8 +1351,14 @@ inline std::vector<Value> EntityBase::stream(const std::string& action,
|
|
|
1233
1351
|
|
|
1234
1352
|
Value streamOpts = callopts.is_map() ? callopts : vmap();
|
|
1235
1353
|
|
|
1236
|
-
|
|
1237
|
-
|
|
1354
|
+
// A copy: the caller's ctrl gains no key, and explain stays its own record.
|
|
1355
|
+
Value ctrl = vmap();
|
|
1356
|
+
Value given = Helpers::toMapAny(getp(streamOpts, "ctrl"));
|
|
1357
|
+
if (given.is_map()) {
|
|
1358
|
+
for (const auto& kv : *given.as_map()) {
|
|
1359
|
+
map_put(ctrl, kv.first, kv.second);
|
|
1360
|
+
}
|
|
1361
|
+
}
|
|
1238
1362
|
map_put(ctrl, "stream", streamOpts);
|
|
1239
1363
|
|
|
1240
1364
|
CtxSpec cs;
|
|
@@ -57,6 +57,22 @@ public:
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
private:
|
|
60
|
+
// The key a list's response transform
|
|
61
|
+
// ["`$EACH`", "body", {"`$MERGE`": "`.<key>`"}] reads each item's record
|
|
62
|
+
// under; empty for any other transform.
|
|
63
|
+
static std::string itemEnvelopeKey(const Value& restf) {
|
|
64
|
+
if (!restf.is_list()) return "";
|
|
65
|
+
const List& spec = *restf.as_list();
|
|
66
|
+
if (3 != spec.size() || !spec[0].is_string() || "`$EACH`" != spec[0].as_string() ||
|
|
67
|
+
!spec[1].is_string() || "body" != spec[1].as_string()) return "";
|
|
68
|
+
Value merge = getp(spec[2], Value("`$MERGE`"));
|
|
69
|
+
if (!merge.is_string()) return "";
|
|
70
|
+
std::string m = merge.as_string();
|
|
71
|
+
if (m.size() < 4 || 0 != m.compare(0, 2, "`.") || '`' != m[m.size() - 1]) return "";
|
|
72
|
+
std::string key = m.substr(2, m.size() - 3);
|
|
73
|
+
return std::string::npos == key.find_first_of(".`$") ? key : "";
|
|
74
|
+
}
|
|
75
|
+
|
|
60
76
|
// THE MOCK HAS TO AGREE WITH THE MODEL. A point carrying
|
|
61
77
|
// `transform.res: `body.item`` describes an API that answers {"item": {...}}
|
|
62
78
|
// and the response transform unwraps that key on the way back. Returning the
|
|
@@ -66,6 +82,16 @@ private:
|
|
|
66
82
|
if (is_nullish(data) || !ctx) return data;
|
|
67
83
|
Value tm = getp(ctx->point, "transform");
|
|
68
84
|
Value restf = getp(tm, "res");
|
|
85
|
+
std::string key = itemEnvelopeKey(restf);
|
|
86
|
+
if (!key.empty() && data.is_list()) {
|
|
87
|
+
Value out = vlist();
|
|
88
|
+
for (const auto& item : *data.as_list()) {
|
|
89
|
+
Value wrapped = vmap();
|
|
90
|
+
map_put(wrapped, key, item);
|
|
91
|
+
out.as_list()->push_back(wrapped);
|
|
92
|
+
}
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
69
95
|
if (!restf.is_string()) return data;
|
|
70
96
|
std::string spec = restf.as_string();
|
|
71
97
|
// Rebuild whatever nesting the transform unwraps. Multi-segment on purpose:
|
|
@@ -148,7 +174,7 @@ private:
|
|
|
148
174
|
}
|
|
149
175
|
Value out = Struct::clone(outlist);
|
|
150
176
|
return respond(ctx, 200, out, Value::undef());
|
|
151
|
-
} else if (op->name == "update") {
|
|
177
|
+
} else if (op->name == "update" || op->name == "patch") {
|
|
152
178
|
Value updateMatch = vmap();
|
|
153
179
|
if (ctx->reqdata.is_map()) {
|
|
154
180
|
if (map_contains(ctx->reqdata, "id")) {
|
|
@@ -173,7 +199,10 @@ private:
|
|
|
173
199
|
// update miss: 404, never another record
|
|
174
200
|
if (is_nullish(ent)) return respond(ctx, 404, Value(nullptr), extra1("statusText", Value("Not found")));
|
|
175
201
|
if (ent.is_map() && ctx->reqdata.is_map()) {
|
|
176
|
-
|
|
202
|
+
// `$body` travels on the wire alone; the record is the rest.
|
|
203
|
+
Value rec = Struct::clone(ctx->reqdata);
|
|
204
|
+
Struct::delprop(rec, Value("$body"));
|
|
205
|
+
Struct::merge(vlist({ent, rec}));
|
|
177
206
|
}
|
|
178
207
|
Struct::delprop(ent, Value("$KEY"));
|
|
179
208
|
Value out = Struct::clone(ent);
|
|
@@ -203,6 +232,7 @@ private:
|
|
|
203
232
|
}
|
|
204
233
|
Value ent = Struct::clone(ctx->reqdata);
|
|
205
234
|
if (ent.is_map()) {
|
|
235
|
+
Struct::delprop(ent, Value("$body"));
|
|
206
236
|
map_put(ent, "id", id);
|
|
207
237
|
if (id.is_string()) map_put(entmap, id.as_string(), ent);
|
|
208
238
|
Struct::delprop(ent, Value("$KEY"));
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
#ifndef SDK_FEATURE_TIMEOUT_HPP
|
|
9
9
|
#define SDK_FEATURE_TIMEOUT_HPP
|
|
10
10
|
|
|
11
|
+
#include <algorithm>
|
|
12
|
+
#include <atomic>
|
|
11
13
|
#include <chrono>
|
|
14
|
+
#include <climits>
|
|
12
15
|
#include <exception>
|
|
13
16
|
#include <future>
|
|
14
17
|
#include <memory>
|
|
@@ -53,14 +56,24 @@ private:
|
|
|
53
56
|
return inner(ctx, url, fetchdef);
|
|
54
57
|
}
|
|
55
58
|
|
|
56
|
-
//
|
|
57
|
-
//
|
|
59
|
+
// The deadline runs from here, not from the wait below: a caller paused
|
|
60
|
+
// between the two would otherwise find a late response complete and take
|
|
61
|
+
// it. The worker notes when it finished, so a response or a failure after
|
|
62
|
+
// the deadline is a timeout however late the caller looks. The shared
|
|
63
|
+
// promise keeps the future's state alive after the loser resolves
|
|
64
|
+
// unobserved on its detached thread.
|
|
65
|
+
fopt::NowFn now = fopt::foptNow(options);
|
|
66
|
+
const long long start = now();
|
|
67
|
+
auto arrived = std::make_shared<std::atomic<long long>>(LLONG_MAX);
|
|
58
68
|
auto prom = std::make_shared<std::promise<Value>>();
|
|
59
69
|
std::future<Value> fut = prom->get_future();
|
|
60
|
-
std::thread([ctx, url, fetchdef, inner, prom]() {
|
|
70
|
+
std::thread([ctx, url, fetchdef, inner, prom, now, arrived]() {
|
|
61
71
|
try {
|
|
62
|
-
|
|
72
|
+
Value out = inner(ctx, url, fetchdef);
|
|
73
|
+
arrived->store(now());
|
|
74
|
+
prom->set_value(out);
|
|
63
75
|
} catch (...) {
|
|
76
|
+
arrived->store(now());
|
|
64
77
|
try {
|
|
65
78
|
prom->set_exception(std::current_exception());
|
|
66
79
|
} catch (...) {
|
|
@@ -68,15 +81,22 @@ private:
|
|
|
68
81
|
}
|
|
69
82
|
}).detach();
|
|
70
83
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
throw ctx
|
|
74
|
-
|
|
84
|
+
long long remaining = std::max(0LL, static_cast<long long>(deadline) - (now() - start));
|
|
85
|
+
if (fut.wait_for(std::chrono::milliseconds(remaining)) == std::future_status::timeout) {
|
|
86
|
+
throw timeout(ctx, deadline);
|
|
87
|
+
}
|
|
88
|
+
if (deadline < arrived->load() - start) {
|
|
89
|
+
throw timeout(ctx, deadline);
|
|
75
90
|
}
|
|
76
|
-
|
|
77
91
|
return fut.get();
|
|
78
92
|
}
|
|
79
93
|
|
|
94
|
+
SdkErrorPtr timeout(CtxPtr ctx, int deadline) {
|
|
95
|
+
track(deadline);
|
|
96
|
+
return ctx->makeError("timeout",
|
|
97
|
+
"Request exceeded timeout of " + std::to_string(deadline) + "ms");
|
|
98
|
+
}
|
|
99
|
+
|
|
80
100
|
void track(int deadline) {
|
|
81
101
|
count++;
|
|
82
102
|
ms = deadline;
|
|
@@ -183,6 +183,8 @@ private:
|
|
|
183
183
|
// fields will never name it — and under `strict` every custom-action call
|
|
184
184
|
// would be rejected for the one key that made it reachable.
|
|
185
185
|
map_remove(out, "$action");
|
|
186
|
+
// Nor is `$body`, the raw request body.
|
|
187
|
+
map_remove(out, "$body");
|
|
186
188
|
|
|
187
189
|
return out;
|
|
188
190
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// its feature is present in this SDK.
|
|
5
5
|
|
|
6
6
|
#include <chrono>
|
|
7
|
+
#include <memory>
|
|
7
8
|
#include <regex>
|
|
8
9
|
#include <thread>
|
|
9
10
|
#include <vector>
|
|
@@ -246,6 +247,40 @@ static void timeout_slowRequestTimesOut() {
|
|
|
246
247
|
ASSERT_EQ(f->count, 1, "expected 1 timeout");
|
|
247
248
|
}
|
|
248
249
|
|
|
250
|
+
// A clock standing at 0 for the calling thread and at `later` for any other.
|
|
251
|
+
static vs::Injector workerClock(long long later) {
|
|
252
|
+
auto caller = std::this_thread::get_id();
|
|
253
|
+
return [caller, later](vs::Injection&, const Value&, const std::string&, const Value&) -> Value {
|
|
254
|
+
return Value(std::this_thread::get_id() == caller ? 0LL : later);
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// The deadline runs from the request's start, not from the wait: a response
|
|
259
|
+
// that arrives after it is a timeout even when the caller only looks once it
|
|
260
|
+
// is complete. The clock stands at the start for the caller and 300 ms later
|
|
261
|
+
// for the worker.
|
|
262
|
+
static void timeout_lateResponseTimesOutHoweverLateTheCallerLooks() {
|
|
263
|
+
if (!have({"timeout"})) return;
|
|
264
|
+
auto f = std::make_shared<TimeoutFeature>();
|
|
265
|
+
auto h = fhMake(nullptr, {FF(f, fhMap({{"ms", Value(20)}, {"now", Value(workerClock(300))}}))});
|
|
266
|
+
FhOpResult res = h->op(fhOp("load"));
|
|
267
|
+
ASSERT_EQ(fhErrCode(res.err), std::string("timeout"), "expected timeout error");
|
|
268
|
+
ASSERT_EQ(f->count, 1, "expected 1 timeout");
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// A transport failure after the deadline is a timeout too, not the failure.
|
|
272
|
+
static void timeout_lateFailureTimesOut() {
|
|
273
|
+
if (!have({"timeout"})) return;
|
|
274
|
+
auto f = std::make_shared<TimeoutFeature>();
|
|
275
|
+
FetcherFn failing = [](CtxPtr ctx, const std::string&, const Value&) -> Value {
|
|
276
|
+
throw ctx->makeError("socket_closed", "socket closed");
|
|
277
|
+
};
|
|
278
|
+
auto h = fhMake(failing, {FF(f, fhMap({{"ms", Value(20)}, {"now", Value(workerClock(300))}}))});
|
|
279
|
+
FhOpResult res = h->op(fhOp("load"));
|
|
280
|
+
ASSERT_EQ(fhErrCode(res.err), std::string("timeout"), "expected timeout error");
|
|
281
|
+
ASSERT_EQ(f->count, 1, "expected 1 timeout");
|
|
282
|
+
}
|
|
283
|
+
|
|
249
284
|
static void timeout_fastRequestPasses() {
|
|
250
285
|
if (!have({"timeout"})) return;
|
|
251
286
|
auto h = fhMake(nullptr, {FF(std::make_shared<TimeoutFeature>(), fhMap({{"ms", Value(1000)}}))});
|
|
@@ -857,6 +892,8 @@ int main() {
|
|
|
857
892
|
T_RUN(retry_inactiveDoesNotWrap);
|
|
858
893
|
|
|
859
894
|
T_RUN(timeout_slowRequestTimesOut);
|
|
895
|
+
T_RUN(timeout_lateResponseTimesOutHoweverLateTheCallerLooks);
|
|
896
|
+
T_RUN(timeout_lateFailureTimesOut);
|
|
860
897
|
T_RUN(timeout_fastRequestPasses);
|
|
861
898
|
T_RUN(timeout_msZeroDisables);
|
|
862
899
|
T_RUN(timeout_inactiveDoesNotWrap);
|
|
@@ -142,7 +142,7 @@ struct FhOpResult {
|
|
|
142
142
|
|
|
143
143
|
inline std::string fhDefaultMethod(const std::string& op) {
|
|
144
144
|
if (op == "create") return "POST";
|
|
145
|
-
if (op == "update") return "PATCH";
|
|
145
|
+
if (op == "update" || op == "patch") return "PATCH";
|
|
146
146
|
if (op == "remove") return "DELETE";
|
|
147
147
|
return "GET";
|
|
148
148
|
}
|
|
@@ -308,7 +308,10 @@ static void fetcherLive() {
|
|
|
308
308
|
calls->push_back(vmap({{"url", url}, {"init", fetchdef}}));
|
|
309
309
|
return vmap({{"status", Value(200)}, {"statusText", Value("OK")}});
|
|
310
310
|
};
|
|
311
|
-
|
|
311
|
+
// Concrete base: a live construction must satisfy any server variables a
|
|
312
|
+
// templated base URL declares; a literal base sidesteps the requirement.
|
|
313
|
+
Value opts = fhMap({{"base", Value("http://localhost:8080")},
|
|
314
|
+
{"system", fhMap({{"fetch", Value(fetchFn)}})}});
|
|
312
315
|
auto liveClient = std::make_shared<ProjectNameSDK>(opts);
|
|
313
316
|
UtilityPtr liveUtility = liveClient->getUtility();
|
|
314
317
|
|
|
@@ -328,7 +331,8 @@ static void fetcherBlockedTestMode() {
|
|
|
328
331
|
vs::Injector fetchFn = [](vs::Injection&, const Value&, const std::string&, const Value&) -> Value {
|
|
329
332
|
return vmap();
|
|
330
333
|
};
|
|
331
|
-
Value opts = fhMap({{"
|
|
334
|
+
Value opts = fhMap({{"base", Value("http://localhost:8080")},
|
|
335
|
+
{"system", fhMap({{"fetch", Value(fetchFn)}})}});
|
|
332
336
|
auto blockedClient = std::make_shared<ProjectNameSDK>(opts);
|
|
333
337
|
blockedClient->mode = "test";
|
|
334
338
|
|