@voxgig/sdkgen 4.34.0 → 4.34.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +9 -7
- package/dist/cmp/ReadmeErrors.js.map +1 -1
- package/dist/cmp/ReadmeExplanation.js +7 -6
- 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 +6 -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 +108 -38
- 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 +120 -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 +12 -1
- package/dist/helpers/naming.js +154 -4
- 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 +20 -5
- package/dist/helpers/opExample.js +86 -24
- package/dist/helpers/opExample.js.map +1 -1
- package/dist/helpers/opShape.d.ts +22 -4
- package/dist/helpers/opShape.js +218 -38
- 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 +17 -10
- package/dist/sdkgen.js +87 -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 +3 -1
- package/dist/utility.js +59 -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 +24 -14
- package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +17 -8
- 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 +39 -21
- package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +41 -22
- package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +11 -8
- package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +23 -11
- 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/c/utility_c.ts +21 -2
- 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 +11 -5
- package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +18 -7
- 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 +11 -9
- package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +25 -12
- package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +42 -22
- package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +8 -5
- package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +17 -10
- package/project/.sdk/src/cmp/clojure/TestClean_clojure.ts +57 -27
- package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +64 -5
- package/project/.sdk/src/cmp/clojure/fragment/Entity.fragment.clj +24 -12
- 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/clojure/utility_clojure.ts +14 -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 +21 -13
- package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +18 -9
- 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 +28 -19
- package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +44 -26
- package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +9 -8
- package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +19 -11
- 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/cpp/utility_cpp.ts +13 -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 +10 -6
- package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +21 -9
- 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 +29 -13
- package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +41 -19
- package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +15 -8
- package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +19 -11
- 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 +19 -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 +17 -13
- package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +2 -1
- package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +18 -10
- 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 +36 -20
- package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +37 -21
- package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +13 -10
- package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +18 -13
- 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/EntityCreateOp.fragment.ex +4 -3
- package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +4 -3
- package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +4 -3
- package/project/.sdk/src/cmp/elixir/fragment/EntityPatchOp.fragment.ex +36 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -3
- package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +4 -3
- 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/elixir/utility_elixir.ts +12 -0
- 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 +9 -5
- package/project/.sdk/src/cmp/go/ReadmeExamplesTest_go.ts +6 -1
- package/project/.sdk/src/cmp/go/ReadmeExplanation_go.ts +3 -1
- package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +21 -9
- 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 +18 -14
- package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +27 -12
- package/project/.sdk/src/cmp/go/ReadmeRef_go.ts +40 -17
- package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +10 -8
- package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +7 -3
- 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/utility_go.ts +1 -1
- 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 +14 -22
- package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +20 -23
- 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 +11 -9
- package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +33 -28
- package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +45 -36
- package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +22 -25
- package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +19 -25
- 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/java/utility_java.ts +25 -0
- package/project/.sdk/src/cmp/js/EntityOperation_js.ts +3 -1
- 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 +8 -11
- package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +11 -12
- 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 +12 -11
- package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +23 -12
- package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +47 -19
- package/project/.sdk/src/cmp/js/ReadmeTopHowto_js.ts +2 -3
- package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +16 -11
- package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +12 -8
- 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/EntityCreateOp.fragment.js +1 -1
- package/project/.sdk/src/cmp/js/fragment/EntityListOp.fragment.js +1 -1
- package/project/.sdk/src/cmp/js/fragment/EntityLoadOp.fragment.js +1 -1
- package/project/.sdk/src/cmp/js/fragment/EntityPatchOp.fragment.js +129 -0
- package/project/.sdk/src/cmp/js/fragment/EntityRemoveOp.fragment.js +1 -1
- package/project/.sdk/src/cmp/js/fragment/EntityUpdateOp.fragment.js +1 -1
- package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +39 -15
- package/project/.sdk/src/cmp/js/utility_js.ts +2 -1
- 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 +10 -6
- package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +20 -10
- 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 +11 -9
- package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +24 -10
- package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +38 -18
- package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +14 -8
- package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +18 -11
- 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/kotlin/utility_kotlin.ts +21 -1
- 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 +9 -5
- package/project/.sdk/src/cmp/lua/ReadmeExamplesTest_lua.ts +15 -6
- package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +10 -8
- 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 +15 -14
- package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +29 -10
- package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +29 -12
- package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +15 -7
- package/project/.sdk/src/cmp/lua/ReadmeTopTest_lua.ts +7 -6
- 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 +86 -48
- package/project/.sdk/src/cmp/lua/fragment/EntityCreateOp.fragment.lua +1 -1
- package/project/.sdk/src/cmp/lua/fragment/EntityListOp.fragment.lua +1 -1
- package/project/.sdk/src/cmp/lua/fragment/EntityLoadOp.fragment.lua +1 -1
- package/project/.sdk/src/cmp/lua/fragment/EntityPatchOp.fragment.lua +34 -0
- package/project/.sdk/src/cmp/lua/fragment/EntityRemoveOp.fragment.lua +1 -1
- package/project/.sdk/src/cmp/lua/fragment/EntityUpdateOp.fragment.lua +1 -1
- 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 +10 -6
- package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +5 -9
- 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 +3 -1
- package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +14 -4
- package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +31 -13
- package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +4 -2
- package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +5 -8
- 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 +20 -1
- 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 +13 -5
- package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +11 -6
- 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 +11 -9
- package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +20 -9
- package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +43 -23
- package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +8 -5
- package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +12 -9
- 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 +17 -3
- package/project/.sdk/src/cmp/perl/fragment/EntityCreateOp.fragment.pm +2 -2
- package/project/.sdk/src/cmp/perl/fragment/EntityListOp.fragment.pm +2 -13
- package/project/.sdk/src/cmp/perl/fragment/EntityLoadOp.fragment.pm +2 -2
- package/project/.sdk/src/cmp/perl/fragment/EntityPatchOp.fragment.pm +32 -0
- package/project/.sdk/src/cmp/perl/fragment/EntityRemoveOp.fragment.pm +1 -1
- package/project/.sdk/src/cmp/perl/fragment/EntityUpdateOp.fragment.pm +2 -2
- package/project/.sdk/src/cmp/perl/fragment/Main.fragment.pm +23 -5
- package/project/.sdk/src/cmp/perl/utility_perl.ts +26 -0
- package/project/.sdk/src/cmp/php/EntityOperation_php.ts +3 -1
- 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 +10 -6
- package/project/.sdk/src/cmp/php/ReadmeExamplesTest_php.ts +3 -3
- package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +13 -7
- 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 +10 -9
- package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +12 -3
- package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +35 -17
- package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +5 -4
- package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +14 -8
- 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/EntityCreateOp.fragment.php +2 -2
- package/project/.sdk/src/cmp/php/fragment/EntityListOp.fragment.php +2 -2
- package/project/.sdk/src/cmp/php/fragment/EntityLoadOp.fragment.php +2 -2
- package/project/.sdk/src/cmp/php/fragment/EntityPatchOp.fragment.php +38 -0
- package/project/.sdk/src/cmp/php/fragment/EntityRemoveOp.fragment.php +2 -2
- package/project/.sdk/src/cmp/php/fragment/EntityUpdateOp.fragment.php +2 -2
- package/project/.sdk/src/cmp/php/fragment/Main.fragment.php +26 -5
- package/project/.sdk/src/cmp/py/EntityOperation_py.ts +3 -1
- 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 +9 -11
- package/project/.sdk/src/cmp/py/ReadmeExamplesTest_py.ts +12 -6
- package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +10 -10
- 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 +10 -9
- package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +18 -15
- package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +42 -32
- package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +7 -12
- package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +9 -8
- 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/EntityCreateOp.fragment.py +1 -1
- package/project/.sdk/src/cmp/py/fragment/EntityListOp.fragment.py +1 -1
- package/project/.sdk/src/cmp/py/fragment/EntityLoadOp.fragment.py +1 -1
- package/project/.sdk/src/cmp/py/fragment/EntityPatchOp.fragment.py +27 -0
- package/project/.sdk/src/cmp/py/fragment/EntityRemoveOp.fragment.py +1 -1
- package/project/.sdk/src/cmp/py/fragment/EntityUpdateOp.fragment.py +1 -1
- 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/EntityOperation_rb.ts +3 -1
- package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +5 -4
- 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 +13 -6
- package/project/.sdk/src/cmp/rb/ReadmeExamplesTest_rb.ts +19 -10
- package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +21 -11
- 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 +11 -9
- package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +20 -8
- package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +38 -17
- package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +8 -5
- package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +15 -11
- 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/EntityCreateOp.fragment.rb +2 -1
- package/project/.sdk/src/cmp/rb/fragment/EntityListOp.fragment.rb +2 -11
- package/project/.sdk/src/cmp/rb/fragment/EntityLoadOp.fragment.rb +2 -1
- package/project/.sdk/src/cmp/rb/fragment/EntityPatchOp.fragment.rb +32 -0
- package/project/.sdk/src/cmp/rb/fragment/EntityRemoveOp.fragment.rb +2 -1
- package/project/.sdk/src/cmp/rb/fragment/EntityUpdateOp.fragment.rb +2 -1
- package/project/.sdk/src/cmp/rb/fragment/Main.fragment.rb +19 -5
- package/project/.sdk/src/cmp/rb/utility_rb.ts +10 -0
- 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 +19 -11
- package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +17 -6
- 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 +28 -19
- package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +38 -23
- package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +9 -10
- package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +20 -11
- 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/rust/utility_rust.ts +13 -1
- package/project/.sdk/src/cmp/scala/Config_scala.ts +4 -0
- package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +6 -3
- 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 +14 -22
- package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +18 -23
- 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 +11 -9
- package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +27 -28
- package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +43 -36
- package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +14 -25
- package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +17 -25
- 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/scala/utility_scala.ts +25 -0
- package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +4 -4
- 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 +10 -6
- package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +23 -9
- 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 +11 -9
- package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +26 -9
- package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +39 -18
- package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +12 -7
- package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +22 -11
- 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/swift/utility_swift.ts +14 -1
- 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 +8 -11
- package/project/.sdk/src/cmp/ts/ReadmeExamplesTest_ts.ts +39 -21
- package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +11 -12
- 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 +12 -11
- package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +17 -14
- package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +47 -27
- package/project/.sdk/src/cmp/ts/ReadmeTopHowto_ts.ts +2 -3
- package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +8 -14
- package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +30 -15
- 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/EntityCreateOp.fragment.ts +1 -1
- package/project/.sdk/src/cmp/ts/fragment/EntityListOp.fragment.ts +1 -1
- package/project/.sdk/src/cmp/ts/fragment/EntityLoadOp.fragment.ts +1 -1
- package/project/.sdk/src/cmp/ts/fragment/EntityPatchOp.fragment.ts +126 -0
- package/project/.sdk/src/cmp/ts/fragment/EntityUpdateOp.fragment.ts +1 -1
- package/project/.sdk/src/cmp/ts/fragment/Main.fragment.ts +50 -18
- package/project/.sdk/src/cmp/ts/utility_ts.ts +2 -1
- 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 +20 -11
- package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +20 -6
- 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 +32 -14
- package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +48 -24
- package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +11 -6
- package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +17 -9
- 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/src/cmp/zig/utility_zig.ts +13 -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 +446 -142
- package/project/.sdk/tm/clojure/src/sdk/features.clj +44 -20
- package/project/.sdk/tm/clojure/test/sdk/test/concurrency.clj +136 -0
- package/project/.sdk/tm/clojure/test/sdk/test/feature.clj +21 -1
- package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +13 -3
- package/project/.sdk/tm/cpp/LICENSE +1 -1
- package/project/.sdk/tm/cpp/core/types.hpp +167 -13
- 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/concurrency_test.cpp +348 -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 +482 -106
- package/project/.sdk/tm/csharp/LICENSE +1 -1
- package/project/.sdk/tm/csharp/core/Context.cs +9 -6
- 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/ConcurrencyTest.cs +238 -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/Clean.cs +12 -10
- 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 +4 -1
- package/project/.sdk/tm/elixir/lib/projectname/core.ex +7 -2
- package/project/.sdk/tm/elixir/lib/projectname/entity_base.ex +45 -13
- 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 +512 -138
- package/project/.sdk/tm/elixir/test/concurrency_test.exs +176 -0
- 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 +6 -2
- 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/concurrency_test.go +214 -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 +7 -4
- 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/ConcurrencyTest.java +221 -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 +39 -24
- 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 +6 -4
- 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/ConcurrencyTest.kt +193 -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/Makefile +21 -8
- 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 +385 -96
- package/project/.sdk/tm/ocaml/sdk_types.ml +12 -2
- package/project/.sdk/tm/ocaml/test/concurrency_test.ml +148 -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 +42 -12
- 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 +3 -3
- 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/clean.py +12 -8
- 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_concurrency.py +177 -0
- 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 +9 -4
- 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/concurrency_test.rb +160 -0
- 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 +22 -13
- 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 +5 -1
- package/project/.sdk/tm/scala/core/Context.scala +7 -5
- 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/ConcurrencyTest.scala +186 -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 +3 -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 +52 -19
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/ConcurrencyTest.swift +214 -0
- 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 +41 -10
- 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 +11 -9
- package/src/cmp/ReadmeExplanation.ts +8 -8
- 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 +7 -4
- 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 +126 -44
- 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 +139 -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 +200 -4
- package/src/helpers/npm.ts +68 -0
- package/src/helpers/npmScripts.ts +37 -0
- package/src/helpers/opExample.ts +111 -31
- package/src/helpers/opShape.ts +259 -37
- 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 +110 -16
- package/src/testkit.ts +2 -1
- package/src/utility.ts +68 -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
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
|
|
10
10
|
#include <algorithm>
|
|
11
11
|
#include <memory>
|
|
12
|
+
#include <mutex>
|
|
13
|
+
#include <shared_mutex>
|
|
12
14
|
#include <cctype>
|
|
13
15
|
#include <string>
|
|
14
16
|
#include <vector>
|
|
@@ -19,6 +21,7 @@
|
|
|
19
21
|
// (it includes only core/struct.hpp), so this cannot close a cycle with
|
|
20
22
|
// core/config.hpp, which pulls in the feature headers.
|
|
21
23
|
#include "../core/schema.hpp"
|
|
24
|
+
#include "cookie.hpp"
|
|
22
25
|
|
|
23
26
|
// prepareAuth is GENERATED, not templated: WHERE the credential goes -
|
|
24
27
|
// header, query or cookie, and under what name - is a fact about THIS API
|
|
@@ -65,7 +68,7 @@ inline CtxPtr makeContext(const CtxSpec& cs, CtxPtr basectx) {
|
|
|
65
68
|
//
|
|
66
69
|
// The configuration is the derived clean block makeOptions builds
|
|
67
70
|
// (`options.__derived__.clean`): a plain map, so the registry list inside
|
|
68
|
-
// it
|
|
71
|
+
// it can be replaced after construction - features register later.
|
|
69
72
|
|
|
70
73
|
constexpr int CLEAN_MAXDEPTH = 32;
|
|
71
74
|
|
|
@@ -175,36 +178,51 @@ inline std::vector<std::string> cleanForms(const std::string& value) {
|
|
|
175
178
|
return out;
|
|
176
179
|
}
|
|
177
180
|
|
|
181
|
+
inline Value cleanValues(const Value& cfg) {
|
|
182
|
+
std::shared_lock<std::shared_mutex> guard(cleanRegistryLock());
|
|
183
|
+
return getp(cfg, "values");
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
inline bool cleanKnown(const Value& values, const std::string& form) {
|
|
187
|
+
if (!values.is_list()) return false;
|
|
188
|
+
for (const auto& v : *values.as_list()) {
|
|
189
|
+
if (v.is_string() && v.as_string() == form) return true;
|
|
190
|
+
}
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
|
|
178
194
|
// Register a secret value. Idempotent; shorter than `min` is not a secret
|
|
179
|
-
// the SDK can mask without blanking ordinary text.
|
|
195
|
+
// the SDK can mask without blanking ordinary text. A registration publishes
|
|
196
|
+
// a new list and never changes a published one.
|
|
180
197
|
inline void cleanAddCfg(const Value& cfg, const Value& value) {
|
|
181
198
|
if (!cfg.is_map() || !value.is_string()) return;
|
|
182
199
|
size_t min = static_cast<size_t>(cleanCount(getp(cfg, "min"), 4));
|
|
183
200
|
const std::string& raw = value.as_string();
|
|
184
201
|
if (raw.size() < min) return;
|
|
185
|
-
|
|
186
|
-
if (!values.is_list()) {
|
|
187
|
-
values = vlist();
|
|
188
|
-
map_put(cfg, "values", values);
|
|
189
|
-
}
|
|
190
|
-
auto& list = *values.as_list();
|
|
191
|
-
bool changed = false;
|
|
202
|
+
std::vector<std::string> forms;
|
|
192
203
|
for (const auto& form : cleanForms(raw)) {
|
|
193
|
-
if (form.size()
|
|
194
|
-
bool known = false;
|
|
195
|
-
for (const auto& v : list) {
|
|
196
|
-
if (v.is_string() && v.as_string() == form) { known = true; break; }
|
|
197
|
-
}
|
|
198
|
-
if (!known) {
|
|
199
|
-
list.push_back(Value(form));
|
|
200
|
-
changed = true;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
if (changed) {
|
|
204
|
-
std::stable_sort(list.begin(), list.end(), [](const Value& a, const Value& b) {
|
|
205
|
-
return a.as_string().size() > b.as_string().size();
|
|
206
|
-
});
|
|
204
|
+
if (min <= form.size()) forms.push_back(form);
|
|
207
205
|
}
|
|
206
|
+
auto unknown = [&forms](const Value& values) {
|
|
207
|
+
std::vector<std::string> out;
|
|
208
|
+
for (const auto& form : forms) {
|
|
209
|
+
if (!cleanKnown(values, form)) out.push_back(form);
|
|
210
|
+
}
|
|
211
|
+
return out;
|
|
212
|
+
};
|
|
213
|
+
if (unknown(cleanValues(cfg)).empty()) return;
|
|
214
|
+
std::unique_lock<std::shared_mutex> guard(cleanRegistryLock());
|
|
215
|
+
Value values = getp(cfg, "values");
|
|
216
|
+
std::vector<std::string> added = unknown(values);
|
|
217
|
+
if (added.empty()) return;
|
|
218
|
+
Value next = vlist();
|
|
219
|
+
if (values.is_list()) *next.as_list() = *values.as_list();
|
|
220
|
+
auto& list = *next.as_list();
|
|
221
|
+
for (const auto& form : added) list.push_back(Value(form));
|
|
222
|
+
std::stable_sort(list.begin(), list.end(), [](const Value& a, const Value& b) {
|
|
223
|
+
return a.as_string().size() > b.as_string().size();
|
|
224
|
+
});
|
|
225
|
+
map_put(cfg, "values", next);
|
|
208
226
|
}
|
|
209
227
|
|
|
210
228
|
inline void cleanAdd(CtxPtr ctx, const Value& value) {
|
|
@@ -220,7 +238,7 @@ inline std::string cleanMaskValue(const Value& cfg, const std::string& value) {
|
|
|
220
238
|
|
|
221
239
|
inline std::string cleanString(const Value& cfg, const std::string& text) {
|
|
222
240
|
std::string out = text;
|
|
223
|
-
Value values =
|
|
241
|
+
Value values = cleanValues(cfg);
|
|
224
242
|
if (!values.is_list()) return out;
|
|
225
243
|
for (const auto& v : *values.as_list()) {
|
|
226
244
|
if (!v.is_string() || v.as_string().empty()) continue;
|
|
@@ -579,6 +597,8 @@ inline Value fetcher(CtxPtr ctx, const std::string& fullurl, const Value& fetchd
|
|
|
579
597
|
|
|
580
598
|
// ---- makeFetchDef -----------------------------------------------------
|
|
581
599
|
|
|
600
|
+
inline bool isJsonRequest(const Value& point);
|
|
601
|
+
|
|
582
602
|
inline Value makeFetchDef(CtxPtr ctx) {
|
|
583
603
|
SpecPtr spec = ctx->spec;
|
|
584
604
|
if (!spec) {
|
|
@@ -597,11 +617,15 @@ inline Value makeFetchDef(CtxPtr ctx) {
|
|
|
597
617
|
map_put(fetchdef, "method", Value(spec->method));
|
|
598
618
|
map_put(fetchdef, "headers", spec->headers);
|
|
599
619
|
|
|
620
|
+
// A map or a list is JSON, and so is a scalar on a point that declares a
|
|
621
|
+
// JSON body. Anything else goes as given.
|
|
600
622
|
if (!is_nullish(spec->body)) {
|
|
601
|
-
|
|
602
|
-
|
|
623
|
+
const Value& body = spec->body;
|
|
624
|
+
bool scalar = body.is_string() || body.is_number() || body.is_bool();
|
|
625
|
+
if (body.is_map() || body.is_list() || (scalar && isJsonRequest(ctx->point))) {
|
|
626
|
+
map_put(fetchdef, "body", Value(Struct::jsonify(body)));
|
|
603
627
|
} else {
|
|
604
|
-
map_put(fetchdef, "body",
|
|
628
|
+
map_put(fetchdef, "body", body);
|
|
605
629
|
}
|
|
606
630
|
}
|
|
607
631
|
|
|
@@ -638,6 +662,23 @@ inline std::string makeUrl(CtxPtr ctx) {
|
|
|
638
662
|
}
|
|
639
663
|
}
|
|
640
664
|
|
|
665
|
+
// A placeholder left in the route would send the request to the wrong route.
|
|
666
|
+
// The base's own placeholders are server variables, resolved with the options.
|
|
667
|
+
std::string base = spec->base;
|
|
668
|
+
while (!base.empty() && '/' == base.back()) base.pop_back();
|
|
669
|
+
const std::string route = 0 == url.compare(0, base.size(), base) ? url.substr(base.size()) : url;
|
|
670
|
+
std::string unfilled;
|
|
671
|
+
for (size_t at = route.find('{'); std::string::npos != at; at = route.find('{', at + 1)) {
|
|
672
|
+
size_t end = route.find_first_of("{}/", at + 1);
|
|
673
|
+
if (std::string::npos != end && '}' == route[end] && end > at + 1) {
|
|
674
|
+
unfilled += (unfilled.empty() ? "" : ", ") + route.substr(at, end - at + 1);
|
|
675
|
+
at = end;
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
if (!unfilled.empty()) {
|
|
679
|
+
throw ctx->makeError("url_param_missing", "URL path has no value for " + unfilled + ".");
|
|
680
|
+
}
|
|
681
|
+
|
|
641
682
|
std::string qsep = "?";
|
|
642
683
|
for (const auto& item : Struct::items(spec->query)) {
|
|
643
684
|
std::string key = as_str(pair_key(item));
|
|
@@ -645,7 +686,10 @@ inline std::string makeUrl(CtxPtr ctx) {
|
|
|
645
686
|
if (!is_nullish(val)) {
|
|
646
687
|
url += qsep + Struct::escurl(Value(key)) + "=" + Struct::escurl(Value(Struct::stringify(val)));
|
|
647
688
|
qsep = "&";
|
|
648
|
-
|
|
689
|
+
// Sent with the request, never recorded as the entity's match.
|
|
690
|
+
if (spec->authquery.end() == std::find(spec->authquery.begin(), spec->authquery.end(), key)) {
|
|
691
|
+
map_put(resmatch, key, val);
|
|
692
|
+
}
|
|
649
693
|
}
|
|
650
694
|
}
|
|
651
695
|
|
|
@@ -655,6 +699,50 @@ inline std::string makeUrl(CtxPtr ctx) {
|
|
|
655
699
|
|
|
656
700
|
// ---- makePoint --------------------------------------------------------
|
|
657
701
|
|
|
702
|
+
// The name a point gives a parameter in the call, if it renames it.
|
|
703
|
+
inline std::string paramAlias(const Value& point, const std::string& key) {
|
|
704
|
+
if (!point.is_map()) return "";
|
|
705
|
+
Value alias = Helpers::toMapAny(getp(point, "alias"));
|
|
706
|
+
if (!alias.is_map()) return "";
|
|
707
|
+
Value ak = getp(alias, key);
|
|
708
|
+
return ak.is_string() ? ak.as_string() : "";
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
// The value the call or its entity gives a point's parameter, under its name
|
|
712
|
+
// or the point's alias for it.
|
|
713
|
+
inline Value paramValue(CtxPtr ctx, const Value& point, const std::string& key) {
|
|
714
|
+
std::string akey = paramAlias(point, key);
|
|
715
|
+
|
|
716
|
+
Value val = getp(ctx->reqmatch, key, Value(nullptr));
|
|
717
|
+
if (val.is_null()) val = getp(ctx->match, key, Value(nullptr));
|
|
718
|
+
if (val.is_null() && !akey.empty()) val = getp(ctx->reqmatch, akey, Value(nullptr));
|
|
719
|
+
if (val.is_null()) val = getp(ctx->reqdata, key, Value(nullptr));
|
|
720
|
+
if (val.is_null()) val = getp(ctx->data, key, Value(nullptr));
|
|
721
|
+
if (val.is_null() && !akey.empty()) {
|
|
722
|
+
val = getp(ctx->reqdata, akey, Value(nullptr));
|
|
723
|
+
if (val.is_null()) val = getp(ctx->data, akey, Value(nullptr));
|
|
724
|
+
}
|
|
725
|
+
|
|
726
|
+
return val;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
// The path parameters of a point that neither the call nor the entity gives a
|
|
730
|
+
// value for, looked up as param looks them up.
|
|
731
|
+
inline std::vector<std::string> unfilledParams(CtxPtr ctx, const Value& point) {
|
|
732
|
+
std::vector<std::string> missing;
|
|
733
|
+
Value parts = getp(point, "parts");
|
|
734
|
+
if (!parts.is_list()) return missing;
|
|
735
|
+
for (const auto& part : *parts.as_list()) {
|
|
736
|
+
if (!part.is_string()) continue;
|
|
737
|
+
const std::string& text = part.as_string();
|
|
738
|
+
if (text.size() < 3 || '{' != text.front() ||
|
|
739
|
+
text.size() - 1 != text.find_first_of("{}/", 1) || '}' != text.back()) continue;
|
|
740
|
+
std::string name = text.substr(1, text.size() - 2);
|
|
741
|
+
if (is_nullish(paramValue(ctx, point, name))) missing.push_back(name);
|
|
742
|
+
}
|
|
743
|
+
return missing;
|
|
744
|
+
}
|
|
745
|
+
|
|
658
746
|
inline Value makePoint(CtxPtr ctx) {
|
|
659
747
|
// A PrePoint feature hook (e.g. rbac) may short-circuit by storing an
|
|
660
748
|
// error; surface it before any endpoint resolution or network activity.
|
|
@@ -669,8 +757,9 @@ inline Value makePoint(CtxPtr ctx) {
|
|
|
669
757
|
OperationPtr op = ctx->op;
|
|
670
758
|
Value options = ctx->options;
|
|
671
759
|
|
|
672
|
-
|
|
673
|
-
|
|
760
|
+
Value allowOpVal = Struct::getpath(options, {"allow", "op"});
|
|
761
|
+
std::string allowOp = as_str(allowOpVal);
|
|
762
|
+
if (!Helpers::allowed(allowOpVal, op->name)) {
|
|
674
763
|
throw ctx->makeError("point_op_allow",
|
|
675
764
|
"Operation \"" + op->name + "\" not allowed by SDK option allow.op value: \"" + allowOp + "\"");
|
|
676
765
|
}
|
|
@@ -761,18 +850,50 @@ inline Value makePoint(CtxPtr ctx) {
|
|
|
761
850
|
return last.is_string() && 0 == last.as_string().rfind("{", 0);
|
|
762
851
|
};
|
|
763
852
|
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
const
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
853
|
+
auto ownPoint = [&](const std::vector<Value>& points) {
|
|
854
|
+
Value best = points[0];
|
|
855
|
+
for (const auto& cand : points) {
|
|
856
|
+
bool candTerm = terminalParam(cand);
|
|
857
|
+
bool bestTerm = terminalParam(best);
|
|
858
|
+
if (candTerm != bestTerm) {
|
|
859
|
+
if (candTerm) best = cand;
|
|
860
|
+
}
|
|
861
|
+
else if (partsLen(cand) < partsLen(best)) {
|
|
862
|
+
best = cand;
|
|
863
|
+
}
|
|
771
864
|
}
|
|
772
|
-
|
|
773
|
-
|
|
865
|
+
return best;
|
|
866
|
+
};
|
|
867
|
+
|
|
868
|
+
// A call without an action falls back to a point without one, as
|
|
869
|
+
// generation does, and only to a route the call can fill.
|
|
870
|
+
std::vector<Value> plain;
|
|
871
|
+
for (const auto& cand : op->points) {
|
|
872
|
+
if (getp(Helpers::toMapAny(getp(cand, "select")), "$action", Value(nullptr)).is_null()) {
|
|
873
|
+
plain.push_back(cand);
|
|
874
|
+
}
|
|
875
|
+
}
|
|
876
|
+
if (plain.empty()) {
|
|
877
|
+
throw ctx->makeError("point_action_required",
|
|
878
|
+
"Operation \"" + op->name +
|
|
879
|
+
"\" has only action endpoints; pass $action to choose one.");
|
|
880
|
+
}
|
|
881
|
+
std::vector<Value> fillable;
|
|
882
|
+
for (const auto& cand : plain) {
|
|
883
|
+
if (unfilledParams(ctx, cand).empty()) fillable.push_back(cand);
|
|
884
|
+
}
|
|
885
|
+
|
|
886
|
+
if (fillable.empty()) {
|
|
887
|
+
std::string missing;
|
|
888
|
+
for (const auto& name : unfilledParams(ctx, ownPoint(plain))) {
|
|
889
|
+
missing += (missing.empty() ? "" : ", ") + name;
|
|
774
890
|
}
|
|
891
|
+
throw ctx->makeError("point_no_match",
|
|
892
|
+
"Operation \"" + op->name +
|
|
893
|
+
"\" has no endpoint whose path parameters are all given (missing: " + missing + ").");
|
|
775
894
|
}
|
|
895
|
+
|
|
896
|
+
point = ownPoint(fillable);
|
|
776
897
|
}
|
|
777
898
|
|
|
778
899
|
if (reqselector.is_map()) {
|
|
@@ -953,8 +1074,9 @@ inline SpecPtr makeSpec(CtxPtr ctx) {
|
|
|
953
1074
|
|
|
954
1075
|
ctx->spec->method = utility->prepareMethod(ctx);
|
|
955
1076
|
|
|
956
|
-
|
|
957
|
-
|
|
1077
|
+
Value allowMethodVal = Struct::getpath(options, {"allow", "method"});
|
|
1078
|
+
std::string allowMethod = as_str(allowMethodVal);
|
|
1079
|
+
if (!Helpers::allowed(allowMethodVal, ctx->spec->method)) {
|
|
958
1080
|
throw ctx->makeError("spec_method_allow",
|
|
959
1081
|
"Method \"" + ctx->spec->method + "\" not allowed by SDK option allow.method value: \"" + allowMethod + "\"");
|
|
960
1082
|
}
|
|
@@ -984,7 +1106,25 @@ inline SpecPtr makeSpec(CtxPtr ctx) {
|
|
|
984
1106
|
map_put(ctx->ctrl->explain, "spec", ctx->spec->toValue());
|
|
985
1107
|
}
|
|
986
1108
|
|
|
1109
|
+
// Whatever prepareAuth sets in the query, under whichever name, is the
|
|
1110
|
+
// credential; a key it leaves as it was is the caller's.
|
|
1111
|
+
std::vector<std::pair<std::string, Value>> query;
|
|
1112
|
+
for (const auto& item : Struct::items(ctx->spec->query)) {
|
|
1113
|
+
query.emplace_back(as_str(pair_key(item)), pair_val(item));
|
|
1114
|
+
}
|
|
1115
|
+
|
|
987
1116
|
SpecPtr spec = utility->prepareAuth(ctx);
|
|
1117
|
+
if (spec) {
|
|
1118
|
+
spec->authquery.clear();
|
|
1119
|
+
for (const auto& item : Struct::items(spec->query)) {
|
|
1120
|
+
std::string key = as_str(pair_key(item));
|
|
1121
|
+
auto was = std::find_if(query.begin(), query.end(),
|
|
1122
|
+
[&](const std::pair<std::string, Value>& kv) { return kv.first == key; });
|
|
1123
|
+
if (query.end() == was || !(was->second == pair_val(item))) {
|
|
1124
|
+
spec->authquery.push_back(key);
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
988
1128
|
ctx->spec = spec;
|
|
989
1129
|
return spec;
|
|
990
1130
|
}
|
|
@@ -1101,6 +1241,11 @@ inline ResultPtr resultBody(CtxPtr ctx) {
|
|
|
1101
1241
|
if (response && response->jsonFunc && !is_nullish(response->body)) {
|
|
1102
1242
|
result->body = response->jsonFunc();
|
|
1103
1243
|
}
|
|
1244
|
+
if (response && response->unreadable) {
|
|
1245
|
+
Value sent = ctx->spec ? ctx->spec->headers : Value::undef();
|
|
1246
|
+
result->err = unreadableBody(ctx, result->status, result->headers, response->body, sent,
|
|
1247
|
+
result->err);
|
|
1248
|
+
}
|
|
1104
1249
|
}
|
|
1105
1250
|
return result;
|
|
1106
1251
|
}
|
|
@@ -1255,44 +1400,216 @@ inline std::string prepareMethod(CtxPtr ctx) {
|
|
|
1255
1400
|
|
|
1256
1401
|
// ---- prepareBody ------------------------------------------------------
|
|
1257
1402
|
|
|
1403
|
+
// ---- media ------------------------------------------------------------
|
|
1404
|
+
|
|
1405
|
+
// The media types a point declares: `response` (the model's `rs`) for the
|
|
1406
|
+
// Accept header, and `body` (the model's `rb`) for the request body.
|
|
1407
|
+
|
|
1408
|
+
// The data key holding a raw request body. Like `$action`, it can never be a
|
|
1409
|
+
// declared argument name.
|
|
1410
|
+
inline const char* rawBodyKey() { return "$body"; }
|
|
1411
|
+
|
|
1412
|
+
inline std::string mediaLower(std::string s) {
|
|
1413
|
+
for (auto& ch : s) ch = (char)std::tolower((unsigned char)ch);
|
|
1414
|
+
return s;
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1417
|
+
inline bool isJsonMedia(const Value& v) {
|
|
1418
|
+
if (!v.is_string()) return false;
|
|
1419
|
+
std::string m = v.as_string().substr(0, v.as_string().find(';'));
|
|
1420
|
+
size_t b = m.find_first_not_of(" \t");
|
|
1421
|
+
size_t e = m.find_last_not_of(" \t");
|
|
1422
|
+
m = std::string::npos == b ? "" : mediaLower(m.substr(b, e - b + 1));
|
|
1423
|
+
return m == "application/json" || m == "text/json" ||
|
|
1424
|
+
(m.size() >= 5 && 0 == m.compare(m.size() - 5, 5, "+json"));
|
|
1425
|
+
}
|
|
1426
|
+
|
|
1427
|
+
// The declared JSON type alone, else every declared type in the model's
|
|
1428
|
+
// order; empty when no success response declares a body.
|
|
1429
|
+
inline std::string acceptOf(const Value& point) {
|
|
1430
|
+
Value res = getp(point, "response");
|
|
1431
|
+
Value media = getp(res, "media");
|
|
1432
|
+
if (!media.is_string() || media.as_string().empty()) return "";
|
|
1433
|
+
Value kind = getp(res, "kind");
|
|
1434
|
+
if (kind.is_string() && kind.as_string() == "json") return media.as_string();
|
|
1435
|
+
std::string out = media.as_string();
|
|
1436
|
+
Value alts = getp(res, "alternatives");
|
|
1437
|
+
if (alts.is_list()) {
|
|
1438
|
+
for (const auto& alt : *alts.as_list()) {
|
|
1439
|
+
Value m = getp(alt, "media");
|
|
1440
|
+
if (m.is_string() && !m.as_string().empty()) out += ", " + m.as_string();
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
return out;
|
|
1444
|
+
}
|
|
1445
|
+
|
|
1446
|
+
inline bool isRawRequest(const Value& point) {
|
|
1447
|
+
Value kind = getp(getp(point, "body"), "kind");
|
|
1448
|
+
return kind.is_string() && kind.as_string() == "raw";
|
|
1449
|
+
}
|
|
1450
|
+
|
|
1451
|
+
inline bool isJsonRequest(const Value& point) {
|
|
1452
|
+
Value kind = getp(getp(point, "body"), "kind");
|
|
1453
|
+
return kind.is_string() && kind.as_string() == "json";
|
|
1454
|
+
}
|
|
1455
|
+
|
|
1456
|
+
inline bool hasMediaHeader(const Value& headers, const std::string& name) {
|
|
1457
|
+
for (const auto& item : Struct::items(headers)) {
|
|
1458
|
+
if (mediaLower(as_str(pair_key(item))) == name) return true;
|
|
1459
|
+
}
|
|
1460
|
+
return false;
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
// A caller's accept wins. A declared request type replaces each JSON
|
|
1464
|
+
// content-type, the SDK default, and leaves any other the caller set.
|
|
1465
|
+
inline Value mediaHeaders(const Value& point, Value headers) {
|
|
1466
|
+
std::string accept = acceptOf(point);
|
|
1467
|
+
if (!accept.empty() && !hasMediaHeader(headers, "accept")) {
|
|
1468
|
+
map_put(headers, "accept", Value(accept));
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
Value body = getp(point, "body");
|
|
1472
|
+
Value kind = getp(body, "kind");
|
|
1473
|
+
Value media = getp(body, "media");
|
|
1474
|
+
if (kind.is_string() && (kind.as_string() == "raw" || kind.as_string() == "json") &&
|
|
1475
|
+
media.is_string() && !media.as_string().empty()) {
|
|
1476
|
+
for (const auto& item : Struct::items(headers)) {
|
|
1477
|
+
std::string key = as_str(pair_key(item));
|
|
1478
|
+
if (mediaLower(key) == "content-type" && isJsonMedia(getp(headers, key))) {
|
|
1479
|
+
headers.as_map()->erase(key);
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
if (!hasMediaHeader(headers, "content-type")) map_put(headers, "content-type", media);
|
|
1483
|
+
}
|
|
1484
|
+
return headers;
|
|
1485
|
+
}
|
|
1486
|
+
|
|
1487
|
+
// A string Value holds any bytes, and they are sent as they are.
|
|
1488
|
+
inline Value rawBody(const Value& reqdata) { return getp(reqdata, rawBodyKey()); }
|
|
1489
|
+
|
|
1258
1490
|
inline Value prepareBody(CtxPtr ctx) {
|
|
1259
1491
|
if (ctx->op->input == "data") {
|
|
1492
|
+
if (isRawRequest(ctx->point)) return rawBody(ctx->reqdata);
|
|
1260
1493
|
return ctx->utility->transformRequest(ctx);
|
|
1261
1494
|
}
|
|
1262
1495
|
return Value::undef();
|
|
1263
1496
|
}
|
|
1264
1497
|
|
|
1498
|
+
// ---- callArgs ---------------------------------------------------------
|
|
1499
|
+
|
|
1500
|
+
// One argument a point declares, with the name it travels under and the
|
|
1501
|
+
// value the call passes for it.
|
|
1502
|
+
struct CallArg {
|
|
1503
|
+
std::string name;
|
|
1504
|
+
std::string wire;
|
|
1505
|
+
Value val;
|
|
1506
|
+
};
|
|
1507
|
+
|
|
1508
|
+
// The arguments a point declares in one location, query or header, each with
|
|
1509
|
+
// the name it travels under and the value this call passes in its match or
|
|
1510
|
+
// else its data. Unlike a path parameter, the entity's stored match and data
|
|
1511
|
+
// never supply one.
|
|
1512
|
+
inline std::vector<CallArg> callArgs(CtxPtr ctx, const std::string& kind) {
|
|
1513
|
+
std::vector<CallArg> out;
|
|
1514
|
+
Value defs = ctx->point.is_map() ? getp(getp(ctx->point, "args"), kind) : Value::undef();
|
|
1515
|
+
if (!defs.is_list()) return out;
|
|
1516
|
+
for (const auto& ad : *defs.as_list()) {
|
|
1517
|
+
Value name = getp(ad, "name");
|
|
1518
|
+
if (!name.is_string() || name.as_string().empty()) continue;
|
|
1519
|
+
Value orig = getp(ad, "orig");
|
|
1520
|
+
std::string wire = orig.is_string() && !orig.as_string().empty() ?
|
|
1521
|
+
orig.as_string() : name.as_string();
|
|
1522
|
+
Value val = getp(ctx->reqmatch, name.as_string(), Value(nullptr));
|
|
1523
|
+
if (is_nullish(val)) val = getp(ctx->reqdata, name.as_string(), Value(nullptr));
|
|
1524
|
+
out.push_back({name.as_string(), wire, val});
|
|
1525
|
+
}
|
|
1526
|
+
return out;
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1265
1529
|
// ---- prepareHeaders ---------------------------------------------------
|
|
1266
1530
|
|
|
1531
|
+
// Strips the blanks around a cookie piece.
|
|
1532
|
+
inline std::string trimBlank(const std::string& s) {
|
|
1533
|
+
size_t from = s.find_first_not_of(" \t");
|
|
1534
|
+
if (std::string::npos == from) return "";
|
|
1535
|
+
return s.substr(from, s.find_last_not_of(" \t") - from + 1);
|
|
1536
|
+
}
|
|
1537
|
+
|
|
1538
|
+
// The form style of a cookie parameter: a list repeats the name, a map sends
|
|
1539
|
+
// its own keys, and every value is percent-encoded.
|
|
1540
|
+
inline std::string cookiePair(const std::string& wire, const Value& val) {
|
|
1541
|
+
auto esc = [](const Value& v) { return Struct::escurl(Value(Struct::stringify(v))); };
|
|
1542
|
+
std::vector<std::string> pairs;
|
|
1543
|
+
if (val.is_list()) {
|
|
1544
|
+
for (const auto& item : *val.as_list()) pairs.push_back(wire + "=" + esc(item));
|
|
1545
|
+
} else if (val.is_map()) {
|
|
1546
|
+
for (const auto& item : Struct::items(val)) {
|
|
1547
|
+
pairs.push_back(Struct::escurl(pair_key(item)) + "=" + esc(pair_val(item)));
|
|
1548
|
+
}
|
|
1549
|
+
} else {
|
|
1550
|
+
pairs.push_back(wire + "=" + esc(val));
|
|
1551
|
+
}
|
|
1552
|
+
std::string joined;
|
|
1553
|
+
for (size_t i = 0; i < pairs.size(); i++) joined += (0 < i ? "; " : "") + pairs[i];
|
|
1554
|
+
return joined;
|
|
1555
|
+
}
|
|
1556
|
+
|
|
1267
1557
|
inline Value prepareHeaders(CtxPtr ctx) {
|
|
1268
1558
|
Value options = ctx->client->optionsMap();
|
|
1269
1559
|
Value headers = getp(options, "headers");
|
|
1270
1560
|
Value out = is_nullish(headers) ? vmap() : Helpers::toMapAny(Struct::clone(headers));
|
|
1271
1561
|
if (!out.is_map()) out = vmap();
|
|
1562
|
+
out = mediaHeaders(ctx->point, out);
|
|
1272
1563
|
|
|
1273
|
-
// A header
|
|
1274
|
-
// gives it, and only from this call's own arguments. It replaces a default
|
|
1275
|
-
// of the same name, whatever its case.
|
|
1564
|
+
// A header argument replaces a default of the same name, whatever its case.
|
|
1276
1565
|
auto lower = [](std::string s) {
|
|
1277
1566
|
for (auto& ch : s) ch = (char)std::tolower((unsigned char)ch);
|
|
1278
1567
|
return s;
|
|
1279
1568
|
};
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1569
|
+
for (const auto& arg : callArgs(ctx, "header")) {
|
|
1570
|
+
if (is_nullish(arg.val)) continue;
|
|
1571
|
+
std::string wire = lower(arg.wire);
|
|
1572
|
+
for (const auto& item : Struct::items(out)) {
|
|
1573
|
+
std::string key = as_str(pair_key(item));
|
|
1574
|
+
if (lower(key) == wire) out.as_map()->erase(key);
|
|
1575
|
+
}
|
|
1576
|
+
map_put(out, wire, Value(Struct::stringify(arg.val)));
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
// A cookie argument travels in the cookie header, form serialized and
|
|
1580
|
+
// percent-encoded, replacing a cookie of the same name among those the
|
|
1581
|
+
// caller's headers already send.
|
|
1582
|
+
std::vector<CallArg> sent;
|
|
1583
|
+
for (const auto& arg : callArgs(ctx, "cookie")) {
|
|
1584
|
+
if (!is_nullish(arg.val)) sent.push_back(arg);
|
|
1585
|
+
}
|
|
1586
|
+
if (!sent.empty()) {
|
|
1587
|
+
std::vector<std::string> names;
|
|
1588
|
+
for (const auto& arg : sent) {
|
|
1589
|
+
if (arg.val.is_map()) {
|
|
1590
|
+
for (const auto& item : Struct::items(arg.val)) names.push_back(Struct::escurl(pair_key(item)));
|
|
1591
|
+
} else {
|
|
1592
|
+
names.push_back(arg.wire);
|
|
1294
1593
|
}
|
|
1295
|
-
|
|
1594
|
+
}
|
|
1595
|
+
std::vector<std::string> kept;
|
|
1596
|
+
for (const auto& item : Struct::items(out)) {
|
|
1597
|
+
std::string key = as_str(pair_key(item));
|
|
1598
|
+
if (lower(key) != "cookie") continue;
|
|
1599
|
+
Value given = getp(out, key);
|
|
1600
|
+
if (given.is_string()) {
|
|
1601
|
+
for (const auto& cookie : cookieKeep(given.as_string(), names)) kept.push_back(cookie);
|
|
1602
|
+
}
|
|
1603
|
+
out.as_map()->erase(key);
|
|
1604
|
+
}
|
|
1605
|
+
for (const auto& arg : sent) {
|
|
1606
|
+
std::string pair = cookiePair(arg.wire, arg.val);
|
|
1607
|
+
if (!pair.empty()) kept.push_back(pair);
|
|
1608
|
+
}
|
|
1609
|
+
if (!kept.empty()) {
|
|
1610
|
+
std::string joined;
|
|
1611
|
+
for (size_t i = 0; i < kept.size(); i++) joined += (0 < i ? "; " : "") + kept[i];
|
|
1612
|
+
map_put(out, "cookie", Value(joined));
|
|
1296
1613
|
}
|
|
1297
1614
|
}
|
|
1298
1615
|
return out;
|
|
@@ -1301,13 +1618,6 @@ inline Value prepareHeaders(CtxPtr ctx) {
|
|
|
1301
1618
|
// ---- param ------------------------------------------------------------
|
|
1302
1619
|
|
|
1303
1620
|
inline Value param(CtxPtr ctx, const Value& paramdef) {
|
|
1304
|
-
Value point = ctx->point;
|
|
1305
|
-
SpecPtr spec = ctx->spec;
|
|
1306
|
-
Value match = ctx->match;
|
|
1307
|
-
Value reqmatch = ctx->reqmatch;
|
|
1308
|
-
Value data = ctx->data;
|
|
1309
|
-
Value reqdata = ctx->reqdata;
|
|
1310
|
-
|
|
1311
1621
|
int pt = Struct::typify(paramdef);
|
|
1312
1622
|
|
|
1313
1623
|
std::string key;
|
|
@@ -1318,29 +1628,14 @@ inline Value param(CtxPtr ctx, const Value& paramdef) {
|
|
|
1318
1628
|
key = k.is_string() ? k.as_string() : "";
|
|
1319
1629
|
}
|
|
1320
1630
|
|
|
1321
|
-
std::string akey =
|
|
1322
|
-
if (
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
if (ak.is_string()) akey = ak.as_string();
|
|
1327
|
-
}
|
|
1631
|
+
std::string akey = paramAlias(ctx->point, key);
|
|
1632
|
+
if (ctx->spec && !akey.empty() &&
|
|
1633
|
+
getp(ctx->reqmatch, key, Value(nullptr)).is_null() &&
|
|
1634
|
+
getp(ctx->match, key, Value(nullptr)).is_null()) {
|
|
1635
|
+
map_put(ctx->spec->alias, akey, Value(key));
|
|
1328
1636
|
}
|
|
1329
1637
|
|
|
1330
|
-
|
|
1331
|
-
if (val.is_null()) val = getp(match, key, Value(nullptr));
|
|
1332
|
-
if (val.is_null() && !akey.empty()) {
|
|
1333
|
-
if (spec) map_put(spec->alias, akey, Value(key));
|
|
1334
|
-
val = getp(reqmatch, akey, Value(nullptr));
|
|
1335
|
-
}
|
|
1336
|
-
if (val.is_null()) val = getp(reqdata, key, Value(nullptr));
|
|
1337
|
-
if (val.is_null()) val = getp(data, key, Value(nullptr));
|
|
1338
|
-
if (val.is_null() && !akey.empty()) {
|
|
1339
|
-
val = getp(reqdata, akey, Value(nullptr));
|
|
1340
|
-
if (val.is_null()) val = getp(data, akey, Value(nullptr));
|
|
1341
|
-
}
|
|
1342
|
-
|
|
1343
|
-
return val;
|
|
1638
|
+
return paramValue(ctx, ctx->point, key);
|
|
1344
1639
|
}
|
|
1345
1640
|
|
|
1346
1641
|
// ---- prepareParams ----------------------------------------------------
|
|
@@ -1396,9 +1691,9 @@ inline Value prepareQuery(CtxPtr ctx) {
|
|
|
1396
1691
|
|
|
1397
1692
|
// A path parameter travels in the path. The generated config lists them as
|
|
1398
1693
|
// args.params, which prepareParams reads; params is the older list of names.
|
|
1399
|
-
// A header parameter travels in the headers, which prepareHeaders fills.
|
|
1400
1694
|
Value aparams = point.is_map() ? getp(getp(point, "args"), "params") : Value::undef();
|
|
1401
1695
|
Value aheader = point.is_map() ? getp(getp(point, "args"), "header") : Value::undef();
|
|
1696
|
+
Value acookie = point.is_map() ? getp(getp(point, "args"), "cookie") : Value::undef();
|
|
1402
1697
|
auto named = [&](const Value& defs, const std::string& s) {
|
|
1403
1698
|
if (!defs.is_list()) return false;
|
|
1404
1699
|
for (const auto& pd : *defs.as_list()) {
|
|
@@ -1408,9 +1703,13 @@ inline Value prepareQuery(CtxPtr ctx) {
|
|
|
1408
1703
|
return false;
|
|
1409
1704
|
};
|
|
1410
1705
|
|
|
1706
|
+
// A header or cookie parameter travels in the headers, which prepareHeaders
|
|
1707
|
+
// fills, unless a query parameter shares its name: then both are sent.
|
|
1708
|
+
Value aquery = point.is_map() ? getp(getp(point, "args"), "query") : Value::undef();
|
|
1709
|
+
auto elsewhere = [&](const std::string& s) { return (named(aheader, s) || named(acookie, s)) && !named(aquery, s); };
|
|
1710
|
+
|
|
1411
1711
|
// A query parameter travels under the name the definition gives it, its
|
|
1412
1712
|
// orig, which the model may have renamed for the caller.
|
|
1413
|
-
Value aquery = point.is_map() ? getp(getp(point, "args"), "query") : Value::undef();
|
|
1414
1713
|
auto wire_name = [&](const std::string& s) {
|
|
1415
1714
|
if (aquery.is_list()) {
|
|
1416
1715
|
for (const auto& qd : *aquery.as_list()) {
|
|
@@ -1430,10 +1729,18 @@ inline Value prepareQuery(CtxPtr ctx) {
|
|
|
1430
1729
|
std::string key = as_str(pair_key(item));
|
|
1431
1730
|
Value val = pair_val(item);
|
|
1432
1731
|
if (!is_nullish(val) && "$action" != key && !contains_str(params, key) &&
|
|
1433
|
-
!named(aparams, key) && !
|
|
1732
|
+
!named(aparams, key) && !elsewhere(key)) {
|
|
1434
1733
|
map_put(out, wire_name(key), val);
|
|
1435
1734
|
}
|
|
1436
1735
|
}
|
|
1736
|
+
|
|
1737
|
+
// A create or update passes its query arguments in its data.
|
|
1738
|
+
for (const auto& arg : callArgs(ctx, "query")) {
|
|
1739
|
+
if (!is_nullish(arg.val) && !contains_str(params, arg.name) &&
|
|
1740
|
+
!named(aparams, arg.name) && !elsewhere(arg.name)) {
|
|
1741
|
+
map_put(out, arg.wire, arg.val);
|
|
1742
|
+
}
|
|
1743
|
+
}
|
|
1437
1744
|
return out;
|
|
1438
1745
|
}
|
|
1439
1746
|
|
|
@@ -1470,15 +1777,28 @@ inline Value omitKeys(const Value& reqdata, const std::vector<std::string>& name
|
|
|
1470
1777
|
// the body is a copy without it. The caller's map is left untouched.
|
|
1471
1778
|
inline Value stripAction(const Value& reqdata) { return omitKeys(reqdata, {"$action"}); }
|
|
1472
1779
|
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1780
|
+
inline bool fieldArg(CtxPtr ctx, const std::string& name) {
|
|
1781
|
+
if (!ctx->point.is_map()) return false;
|
|
1782
|
+
for (const char* kind : {"header", "cookie", "query"}) {
|
|
1783
|
+
Value defs = getp(getp(ctx->point, "args"), kind);
|
|
1784
|
+
if (!defs.is_list()) continue;
|
|
1785
|
+
for (const auto& ad : *defs.as_list()) {
|
|
1786
|
+
Value n = getp(ad, "name");
|
|
1787
|
+
Value f = getp(ad, "field");
|
|
1788
|
+
if (n.is_string() && n.as_string() == name && f.is_bool() && f.as_bool()) return true;
|
|
1789
|
+
}
|
|
1790
|
+
}
|
|
1791
|
+
return false;
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1794
|
+
// A header, cookie or query argument travels where prepareHeaders or
|
|
1795
|
+
// prepareQuery sends it, so the body is built from the request data without
|
|
1796
|
+
// it, unless the point marks it as a field the body keeps.
|
|
1797
|
+
inline std::vector<std::string> routedArgNames(CtxPtr ctx) {
|
|
1476
1798
|
std::vector<std::string> names;
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
Value name = getp(hd, "name");
|
|
1481
|
-
if (name.is_string() && !name.as_string().empty()) names.push_back(name.as_string());
|
|
1799
|
+
for (const char* kind : {"header", "cookie", "query"}) {
|
|
1800
|
+
for (const auto& arg : callArgs(ctx, kind)) {
|
|
1801
|
+
if (!fieldArg(ctx, arg.name)) names.push_back(arg.name);
|
|
1482
1802
|
}
|
|
1483
1803
|
}
|
|
1484
1804
|
return names;
|
|
@@ -1487,7 +1807,7 @@ inline std::vector<std::string> headerArgNames(CtxPtr ctx) {
|
|
|
1487
1807
|
inline Value transformRequest(CtxPtr ctx) {
|
|
1488
1808
|
if (ctx->spec) ctx->spec->step = "reqform";
|
|
1489
1809
|
|
|
1490
|
-
Value reqdata = omitKeys(ctx->reqdata,
|
|
1810
|
+
Value reqdata = omitKeys(ctx->reqdata, routedArgNames(ctx));
|
|
1491
1811
|
|
|
1492
1812
|
Value transform = Helpers::toMapAny(getp(ctx->point, "transform"));
|
|
1493
1813
|
if (!transform.is_map()) return stripAction(reqdata);
|
|
@@ -1502,11 +1822,13 @@ inline Value transformRequest(CtxPtr ctx) {
|
|
|
1502
1822
|
|
|
1503
1823
|
// ---- makeOptions ------------------------------------------------------
|
|
1504
1824
|
|
|
1505
|
-
inline Value
|
|
1825
|
+
inline Value optsPlain(const Value& settings, const std::string& name) {
|
|
1506
1826
|
if (!settings.is_map()) return settings;
|
|
1507
1827
|
Value out = vmap();
|
|
1508
1828
|
for (const auto& kv : *settings.as_map()) {
|
|
1509
|
-
if ("entity" != kv.first
|
|
1829
|
+
if ("entity" != kv.first && !("rbac" == name && "rules" == kv.first)) {
|
|
1830
|
+
map_put(out, kv.first, kv.second);
|
|
1831
|
+
}
|
|
1510
1832
|
}
|
|
1511
1833
|
return out;
|
|
1512
1834
|
}
|
|
@@ -1514,8 +1836,9 @@ inline Value optsNoEntity(const Value& settings) {
|
|
|
1514
1836
|
// The options to scan for secrets. The feature map is keyed by feature
|
|
1515
1837
|
// names, not field names, so it is scanned as a list: `secrets` must not
|
|
1516
1838
|
// make every setting of that feature a secret. Entity blocks hold entity
|
|
1517
|
-
// settings and seeded records, never a credential, so none is scanned
|
|
1518
|
-
//
|
|
1839
|
+
// settings and seeded records, never a credential, so none is scanned, and
|
|
1840
|
+
// nor are rbac's rules, keyed by entity and operation names. The raw scan
|
|
1841
|
+
// still sees the feature list form, whose entries each carry `name`.
|
|
1519
1842
|
inline Value optsWithout(const Value& opts, std::initializer_list<const char*> keys) {
|
|
1520
1843
|
Value out = vmap();
|
|
1521
1844
|
if (!opts.is_map()) return out;
|
|
@@ -1526,13 +1849,16 @@ inline Value optsWithout(const Value& opts, std::initializer_list<const char*> k
|
|
|
1526
1849
|
if ("feature" == kv.first && (kv.second.is_map() || kv.second.is_list())) {
|
|
1527
1850
|
Value list = vlist();
|
|
1528
1851
|
if (kv.second.is_map()) {
|
|
1529
|
-
for (const auto& f : *kv.second.as_map()) list.as_list()->push_back(
|
|
1852
|
+
for (const auto& f : *kv.second.as_map()) list.as_list()->push_back(optsPlain(f.second, f.first));
|
|
1530
1853
|
} else {
|
|
1531
|
-
for (const auto& f : *kv.second.as_list())
|
|
1854
|
+
for (const auto& f : *kv.second.as_list()) {
|
|
1855
|
+
Value name = f.is_map() ? getp(f, "name") : Value::undef();
|
|
1856
|
+
list.as_list()->push_back(optsPlain(f, name.is_string() ? name.as_string() : ""));
|
|
1857
|
+
}
|
|
1532
1858
|
}
|
|
1533
1859
|
map_put(out, kv.first, list);
|
|
1534
1860
|
} else if ("test" == kv.first) {
|
|
1535
|
-
map_put(out, kv.first,
|
|
1861
|
+
map_put(out, kv.first, optsPlain(kv.second, ""));
|
|
1536
1862
|
} else {
|
|
1537
1863
|
map_put(out, kv.first, kv.second);
|
|
1538
1864
|
}
|
|
@@ -1540,6 +1866,51 @@ inline Value optsWithout(const Value& opts, std::initializer_list<const char*> k
|
|
|
1540
1866
|
return out;
|
|
1541
1867
|
}
|
|
1542
1868
|
|
|
1869
|
+
// A templated base URL takes each {name} from options.server. An empty value
|
|
1870
|
+
// cannot make a working URL, so it fails construction, except in test mode,
|
|
1871
|
+
// where it becomes test-<name>.
|
|
1872
|
+
inline std::string resolveServerBase(const std::string& base, const Value& opts,
|
|
1873
|
+
const Value& config, CtxPtr ctx) {
|
|
1874
|
+
bool testmode = is_true(Struct::getpath(opts, {"test", "active"}))
|
|
1875
|
+
|| is_true(Struct::getpath(opts, {"feature", "test", "active"}));
|
|
1876
|
+
Value server = Helpers::toMapAny(getp(opts, "server"));
|
|
1877
|
+
Value nameV = Struct::getpath(config, {"main", "name"});
|
|
1878
|
+
std::string sdkname = nameV.is_string() && !nameV.as_string().empty()
|
|
1879
|
+
? nameV.as_string() : "SDK";
|
|
1880
|
+
auto namechar = [](char c) {
|
|
1881
|
+
return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z') || ('0' <= c && c <= '9') || '_' == c;
|
|
1882
|
+
};
|
|
1883
|
+
|
|
1884
|
+
std::string out;
|
|
1885
|
+
size_t i = 0;
|
|
1886
|
+
while (i < base.size()) {
|
|
1887
|
+
size_t j = i + 1;
|
|
1888
|
+
if ('{' == base[i]) {
|
|
1889
|
+
while (j < base.size() && namechar(base[j])) j++;
|
|
1890
|
+
}
|
|
1891
|
+
// A placeholder only when it closes and the name is [A-Za-z0-9_]+.
|
|
1892
|
+
if ('{' != base[i] || j == i + 1 || j >= base.size() || '}' != base[j]) {
|
|
1893
|
+
out += base[i];
|
|
1894
|
+
i++;
|
|
1895
|
+
continue;
|
|
1896
|
+
}
|
|
1897
|
+
std::string name = base.substr(i + 1, j - i - 1);
|
|
1898
|
+
Value val = server.is_map() ? getp(server, name) : Value::undef();
|
|
1899
|
+
if (val.is_string() && !val.as_string().empty()) {
|
|
1900
|
+
out += val.as_string();
|
|
1901
|
+
} else if (testmode) {
|
|
1902
|
+
out += "test-" + name;
|
|
1903
|
+
} else {
|
|
1904
|
+
throw std::make_shared<SdkError>("server_var_required",
|
|
1905
|
+
sdkname + ": the server variable '" + name + "' is required: the API base URL is '" +
|
|
1906
|
+
base + "' - pass {\"server\", vmap({{\"" + name + "\", Value(\"...\")}})} in the SDK options",
|
|
1907
|
+
ctx.get());
|
|
1908
|
+
}
|
|
1909
|
+
i = j + 1;
|
|
1910
|
+
}
|
|
1911
|
+
return out;
|
|
1912
|
+
}
|
|
1913
|
+
|
|
1543
1914
|
inline Value makeOptions(CtxPtr ctx) {
|
|
1544
1915
|
Value options = ctx->options;
|
|
1545
1916
|
if (!options.is_map()) options = vmap();
|
|
@@ -1676,6 +2047,11 @@ inline Value makeOptions(CtxPtr ctx) {
|
|
|
1676
2047
|
}
|
|
1677
2048
|
}
|
|
1678
2049
|
|
|
2050
|
+
Value baseV = getp(opts, "base");
|
|
2051
|
+
if (baseV.is_string() && std::string::npos != baseV.as_string().find('{')) {
|
|
2052
|
+
map_put(opts, "base", Value(resolveServerBase(baseV.as_string(), opts, config, ctx)));
|
|
2053
|
+
}
|
|
2054
|
+
|
|
1679
2055
|
// Resolve the feature add-order: an explicit list order (above) wins;
|
|
1680
2056
|
// otherwise order the map test-first, then the remaining names sorted, so
|
|
1681
2057
|
// the outcome is deterministic and `test` is always the base transport.
|