@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
|
@@ -15,58 +15,17 @@ import (
|
|
|
15
15
|
sekreto "GOMODULE/feature/secrets/sekreto"
|
|
16
16
|
)
|
|
17
17
|
|
|
18
|
-
// Secret access via a vendored @voxgig/sekreto provider chain, and the
|
|
19
|
-
// access-token exchange some APIs require on top of it. The go port of
|
|
20
|
-
// tm/ts/src/feature/secrets/SecretsFeature.ts - same contract, go idiom.
|
|
21
|
-
//
|
|
22
|
-
// The SDK's `apikey` option keeps exactly its old meaning: an explicit
|
|
23
|
-
// credential given in code. This feature makes it ONE SOURCE among several
|
|
24
|
-
// rather than the only one: when active, the apikey is resolved through a
|
|
25
|
-
// sekreto chain in which the explicit option (when set) is the FIRST
|
|
26
|
-
// provider - a `memory` store named `options` - so an explicit value always
|
|
27
|
-
// wins, by sekreto's own first-hit rule rather than by special-case logic.
|
|
28
|
-
//
|
|
29
|
-
// Resolution is effectively ASYNC (providers do IO), and the auth header is
|
|
30
|
-
// built by the synchronous prepareAuth inside makeSpec. The bridge is the
|
|
31
|
-
// feature hook pipeline: every entity op runs featureHook("PreSpec") before
|
|
32
|
-
// makeSpec, so the PreSpec hook below resolves the secret once and writes
|
|
33
|
-
// it into the LIVE options map where prepareAuth already looks (ctx.Options
|
|
34
|
-
// on the root context IS the options map the client clones for OptionsMap).
|
|
35
|
-
// Concurrent operations share the single in-flight resolution.
|
|
36
|
-
//
|
|
37
|
-
// MISS vs ERROR (sekreto's invariant): a provider MISS falls through - the
|
|
38
|
-
// op proceeds, unauthenticated if nothing else supplies a credential. A
|
|
39
|
-
// provider ERROR (unreachable vault, bad creds) must FAIL the op: a broken
|
|
40
|
-
// vault never degrades into an unauthenticated request. go's feature hooks
|
|
41
|
-
// are synchronous and cannot fail an operation from PreSpec the way ts's
|
|
42
|
-
// awaited hook rejection can - so, unlike ts, the transport is wrapped
|
|
43
|
-
// WHENEVER the feature is active, and the wrapper refuses to send while
|
|
44
|
-
// the last resolution stands failed. Fail-closed at the one seam every
|
|
45
|
-
// request must pass.
|
|
46
|
-
//
|
|
47
|
-
// EXCHANGE: some APIs will not take a long-lived credential at all. What
|
|
48
|
-
// the chain resolves is then a REFRESH token, which buys a short-lived
|
|
49
|
-
// ACCESS token from a token endpoint (`exchange.path`, relative to
|
|
50
|
-
// options.base); the access token is what every request carries, and when
|
|
51
|
-
// a response status in `exchange.statuses` (401) says it is spent the
|
|
52
|
-
// wrapper buys another and retries the same request once. Concurrent
|
|
53
|
-
// purchases share the one in-flight exchange; test mode buys nothing and
|
|
54
|
-
// answers with a deterministic fake token.
|
|
55
18
|
type SecretsFeature struct {
|
|
56
19
|
BaseFeature
|
|
57
20
|
client *core.ProjectNameSDK
|
|
58
21
|
options map[string]any
|
|
59
22
|
|
|
60
|
-
// The LIVE options map (root ctx options), where the resolved value
|
|
61
|
-
// lands so the sync prepareAuth sees it.
|
|
62
23
|
liveopts map[string]any
|
|
63
24
|
|
|
64
25
|
secretname string
|
|
65
26
|
cache bool
|
|
66
27
|
sek *sekreto.Sekreto
|
|
67
28
|
|
|
68
|
-
// Exchange state: nil config when off; the refresh credential the
|
|
69
|
-
// chain resolved; the single in-flight purchase.
|
|
70
29
|
exchange *secretsExchange
|
|
71
30
|
refresh string
|
|
72
31
|
|
|
@@ -75,16 +34,6 @@ type SecretsFeature struct {
|
|
|
75
34
|
buying *secretsBuy
|
|
76
35
|
initerr error
|
|
77
36
|
|
|
78
|
-
// The RESOLVED credential, held in feature state and injected into
|
|
79
|
-
// each request at the transport seam - NEVER written into the shared
|
|
80
|
-
// live options map. This is go's structural deviation from the ts
|
|
81
|
-
// reference (which writes options.apikey): the go request path reads
|
|
82
|
-
// ctx.Options raw on every operation goroutine, so a feature that
|
|
83
|
-
// mutated that map would race every concurrent operation. With the
|
|
84
|
-
// feature as sole holder, the options map is frozen after
|
|
85
|
-
// construction and every raw read is safe; the header the wire sees
|
|
86
|
-
// is identical, because the transport wrapper rewrites it from this
|
|
87
|
-
// value the same way prepareAuth builds it.
|
|
88
37
|
cred string
|
|
89
38
|
}
|
|
90
39
|
|
|
@@ -97,7 +46,6 @@ type secretsExchange struct {
|
|
|
97
46
|
retries int
|
|
98
47
|
}
|
|
99
48
|
|
|
100
|
-
// One shared in-flight resolution: late arrivals wait on done and read err.
|
|
101
49
|
type secretsCall struct {
|
|
102
50
|
done chan struct{}
|
|
103
51
|
err error
|
|
@@ -127,8 +75,6 @@ func (f *SecretsFeature) Sekreto() *sekreto.Sekreto {
|
|
|
127
75
|
return f.sek
|
|
128
76
|
}
|
|
129
77
|
|
|
130
|
-
// Init is sync by feature contract: build the chain, never look anything
|
|
131
|
-
// up here.
|
|
132
78
|
func (f *SecretsFeature) Init(ctx *core.Context, options map[string]any) {
|
|
133
79
|
f.client = ctx.Client
|
|
134
80
|
f.options = options
|
|
@@ -145,8 +91,6 @@ func (f *SecretsFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
145
91
|
}
|
|
146
92
|
f.cache = foptBool(options, "cache", true)
|
|
147
93
|
|
|
148
|
-
// Exchange config, normalised once. Nil when off, so every later
|
|
149
|
-
// decision is a nil check.
|
|
150
94
|
xopts := foptMap(options, "exchange")
|
|
151
95
|
if foptBool(xopts, "active", false) {
|
|
152
96
|
statuses := []int{}
|
|
@@ -166,14 +110,6 @@ func (f *SecretsFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
166
110
|
}
|
|
167
111
|
}
|
|
168
112
|
|
|
169
|
-
// The explicit credential, when set, is the first store in the chain.
|
|
170
|
-
//
|
|
171
|
-
// WHICH option that is depends on the exchange. Without one, the
|
|
172
|
-
// secret being resolved IS the credential the transport sends, so
|
|
173
|
-
// `apikey` is it. With one, the secret is a REFRESH token and `apikey`
|
|
174
|
-
// means the opposite thing - an access token the caller already holds
|
|
175
|
-
// - so the explicit seat belongs to `exchange.refresh`, and apikey is
|
|
176
|
-
// left alone to serve as the starting access token (see resolveonce).
|
|
177
113
|
explicit := ""
|
|
178
114
|
if nil == f.exchange {
|
|
179
115
|
explicit, _ = f.liveopts["apikey"].(string)
|
|
@@ -199,7 +135,6 @@ func (f *SecretsFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
199
135
|
case *sekreto.ProviderSpec:
|
|
200
136
|
specs = append(specs, v)
|
|
201
137
|
case sekreto.Provider:
|
|
202
|
-
// A provider already built joins the chain as it is.
|
|
203
138
|
specs = append(specs, &sekreto.ProviderSpec{Provider: v})
|
|
204
139
|
case map[string]any:
|
|
205
140
|
spec, err := sekreto.SpecOf(v)
|
|
@@ -209,18 +144,6 @@ func (f *SecretsFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
209
144
|
}
|
|
210
145
|
specs = append(specs, spec)
|
|
211
146
|
default:
|
|
212
|
-
// ANYTHING ELSE is refused, fail-closed - a bare kind name
|
|
213
|
-
// ("hashicorp"), a nil, a number. DELIBERATE DIVERGENCE from
|
|
214
|
-
// ts/kotlin: those push every entry through to Sekreto's
|
|
215
|
-
// constructor, whose dynamic providers list refuses it with this
|
|
216
|
-
// message. Go's Options.Providers is a typed slice, so there is
|
|
217
|
-
// nothing to push a string through; the feature raises the
|
|
218
|
-
// library's own error here instead, via sekreto.Fail with the
|
|
219
|
-
// constructor's own wording, and the transport gate below refuses
|
|
220
|
-
// to send. A switch without this arm silently DROPPED the entry,
|
|
221
|
-
// which SHORTENED the chain instead of failing it - a
|
|
222
|
-
// misconfigured providers list then sent ordinary unauthenticated
|
|
223
|
-
// requests, the exact fail-open the gate exists to prevent.
|
|
224
147
|
f.initerr = sekreto.Fail(
|
|
225
148
|
"sekreto: not a provider or a provider spec: " + fmt.Sprint(v))
|
|
226
149
|
}
|
|
@@ -253,10 +176,6 @@ func (f *SecretsFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
253
176
|
}
|
|
254
177
|
f.sek = sek
|
|
255
178
|
|
|
256
|
-
// Wrap the transport: the fail-closed gate needs the seam whenever the
|
|
257
|
-
// feature is active, and the exchange (when on) additionally needs to
|
|
258
|
-
// SEE responses - expiry is only ever discovered from one, and this is
|
|
259
|
-
// the one place a response can be seen and the request tried again.
|
|
260
179
|
self := f
|
|
261
180
|
inner := ctx.Utility.Fetcher
|
|
262
181
|
ctx.Utility.Fetcher = func(ctx2 *core.Context, url string, fetchdef map[string]any) (any, error) {
|
|
@@ -264,19 +183,6 @@ func (f *SecretsFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
264
183
|
}
|
|
265
184
|
}
|
|
266
185
|
|
|
267
|
-
// resolve runs one resolution, shared by every concurrent caller. A
|
|
268
|
-
// settled HIT is kept only when caching is on (`cache: false` means every
|
|
269
|
-
// resolve asks the chain again); a FAILURE is always cleared, so a
|
|
270
|
-
// transient vault outage never poisons the client permanently - the next
|
|
271
|
-
// operation asks the chain again.
|
|
272
|
-
//
|
|
273
|
-
// A MISS is cleared too, however caching is set. That rule is sekreto's,
|
|
274
|
-
// not this feature's: `A miss is never cached: the next read asks again`,
|
|
275
|
-
// in sekreto's own source. Retaining a settled miss here would override
|
|
276
|
-
// that from the layer above, and a secret provisioned after startup - a
|
|
277
|
-
// mounted file, a policy granted a minute late - would never be picked up
|
|
278
|
-
// for the life of the client. `cache` is about caching a HIT; it was never
|
|
279
|
-
// a promise to keep saying no.
|
|
280
186
|
func (f *SecretsFeature) resolve() error {
|
|
281
187
|
if nil != f.initerr {
|
|
282
188
|
return f.initerr
|
|
@@ -315,8 +221,6 @@ func (f *SecretsFeature) resolveonce() (bool, error) {
|
|
|
315
221
|
|
|
316
222
|
found, has, err := f.sek.Try(f.secretname)
|
|
317
223
|
if nil != err {
|
|
318
|
-
// A provider ERROR fails the op (via the transport gate); only a
|
|
319
|
-
// MISS falls through.
|
|
320
224
|
return false, err
|
|
321
225
|
}
|
|
322
226
|
|
|
@@ -325,12 +229,6 @@ func (f *SecretsFeature) resolveonce() (bool, error) {
|
|
|
325
229
|
if has {
|
|
326
230
|
f.cred = found
|
|
327
231
|
} else {
|
|
328
|
-
// An UNCACHED miss after an earlier hit is a revocation: the
|
|
329
|
-
// chain now says no provider has the secret, so the resolved
|
|
330
|
-
// value must not keep going out on the wire. (An explicit
|
|
331
|
-
// apikey OPTION is never lost here - it seats FIRST in the
|
|
332
|
-
// chain as a memory provider, so the chain HITS while one is
|
|
333
|
-
// set and the miss branch is unreachable.)
|
|
334
232
|
f.cred = ""
|
|
335
233
|
}
|
|
336
234
|
f.mu.Unlock()
|
|
@@ -350,27 +248,15 @@ func (f *SecretsFeature) resolveonce() (bool, error) {
|
|
|
350
248
|
apikey := f.cred
|
|
351
249
|
f.mu.Unlock()
|
|
352
250
|
if "" == apikey {
|
|
353
|
-
// A starting access token supplied as the OPTION: read from the
|
|
354
|
-
// frozen options map (no feature ever writes it).
|
|
355
251
|
apikey, _ = f.liveopts["apikey"].(string)
|
|
356
252
|
f.mu.Lock()
|
|
357
253
|
f.cred = apikey
|
|
358
254
|
f.mu.Unlock()
|
|
359
255
|
}
|
|
360
256
|
if "" != apikey {
|
|
361
|
-
// A starting access token was supplied. Spend it: if it is stale
|
|
362
|
-
// the API answers with an expiry status and the transport wrapper
|
|
363
|
-
// buys another, which is the same path expiry takes anyway.
|
|
364
257
|
return true, nil
|
|
365
258
|
}
|
|
366
259
|
|
|
367
|
-
// `auth: nil` is the documented way to send NO credential, and a
|
|
368
|
-
// purchase is a credential-bearing call: the refresh token goes to the
|
|
369
|
-
// token endpoint in the request body. withrefresh honours suppression
|
|
370
|
-
// for the RETRY, but it runs after this - by then the refresh token has
|
|
371
|
-
// already left the process, and no later check can call it back. The
|
|
372
|
-
// suppression has to be honoured here, before the first purchase, or it
|
|
373
|
-
// only ever half-held.
|
|
374
260
|
if nil == f.liveopts["auth"] {
|
|
375
261
|
return false, nil
|
|
376
262
|
}
|
|
@@ -379,21 +265,9 @@ func (f *SecretsFeature) resolveonce() (bool, error) {
|
|
|
379
265
|
return nil == err, err
|
|
380
266
|
}
|
|
381
267
|
|
|
382
|
-
// transport wraps whatever transport was current at Init.
|
|
383
268
|
func (f *SecretsFeature) transport(ctx *core.Context, url string,
|
|
384
269
|
fetchdef map[string]any, inner core.FetcherFunc) (any, error) {
|
|
385
270
|
|
|
386
|
-
// Fail-closed, at the ONE seam every wire path crosses. Entity ops,
|
|
387
|
-
// Direct, Graphql and the exchange retries all come through this
|
|
388
|
-
// wrapper, so resolving HERE is what gives the raw paths - which run
|
|
389
|
-
// no feature hooks at all - the same credential the entity pipeline
|
|
390
|
-
// gets (ts resolves in its awaited PreSpec instead; go's header is
|
|
391
|
-
// rewritten below AFTER Prepare built it, so the transport is exactly
|
|
392
|
-
// early enough). resolve() is shared and cached: concurrent callers
|
|
393
|
-
// join the in-flight attempt, a cached success is free, and with
|
|
394
|
-
// `cache: false` the chain is asked once per REQUEST, which is that
|
|
395
|
-
// option's meaning. A provider ERROR refuses the request with the
|
|
396
|
-
// provider's error - never an unauthenticated send.
|
|
397
271
|
if nil != f.initerr {
|
|
398
272
|
return nil, f.initerr
|
|
399
273
|
}
|
|
@@ -417,22 +291,9 @@ func (f *SecretsFeature) transport(ctx *core.Context, url string,
|
|
|
417
291
|
return f.withrefresh(ctx, url, fetchdef, inner)
|
|
418
292
|
}
|
|
419
293
|
|
|
420
|
-
// withrefresh buys a token and tries the request again when the API says
|
|
421
|
-
// the current one is spent.
|
|
422
|
-
//
|
|
423
|
-
// The retry rewrites the authorization header IN PLACE on the fetchdef,
|
|
424
|
-
// because the header was built by the synchronous prepareAuth before this
|
|
425
|
-
// request left, and it carries the token that just failed. Rebuilt the way
|
|
426
|
-
// prepareAuth builds it, from the same options auth.prefix, so the two
|
|
427
|
-
// cannot drift.
|
|
428
294
|
func (f *SecretsFeature) withrefresh(ctx *core.Context, url string,
|
|
429
295
|
fetchdef map[string]any, inner core.FetcherFunc) (any, error) {
|
|
430
296
|
|
|
431
|
-
// `auth: nil` is the documented way to send NO credential, and
|
|
432
|
-
// prepareAuth honours it by removing the header. A refusal of a
|
|
433
|
-
// deliberately unauthenticated request is not an expired token and
|
|
434
|
-
// cannot be fixed by buying one - retrying would transmit exactly the
|
|
435
|
-
// credential the caller suppressed.
|
|
436
297
|
if nil == f.liveopts["auth"] {
|
|
437
298
|
return inner(ctx, url, fetchdef)
|
|
438
299
|
}
|
|
@@ -441,8 +302,6 @@ func (f *SecretsFeature) withrefresh(ctx *core.Context, url string,
|
|
|
441
302
|
attempt := 0
|
|
442
303
|
|
|
443
304
|
for {
|
|
444
|
-
// The credential THIS attempt goes out with, captured before it
|
|
445
|
-
// leaves: it is what tells a stale refusal apart from a fresh one.
|
|
446
305
|
used := f.getcred()
|
|
447
306
|
|
|
448
307
|
res, err := inner(ctx, url, fetchdef)
|
|
@@ -451,12 +310,6 @@ func (f *SecretsFeature) withrefresh(ctx *core.Context, url string,
|
|
|
451
310
|
return res, err
|
|
452
311
|
}
|
|
453
312
|
|
|
454
|
-
// Another request may have bought a token while this one was in
|
|
455
|
-
// flight. Concurrent expiries share the in-flight purchase, but
|
|
456
|
-
// STAGGERED ones do not - so spend what is current before buying:
|
|
457
|
-
// a second exchange for a token that is already fresh is wasted,
|
|
458
|
-
// and on a provider that invalidates the previous credential on
|
|
459
|
-
// issuance it breaks the first request's own retry.
|
|
460
313
|
current := f.getcred()
|
|
461
314
|
token := ""
|
|
462
315
|
|
|
@@ -497,7 +350,6 @@ func (f *SecretsFeature) spent(res any) bool {
|
|
|
497
350
|
return false
|
|
498
351
|
}
|
|
499
352
|
|
|
500
|
-
// getcred reads the resolved credential under the feature mutex.
|
|
501
353
|
func (f *SecretsFeature) getcred() string {
|
|
502
354
|
f.mu.Lock()
|
|
503
355
|
v := f.cred
|
|
@@ -518,12 +370,6 @@ func (f *SecretsFeature) reauth(fetchdef map[string]any, token string) {
|
|
|
518
370
|
return
|
|
519
371
|
}
|
|
520
372
|
|
|
521
|
-
// Suppressed auth means NO header, the same answer prepareAuth gives.
|
|
522
|
-
// Reached defensively - withrefresh does not retry at all when auth is
|
|
523
|
-
// nil - but this is the function that writes the credential, so it is
|
|
524
|
-
// where the rule has to hold.
|
|
525
|
-
// The options map is FROZEN after construction (this feature never
|
|
526
|
-
// writes it), so the raw read is safe on any goroutine.
|
|
527
373
|
rawauth := f.liveopts["auth"]
|
|
528
374
|
auth, _ := rawauth.(map[string]any)
|
|
529
375
|
if nil == rawauth || nil == auth {
|
|
@@ -543,12 +389,6 @@ func (f *SecretsFeature) reauth(fetchdef map[string]any, token string) {
|
|
|
543
389
|
// ONE in-flight purchase; the slot is cleared once settled, so the next
|
|
544
390
|
// expiry buys a fresh token rather than replaying this result.
|
|
545
391
|
func (f *SecretsFeature) buy() (string, error) {
|
|
546
|
-
// TEST MODE BUYS NOTHING. The test feature replaces the transport so
|
|
547
|
-
// no request leaves the process; an exchange here would be the one
|
|
548
|
-
// HTTP call it could not stop, and it would need a live token endpoint
|
|
549
|
-
// for a suite whose whole point is not needing one. A deterministic,
|
|
550
|
-
// obviously-fake token instead - the same answer makeOptions gives a
|
|
551
|
-
// required server variable, for the same reason.
|
|
552
392
|
if "live" != f.client.Mode {
|
|
553
393
|
token := "test-" + f.exchange.response
|
|
554
394
|
f.mu.Lock()
|
|
@@ -574,8 +414,6 @@ func (f *SecretsFeature) buy() (string, error) {
|
|
|
574
414
|
buying.err = err
|
|
575
415
|
f.buying = nil
|
|
576
416
|
if nil == err {
|
|
577
|
-
// Publish HERE, before the waiters wake: one writer, under the
|
|
578
|
-
// mutex - waiters consume the returned value.
|
|
579
417
|
f.cred = token
|
|
580
418
|
}
|
|
581
419
|
f.mu.Unlock()
|
|
@@ -595,8 +433,6 @@ func (f *SecretsFeature) buyonce() (string, error) {
|
|
|
595
433
|
|
|
596
434
|
options := f.client.OptionsMap()
|
|
597
435
|
|
|
598
|
-
// The token endpoint is RELATIVE to the base, which already carries
|
|
599
|
-
// whatever account or tenant segment the server URL declares.
|
|
600
436
|
base, _ := options["base"].(string)
|
|
601
437
|
base = strings.TrimRight(base, "/")
|
|
602
438
|
url := base + "/" + strings.TrimLeft(x.path, "/")
|
|
@@ -605,11 +441,6 @@ func (f *SecretsFeature) buyonce() (string, error) {
|
|
|
605
441
|
fetch, _ := system["fetch"].(func(string, map[string]any) (map[string]any, error))
|
|
606
442
|
|
|
607
443
|
if nil == fetch {
|
|
608
|
-
// No custom transport supplied - the ordinary case. makeOptions
|
|
609
|
-
// leaves system.fetch unset, so the exchange gets its own raw
|
|
610
|
-
// HTTP path (mirroring the ts reference, whose system.fetch is
|
|
611
|
-
// initialized from the platform fetcher). Local and minimal on
|
|
612
|
-
// purpose: see the NOT-the-SDK-transport note below.
|
|
613
444
|
fetch = rawExchangeFetch
|
|
614
445
|
}
|
|
615
446
|
|
|
@@ -621,10 +452,6 @@ func (f *SecretsFeature) buyonce() (string, error) {
|
|
|
621
452
|
return "", err
|
|
622
453
|
}
|
|
623
454
|
|
|
624
|
-
// Deliberately NOT the SDK transport. The transport is what this
|
|
625
|
-
// feature wraps, and sending the token request back through it would
|
|
626
|
-
// recurse on the first expiry - and would route the exchange through
|
|
627
|
-
// the test mock, which knows nothing about it.
|
|
628
455
|
res, err := fetch(url, map[string]any{
|
|
629
456
|
"method": x.method,
|
|
630
457
|
"headers": map[string]any{"content-type": "application/json"},
|
|
@@ -4,13 +4,6 @@ import (
|
|
|
4
4
|
"GOMODULE/core"
|
|
5
5
|
)
|
|
6
6
|
|
|
7
|
-
// Streaming result support. For list-style operations it attaches a
|
|
8
|
-
// `Result.Stream` function yielding a channel so callers can consume items
|
|
9
|
-
// incrementally with `for item := range result.Stream()` instead of
|
|
10
|
-
// materialising the whole slice at once. A `chunkSize` groups items into
|
|
11
|
-
// []any batches when set; a `chunkDelay` (ms) paces delivery via the
|
|
12
|
-
// injectable `sleep` for offline tests. The channel is fully buffered, so
|
|
13
|
-
// abandoning a stream never leaks the producing goroutine.
|
|
14
7
|
type StreamingFeature struct {
|
|
15
8
|
BaseFeature
|
|
16
9
|
client *core.ProjectNameSDK
|
|
@@ -6,14 +6,6 @@ import (
|
|
|
6
6
|
"GOMODULE/core"
|
|
7
7
|
)
|
|
8
8
|
|
|
9
|
-
// Distributed-tracing telemetry. Opens a span per operation (PrePoint),
|
|
10
|
-
// propagates trace context to the server as W3C `traceparent` plus
|
|
11
|
-
// `X-Trace-Id` / `X-Span-Id` headers (PreRequest), and closes the span on
|
|
12
|
-
// completion (PreDone) or failure (PreUnexpected). Each span closes exactly
|
|
13
|
-
// once (the per-context marker in ctx.Out is consumed on close). Finished
|
|
14
|
-
// spans accumulate on the feature; an `exporter` callback, when provided,
|
|
15
|
-
// is invoked with each finished span. Trace/span id generation (`idgen`)
|
|
16
|
-
// and the clock (`now`) are injectable for deterministic tests.
|
|
17
9
|
type TelemetryFeature struct {
|
|
18
10
|
BaseFeature
|
|
19
11
|
client *core.ProjectNameSDK
|
|
@@ -55,13 +55,6 @@ func (f *TestFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
55
55
|
self := f
|
|
56
56
|
|
|
57
57
|
testFetcher := func(ctx *core.Context, _fullurl string, _fetchdef map[string]any) (any, error) {
|
|
58
|
-
// Shape the mock payload the way the real API would, so the op's
|
|
59
|
-
// response transform recovers the entity from it. A point carrying
|
|
60
|
-
// `transform.res: ` + "`body.item`" + ` describes an API that answers
|
|
61
|
-
// {"item": {...}}; handing back the bare entity means the transform
|
|
62
|
-
// unwraps a property that is not there and the caller gets nil. The
|
|
63
|
-
// mock has to agree with the model, or it only ever simulates APIs
|
|
64
|
-
// whose responses happen to be unwrapped. Mirrors the ts mock.
|
|
65
58
|
envelope := func(data any) any {
|
|
66
59
|
if data == nil || ctx.Point == nil {
|
|
67
60
|
return data
|
|
@@ -78,8 +71,6 @@ func (f *TestFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
78
71
|
if m == nil {
|
|
79
72
|
return data
|
|
80
73
|
}
|
|
81
|
-
// Multi-segment on purpose: GraphQL ops unwrap body.data.<field>
|
|
82
|
-
// (and body.data.<field>.<entity> for mutations), not just one level.
|
|
83
74
|
segs := strings.Split(m[1], ".")
|
|
84
75
|
out := data
|
|
85
76
|
for i := len(segs) - 1; 0 <= i; i-- {
|
|
@@ -152,13 +143,6 @@ func (f *TestFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
152
143
|
out := vs.Clone(found)
|
|
153
144
|
return respond(200, out, nil), nil
|
|
154
145
|
} else if op.Name == "update" {
|
|
155
|
-
// Match the existing entity by id only (or its alias). Reqdata
|
|
156
|
-
// also contains the new field values, which would otherwise
|
|
157
|
-
// cause Select to filter out the entity we want to update.
|
|
158
|
-
// When reqdata has no id, fall back to the id the entity
|
|
159
|
-
// client carries from a prior create/load (in ctx.Match /
|
|
160
|
-
// ctx.Data), mirroring the TS mock where param(ctx,'id')
|
|
161
|
-
// resolves from accumulated state.
|
|
162
146
|
updateMatch := map[string]any{}
|
|
163
147
|
if ctx.Reqdata != nil {
|
|
164
148
|
if v, has := ctx.Reqdata["id"]; has {
|
|
@@ -357,13 +341,6 @@ func (f *TestFeature) buildArgs(ctx *core.Context, op *core.Operation, args map[
|
|
|
357
341
|
// (e.g. GET /result?trace_id=), which has no path param at all.
|
|
358
342
|
paramsPath := vs.GetPath(point, []any{"args", "params"})
|
|
359
343
|
reqdParams := vs.Select(paramsPath, map[string]any{"reqd": true})
|
|
360
|
-
// The error return Transform gained in struct go 0.1.3 is discarded
|
|
361
|
-
// DELIBERATELY here, unlike in transform_request/response: these two
|
|
362
|
-
// transform a spec the SDK itself built from the point definition, not
|
|
363
|
-
// user data, so an error means a generator bug rather than something a
|
|
364
|
-
// caller can act on — and buildArgs has no error seam to route it
|
|
365
|
-
// through. An empty result is the conservative outcome: no required
|
|
366
|
-
// fields, which is what an absent spec already produces.
|
|
367
344
|
reqdFromParams, _ := vs.Transform(reqdParams, []any{"`$EACH`", "", "`$KEY.name`"})
|
|
368
345
|
queryPath := vs.GetPath(point, []any{"args", "query"})
|
|
369
346
|
reqdQuery := vs.Select(queryPath, map[string]any{"reqd": true})
|
|
@@ -9,27 +9,6 @@ import (
|
|
|
9
9
|
"GOMODULE/core"
|
|
10
10
|
)
|
|
11
11
|
|
|
12
|
-
// Payload validation against the model's own field types. The go port of
|
|
13
|
-
// tm/ts/src/feature/validate/ValidateFeature.ts.
|
|
14
|
-
//
|
|
15
|
-
// The specs are NOT written here and not written in the model either: every
|
|
16
|
-
// entity field already carries a canonical type sentinel (`$STRING`,
|
|
17
|
-
// `$INTEGER`, the `$ONE` union for an OpenAPI multi-type), which is the same
|
|
18
|
-
// vocabulary struct.Validate speaks. The generator maps them once
|
|
19
|
-
// (helpers/canonSpec) and emits `core.ENTITYSPEC`, so a field whose type
|
|
20
|
-
// changes in the API spec changes what this feature enforces with no edit
|
|
21
|
-
// anywhere.
|
|
22
|
-
//
|
|
23
|
-
// WHAT IS CHECKED
|
|
24
|
-
//
|
|
25
|
-
// outbound (PreSpec) the payload the caller asked to send, against
|
|
26
|
-
// `spec.op[<opname>]` - the operation's request shape.
|
|
27
|
-
// inbound (PreDone) each record the operation returned, against
|
|
28
|
-
// `spec.data` - the entity's own field types.
|
|
29
|
-
//
|
|
30
|
-
// WHAT IS NOT. The model carries no array element types, no nested object
|
|
31
|
-
// schemas, no enums, formats or bounds, so this checks the shape the model
|
|
32
|
-
// knows and nothing more.
|
|
33
12
|
type ValidateFeature struct {
|
|
34
13
|
BaseFeature
|
|
35
14
|
client *core.ProjectNameSDK
|
|
@@ -63,18 +42,11 @@ func (f *ValidateFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
63
42
|
f.request = foptBool(options, "request", true)
|
|
64
43
|
f.response = foptBool(options, "response", false)
|
|
65
44
|
|
|
66
|
-
// FAIL CLOSED. Only the exact string "report" selects report mode, so a
|
|
67
|
-
// typo (`mode: "thow"`) still rejects rather than silently turning
|
|
68
|
-
// enforcement off. The option spec rejects the typo outright; this is
|
|
69
|
-
// what happens if it ever does not.
|
|
70
45
|
f.mode = "throw"
|
|
71
46
|
if "report" == foptStr(options, "mode", "throw") {
|
|
72
47
|
f.mode = "report"
|
|
73
48
|
}
|
|
74
49
|
|
|
75
|
-
// `strict` is applied ONCE, here, by rebuilding the spec tree without the
|
|
76
|
-
// `$OPEN` markers - rather than per call, which would clone a spec for
|
|
77
|
-
// every request an SDK ever makes.
|
|
78
50
|
f.spec = core.ENTITYSPEC
|
|
79
51
|
if foptBool(options, "strict", false) {
|
|
80
52
|
if closed, ok := validateClose(core.ENTITYSPEC).(map[string]any); ok {
|
|
@@ -83,9 +55,6 @@ func (f *ValidateFeature) Init(ctx *core.Context, options map[string]any) {
|
|
|
83
55
|
}
|
|
84
56
|
}
|
|
85
57
|
|
|
86
|
-
// Outbound. MakeSpec short-circuits on a `ctx.Out["spec"]` that is already
|
|
87
|
-
// set, so assigning the error here rejects the operation before the request
|
|
88
|
-
// is built - the same seam rbac uses one stage earlier.
|
|
89
58
|
func (f *ValidateFeature) PreSpec(ctx *core.Context) {
|
|
90
59
|
if !f.Active || !f.request {
|
|
91
60
|
return
|
|
@@ -111,16 +80,6 @@ func (f *ValidateFeature) PreSpec(ctx *core.Context) {
|
|
|
111
80
|
strings.Join(errs, "; "))
|
|
112
81
|
}
|
|
113
82
|
|
|
114
|
-
// Inbound. PreDone rather than PreResult: the records are extracted from the
|
|
115
|
-
// response body by MakeResult, which runs between the two, so at PreResult
|
|
116
|
-
// there is nothing to check but the envelope.
|
|
117
|
-
//
|
|
118
|
-
// HOOK ORDER MATTERS HERE, and the default order is not the one you want.
|
|
119
|
-
// PreDone hooks fire in feature ADD order, which defaults to `test` first and
|
|
120
|
-
// then names sorted - and `validate` sorts last, after audit, cost, debug,
|
|
121
|
-
// metrics and telemetry. Those observers therefore record the operation as a
|
|
122
|
-
// success before this hook has looked at it. Activating features as an
|
|
123
|
-
// ORDERED LIST fixes it.
|
|
124
83
|
func (f *ValidateFeature) PreDone(ctx *core.Context) {
|
|
125
84
|
if !f.Active || !f.response {
|
|
126
85
|
return
|
|
@@ -168,9 +127,6 @@ func (f *ValidateFeature) PreDone(ctx *core.Context) {
|
|
|
168
127
|
"Invalid response for entity \""+validateEntName(ctx)+"\": "+
|
|
169
128
|
strings.Join(errs, "; "))
|
|
170
129
|
|
|
171
|
-
// BOTH, and `Ok` is the load-bearing half: Done returns Resdata whenever
|
|
172
|
-
// Result.Ok is true and never looks at Err, so setting the error alone
|
|
173
|
-
// would hand the caller the very records that failed the spec.
|
|
174
130
|
ctx.Result.Ok = false
|
|
175
131
|
ctx.Result.Err = err
|
|
176
132
|
|
|
@@ -182,14 +138,6 @@ func (f *ValidateFeature) PreDone(ctx *core.Context) {
|
|
|
182
138
|
ctx.Result.Resdata = nil
|
|
183
139
|
}
|
|
184
140
|
|
|
185
|
-
// The payload an operation is about to send.
|
|
186
|
-
//
|
|
187
|
-
// TWO SLOTS, AND THE OP PICKS. A body op (create/update/patch) carries the
|
|
188
|
-
// caller's argument in Reqdata over the entity's Data; a match op
|
|
189
|
-
// (load/list/remove) carries it in Reqmatch over Match. That is what the
|
|
190
|
-
// entity operations pass to NewContext and what MakePoint reads - so reading
|
|
191
|
-
// Reqdata for every op would check a `Load({id})` against the entity's STALE
|
|
192
|
-
// stored match and reject it for the id the caller had just supplied.
|
|
193
141
|
func (f *ValidateFeature) payload(ctx *core.Context, opname string) map[string]any {
|
|
194
142
|
body := "create" == opname || "update" == opname || "patch" == opname
|
|
195
143
|
|
|
@@ -226,9 +174,6 @@ func (f *ValidateFeature) entitySpec(ctx *core.Context) map[string]any {
|
|
|
226
174
|
return espec
|
|
227
175
|
}
|
|
228
176
|
|
|
229
|
-
// One Validate call. Errors are COLLECTED, never returned as one: struct
|
|
230
|
-
// stops at the first failure unless given an errs collector, and a caller
|
|
231
|
-
// fixing a payload wants every problem with it, not the first one.
|
|
232
177
|
func (f *ValidateFeature) check(
|
|
233
178
|
ctx *core.Context, data any, spec any, direction string,
|
|
234
179
|
) []string {
|
|
@@ -294,12 +239,6 @@ func validateEntName(ctx *core.Context) string {
|
|
|
294
239
|
return ""
|
|
295
240
|
}
|
|
296
241
|
|
|
297
|
-
// A RESULT RECORD AS DATA.
|
|
298
|
-
//
|
|
299
|
-
// MakeResult turns every record of a LIST into an entity instance, so what
|
|
300
|
-
// reaches PreDone for a list is wrappers, not records - and a wrapper checked
|
|
301
|
-
// against a field spec fails on every required field while its actual data
|
|
302
|
-
// goes unchecked. A load returns the record itself, so this handles both.
|
|
303
242
|
func validateUnwrap(record any) any {
|
|
304
243
|
if ent, ok := record.(core.Entity); ok && ent != nil {
|
|
305
244
|
if data := ent.Data(); data != nil {
|
|
@@ -309,9 +248,6 @@ func validateUnwrap(record any) any {
|
|
|
309
248
|
return record
|
|
310
249
|
}
|
|
311
250
|
|
|
312
|
-
// The spec tree with every `$OPEN` marker removed, so an undeclared key is an
|
|
313
|
-
// error rather than a pass. Rebuilt rather than mutated: core.ENTITYSPEC is a
|
|
314
|
-
// package constant shared by every client in the process.
|
|
315
251
|
func validateClose(node any) any {
|
|
316
252
|
switch n := node.(type) {
|
|
317
253
|
case []any:
|
|
@@ -322,8 +258,6 @@ func validateClose(node any) any {
|
|
|
322
258
|
return out
|
|
323
259
|
|
|
324
260
|
case map[string]any:
|
|
325
|
-
// Sorted, so a rebuilt spec is byte-stable when it is printed in an
|
|
326
|
-
// error - go map order is randomised per run.
|
|
327
261
|
keys := make([]string, 0, len(n))
|
|
328
262
|
for k := range n {
|
|
329
263
|
if validateOpenKey != k {
|
|
@@ -78,15 +78,6 @@ func TestCustomUtility(t *testing.T) {
|
|
|
78
78
|
}
|
|
79
79
|
})
|
|
80
80
|
|
|
81
|
-
// The half the subtest above cannot see. Those keys are ALIASES - `auth`,
|
|
82
|
-
// `body`, `spec` - and no utility member has those names, so landing in
|
|
83
|
-
// Custom is the right outcome for them and the assertion passes whether or
|
|
84
|
-
// not overriding works at all.
|
|
85
|
-
//
|
|
86
|
-
// A key that DOES name a member must replace it. That is the documented
|
|
87
|
-
// contract, it is what ts does, and it was silently absent here: every
|
|
88
|
-
// entry went to Custom, which nothing reads, so `utility: {"fetcher": ...}`
|
|
89
|
-
// did nothing while ts honoured it.
|
|
90
81
|
t.Run("a real utility member is replaced, not shelved", func(t *testing.T) {
|
|
91
82
|
reached := 0
|
|
92
83
|
scripted := func(ctx *sdk.Context, fullurl string, fetchdef map[string]any) (any, error) {
|
|
@@ -99,20 +90,6 @@ func TestCustomUtility(t *testing.T) {
|
|
|
99
90
|
}, nil
|
|
100
91
|
}
|
|
101
92
|
|
|
102
|
-
// NewProjectNameSDK, not TestSDK. The `test` feature is
|
|
103
|
-
// transport: 'base' - it REPLACES the transport by design - so a client
|
|
104
|
-
// in test mode would shadow the scripted fetcher and this would assert
|
|
105
|
-
// nothing.
|
|
106
|
-
//
|
|
107
|
-
// `scripted` is passed AS DECLARED, with no conversion to
|
|
108
|
-
// sdk.FetcherFunc. That is how a caller writes it, and it is the case
|
|
109
|
-
// that was broken: a plain function literal in a map[string]any has the
|
|
110
|
-
// unnamed signature, so an override that only accepted the named type
|
|
111
|
-
// shelved it in Custom. Converting here would have hidden that.
|
|
112
|
-
// "test" is the OPTION, not the `test` FEATURE: it says "this client
|
|
113
|
-
// is not live", so a REQUIRED OpenAPI server variable resolves to a
|
|
114
|
-
// deterministic test-<name> instead of panicking at construction. It
|
|
115
|
-
// installs no transport, so the override under test still stands.
|
|
116
93
|
client := sdk.NewProjectNameSDK(map[string]any{
|
|
117
94
|
"test": map[string]any{"active": true},
|
|
118
95
|
"utility": map[string]any{"fetcher": scripted},
|
|
@@ -137,10 +114,6 @@ func TestCustomUtility(t *testing.T) {
|
|
|
137
114
|
}
|
|
138
115
|
})
|
|
139
116
|
|
|
140
|
-
// The other spelling of the same value. A caller who names the exported
|
|
141
|
-
// type gets a value whose dynamic type is core.FetcherFunc, which asserts
|
|
142
|
-
// to the named type and NOT to the unnamed signature - the mirror image of
|
|
143
|
-
// the subtest above, and broken by any fix that swaps one for the other.
|
|
144
117
|
t.Run("a converted fetcher is accepted too", func(t *testing.T) {
|
|
145
118
|
reached := 0
|
|
146
119
|
// "test" is the OPTION, not the `test` FEATURE: it says "this client
|
|
@@ -178,8 +151,6 @@ func TestCustomUtility(t *testing.T) {
|
|
|
178
151
|
}
|
|
179
152
|
})
|
|
180
153
|
|
|
181
|
-
// An unknown key must still be attached rather than dropped, so the two
|
|
182
|
-
// halves cannot be satisfied by a switch that also swallows extras.
|
|
183
154
|
t.Run("an unknown key is still attached", func(t *testing.T) {
|
|
184
155
|
// "test" is the OPTION, not the `test` FEATURE: it says "this client
|
|
185
156
|
// is not live", so a REQUIRED OpenAPI server variable resolves to a
|