@voxgig/sdkgen 4.21.0 → 4.22.0
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/action.js +0 -65
- package/dist/action/action.js.map +1 -1
- package/dist/action/check.js +0 -88
- package/dist/action/check.js.map +1 -1
- package/dist/action/dispatch.js +0 -27
- package/dist/action/dispatch.js.map +1 -1
- package/dist/action/doctor.d.ts +1 -0
- package/dist/action/doctor.js +55 -321
- package/dist/action/doctor.js.map +1 -1
- package/dist/action/edition.js +1 -87
- package/dist/action/edition.js.map +1 -1
- package/dist/action/feature.js +0 -48
- package/dist/action/feature.js.map +1 -1
- package/dist/action/kind.js +0 -132
- package/dist/action/kind.js.map +1 -1
- package/dist/action/package.js +0 -221
- package/dist/action/package.js.map +1 -1
- package/dist/action/resolve.js +0 -145
- package/dist/action/resolve.js.map +1 -1
- package/dist/action/target.js +0 -177
- package/dist/action/target.js.map +1 -1
- package/dist/cmp/AgentGuide.js +0 -7
- package/dist/cmp/AgentGuide.js.map +1 -1
- package/dist/cmp/AgentGuideContent.js +0 -24
- package/dist/cmp/AgentGuideContent.js.map +1 -1
- package/dist/cmp/AgentGuideTop.js +0 -7
- package/dist/cmp/AgentGuideTop.js.map +1 -1
- package/dist/cmp/Changelog.js +0 -14
- package/dist/cmp/Changelog.js.map +1 -1
- package/dist/cmp/Deploy.js +1 -31
- package/dist/cmp/Deploy.js.map +1 -1
- package/dist/cmp/Entity.js +0 -4
- package/dist/cmp/Entity.js.map +1 -1
- package/dist/cmp/ExternalTarget.js +0 -36
- package/dist/cmp/ExternalTarget.js.map +1 -1
- package/dist/cmp/Feature.js +0 -14
- package/dist/cmp/Feature.js.map +1 -1
- package/dist/cmp/FeatureDocs.js +0 -25
- package/dist/cmp/FeatureDocs.js.map +1 -1
- package/dist/cmp/PublishWorkflow.js +0 -60
- package/dist/cmp/PublishWorkflow.js.map +1 -1
- package/dist/cmp/ReadmeErrors.js +0 -2
- package/dist/cmp/ReadmeErrors.js.map +1 -1
- package/dist/cmp/ReadmeExplanation.js +0 -5
- package/dist/cmp/ReadmeExplanation.js.map +1 -1
- package/dist/cmp/ReadmeFeatures.js +0 -10
- package/dist/cmp/ReadmeFeatures.js.map +1 -1
- package/dist/cmp/ReadmeRefFeatures.js +0 -19
- package/dist/cmp/ReadmeRefFeatures.js.map +1 -1
- package/dist/cmp/ReadmeStation.js +0 -19
- package/dist/cmp/ReadmeStation.js.map +1 -1
- package/dist/cmp/ReadmeTop.js +0 -80
- package/dist/cmp/ReadmeTop.js.map +1 -1
- package/dist/cmp/ReadmeUnions.js +0 -15
- package/dist/cmp/ReadmeUnions.js.map +1 -1
- package/dist/cmp/Registered.js +0 -30
- package/dist/cmp/Registered.js.map +1 -1
- package/dist/cmp/Security.js +0 -2
- 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 +0 -25
- package/dist/cmp/TestControl.js.map +1 -1
- package/dist/helpers/applicability.js +0 -60
- package/dist/helpers/applicability.js.map +1 -1
- package/dist/helpers/buildIdNames.js +0 -12
- package/dist/helpers/buildIdNames.js.map +1 -1
- package/dist/helpers/canonSpec.js +0 -114
- package/dist/helpers/canonSpec.js.map +1 -1
- package/dist/helpers/canonType.js +0 -87
- package/dist/helpers/canonType.js.map +1 -1
- package/dist/helpers/collectDeps.js +0 -27
- package/dist/helpers/collectDeps.js.map +1 -1
- package/dist/helpers/definition.js +0 -29
- package/dist/helpers/definition.js.map +1 -1
- package/dist/helpers/dryrun.js +0 -8
- package/dist/helpers/dryrun.js.map +1 -1
- package/dist/helpers/featureSource.js +0 -145
- package/dist/helpers/featureSource.js.map +1 -1
- package/dist/helpers/getMatchEntries.js +0 -4
- package/dist/helpers/getMatchEntries.js.map +1 -1
- package/dist/helpers/junk.js +9 -85
- package/dist/helpers/junk.js.map +1 -1
- package/dist/helpers/manifest.js +0 -138
- package/dist/helpers/manifest.js.map +1 -1
- package/dist/helpers/modelNames.js +0 -78
- package/dist/helpers/modelNames.js.map +1 -1
- package/dist/helpers/modelcheck.js +0 -106
- package/dist/helpers/modelcheck.js.map +1 -1
- package/dist/helpers/naming.d.ts +0 -1
- package/dist/helpers/naming.js +0 -303
- package/dist/helpers/naming.js.map +1 -1
- package/dist/helpers/opExample.js +0 -51
- package/dist/helpers/opExample.js.map +1 -1
- package/dist/helpers/opShape.js +0 -198
- package/dist/helpers/opShape.js.map +1 -1
- package/dist/helpers/optspec.js +0 -77
- package/dist/helpers/optspec.js.map +1 -1
- package/dist/helpers/packageMeta.js +1 -200
- package/dist/helpers/packageMeta.js.map +1 -1
- package/dist/helpers/pointPath.js +0 -55
- package/dist/helpers/pointPath.js.map +1 -1
- package/dist/helpers/resolved.d.ts +6 -0
- package/dist/helpers/resolved.js +49 -0
- package/dist/helpers/resolved.js.map +1 -0
- package/dist/helpers/semver.js +0 -61
- package/dist/helpers/semver.js.map +1 -1
- package/dist/helpers/serverVars.js +0 -44
- package/dist/helpers/serverVars.js.map +1 -1
- package/dist/helpers/shipped.js +0 -14
- package/dist/helpers/shipped.js.map +1 -1
- package/dist/helpers/station.js +0 -32
- package/dist/helpers/station.js.map +1 -1
- package/dist/helpers/stdrep.js +0 -26
- package/dist/helpers/stdrep.js.map +1 -1
- package/dist/helpers/testPolicy.js +0 -4
- package/dist/helpers/testPolicy.js.map +1 -1
- package/dist/sdkgen.d.ts +2 -1
- package/dist/sdkgen.js +13 -242
- package/dist/sdkgen.js.map +1 -1
- package/dist/testkit.js +6 -266
- package/dist/testkit.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility.js +0 -243
- package/dist/utility.js.map +1 -1
- package/model/sdkgen.aon +12 -489
- package/package.json +4 -4
- package/project/.sdk/model/feature/audit.aon +0 -7
- package/project/.sdk/model/feature/cache.aon +0 -7
- package/project/.sdk/model/feature/clienttrack.aon +0 -7
- package/project/.sdk/model/feature/cost.aon +0 -13
- package/project/.sdk/model/feature/debug.aon +0 -7
- package/project/.sdk/model/feature/idempotency.aon +0 -7
- package/project/.sdk/model/feature/log.aon +0 -7
- package/project/.sdk/model/feature/metrics.aon +0 -7
- package/project/.sdk/model/feature/netsim.aon +0 -10
- package/project/.sdk/model/feature/paging.aon +0 -7
- package/project/.sdk/model/feature/proxy.aon +0 -7
- package/project/.sdk/model/feature/ratelimit.aon +0 -7
- package/project/.sdk/model/feature/retry.aon +0 -7
- package/project/.sdk/model/feature/secrets.aon +0 -482
- package/project/.sdk/model/feature/streaming.aon +0 -7
- package/project/.sdk/model/feature/telemetry.aon +0 -7
- package/project/.sdk/model/feature/test.aon +1 -8
- package/project/.sdk/model/feature/timeout.aon +0 -7
- package/project/.sdk/model/feature/validate.aon +0 -32
- package/project/.sdk/model/target/c.aon +0 -41
- package/project/.sdk/model/target/clojure.aon +0 -36
- package/project/.sdk/model/target/cpp.aon +0 -42
- package/project/.sdk/model/target/csharp.aon +0 -26
- package/project/.sdk/model/target/elixir.aon +0 -22
- package/project/.sdk/model/target/go-cli.aon +0 -30
- package/project/.sdk/model/target/go-mcp.aon +0 -21
- package/project/.sdk/model/target/go.aon +0 -9
- package/project/.sdk/model/target/java.aon +0 -29
- package/project/.sdk/model/target/js.aon +2 -21
- package/project/.sdk/model/target/kotlin.aon +0 -31
- package/project/.sdk/model/target/lua.aon +0 -32
- package/project/.sdk/model/target/ocaml.aon +0 -64
- package/project/.sdk/model/target/perl.aon +0 -20
- package/project/.sdk/model/target/php.aon +0 -17
- package/project/.sdk/model/target/py-data.aon +0 -33
- package/project/.sdk/model/target/py.aon +0 -17
- package/project/.sdk/model/target/rb.aon +0 -17
- package/project/.sdk/model/target/rust.aon +0 -25
- package/project/.sdk/model/target/scala.aon +0 -74
- package/project/.sdk/model/target/swift.aon +0 -41
- package/project/.sdk/model/target/ts.aon +3 -25
- package/project/.sdk/model/target/zig.aon +0 -50
- package/project/.sdk/src/cmp/c/Config_c.ts +0 -100
- package/project/.sdk/src/cmp/c/EntityTypes_c.ts +0 -36
- package/project/.sdk/src/cmp/c/Main_c.ts +0 -44
- package/project/.sdk/src/cmp/c/Package_c.ts +0 -14
- package/project/.sdk/src/cmp/c/PrepareAuth_c.ts +0 -85
- package/project/.sdk/src/cmp/c/ReadmeExamplesTest_c.ts +0 -20
- package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +2 -5
- package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +0 -2
- package/project/.sdk/src/cmp/c/Schema_c.ts +0 -19
- package/project/.sdk/src/cmp/c/utility_c.ts +0 -47
- package/project/.sdk/src/cmp/clojure/Config_clojure.ts +0 -63
- package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +0 -1
- package/project/.sdk/src/cmp/clojure/Main_clojure.ts +0 -41
- package/project/.sdk/src/cmp/clojure/Package_clojure.ts +0 -20
- package/project/.sdk/src/cmp/clojure/PrepareAuth_clojure.ts +0 -130
- package/project/.sdk/src/cmp/clojure/ReadmeExamplesTest_clojure.ts +0 -16
- package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +2 -5
- package/project/.sdk/src/cmp/clojure/Schema_clojure.ts +0 -20
- package/project/.sdk/src/cmp/clojure/TestDirect_clojure.ts +0 -6
- package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +0 -10
- package/project/.sdk/src/cmp/clojure/Test_clojure.ts +0 -8
- package/project/.sdk/src/cmp/clojure/featureextra_clojure.ts +0 -34
- package/project/.sdk/src/cmp/clojure/utility_clojure.ts +0 -47
- package/project/.sdk/src/cmp/cpp/Config_cpp.ts +0 -109
- package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +0 -36
- package/project/.sdk/src/cmp/cpp/Main_cpp.ts +0 -47
- package/project/.sdk/src/cmp/cpp/Package_cpp.ts +0 -14
- package/project/.sdk/src/cmp/cpp/PrepareAuth_cpp.ts +0 -125
- package/project/.sdk/src/cmp/cpp/ReadmeExamplesTest_cpp.ts +0 -19
- package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +0 -7
- package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +2 -5
- package/project/.sdk/src/cmp/cpp/Schema_cpp.ts +0 -21
- package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +0 -3
- package/project/.sdk/src/cmp/cpp/Test_cpp.ts +0 -3
- package/project/.sdk/src/cmp/cpp/utility_cpp.ts +0 -28
- package/project/.sdk/src/cmp/csharp/Config_csharp.ts +0 -79
- package/project/.sdk/src/cmp/csharp/EntityOperation_csharp.ts +0 -3
- package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +0 -50
- package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +0 -1
- package/project/.sdk/src/cmp/csharp/Main_csharp.ts +0 -24
- package/project/.sdk/src/cmp/csharp/Package_csharp.ts +0 -20
- package/project/.sdk/src/cmp/csharp/PrepareAuth_csharp.ts +0 -81
- package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +0 -1
- package/project/.sdk/src/cmp/csharp/ReadmeExamplesTest_csharp.ts +0 -23
- package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +2 -5
- package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +0 -2
- package/project/.sdk/src/cmp/csharp/Schema_csharp.ts +0 -18
- package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +0 -4
- package/project/.sdk/src/cmp/csharp/utility_csharp.ts +0 -72
- package/project/.sdk/src/cmp/elixir/Config_elixir.ts +0 -78
- package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +0 -38
- package/project/.sdk/src/cmp/elixir/Main_elixir.ts +0 -40
- package/project/.sdk/src/cmp/elixir/Package_elixir.ts +0 -13
- package/project/.sdk/src/cmp/elixir/PrepareAuth_elixir.ts +0 -123
- package/project/.sdk/src/cmp/elixir/ReadmeExamplesTest_elixir.ts +0 -19
- package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +2 -5
- package/project/.sdk/src/cmp/elixir/Schema_elixir.ts +0 -24
- package/project/.sdk/src/cmp/elixir/utility_elixir.ts +0 -34
- package/project/.sdk/src/cmp/go/Config_go.ts +0 -41
- package/project/.sdk/src/cmp/go/EntityTypes_go.ts +0 -71
- package/project/.sdk/src/cmp/go/Entity_go.ts +0 -5
- package/project/.sdk/src/cmp/go/Main_go.ts +0 -28
- package/project/.sdk/src/cmp/go/Package_go.ts +0 -7
- package/project/.sdk/src/cmp/go/PrepareAuth_go.ts +0 -64
- package/project/.sdk/src/cmp/go/ReadmeEntity_go.ts +0 -5
- package/project/.sdk/src/cmp/go/ReadmeExamplesTest_go.ts +0 -30
- package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +0 -3
- package/project/.sdk/src/cmp/go/ReadmeIntro_go.ts +0 -7
- package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +0 -11
- package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +0 -21
- package/project/.sdk/src/cmp/go/ReadmeRef_go.ts +2 -14
- package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +0 -9
- package/project/.sdk/src/cmp/go/Schema_go.ts +0 -21
- package/project/.sdk/src/cmp/go/TestDirect_go.ts +0 -23
- package/project/.sdk/src/cmp/go/TestEntity_go.ts +0 -8
- package/project/.sdk/src/cmp/go/fragment/Entity.fragment.go +0 -21
- package/project/.sdk/src/cmp/go/fragment/Main.fragment.go +0 -12
- package/project/.sdk/src/cmp/go/utility_go.ts +0 -70
- package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +0 -49
- package/project/.sdk/src/cmp/go-cli/fragment/words.fragment.go +0 -12
- package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +0 -36
- package/project/.sdk/src/cmp/go-mcp/fragment/main.fragment.go +0 -20
- package/project/.sdk/src/cmp/go-mcp/fragment/tools.fragment.go +0 -3
- package/project/.sdk/src/cmp/java/Config_java.ts +0 -63
- package/project/.sdk/src/cmp/java/EntityTypes_java.ts +0 -50
- package/project/.sdk/src/cmp/java/Entity_java.ts +0 -6
- package/project/.sdk/src/cmp/java/Main_java.ts +0 -24
- package/project/.sdk/src/cmp/java/PrepareAuth_java.ts +0 -55
- package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +0 -1
- package/project/.sdk/src/cmp/java/ReadmeExamplesTest_java.ts +0 -20
- package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +0 -4
- package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +2 -5
- package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +0 -7
- package/project/.sdk/src/cmp/java/Schema_java.ts +0 -19
- package/project/.sdk/src/cmp/java/TestDirect_java.ts +0 -7
- package/project/.sdk/src/cmp/java/TestEntity_java.ts +0 -4
- package/project/.sdk/src/cmp/java/Test_java.ts +0 -6
- package/project/.sdk/src/cmp/java/utility_java.ts +0 -33
- package/project/.sdk/src/cmp/js/Config_js.ts +0 -46
- package/project/.sdk/src/cmp/js/EntityTypes_js.ts +0 -33
- package/project/.sdk/src/cmp/js/Main_js.ts +0 -33
- package/project/.sdk/src/cmp/js/Package_js.ts +2 -7
- package/project/.sdk/src/cmp/js/PrepareAuth_js.ts +0 -57
- package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +0 -9
- package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +0 -2
- package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +0 -15
- package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +2 -7
- package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +0 -7
- package/project/.sdk/src/cmp/js/Schema_js.ts +0 -21
- package/project/.sdk/src/cmp/js/TestDirect_js.ts +2 -16
- package/project/.sdk/src/cmp/js/TestEntity_js.ts +3 -13
- package/project/.sdk/src/cmp/js/TestLive_js.ts +10 -3
- package/project/.sdk/src/cmp/js/utility_js.ts +0 -58
- package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +0 -46
- package/project/.sdk/src/cmp/kotlin/EntityOperation_kotlin.ts +0 -2
- package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +0 -53
- package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +0 -4
- package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +0 -46
- package/project/.sdk/src/cmp/kotlin/PrepareAuth_kotlin.ts +0 -113
- package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +0 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeExamplesTest_kotlin.ts +0 -20
- package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +2 -5
- package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +0 -5
- package/project/.sdk/src/cmp/kotlin/Schema_kotlin.ts +0 -19
- package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +0 -4
- package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +0 -6
- package/project/.sdk/src/cmp/kotlin/utility_kotlin.ts +0 -33
- package/project/.sdk/src/cmp/lua/Config_lua.ts +0 -56
- package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +0 -30
- package/project/.sdk/src/cmp/lua/Entity_lua.ts +0 -7
- package/project/.sdk/src/cmp/lua/Main_lua.ts +0 -58
- package/project/.sdk/src/cmp/lua/Package_lua.ts +0 -20
- package/project/.sdk/src/cmp/lua/PrepareAuth_lua.ts +0 -61
- package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +0 -8
- package/project/.sdk/src/cmp/lua/ReadmeExamplesTest_lua.ts +0 -24
- package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +0 -10
- package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +0 -21
- package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -12
- package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +0 -3
- package/project/.sdk/src/cmp/lua/Schema_lua.ts +0 -16
- package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +0 -2
- package/project/.sdk/src/cmp/lua/utility_lua.ts +0 -30
- package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +0 -98
- package/project/.sdk/src/cmp/ocaml/EntityOperation_ocaml.ts +0 -6
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +0 -78
- package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +0 -13
- package/project/.sdk/src/cmp/ocaml/PrepareAuth_ocaml.ts +0 -145
- package/project/.sdk/src/cmp/ocaml/ReadmeExamplesTest_ocaml.ts +0 -17
- package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +2 -5
- package/project/.sdk/src/cmp/ocaml/Schema_ocaml.ts +0 -23
- package/project/.sdk/src/cmp/ocaml/SdkError_ocaml.ts +0 -4
- package/project/.sdk/src/cmp/ocaml/TestEntity_ocaml.ts +0 -5
- package/project/.sdk/src/cmp/ocaml/utility_ocaml.ts +0 -27
- package/project/.sdk/src/cmp/perl/Config_perl.ts +0 -52
- package/project/.sdk/src/cmp/perl/Entity_perl.ts +0 -3
- package/project/.sdk/src/cmp/perl/Main_perl.ts +0 -33
- package/project/.sdk/src/cmp/perl/Package_perl.ts +0 -8
- package/project/.sdk/src/cmp/perl/PrepareAuth_perl.ts +0 -84
- package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +0 -3
- package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +0 -27
- package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +2 -5
- package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +0 -2
- package/project/.sdk/src/cmp/perl/Schema_perl.ts +0 -18
- package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +0 -2
- package/project/.sdk/src/cmp/perl/utility_perl.ts +0 -26
- package/project/.sdk/src/cmp/php/Config_php.ts +0 -76
- package/project/.sdk/src/cmp/php/EntityTypes_php.ts +0 -51
- package/project/.sdk/src/cmp/php/MainEntity_php.ts +0 -6
- package/project/.sdk/src/cmp/php/Main_php.ts +0 -15
- package/project/.sdk/src/cmp/php/PrepareAuth_php.ts +0 -73
- package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +0 -4
- package/project/.sdk/src/cmp/php/ReadmeExamplesTest_php.ts +0 -33
- package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +0 -1
- package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +0 -19
- package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +2 -7
- package/project/.sdk/src/cmp/php/Schema_php.ts +0 -15
- package/project/.sdk/src/cmp/php/TestEntity_php.ts +0 -9
- package/project/.sdk/src/cmp/php/utility_php.ts +0 -22
- package/project/.sdk/src/cmp/py/Config_py.ts +0 -53
- package/project/.sdk/src/cmp/py/EntityTypes_py.ts +0 -55
- package/project/.sdk/src/cmp/py/Entity_py.ts +0 -16
- package/project/.sdk/src/cmp/py/Main_py.ts +1 -61
- package/project/.sdk/src/cmp/py/Package_py.ts +0 -3
- package/project/.sdk/src/cmp/py/PrepareAuth_py.ts +0 -69
- package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +0 -13
- package/project/.sdk/src/cmp/py/ReadmeExamplesTest_py.ts +0 -31
- package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +0 -3
- package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +0 -28
- package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -16
- package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +0 -14
- package/project/.sdk/src/cmp/py/Schema_py.ts +0 -19
- package/project/.sdk/src/cmp/py/TestDirect_py.ts +0 -2
- package/project/.sdk/src/cmp/py/utility_py.ts +0 -22
- package/project/.sdk/src/cmp/py-data/Main_py-data.ts +9 -43
- package/project/.sdk/src/cmp/rb/Config_rb.ts +0 -56
- package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +0 -58
- package/project/.sdk/src/cmp/rb/Entity_rb.ts +0 -3
- package/project/.sdk/src/cmp/rb/Main_rb.ts +0 -10
- package/project/.sdk/src/cmp/rb/Package_rb.ts +0 -5
- package/project/.sdk/src/cmp/rb/PrepareAuth_rb.ts +0 -81
- package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +0 -7
- package/project/.sdk/src/cmp/rb/ReadmeExamplesTest_rb.ts +0 -32
- package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +0 -9
- package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +0 -23
- package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -10
- package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +0 -5
- package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +0 -3
- package/project/.sdk/src/cmp/rb/Schema_rb.ts +0 -15
- package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +0 -2
- package/project/.sdk/src/cmp/rb/utility_rb.ts +0 -22
- package/project/.sdk/src/cmp/rust/Config_rust.ts +0 -35
- package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +0 -34
- package/project/.sdk/src/cmp/rust/Entity_rust.ts +0 -9
- package/project/.sdk/src/cmp/rust/Main_rust.ts +0 -58
- package/project/.sdk/src/cmp/rust/Package_rust.ts +0 -30
- package/project/.sdk/src/cmp/rust/PrepareAuth_rust.ts +0 -84
- package/project/.sdk/src/cmp/rust/ReadmeExamplesTest_rust.ts +0 -16
- package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +2 -5
- package/project/.sdk/src/cmp/rust/Schema_rust.ts +0 -18
- package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +0 -7
- package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +0 -9
- package/project/.sdk/src/cmp/rust/fragment/Entity.fragment.rs +0 -14
- package/project/.sdk/src/cmp/rust/fragment/EntityRemoveOp.fragment.rs +0 -4
- package/project/.sdk/src/cmp/rust/fragment/Main.fragment.rs +0 -20
- package/project/.sdk/src/cmp/rust/fragment/SdkError.fragment.rs +0 -6
- package/project/.sdk/src/cmp/rust/utility_rust.ts +0 -47
- package/project/.sdk/src/cmp/scala/Config_scala.ts +0 -31
- package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +0 -51
- package/project/.sdk/src/cmp/scala/Main_scala.ts +0 -78
- package/project/.sdk/src/cmp/scala/PrepareAuth_scala.ts +0 -102
- package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +0 -1
- package/project/.sdk/src/cmp/scala/ReadmeExamplesTest_scala.ts +0 -23
- package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +2 -5
- package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +0 -5
- package/project/.sdk/src/cmp/scala/Schema_scala.ts +0 -19
- package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +0 -8
- package/project/.sdk/src/cmp/scala/Test_scala.ts +0 -3
- package/project/.sdk/src/cmp/scala/utility_scala.ts +0 -31
- package/project/.sdk/src/cmp/swift/Config_swift.ts +0 -62
- package/project/.sdk/src/cmp/swift/EntityOperation_swift.ts +0 -3
- package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +0 -39
- package/project/.sdk/src/cmp/swift/Main_swift.ts +0 -42
- package/project/.sdk/src/cmp/swift/Package_swift.ts +0 -69
- package/project/.sdk/src/cmp/swift/PrepareAuth_swift.ts +0 -134
- package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +0 -2
- package/project/.sdk/src/cmp/swift/ReadmeExamplesTest_swift.ts +0 -22
- package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +2 -5
- package/project/.sdk/src/cmp/swift/Schema_swift.ts +0 -18
- package/project/.sdk/src/cmp/swift/TestEntity_swift.ts +0 -4
- package/project/.sdk/src/cmp/swift/utility_swift.ts +0 -51
- package/project/.sdk/src/cmp/ts/Config_ts.ts +0 -46
- package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +0 -34
- package/project/.sdk/src/cmp/ts/Entity_ts.ts +0 -6
- package/project/.sdk/src/cmp/ts/Main_ts.ts +0 -28
- package/project/.sdk/src/cmp/ts/Package_ts.ts +2 -26
- package/project/.sdk/src/cmp/ts/PrepareAuth_ts.ts +0 -55
- package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +0 -9
- package/project/.sdk/src/cmp/ts/ReadmeExampleTest_ts.ts +0 -6
- package/project/.sdk/src/cmp/ts/ReadmeExamplesTest_ts.ts +0 -25
- package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +4 -9
- package/project/.sdk/src/cmp/ts/ReadmeIntro_ts.ts +0 -7
- package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +0 -3
- package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +0 -43
- package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +2 -20
- package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +0 -11
- package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +6 -9
- package/project/.sdk/src/cmp/ts/Schema_ts.ts +0 -21
- package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +2 -53
- package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +3 -31
- package/project/.sdk/src/cmp/ts/TestLive_ts.ts +10 -4
- package/project/.sdk/src/cmp/ts/Test_ts.ts +0 -4
- package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +0 -27
- package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +0 -7
- package/project/.sdk/src/cmp/ts/fragment/Direct.test.fragment.ts +0 -7
- package/project/.sdk/src/cmp/ts/fragment/Entity.fragment.ts +0 -1
- package/project/.sdk/src/cmp/ts/fragment/Entity.test.fragment.ts +0 -4
- package/project/.sdk/src/cmp/ts/fragment/EntityBase.fragment.ts +0 -20
- package/project/.sdk/src/cmp/ts/fragment/EntityCreateOp.fragment.ts +0 -6
- package/project/.sdk/src/cmp/ts/fragment/EntityLoadOp.fragment.ts +0 -6
- package/project/.sdk/src/cmp/ts/fragment/EntityRemoveOp.fragment.ts +0 -15
- package/project/.sdk/src/cmp/ts/fragment/EntityUpdateOp.fragment.ts +0 -6
- package/project/.sdk/src/cmp/ts/fragment/Main.fragment.ts +0 -15
- package/project/.sdk/src/cmp/ts/fragment/MainStation.fragment.ts +0 -12
- package/project/.sdk/src/cmp/ts/fragment/SdkError.fragment.ts +0 -9
- package/project/.sdk/src/cmp/ts/utility_ts.ts +0 -59
- package/project/.sdk/src/cmp/zig/Config_zig.ts +0 -70
- package/project/.sdk/src/cmp/zig/Entity_zig.ts +0 -3
- package/project/.sdk/src/cmp/zig/Main_zig.ts +0 -83
- package/project/.sdk/src/cmp/zig/Package_zig.ts +0 -22
- package/project/.sdk/src/cmp/zig/PrepareAuth_zig.ts +0 -136
- package/project/.sdk/src/cmp/zig/ReadmeExamplesTest_zig.ts +0 -18
- package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +0 -3
- package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +2 -5
- package/project/.sdk/src/cmp/zig/Schema_zig.ts +0 -23
- package/project/.sdk/src/cmp/zig/TestDirect_zig.ts +0 -11
- package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +0 -8
- package/project/.sdk/src/cmp/zig/Test_zig.ts +0 -11
- package/project/.sdk/src/cmp/zig/utility_zig.ts +0 -47
- package/project/.sdk/tm/csharp/feature/FeatureOptions.cs +18 -5
- package/project/.sdk/tm/go/core/context.go +0 -9
- package/project/.sdk/tm/go/core/types.go +0 -3
- package/project/.sdk/tm/go/feature/audit_feature.go +0 -9
- package/project/.sdk/tm/go/feature/cache_feature.go +0 -8
- package/project/.sdk/tm/go/feature/clienttrack_feature.go +0 -7
- package/project/.sdk/tm/go/feature/cost_feature.go +0 -51
- package/project/.sdk/tm/go/feature/debug_feature.go +0 -6
- package/project/.sdk/tm/go/feature/feature_options.go +108 -21
- package/project/.sdk/tm/go/feature/idempotency_feature.go +0 -6
- package/project/.sdk/tm/go/feature/metrics_feature.go +0 -6
- package/project/.sdk/tm/go/feature/netsim_feature.go +0 -8
- package/project/.sdk/tm/go/feature/paging_feature.go +0 -9
- package/project/.sdk/tm/go/feature/proxy_feature.go +0 -7
- package/project/.sdk/tm/go/feature/ratelimit_feature.go +0 -6
- package/project/.sdk/tm/go/feature/rbac_feature.go +0 -10
- package/project/.sdk/tm/go/feature/retry_feature.go +0 -6
- package/project/.sdk/tm/go/feature/secrets_feature.go +0 -173
- package/project/.sdk/tm/go/feature/streaming_feature.go +0 -7
- package/project/.sdk/tm/go/feature/telemetry_feature.go +0 -8
- package/project/.sdk/tm/go/feature/test_feature.go +0 -23
- package/project/.sdk/tm/go/feature/validate_feature.go +0 -66
- package/project/.sdk/tm/go/test/custom_utility_test.go +0 -29
- package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +0 -100
- package/project/.sdk/tm/go/test/feature_corpus_test.go +1 -60
- package/project/.sdk/tm/go/test/feature_harness_test.go +0 -10
- package/project/.sdk/tm/go/test/feature_test.go +107 -9
- package/project/.sdk/tm/go/test/omniresolver_test.go +0 -74
- package/project/.sdk/tm/go/test/omnismoke_test.go +0 -4
- package/project/.sdk/tm/go/test/pipeline_test.go +0 -10
- package/project/.sdk/tm/go/test/primary_utility_test.go +0 -32
- package/project/.sdk/tm/go/test/struct_utility_test.go +0 -38
- package/project/.sdk/tm/go/test/testsupport_test.go +0 -25
- package/project/.sdk/tm/go/utility/feature_add.go +0 -6
- package/project/.sdk/tm/go/utility/fetcher.go +0 -6
- package/project/.sdk/tm/go/utility/graphql.go +1 -31
- package/project/.sdk/tm/go/utility/make_options.go +38 -49
- package/project/.sdk/tm/go/utility/make_point.go +0 -11
- package/project/.sdk/tm/go/utility/make_spec.go +0 -15
- package/project/.sdk/tm/go/utility/register.go +0 -28
- package/project/.sdk/tm/go/utility/transform_request.go +0 -20
- package/project/.sdk/tm/go/utility/transform_response.go +0 -8
- package/project/.sdk/tm/js/src/feature/test/TestFeature.js +12 -4
- package/project/.sdk/tm/rust/core/context.rs +0 -5
- package/project/.sdk/tm/rust/core/control.rs +0 -1
- package/project/.sdk/tm/rust/core/helpers.rs +0 -15
- package/project/.sdk/tm/rust/core/operation.rs +0 -1
- package/project/.sdk/tm/rust/core/point.rs +0 -3
- package/project/.sdk/tm/rust/core/response.rs +0 -2
- package/project/.sdk/tm/rust/core/result.rs +0 -1
- package/project/.sdk/tm/rust/core/spec.rs +0 -1
- package/project/.sdk/tm/rust/core/types.rs +0 -20
- package/project/.sdk/tm/rust/core/utility_type.rs +0 -5
- package/project/.sdk/tm/rust/feature/audit.rs +0 -9
- package/project/.sdk/tm/rust/feature/base.rs +0 -3
- package/project/.sdk/tm/rust/feature/cache.rs +0 -9
- package/project/.sdk/tm/rust/feature/clienttrack.rs +0 -7
- package/project/.sdk/tm/rust/feature/cost.rs +0 -48
- package/project/.sdk/tm/rust/feature/debug.rs +0 -7
- package/project/.sdk/tm/rust/feature/idempotency.rs +0 -7
- package/project/.sdk/tm/rust/feature/log.rs +0 -3
- package/project/.sdk/tm/rust/feature/metrics.rs +0 -7
- package/project/.sdk/tm/rust/feature/netsim.rs +0 -9
- package/project/.sdk/tm/rust/feature/paging.rs +0 -10
- package/project/.sdk/tm/rust/feature/proxy.rs +0 -8
- package/project/.sdk/tm/rust/feature/ratelimit.rs +0 -6
- package/project/.sdk/tm/rust/feature/rbac.rs +0 -10
- package/project/.sdk/tm/rust/feature/retry.rs +0 -6
- package/project/.sdk/tm/rust/feature/secrets.rs +1 -187
- package/project/.sdk/tm/rust/feature/streaming.rs +0 -7
- package/project/.sdk/tm/rust/feature/support.rs +0 -6
- package/project/.sdk/tm/rust/feature/telemetry.rs +0 -9
- package/project/.sdk/tm/rust/feature/test.rs +0 -19
- package/project/.sdk/tm/rust/feature/timeout.rs +0 -7
- package/project/.sdk/tm/rust/feature/validate.rs +0 -81
- package/project/.sdk/tm/rust/tests/common/mod.rs +0 -35
- package/project/.sdk/tm/rust/tests/custom_utility_test.rs +0 -2
- package/project/.sdk/tm/rust/tests/feature/secrets/main.rs +0 -95
- package/project/.sdk/tm/rust/tests/feature_test.rs +0 -16
- package/project/.sdk/tm/rust/tests/netsim_test.rs +0 -6
- package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +0 -135
- package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +0 -15
- package/project/.sdk/tm/rust/tests/pipeline_test.rs +0 -6
- package/project/.sdk/tm/rust/tests/primary_utility_test.rs +0 -22
- package/project/.sdk/tm/rust/tests/struct_utility_test.rs +0 -25
- package/project/.sdk/tm/rust/utility/fetcher.rs +0 -5
- package/project/.sdk/tm/rust/utility/graphql.rs +1 -30
- package/project/.sdk/tm/rust/utility/make_error.rs +0 -2
- package/project/.sdk/tm/rust/utility/make_options.rs +0 -46
- package/project/.sdk/tm/rust/utility/make_point.rs +0 -12
- package/project/.sdk/tm/rust/utility/make_spec.rs +0 -4
- package/project/.sdk/tm/rust/utility/voxgigstruct/consts.rs +14 -20
- package/project/.sdk/tm/rust/utility/voxgigstruct/major.rs +0 -13
- package/project/.sdk/tm/rust/utility/voxgigstruct/mini.rs +0 -14
- package/project/.sdk/tm/rust/utility/voxgigstruct/mod.rs +0 -2
- package/project/.sdk/tm/rust/utility/voxgigstruct/ordered_map.rs +0 -18
- package/project/.sdk/tm/rust/utility/voxgigstruct/re.rs +0 -11
- package/project/.sdk/tm/rust/utility/voxgigstruct/value.rs +0 -3
- package/project/.sdk/tm/ts/src/Context.ts +0 -5
- package/project/.sdk/tm/ts/src/feature/audit/AuditFeature.ts +0 -7
- package/project/.sdk/tm/ts/src/feature/cache/CacheFeature.ts +0 -8
- package/project/.sdk/tm/ts/src/feature/clienttrack/ClienttrackFeature.ts +0 -7
- package/project/.sdk/tm/ts/src/feature/cost/CostFeature.ts +0 -52
- package/project/.sdk/tm/ts/src/feature/debug/DebugFeature.ts +0 -6
- package/project/.sdk/tm/ts/src/feature/metrics/MetricsFeature.ts +0 -6
- package/project/.sdk/tm/ts/src/feature/netsim/NetsimFeature.ts +0 -8
- package/project/.sdk/tm/ts/src/feature/paging/PagingFeature.ts +0 -13
- package/project/.sdk/tm/ts/src/feature/proxy/ProxyFeature.ts +0 -8
- package/project/.sdk/tm/ts/src/feature/ratelimit/RatelimitFeature.ts +0 -6
- package/project/.sdk/tm/ts/src/feature/rbac/RbacFeature.ts +0 -9
- package/project/.sdk/tm/ts/src/feature/retry/RetryFeature.ts +0 -6
- package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +0 -136
- package/project/.sdk/tm/ts/src/feature/streaming/StreamingFeature.ts +0 -7
- package/project/.sdk/tm/ts/src/feature/telemetry/TelemetryFeature.ts +0 -7
- package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +13 -88
- package/project/.sdk/tm/ts/src/feature/validate/ValidateFeature.ts +0 -87
- package/project/.sdk/tm/ts/src/utility/CleanUtility.ts +0 -12
- package/project/.sdk/tm/ts/src/utility/FeatureAddUtility.ts +0 -1
- package/project/.sdk/tm/ts/src/utility/GraphqlUtility.ts +2 -30
- package/project/.sdk/tm/ts/src/utility/MakeErrorUtility.ts +0 -4
- package/project/.sdk/tm/ts/src/utility/MakeOptionsUtility.ts +0 -46
- package/project/.sdk/tm/ts/src/utility/MakePointUtility.ts +0 -34
- package/project/.sdk/tm/ts/src/utility/MakeRequestUtility.ts +0 -1
- package/project/.sdk/tm/ts/src/utility/MakeSpecUtility.ts +0 -5
- package/project/.sdk/tm/ts/src/utility/MakeUrlUtility.ts +0 -1
- package/project/.sdk/tm/ts/src/utility/ParamUtility.ts +0 -8
- package/project/.sdk/tm/ts/src/utility/PrepareBodyUtility.ts +0 -3
- package/project/.sdk/tm/ts/src/utility/PrepareParamsUtility.ts +0 -6
- package/project/.sdk/tm/ts/src/utility/ResultBasicUtility.ts +0 -1
- package/project/.sdk/tm/ts/src/utility/TransformRequestUtility.ts +0 -20
- package/project/.sdk/tm/ts/src/utility/TransformResponseUtility.ts +0 -4
- package/project/.sdk/tm/ts/test/exists.test.ts +0 -10
- package/project/.sdk/tm/ts/test/feature/Corpus.test.ts +0 -56
- package/project/.sdk/tm/ts/test/feature/harness.ts +0 -9
- package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +0 -106
- package/project/.sdk/tm/ts/test/live-contract.ts +0 -2
- package/project/.sdk/tm/ts/test/omni.ts +0 -32
- package/project/.sdk/tm/ts/test/pipeline.test.ts +45 -28
- package/project/.sdk/tm/ts/test/utility/Corpus.test.ts +0 -13
- package/project/.sdk/tm/ts/test/utility/PrimaryUtility.test.ts +56 -29
- package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +0 -7
- package/project/.sdk/tm/ts/test/utility.ts +0 -55
- package/project/sdkgen-package.json +1 -1
- package/src/action/action.ts +0 -65
- package/src/action/check.ts +0 -88
- package/src/action/dispatch.ts +0 -27
- package/src/action/doctor.ts +69 -329
- package/src/action/edition.ts +1 -87
- package/src/action/feature.ts +1 -49
- package/src/action/kind.ts +0 -149
- package/src/action/package.ts +0 -228
- package/src/action/resolve.ts +0 -148
- package/src/action/target.ts +0 -177
- package/src/cmp/AgentGuide.ts +0 -7
- package/src/cmp/AgentGuideContent.ts +0 -24
- package/src/cmp/AgentGuideTop.ts +0 -7
- package/src/cmp/Changelog.ts +0 -14
- package/src/cmp/Deploy.ts +1 -31
- package/src/cmp/Entity.ts +0 -4
- package/src/cmp/ExternalTarget.ts +0 -36
- package/src/cmp/Feature.ts +0 -14
- package/src/cmp/FeatureDocs.ts +0 -37
- package/src/cmp/PublishWorkflow.ts +0 -60
- package/src/cmp/ReadmeErrors.ts +0 -17
- package/src/cmp/ReadmeExplanation.ts +2 -11
- package/src/cmp/ReadmeFeatures.ts +0 -10
- package/src/cmp/ReadmeRefFeatures.ts +0 -19
- package/src/cmp/ReadmeStation.ts +0 -19
- package/src/cmp/ReadmeTop.ts +0 -80
- package/src/cmp/ReadmeUnions.ts +0 -15
- package/src/cmp/Registered.ts +0 -30
- package/src/cmp/Security.ts +0 -2
- package/src/cmp/Test.ts +3 -1
- package/src/cmp/TestControl.ts +0 -25
- package/src/helpers/applicability.ts +0 -60
- package/src/helpers/buildIdNames.ts +0 -12
- package/src/helpers/canonSpec.ts +0 -114
- package/src/helpers/canonType.ts +0 -87
- package/src/helpers/collectDeps.ts +0 -27
- package/src/helpers/definition.ts +0 -29
- package/src/helpers/dryrun.ts +0 -8
- package/src/helpers/featureSource.ts +0 -152
- package/src/helpers/getMatchEntries.ts +0 -4
- package/src/helpers/junk.ts +13 -89
- package/src/helpers/manifest.ts +0 -169
- package/src/helpers/modelNames.ts +0 -81
- package/src/helpers/modelcheck.ts +0 -106
- package/src/helpers/naming.ts +0 -303
- package/src/helpers/opExample.ts +0 -56
- package/src/helpers/opShape.ts +0 -200
- package/src/helpers/optspec.ts +0 -77
- package/src/helpers/packageMeta.ts +1 -200
- package/src/helpers/pointPath.ts +0 -55
- package/src/helpers/resolved.ts +50 -0
- package/src/helpers/semver.ts +0 -61
- package/src/helpers/serverVars.ts +0 -44
- package/src/helpers/shipped.ts +0 -14
- package/src/helpers/station.ts +0 -32
- package/src/helpers/stdrep.ts +0 -52
- package/src/helpers/testPolicy.ts +0 -4
- package/src/sdkgen.ts +15 -263
- package/src/testkit.ts +6 -312
- package/src/types.ts +1 -30
- package/src/utility.ts +0 -243
|
@@ -1,26 +1,3 @@
|
|
|
1
|
-
// Behavioural tests for the secrets feature (vendored @voxgig/sekreto) -
|
|
2
|
-
// the go port of tm/ts/test/feature/secrets/Secrets.test.ts.
|
|
3
|
-
//
|
|
4
|
-
// The contract under test: the `apikey` OPTION keeps its exact old meaning
|
|
5
|
-
// and always wins, because SecretsFeature places it FIRST in the provider
|
|
6
|
-
// chain (a `memory` store named `options`) - explicit-beats-lookup falls
|
|
7
|
-
// out of sekreto's first-hit rule rather than from special-case logic.
|
|
8
|
-
// With the feature inactive nothing changes at all. With it active and the
|
|
9
|
-
// option unset, the chain (env, a custom provider, a vault) supplies the
|
|
10
|
-
// credential instead.
|
|
11
|
-
//
|
|
12
|
-
// This file lives in the test `feature/` container on purpose: `target
|
|
13
|
-
// add` trims it, along with the feature source and the vendored library,
|
|
14
|
-
// for a project whose model does not select `secrets`.
|
|
15
|
-
//
|
|
16
|
-
// The feature is CONSTRUCTED DIRECTLY and handed in through the
|
|
17
|
-
// `extend` option, so these tests hold in any generated tree - whether or
|
|
18
|
-
// not the project's model activated the feature (activation only changes
|
|
19
|
-
// whether config.go registers a constructor for it). The credential is
|
|
20
|
-
// asserted ON THE WIRE: a live-mode client with a recording system.fetch,
|
|
21
|
-
// driven through a real entity operation, which is what exercises the
|
|
22
|
-
// PreSpec resolution seam. (See the migration guide: an options-level
|
|
23
|
-
// assertion passes for a port that never consults the value.)
|
|
24
1
|
|
|
25
2
|
package secretstest
|
|
26
3
|
|
|
@@ -174,13 +151,6 @@ func secretsClient(w *wire, sdkopts map[string]any) *sdk.ProjectNameSDK {
|
|
|
174
151
|
})
|
|
175
152
|
}
|
|
176
153
|
|
|
177
|
-
// withSecrets constructs the client and ADOPTS the feature via `extend`
|
|
178
|
-
// ONLY when the generated config did not already install it - when this
|
|
179
|
-
// SDK was generated with `secrets` model-active, the ordinary factory
|
|
180
|
-
// path builds the instance, and adding a second via extend would DOUBLE
|
|
181
|
-
// the feature: two transport wraps, two resolutions, and a token
|
|
182
|
-
// purchase the assertions cannot account for. (The py harness guards the
|
|
183
|
-
// same way via _has_feature.)
|
|
184
154
|
func withSecrets(build func(extend bool) *sdk.ProjectNameSDK) *sdk.ProjectNameSDK {
|
|
185
155
|
client := build(false)
|
|
186
156
|
if nil == secretsFeatureOf(client) {
|
|
@@ -213,13 +183,6 @@ func secretsFeatureOf(client *sdk.ProjectNameSDK) *feat.SecretsFeature {
|
|
|
213
183
|
return nil
|
|
214
184
|
}
|
|
215
185
|
|
|
216
|
-
// driveEntityOpUntil performs real entity operations - which is what runs
|
|
217
|
-
// the PreSpec hook - until `stop` reports the observable state a test is
|
|
218
|
-
// waiting for. Each op's own outcome is irrelevant (no seeded data, a
|
|
219
|
-
// scripted response); an op the API does not define fails BEFORE the
|
|
220
|
-
// PreSpec hook, which is why several may need driving. Entity names come
|
|
221
|
-
// from the SDK's own config, because this file is a TEMPLATE and no
|
|
222
|
-
// project's entity names are known here.
|
|
223
186
|
func driveEntityOpUntil(t *testing.T, client *sdk.ProjectNameSDK, what string, stop func() bool) {
|
|
224
187
|
t.Helper()
|
|
225
188
|
|
|
@@ -266,17 +229,6 @@ func exported(name string) string {
|
|
|
266
229
|
return string(runes)
|
|
267
230
|
}
|
|
268
231
|
|
|
269
|
-
// routableOp names an entity operation that actually REACHES THE TRANSPORT.
|
|
270
|
-
//
|
|
271
|
-
// A generated entity exposes List, Load and Create whether or not the model
|
|
272
|
-
// declares them, so "drive the first entity the map yields" drives a dead
|
|
273
|
-
// end whenever the model does not declare that one. Go randomises map
|
|
274
|
-
// iteration, so which entity that is changes per run, and a test asserting
|
|
275
|
-
// on what reached the wire then passes or fails by lottery.
|
|
276
|
-
//
|
|
277
|
-
// Discover a real route ONCE, against a throwaway client whose provider
|
|
278
|
-
// always succeeds so nothing gates it, and drive that everywhere a test
|
|
279
|
-
// needs a request to come out.
|
|
280
232
|
func routableOp(t *testing.T) (string, string) {
|
|
281
233
|
t.Helper()
|
|
282
234
|
|
|
@@ -433,12 +385,6 @@ func TestSecretsChain(t *testing.T) {
|
|
|
433
385
|
|
|
434
386
|
driveEntityOp(t, client, w)
|
|
435
387
|
|
|
436
|
-
// Resolution happens AT THE TRANSPORT - the one seam every wire
|
|
437
|
-
// path crosses - so the credential is on the wire, not merely
|
|
438
|
-
// resolved. go holds it in FEATURE STATE and injects there; the
|
|
439
|
-
// options map is never mutated (it stays raced-read-safe for
|
|
440
|
-
// every concurrent operation), so the state assertion reads the
|
|
441
|
-
// feature.
|
|
442
388
|
credentialIs(t, w.api()[0].auth, "ENVKEY02")
|
|
443
389
|
if v := secretsFeatureOf(client).Credential(); "ENVKEY02" != v {
|
|
444
390
|
t.Fatalf("the entity op did not resolve the secret through PreSpec: %q", v)
|
|
@@ -576,15 +522,6 @@ func TestSecretsChain(t *testing.T) {
|
|
|
576
522
|
})
|
|
577
523
|
}
|
|
578
524
|
|
|
579
|
-
// A MISS IS NOT A CACHEABLE ANSWER - sekreto's own rule, which this
|
|
580
|
-
// feature used to override from the layer above.
|
|
581
|
-
//
|
|
582
|
-
// DEFAULT caching here, which is the whole point: `cache: true` is about
|
|
583
|
-
// holding a HIT, and holding the settled resolution after a miss meant the
|
|
584
|
-
// chain was never asked again for the life of the client. A secret
|
|
585
|
-
// provisioned after startup (a mounted file, a vault policy granted a
|
|
586
|
-
// minute late) was invisible forever, and the only workaround was giving up
|
|
587
|
-
// hit caching entirely.
|
|
588
525
|
func TestSecretsCachedMissIsReasked(t *testing.T) {
|
|
589
526
|
var mu sync.Mutex
|
|
590
527
|
calls := 0
|
|
@@ -705,16 +642,9 @@ func TestSecretsExchange(t *testing.T) {
|
|
|
705
642
|
t.Fatalf("expected the request to be retried exactly once, got %d calls", len(api))
|
|
706
643
|
}
|
|
707
644
|
credentialIs(t, api[0].auth, "ACCESS01")
|
|
708
|
-
// The retry must carry the NEW token, not the spent one.
|
|
709
645
|
credentialIs(t, api[1].auth, "ACCESS02")
|
|
710
646
|
})
|
|
711
647
|
|
|
712
|
-
// `auth: nil` SUPPRESSES THE PURCHASE, not just the retry.
|
|
713
|
-
//
|
|
714
|
-
// resolve() runs before withrefresh's suppression check, so the refresh
|
|
715
|
-
// token used to go to the token endpoint in a request body even here.
|
|
716
|
-
// Stopping the retry does not unsend it - this asserts on the token
|
|
717
|
-
// endpoint, which is the half the API-call assertions cannot see.
|
|
718
648
|
t.Run("auth nil buys no token at all", func(t *testing.T) {
|
|
719
649
|
os.Setenv(envprefix+"REFRESH_TOKEN", "REFRESH01")
|
|
720
650
|
defer os.Unsetenv(envprefix + "REFRESH_TOKEN")
|
|
@@ -776,11 +706,6 @@ func TestSecretsExchange(t *testing.T) {
|
|
|
776
706
|
})
|
|
777
707
|
}
|
|
778
708
|
|
|
779
|
-
// ---------------------------------------------------------------------
|
|
780
|
-
// Review-hardening pins (vendor-tag rollout, PR review): the exchange
|
|
781
|
-
// works with ORDINARY options (no custom transport), the token body is
|
|
782
|
-
// real JSON, an uncached miss retracts the credential, and a failed
|
|
783
|
-
// resolution recovers safely under concurrency.
|
|
784
709
|
|
|
785
710
|
// The exchange with NO system.fetch: the raw fallback transport carries
|
|
786
711
|
// the purchase, and the body is MARSHALLED - a refresh token full of
|
|
@@ -936,23 +861,6 @@ func TestSecretsDirectPath(t *testing.T) {
|
|
|
936
861
|
}
|
|
937
862
|
}
|
|
938
863
|
|
|
939
|
-
// FAIL CLOSED ON A CONSTRUCTION FAILURE. The chain a project configures
|
|
940
|
-
// can be wrong before a single lookup happens, and Init cannot fail the
|
|
941
|
-
// client construction the way ts's throwing init does - so it HOLDS the
|
|
942
|
-
// error (initerr) and the transport gate refuses to send.
|
|
943
|
-
//
|
|
944
|
-
// The entry pinned here is a bare kind name where a spec belongs. Init's
|
|
945
|
-
// type switch over the providers list had cases for a *ProviderSpec, a
|
|
946
|
-
// Provider and a map, and no default - so the entry was silently DROPPED,
|
|
947
|
-
// the chain got SHORTER rather than broken, and every request went out
|
|
948
|
-
// unauthenticated while the gate had nothing to refuse. That is fail-open
|
|
949
|
-
// by omission, and it survived every other case in this file because each
|
|
950
|
-
// of them configures the chain correctly.
|
|
951
|
-
//
|
|
952
|
-
// Both wire paths - the entity pipeline and Direct - each with a CONTROL
|
|
953
|
-
// leg through the SAME live transport, so a zero means REFUSED and not
|
|
954
|
-
// UNWIRED. The refusal is matched on sekreto's OWN message, so an
|
|
955
|
-
// unrelated failure cannot stand in for it.
|
|
956
864
|
func TestSecretsMalformedProviderEntry(t *testing.T) {
|
|
957
865
|
// A kind NAME where a provider or spec belongs.
|
|
958
866
|
malformed := []any{"hashicorp"}
|
|
@@ -1093,19 +1001,11 @@ func TestSecretsGateRecovery(t *testing.T) {
|
|
|
1093
1001
|
}},
|
|
1094
1002
|
})
|
|
1095
1003
|
|
|
1096
|
-
// 1. The failure closes the gate: nothing reaches the wire.
|
|
1097
|
-
//
|
|
1098
|
-
// The operation is known to be routable, so an empty wire PROVES the gate
|
|
1099
|
-
// refused it. Driving an arbitrary entity would pass here for the wrong
|
|
1100
|
-
// reason: an operation the model never declared reaches no transport
|
|
1101
|
-
// whether the gate is open or shut.
|
|
1102
1004
|
driveNamedOp(t, client, entity, opname)
|
|
1103
1005
|
if 0 != len(w.api()) {
|
|
1104
1006
|
t.Fatalf("a failed resolution must keep the wire silent, saw %d calls", len(w.api()))
|
|
1105
1007
|
}
|
|
1106
1008
|
|
|
1107
|
-
// 2. Recovery under concurrency: two operations race the slow retry;
|
|
1108
|
-
// both must come out carrying the fresh credential.
|
|
1109
1009
|
mu.Lock()
|
|
1110
1010
|
mode = "slow"
|
|
1111
1011
|
mu.Unlock()
|
|
@@ -1,19 +1,5 @@
|
|
|
1
1
|
package sdktest
|
|
2
2
|
|
|
3
|
-
// Feature behaviour, driven by the SHARED corpus.
|
|
4
|
-
//
|
|
5
|
-
// The same route primary_utility_test.go takes for the utilities:
|
|
6
|
-
// language-neutral cases in .sdk/test/test.json, executed against THIS
|
|
7
|
-
// generated SDK. The feature is the ordinary compiled type, built by the
|
|
8
|
-
// generated config, installed by the generated constructor, and driven by a
|
|
9
|
-
// real entity operation. Not a miniature of the pipeline - that is what
|
|
10
|
-
// feature_harness_test.go does, and a miniature can only be as right as the
|
|
11
|
-
// miniature.
|
|
12
|
-
//
|
|
13
|
-
// Everything in a case is data. The two pieces go writes for itself are
|
|
14
|
-
// turning scripted responses into a FetcherFunc, and reading the record back
|
|
15
|
-
// off the feature (go keeps the aggregates on the feature value, where ts
|
|
16
|
-
// keeps them on the client).
|
|
17
3
|
|
|
18
4
|
import (
|
|
19
5
|
"encoding/json"
|
|
@@ -32,17 +18,13 @@ import (
|
|
|
32
18
|
// added under .sdk/test/feature/ — runs without editing this file. An
|
|
33
19
|
// SDK generated without a listed feature still skips, not fails.
|
|
34
20
|
|
|
35
|
-
// The standard operation names, in the order the runner prefers them. Every
|
|
36
|
-
// entity declares every CRUD method, so an op that the API does not define
|
|
37
|
-
// errors at runtime rather than failing to compile - which is why usable
|
|
38
|
-
// operations are found by DRIVING them, below.
|
|
39
21
|
var featureCorpusOps = []string{"Load", "List", "Create", "Update", "Remove"}
|
|
40
22
|
|
|
41
23
|
// One operation this SDK can actually perform.
|
|
42
24
|
type fcOp struct {
|
|
43
25
|
key string // "<entity>.<op>", how features attribute it
|
|
44
26
|
accessor string // the client method returning the entity
|
|
45
|
-
method string
|
|
27
|
+
method string
|
|
46
28
|
}
|
|
47
29
|
|
|
48
30
|
// fcFetcher builds a scripted transport from a case's `res` list. Responses
|
|
@@ -106,20 +88,8 @@ func fcFetcher(res []any) sdk.FetcherFunc {
|
|
|
106
88
|
}
|
|
107
89
|
}
|
|
108
90
|
|
|
109
|
-
// fcClient builds a client the way a caller would: the generated constructor,
|
|
110
|
-
// the feature list from the case, and the scripted transport through the
|
|
111
|
-
// documented `utility.fetcher` override.
|
|
112
|
-
//
|
|
113
|
-
// NewProjectNameSDK, not TestSDK: the `test` feature is transport: 'base' and
|
|
114
|
-
// REPLACES the transport, so a client in test mode would shadow the script.
|
|
115
91
|
func fcClient(kase map[string]any) *sdk.ProjectNameSDK {
|
|
116
92
|
res, _ := kase["res"].([]any)
|
|
117
|
-
// "test" here is the OPTION, not the `test` FEATURE. It says "this
|
|
118
|
-
// client is not live", which is what makes a REQUIRED OpenAPI server
|
|
119
|
-
// variable resolve to a deterministic test-<name> rather than panic at
|
|
120
|
-
// construction (see makeOptions). It installs no transport, so the
|
|
121
|
-
// scripted fetcher still stands — the FEATURE is transport: 'base' and
|
|
122
|
-
// would shadow it, which is why this cannot just turn the feature on.
|
|
123
93
|
opts := map[string]any{
|
|
124
94
|
"test": map[string]any{"active": true},
|
|
125
95
|
"utility": map[string]any{"fetcher": fcFetcher(res)},
|
|
@@ -338,13 +308,6 @@ func fcNum(v any) (float64, bool) {
|
|
|
338
308
|
return 0, false
|
|
339
309
|
}
|
|
340
310
|
|
|
341
|
-
// fcSubset asserts that `actual` contains `expect`, recursively. Cases assert
|
|
342
|
-
// only the fields they are about, so a full deep-equal would force every case
|
|
343
|
-
// to restate the whole record.
|
|
344
|
-
//
|
|
345
|
-
// `actual` is a Go value, not a map: the aggregates live on the feature as
|
|
346
|
-
// typed structs, so an expected key is matched to an exported field by
|
|
347
|
-
// capitalising it.
|
|
348
311
|
func fcSubset(t *testing.T, actual any, expect any, path string) {
|
|
349
312
|
t.Helper()
|
|
350
313
|
|
|
@@ -410,21 +373,6 @@ func fcMember(actual any, key string) (any, bool) {
|
|
|
410
373
|
return nil, false
|
|
411
374
|
}
|
|
412
375
|
|
|
413
|
-
// fcRecord finds the named feature on the client and hands back the value
|
|
414
|
-
// carrying its aggregates. go keeps them on the feature; ts keeps them on the
|
|
415
|
-
// client. Same data, different home.
|
|
416
|
-
//
|
|
417
|
-
// Returned as the feature value itself, NOT type-asserted to a concrete
|
|
418
|
-
// feature type. Naming one here would be a compile-time reference to a
|
|
419
|
-
// feature the project may not have: `target add` trims unselected features,
|
|
420
|
-
// and this template is not trimmed with them, so an SDK generated without
|
|
421
|
-
// that feature would ship a test that does not build. featuresource.test.ts
|
|
422
|
-
// guards exactly that, and caught it - including, on its first pass, the
|
|
423
|
-
// spelling of the type inside this very comment.
|
|
424
|
-
//
|
|
425
|
-
// fcSubset reads the expected keys off the struct by capitalising them, so
|
|
426
|
-
// `total` finds Total, `ops` finds Ops, and a feature added later needs no
|
|
427
|
-
// new go here.
|
|
428
376
|
func fcRecord(client *sdk.ProjectNameSDK, name string) any {
|
|
429
377
|
for _, f := range client.Features {
|
|
430
378
|
if f.GetName() == name {
|
|
@@ -439,13 +387,6 @@ func TestFeatureCorpus(t *testing.T) {
|
|
|
439
387
|
|
|
440
388
|
featureSection := getSpec(spec, "feature")
|
|
441
389
|
if featureSection == nil {
|
|
442
|
-
// A corpus with no `feature` section is a SKIP, not a failure. Each
|
|
443
|
-
// project carries its OWN materialised copy of .sdk/test/test.json, so a
|
|
444
|
-
// project scaffolded before the section existed legitimately has no cases
|
|
445
|
-
// to run - and a hard assertion here turned that into a red suite in every
|
|
446
|
-
// SDK on the fleet, for a corpus the project had simply not re-pulled yet.
|
|
447
|
-
// The strict check belongs where the corpus is CONTROLLED: sdkgen's own
|
|
448
|
-
// end-to-end lane supplies one and requires the cases to actually run.
|
|
449
390
|
t.Skip("this project's test.json has no `feature` section - recompile the corpus (create-sdkgen .sdk/test/feature/) to run these cases")
|
|
450
391
|
}
|
|
451
392
|
|
|
@@ -1,15 +1,5 @@
|
|
|
1
1
|
package sdktest
|
|
2
2
|
|
|
3
|
-
// Offline feature-test harness: a faithful miniature of the real operation
|
|
4
|
-
// pipeline (same hook order and short-circuit rules as the generated
|
|
5
|
-
// Entity*Op code) driven against a configurable mock transport, with no
|
|
6
|
-
// live server and no API-specific fixtures.
|
|
7
|
-
//
|
|
8
|
-
// SEPARATE FROM feature_test.go ON PURPOSE. `target add` drops the
|
|
9
|
-
// cross-feature suite when a project trims its feature set (it constructs
|
|
10
|
-
// every shipped feature by name), but pipeline_test.go and friends use
|
|
11
|
-
// these fh* helpers too — leaving them in feature_test.go took the whole
|
|
12
|
-
// test package down with it.
|
|
13
3
|
|
|
14
4
|
import (
|
|
15
5
|
"fmt"
|
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
package sdktest
|
|
2
2
|
|
|
3
|
-
// Behavioural tests for the enterprise features shipped with this SDK
|
|
4
|
-
// (retry, cache, rbac, telemetry, ...). Each block runs only when its
|
|
5
|
-
// feature is present (see fhSkipWithout in feature_harness_test.go, which
|
|
6
|
-
// also holds the fh* pipeline harness these tests drive).
|
|
7
|
-
//
|
|
8
|
-
// This file constructs every shipped feature type by name, so it only
|
|
9
|
-
// compiles with the COMPLETE feature set — it is listed in the go target's
|
|
10
|
-
// `feature.fullset` and dropped when a project trims its features.
|
|
11
|
-
|
|
12
3
|
import (
|
|
4
|
+
"encoding/json"
|
|
13
5
|
"os"
|
|
14
6
|
"reflect"
|
|
15
7
|
"regexp"
|
|
@@ -21,6 +13,112 @@ import (
|
|
|
21
13
|
feat "GOMODULE/feature"
|
|
22
14
|
)
|
|
23
15
|
|
|
16
|
+
// --- option coercion --------------------------------------------------------
|
|
17
|
+
|
|
18
|
+
type fhRetries int
|
|
19
|
+
|
|
20
|
+
func vsGetPath(node any, keys ...string) any {
|
|
21
|
+
cur := node
|
|
22
|
+
for _, k := range keys {
|
|
23
|
+
m, ok := cur.(map[string]any)
|
|
24
|
+
if !ok {
|
|
25
|
+
return nil
|
|
26
|
+
}
|
|
27
|
+
cur = m[k]
|
|
28
|
+
}
|
|
29
|
+
return cur
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// go read a closed type switch and silently used the DEFAULT for any other
|
|
33
|
+
// numeric type. `retry` makes the budget observable as a call count, so a
|
|
34
|
+
// dropped option shows as the default of 2 rather than the 4 asked for.
|
|
35
|
+
func TestFeatureOptionNumericTypes(t *testing.T) {
|
|
36
|
+
fhSkipWithout(t, "retry")
|
|
37
|
+
|
|
38
|
+
var jsonNum map[string]any
|
|
39
|
+
dec := json.NewDecoder(strings.NewReader(`{"retries":4}`))
|
|
40
|
+
dec.UseNumber()
|
|
41
|
+
if err := dec.Decode(&jsonNum); err != nil {
|
|
42
|
+
t.Fatalf("decode: %v", err)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
cases := []struct {
|
|
46
|
+
name string
|
|
47
|
+
val any
|
|
48
|
+
}{
|
|
49
|
+
{"int", 4},
|
|
50
|
+
{"int8", int8(4)},
|
|
51
|
+
{"int16", int16(4)},
|
|
52
|
+
{"int32", int32(4)},
|
|
53
|
+
{"int64", int64(4)},
|
|
54
|
+
{"uint", uint(4)},
|
|
55
|
+
{"uint8", uint8(4)},
|
|
56
|
+
{"uint16", uint16(4)},
|
|
57
|
+
{"uint32", uint32(4)},
|
|
58
|
+
{"uint64", uint64(4)},
|
|
59
|
+
{"float32", float32(4)},
|
|
60
|
+
{"float64", float64(4)},
|
|
61
|
+
{"json.Number", jsonNum["retries"]},
|
|
62
|
+
{"defined int", fhRetries(4)},
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const want = 5
|
|
66
|
+
|
|
67
|
+
for _, c := range cases {
|
|
68
|
+
t.Run(c.name, func(t *testing.T) {
|
|
69
|
+
rec := &fhRecorder{reply: func(_ int, _ map[string]any) (any, error) {
|
|
70
|
+
return fhResponse(500, nil, nil), nil
|
|
71
|
+
}}
|
|
72
|
+
h := fhMake(rec.fetch, fhF(feat.NewRetryFeature(), map[string]any{
|
|
73
|
+
"retries": c.val, "minDelay": 0, "jitter": false,
|
|
74
|
+
}))
|
|
75
|
+
h.op(fhOpSpec{op: "load"})
|
|
76
|
+
if len(rec.calls) != want {
|
|
77
|
+
t.Fatalf("%s: retries was not honoured - %d call(s), want %d "+
|
|
78
|
+
"(the default budget of 2 gives 3)", c.name, len(rec.calls), want)
|
|
79
|
+
}
|
|
80
|
+
})
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
t.Run("survives-the-real-makeoptions", func(t *testing.T) {
|
|
84
|
+
// fhMake calls Init directly, so the cases above never meet the option
|
|
85
|
+
// VALIDATOR. To reflect a json.Number is a string, and an option the
|
|
86
|
+
// validator judges by a rule the readers do not is the same defect
|
|
87
|
+
// one layer up.
|
|
88
|
+
client := sdk.TestSDK(nil, nil)
|
|
89
|
+
utility := client.GetUtility()
|
|
90
|
+
ctx := utility.MakeContext(map[string]any{
|
|
91
|
+
"client": client, "utility": utility,
|
|
92
|
+
}, client.GetRootCtx())
|
|
93
|
+
ctx.Options = map[string]any{
|
|
94
|
+
"feature": map[string]any{
|
|
95
|
+
"retry": map[string]any{"active": true, "retries": jsonNum["retries"]},
|
|
96
|
+
},
|
|
97
|
+
}
|
|
98
|
+
ctx.Config = map[string]any{"options": map[string]any{}}
|
|
99
|
+
|
|
100
|
+
got := vsGetPath(utility.MakeOptions(ctx), "feature", "retry", "retries")
|
|
101
|
+
if n, ok := got.(int64); !ok || n != 4 {
|
|
102
|
+
t.Fatalf("MakeOptions did not canonicalise the option: %v (%T), want int64(4)", got, got)
|
|
103
|
+
}
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
t.Run("a-non-number-still-falls-back", func(t *testing.T) {
|
|
107
|
+
// A string is not a Number in java either.
|
|
108
|
+
rec := &fhRecorder{reply: func(_ int, _ map[string]any) (any, error) {
|
|
109
|
+
return fhResponse(500, nil, nil), nil
|
|
110
|
+
}}
|
|
111
|
+
h := fhMake(rec.fetch, fhF(feat.NewRetryFeature(), map[string]any{
|
|
112
|
+
"retries": "4", "minDelay": 0, "jitter": false,
|
|
113
|
+
}))
|
|
114
|
+
h.op(fhOpSpec{op: "load"})
|
|
115
|
+
if len(rec.calls) != 3 {
|
|
116
|
+
t.Fatalf("a string option was coerced: %d call(s), want 3 (the default budget)",
|
|
117
|
+
len(rec.calls))
|
|
118
|
+
}
|
|
119
|
+
})
|
|
120
|
+
}
|
|
121
|
+
|
|
24
122
|
// --- netsim -----------------------------------------------------------------
|
|
25
123
|
|
|
26
124
|
func TestFeatureNetsim(t *testing.T) {
|
|
@@ -1,51 +1,3 @@
|
|
|
1
|
-
// The corpus test runner: vendored @voxgig/omni driven through its NATIVE
|
|
2
|
-
// API (`omni.MakeRunner(specref, provider)`), presented to the corpus tests
|
|
3
|
-
// in the struct-runner shape they already use (`RunPack.Spec`,
|
|
4
|
-
// `RunPack.RunSet`, `RunPack.RunSetFlags`, `RunPack.Client`). No compat
|
|
5
|
-
// shim is vendored: the adapter below IS the whole bridge, per language,
|
|
6
|
-
// per the vendor-tag rollout (docs/design/vendor-tag-rollout.md,
|
|
7
|
-
// Decision 4). It supersedes the engine halves of the retired
|
|
8
|
-
// runner_test.go and struct_runner_test.go (support lives on in
|
|
9
|
-
// testsupport_test.go).
|
|
10
|
-
//
|
|
11
|
-
// Go-specific decisions, each load-bearing:
|
|
12
|
-
//
|
|
13
|
-
// 1. REFLECTION PROVIDER. The omni provider hooks reach the client by
|
|
14
|
-
// reflection over the names the clients already expose (Utility() /
|
|
15
|
-
// GetUtility(), Struct(), Contextify(), Tester()), so ONE resolver
|
|
16
|
-
// serves both the generated SDK and the struct-corpus client in
|
|
17
|
-
// struct_utility_test.go. Ported from upstream's go compat shim
|
|
18
|
-
// (omni go/compat/struct), which this resolver replaces.
|
|
19
|
-
//
|
|
20
|
-
// 2. CONTEXTS STAY MAPS ACROSS THE RUNNER. omni sets `entry.ctx` to the
|
|
21
|
-
// contextified args[0] and `match: {ctx: ...}` assertions read THROUGH
|
|
22
|
-
// it with omni's own GetPath, which walks JSON maps only. A typed
|
|
23
|
-
// *sdk.Context there would make every ctx assertion read "absent". So
|
|
24
|
-
// Contextify returns the MAP; a corpus subject builds the typed context
|
|
25
|
-
// with omniCtx(args[0], ...) at the call site, runs the utility, and
|
|
26
|
-
// writes the observable ctx state back into the same map with
|
|
27
|
-
// omniSyncCtx - which is what makes the live SDK reachable through
|
|
28
|
-
// ctx.Client for the generated utilities (the ts resolver gets both for
|
|
29
|
-
// free from prototype delegation; maps-plus-sync is the go idiom for
|
|
30
|
-
// the same contract).
|
|
31
|
-
//
|
|
32
|
-
// 3. ZERO-ARGUMENT ENTRIES (novalargs). The corpus carries entries with no
|
|
33
|
-
// `in`, `args` or `ctx`, meaning "call the subject with NO argument".
|
|
34
|
-
// omni's native rule passes [clone(entry.in)] - one null. The upstream
|
|
35
|
-
// go compat shim corrected this by handing such entries the struct
|
|
36
|
-
// port's own no-value sentinel (NOVAL); that correction is ported here
|
|
37
|
-
// (novalargs/novalsubject/NOVALMARK), not dropped.
|
|
38
|
-
//
|
|
39
|
-
// 4. THE VENDORED GO PORT LACKS THE omni#54 RUNNER FIXES the TypeScript
|
|
40
|
-
// port has at this tag (omni#57 tracks porting them): JsonStr has no
|
|
41
|
-
// cycle guard, and Match clones its base. Both only bite on CYCLIC
|
|
42
|
-
// values, and go's Clone/FixJson pass non-JSON values (a typed context,
|
|
43
|
-
// a client) through by reference without walking them - so decision 2
|
|
44
|
-
// above (JSON-only maps in entries, typed state kept out of them) is
|
|
45
|
-
// also what keeps every value the runner clones or stringifies acyclic.
|
|
46
|
-
// The errify half (non-Error throwables) cannot arise in go: subjects
|
|
47
|
-
// return `error` values, and the Errify hook below keeps the SDK
|
|
48
|
-
// error's code for `match: {err: {code: ...}}` assertions.
|
|
49
1
|
|
|
50
2
|
package sdktest
|
|
51
3
|
|
|
@@ -86,7 +38,6 @@ type Subject = omni.Subject
|
|
|
86
38
|
// RunSet runs one set of test entries, reporting failures to the test.
|
|
87
39
|
type RunSet func(t TestingT, testspec any, testsubject any)
|
|
88
40
|
|
|
89
|
-
// RunSetFlags runs one set of test entries with flags.
|
|
90
41
|
type RunSetFlags func(t TestingT, testspec any, flags map[string]bool, testsubject any)
|
|
91
42
|
|
|
92
43
|
// RunPack is what the runner returns for one named spec section - the
|
|
@@ -151,7 +102,6 @@ func MakeRunner(testfile any, client any) func(name string, store any) (*RunPack
|
|
|
151
102
|
}
|
|
152
103
|
}
|
|
153
104
|
|
|
154
|
-
// The runner's flags are booleans; omni's carry any value.
|
|
155
105
|
func omniflags(flags map[string]bool) omni.Flags {
|
|
156
106
|
out := omni.Flags{}
|
|
157
107
|
for name, flag := range flags {
|
|
@@ -160,12 +110,6 @@ func omniflags(flags map[string]bool) omni.Flags {
|
|
|
160
110
|
return out
|
|
161
111
|
}
|
|
162
112
|
|
|
163
|
-
// providerclients maps each omni provider back to the live client it
|
|
164
|
-
// wraps, and defproviders marks the ones a spec's DEF.client built - the
|
|
165
|
-
// only ones omniCtx lets override a call site's explicit client (the base
|
|
166
|
-
// provider rides on EVERY ctx entry, and letting it win would defeat the
|
|
167
|
-
// sections that deliberately construct a differently-optioned client).
|
|
168
|
-
// Guarded: corpus subtests may run concurrently.
|
|
169
113
|
var (
|
|
170
114
|
providerclientsmu sync.Mutex
|
|
171
115
|
providerclients = map[*omni.Provider]any{}
|
|
@@ -269,7 +213,6 @@ func omniProvider(client any) *omni.Provider {
|
|
|
269
213
|
return ctx
|
|
270
214
|
},
|
|
271
215
|
|
|
272
|
-
// Client options may reference the runner store.
|
|
273
216
|
Inject: func(options any, store any) any {
|
|
274
217
|
vs.Inject(options, store)
|
|
275
218
|
return options
|
|
@@ -298,12 +241,6 @@ func omniProvider(client any) *omni.Provider {
|
|
|
298
241
|
return provider
|
|
299
242
|
}
|
|
300
243
|
|
|
301
|
-
// utilityof reaches the client's utility: Utility() on the struct corpus
|
|
302
|
-
// client, GetUtility() on the generated SDK. Only a ZERO-ARGUMENT method
|
|
303
|
-
// counts - a generated SDK with an entity named `utility` has an entity
|
|
304
|
-
// ACCESSOR of the same name that takes options, and calling that here
|
|
305
|
-
// would panic (the fixture model ships reserved-name entities precisely to
|
|
306
|
-
// catch this class of collision).
|
|
307
244
|
func utilityof(client any) reflect.Value {
|
|
308
245
|
method := findnullarymethod(reflect.ValueOf(client), "utility")
|
|
309
246
|
if !method.IsValid() {
|
|
@@ -452,9 +389,6 @@ func novalargs(testspec any, sentinel any) (any, bool) {
|
|
|
452
389
|
return out, true
|
|
453
390
|
}
|
|
454
391
|
|
|
455
|
-
// NOVALMARK stands in for the port's no-value between novalargs and
|
|
456
|
-
// novalsubject. Deliberately not one of omni's own sentinels: those are
|
|
457
|
-
// meaningful to the runner, and this one must pass through it inert.
|
|
458
392
|
const NOVALMARK = "__OMNIRESOLVER_NOVAL__"
|
|
459
393
|
|
|
460
394
|
// novalsubject swaps the marker back for the real sentinel at the point of
|
|
@@ -490,12 +424,6 @@ func noargs(entry any) bool {
|
|
|
490
424
|
return true
|
|
491
425
|
}
|
|
492
426
|
|
|
493
|
-
// fixnums: an integral JSON number becomes a Go `int`, on both the spec
|
|
494
|
-
// and the result side. The struct port's API is written in `int`
|
|
495
|
-
// (`Typename(t int)`, `Flatten(list, depths ...int)`), and omni's go
|
|
496
|
-
// runner keeps JSON numbers as float64 - handing a subject a type its
|
|
497
|
-
// signature rejects. omni's DeepEqual compares numbers by value, so the
|
|
498
|
-
// normalisation is invisible to assertions.
|
|
499
427
|
func fixnums(val any) any {
|
|
500
428
|
switch value := val.(type) {
|
|
501
429
|
case float64:
|
|
@@ -641,7 +569,6 @@ func omniCtx(arg any, client *sdk.ProjectNameSDK, utility *sdk.Utility) *sdk.Con
|
|
|
641
569
|
ctx.Spec = sdk.NewSpec(specMap)
|
|
642
570
|
}
|
|
643
571
|
|
|
644
|
-
// Handle result from JSON map
|
|
645
572
|
if resMap, ok := ctxmap["result"].(map[string]any); ok {
|
|
646
573
|
ctx.Result = sdk.NewResult(resMap)
|
|
647
574
|
if errMap, ok := resMap["err"].(map[string]any); ok {
|
|
@@ -651,7 +578,6 @@ func omniCtx(arg any, client *sdk.ProjectNameSDK, utility *sdk.Utility) *sdk.Con
|
|
|
651
578
|
}
|
|
652
579
|
}
|
|
653
580
|
|
|
654
|
-
// Handle response from JSON map
|
|
655
581
|
if respMap, ok := ctxmap["response"].(map[string]any); ok {
|
|
656
582
|
ctx.Response = sdk.NewResponse(respMap)
|
|
657
583
|
if body := respMap["body"]; body != nil {
|
|
@@ -1,12 +1,5 @@
|
|
|
1
1
|
package sdktest
|
|
2
2
|
|
|
3
|
-
// Direct unit tests for the operation-pipeline utilities. The generated
|
|
4
|
-
// entity tests exercise the happy path; these drive the error and edge
|
|
5
|
-
// branches (missing spec/response/result, 4xx handling, transport
|
|
6
|
-
// failures, feature add semantics, auth header shaping) that a normal
|
|
7
|
-
// success-path op never reaches. All utilities are reached through the
|
|
8
|
-
// client utility, so this suite is API-agnostic. Reuses the fh* helpers
|
|
9
|
-
// from feature_test.go (same package).
|
|
10
3
|
|
|
11
4
|
import (
|
|
12
5
|
"testing"
|
|
@@ -417,9 +410,6 @@ func TestPipelineFeatureAdd(t *testing.T) {
|
|
|
417
410
|
})
|
|
418
411
|
}
|
|
419
412
|
|
|
420
|
-
// Feature #2: options.feature accepts an ordered ARRAY (developer add-order)
|
|
421
|
-
// or a map (defaults test-first); MakeOptions records the resolved order in
|
|
422
|
-
// __derived__.featureorder.
|
|
423
413
|
func TestPipelineFeatureOrder(t *testing.T) {
|
|
424
414
|
resolve := func(feature any) string {
|
|
425
415
|
client, utility := plClient(t, nil)
|
|
@@ -11,8 +11,6 @@ import (
|
|
|
11
11
|
vs "github.com/voxgig/struct"
|
|
12
12
|
)
|
|
13
13
|
|
|
14
|
-
// PENDING sections are the ones deliberately left empty in the shared corpus
|
|
15
|
-
// (.sdk/test/primary/<name>.aon). Everything else MUST contribute cases.
|
|
16
14
|
var pendingSections = map[string]bool{
|
|
17
15
|
"fetcher": true, "makeFetchDef": true, "makeResult": true,
|
|
18
16
|
"featureAdd": true, "featureHook": true, "featureInit": true,
|
|
@@ -37,12 +35,6 @@ func TestPrimaryUtility(t *testing.T) {
|
|
|
37
35
|
t.Fatal("primary section not found in test.json")
|
|
38
36
|
}
|
|
39
37
|
|
|
40
|
-
// Run one corpus section, failing loudly when it would run ZERO cases.
|
|
41
|
-
// A renamed section, a fixture that failed to compile, or an empty set
|
|
42
|
-
// used to report PASS while running zero assertions - the whole point
|
|
43
|
-
// of a shared oracle lost without a single red test. (The guard lives
|
|
44
|
-
// here rather than in the runner, which is vendored verbatim; the
|
|
45
|
-
// shared corpus is a v0 spec, and v0 tolerates an empty set.)
|
|
46
38
|
runsection := func(t *testing.T, name string, subject any) {
|
|
47
39
|
t.Helper()
|
|
48
40
|
section, _ := primary[name].(map[string]any)
|
|
@@ -283,9 +275,6 @@ func TestPrimaryUtility(t *testing.T) {
|
|
|
283
275
|
t.Run("fetcher-live", func(t *testing.T) {
|
|
284
276
|
calls := []map[string]any{}
|
|
285
277
|
liveClient := sdk.NewProjectNameSDK(map[string]any{
|
|
286
|
-
// Concrete base: a live construction must satisfy any server
|
|
287
|
-
// variables a templated base URL declares; a literal base
|
|
288
|
-
// sidesteps the requirement.
|
|
289
278
|
"base": "http://localhost:8080",
|
|
290
279
|
"system": map[string]any{
|
|
291
280
|
"fetch": func(url string, fetchdef map[string]any) (map[string]any, error) {
|
|
@@ -553,16 +542,6 @@ func TestPrimaryUtility(t *testing.T) {
|
|
|
553
542
|
})
|
|
554
543
|
})
|
|
555
544
|
|
|
556
|
-
// Was one hand-written case (the single-point path) covering one of this
|
|
557
|
-
// utility's seven branches, which is how the corpus fixture came to be
|
|
558
|
-
// marked deferred as "needs a real client". It does not: NewContext
|
|
559
|
-
// rebuilds Op from opname + entity + config, and Options can be supplied
|
|
560
|
-
// literally. Driven from the corpus now, so TS and Go assert the same
|
|
561
|
-
// branches.
|
|
562
|
-
//
|
|
563
|
-
// TS returns the error AS the value; Go returns it as a second result. The
|
|
564
|
-
// corpus says `match: out: code` for both, so the error is normalised to a
|
|
565
|
-
// map carrying its code here rather than forking the fixture per language.
|
|
566
545
|
t.Run("makePoint-basic", func(t *testing.T) {
|
|
567
546
|
runsection(t, "makePoint", func(args ...any) (any, error) {
|
|
568
547
|
ctxmap, _ := args[0].(map[string]any)
|
|
@@ -570,12 +549,6 @@ func TestPrimaryUtility(t *testing.T) {
|
|
|
570
549
|
ctxmap = map[string]any{}
|
|
571
550
|
}
|
|
572
551
|
|
|
573
|
-
// NewContext resolves Op from the ENTITY NAME, and reaches it
|
|
574
|
-
// through the Entity interface - a literal {name:...} map from the
|
|
575
|
-
// fixture is not one, so entname would be "" and every lookup would
|
|
576
|
-
// miss, reporting point_no_points for all seven cases. TS reads the
|
|
577
|
-
// same field with getprop and accepts the plain map. Swap in the
|
|
578
|
-
// package's minimal Entity so both ports resolve the same op.
|
|
579
552
|
if em, ok := ctxmap["entity"].(map[string]any); ok {
|
|
580
553
|
name, _ := em["name"].(string)
|
|
581
554
|
made := []any{}
|
|
@@ -634,7 +607,6 @@ func TestPrimaryUtility(t *testing.T) {
|
|
|
634
607
|
|
|
635
608
|
result := utility.Param(ctx, paramdef)
|
|
636
609
|
|
|
637
|
-
// The spec alias mutation is what mark 80 asserts on.
|
|
638
610
|
omniSyncCtx(args[0], ctx)
|
|
639
611
|
|
|
640
612
|
return result, nil
|
|
@@ -695,10 +667,6 @@ func TestPrimaryUtility(t *testing.T) {
|
|
|
695
667
|
})
|
|
696
668
|
})
|
|
697
669
|
|
|
698
|
-
// Was two hand-written cases that had drifted out of the shared corpus
|
|
699
|
-
// (the preparePath fixture shipped as an empty `set: []`). Now driven by
|
|
700
|
-
// the corpus like every other section, so all ports assert the same
|
|
701
|
-
// separator/blank-segment behaviour.
|
|
702
670
|
t.Run("preparePath-basic", func(t *testing.T) {
|
|
703
671
|
runsection(t, "preparePath", func(args ...any) (any, error) {
|
|
704
672
|
ctx := omniCtx(args[0], client, utility)
|