@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
|
@@ -17,24 +17,6 @@ import {
|
|
|
17
17
|
} from './utility_csharp'
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
// THE GENERATED SCHEMA MODULE: the model's schemas, as data the SDK can run.
|
|
21
|
-
//
|
|
22
|
-
// The csharp peer of src/cmp/ts/Schema_ts.ts. Same two members, same source:
|
|
23
|
-
// Optspec from `main.kit.optspec` plus each feature's own `config.options`,
|
|
24
|
-
// Entityspec from the entity field sentinels — both built by the shared
|
|
25
|
-
// helpers, so what csharp validates against and what ts validates against
|
|
26
|
-
// cannot drift.
|
|
27
|
-
//
|
|
28
|
-
// A COLLECTION LITERAL, not embedded JSON, where go and the JVM targets
|
|
29
|
-
// parse a string. SdkConfig switches to a JSON constant above a size
|
|
30
|
-
// threshold because a large composite literal is slow for the compiler to
|
|
31
|
-
// bind and the JIT to run; the spec has no such spread. It is bounded by the
|
|
32
|
-
// option list and the feature set — a few hundred entries whatever the API
|
|
33
|
-
// looks like — and in C# the literal is also the SAFER rep: a `false` here
|
|
34
|
-
// stays `false` rather than arriving as a JsonElement to be mapped back, and
|
|
35
|
-
// the number ladder SdkConfig's ConfigValue exists to reproduce is a question
|
|
36
|
-
// the spec never asks (it holds only strings and booleans, pinned by "strings
|
|
37
|
-
// and booleans only" in ts/test/optspec.test.ts).
|
|
38
20
|
const Schema = cmp(async function Schema(props: any) {
|
|
39
21
|
const ctx$ = props.ctx$
|
|
40
22
|
const target = props.target
|
|
@@ -179,10 +179,6 @@ ${allSteps.length > 0 ? ' var client = setup.Client;\n\n' : ''}`)
|
|
|
179
179
|
|
|
180
180
|
`)
|
|
181
181
|
|
|
182
|
-
// Stream test (PR #4): the entity `stream` method runs the op pipeline and
|
|
183
|
-
// returns an async iterator. With the streaming feature active it yields
|
|
184
|
-
// from the feature's incremental iterator; otherwise it falls back to the
|
|
185
|
-
// materialised items. Only emitted for entities whose flow lists.
|
|
186
182
|
const flowHasList = allSteps.some((s: any) => s.op === 'list')
|
|
187
183
|
if (flowHasList) {
|
|
188
184
|
Content(` [Fact]
|
|
@@ -19,10 +19,6 @@ function projectPath(suffix?: string): string {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
// A camelCase C# local-variable identifier for a snake_case model name
|
|
23
|
-
// (`status_embed_config` -> `statusEmbedConfig`). C# contextual keywords
|
|
24
|
-
// that are illegal as locals get the shared reserved-word guard (js set is
|
|
25
|
-
// the closest match for C#'s expression keywords like `new`/`this`).
|
|
26
22
|
function csVarName(name: string): string {
|
|
27
23
|
const pascal = camelify(name)
|
|
28
24
|
const lower = pascal.charAt(0).toLowerCase() + pascal.slice(1)
|
|
@@ -30,13 +26,11 @@ function csVarName(name: string): string {
|
|
|
30
26
|
}
|
|
31
27
|
|
|
32
28
|
|
|
33
|
-
// A PascalCase C# identifier for a snake_case model name.
|
|
34
29
|
function csPascalName(name: string): string {
|
|
35
30
|
return camelify(name)
|
|
36
31
|
}
|
|
37
32
|
|
|
38
33
|
|
|
39
|
-
// C# keywords - illegal as a plain local-variable binding.
|
|
40
34
|
const CS_RESERVED = new Set<string>([
|
|
41
35
|
'abstract', 'as', 'base', 'bool', 'break', 'byte', 'case', 'catch',
|
|
42
36
|
'char', 'checked', 'class', 'const', 'continue', 'decimal', 'default',
|
|
@@ -86,20 +80,6 @@ function formatCsMap(obj: any, indent: number = 0): string {
|
|
|
86
80
|
}
|
|
87
81
|
|
|
88
82
|
|
|
89
|
-
// C# NEW-LINE CHARACTERS, which a regular quoted string literal may not
|
|
90
|
-
// contain: U+000D, U+000A, U+0085 (NEL), U+2028 (LINE SEPARATOR) and U+2029
|
|
91
|
-
// (PARAGRAPH SEPARATOR) - C# language spec, "Line terminators".
|
|
92
|
-
//
|
|
93
|
-
// The first two everyone escapes. The other three are the trap: they are
|
|
94
|
-
// ordinary characters in JSON, in every other target language, and to the eye,
|
|
95
|
-
// so a model string carrying one (an OpenAPI description, default or example
|
|
96
|
-
// pasted from a word processor) emits a C# source file that fails to compile
|
|
97
|
-
// with `error CS1010: Newline in constant`. Verified against .NET 8.
|
|
98
|
-
//
|
|
99
|
-
// Written as ESCAPES, not as the characters themselves: U+2028 and U+2029
|
|
100
|
-
// are line terminators in JavaScript too, so a regex literal containing them
|
|
101
|
-
// verbatim does not parse ("Invalid regular expression: missing /") and this
|
|
102
|
-
// module fails to load. The same trap, one language up.
|
|
103
83
|
const CS_NEWLINE = /[\u0085\u2028\u2029]/g
|
|
104
84
|
|
|
105
85
|
function csEscapeNewlines(s: string): string {
|
|
@@ -128,36 +108,6 @@ function csStringLiteral(s: string): string {
|
|
|
128
108
|
}
|
|
129
109
|
|
|
130
110
|
|
|
131
|
-
// A number as a C# literal whose BOXED TYPE is predictable.
|
|
132
|
-
//
|
|
133
|
-
// C# gives an unsuffixed integer literal the first type of int/uint/long/ulong
|
|
134
|
-
// that fits it, so `3000000000` boxes as uint while `5` boxes as int and
|
|
135
|
-
// `5000000000` as long. Boxed numerics compare by exact type - (object)5L does
|
|
136
|
-
// not Equals (object)5 - so the type a config number lands with is observable
|
|
137
|
-
// to every consumer, and the L1 data branch has to be able to reproduce it.
|
|
138
|
-
// Reproducing a uint band nothing else in the SDK ever produces is not worth
|
|
139
|
-
// it, so the suffix is made explicit instead and the ladder is just int -> long
|
|
140
|
-
// -> double, which SdkConfig.ConfigValue mirrors exactly.
|
|
141
|
-
//
|
|
142
|
-
// THE RANGE TEST IS ON THE EMITTED TEXT, not on the JS number.
|
|
143
|
-
//
|
|
144
|
-
// `String(val)` is exactly what JSON.stringify puts in the data branch, and it
|
|
145
|
-
// prints a double as the SHORTEST decimal that round-trips - which for a value
|
|
146
|
-
// near the 64-bit boundary is not the value's exact decimal expansion. The
|
|
147
|
-
// clearest case is long.MinValue: `String(-9223372036854775808)` is
|
|
148
|
-
// "-9223372036854776000", which is BELOW long.MinValue, so TryGetInt64 refuses
|
|
149
|
-
// it and the data branch yields a double. Deciding from the JS value instead
|
|
150
|
-
// emitted `long.MinValue` and the two branches disagreed at exactly that
|
|
151
|
-
// boundary. Comparing the text as a BigInt makes both sides ask the same
|
|
152
|
-
// question of the same digits.
|
|
153
|
-
//
|
|
154
|
-
// int.MinValue is written by name: `-2147483648` parses as unary minus applied
|
|
155
|
-
// to a literal that does not itself fit in an int, and relying on the special
|
|
156
|
-
// case for that is needless subtlety. There is deliberately no long.MinValue
|
|
157
|
-
// twin - no JS number prints as that text, so it is unreachable.
|
|
158
|
-
//
|
|
159
|
-
// A non-finite value emits `null`, because that is what JSON.stringify does
|
|
160
|
-
// with it - so the two representations still agree.
|
|
161
111
|
const CS_INT_MIN = -2147483648n
|
|
162
112
|
const CS_INT_MAX = 2147483647n
|
|
163
113
|
const CS_LONG_MIN = -9223372036854775808n
|
|
@@ -209,28 +159,6 @@ function formatCsValue(val: any, indent: number = 0): string {
|
|
|
209
159
|
}
|
|
210
160
|
|
|
211
161
|
|
|
212
|
-
// Emission-time normalisation of a model subtree (L0).
|
|
213
|
-
//
|
|
214
|
-
// Always drops jostraca's iteration metadata (`$`-suffixed keys: index$,
|
|
215
|
-
// key$, val$). With `dropDefaults`, also drops keys whose value IS the
|
|
216
|
-
// default the runtime already assumes when the key is absent, which is pure
|
|
217
|
-
// payload — see CONFIG_DEFAULT.
|
|
218
|
-
//
|
|
219
|
-
// Rebuilds the tree rather than mutating during a walk. The previous
|
|
220
|
-
// implementation walked a clone calling `delete p[k]`, but walk() assigns its
|
|
221
|
-
// callback's result back over the child (`setprop(out, ckey, walk(...))`), so
|
|
222
|
-
// the delete was undone on the way out and the helper silently did nothing.
|
|
223
|
-
// Returning `undefined` from the callback does not fix it either: setprop
|
|
224
|
-
// stores undefined rather than removing the key, which then emits as a null.
|
|
225
|
-
//
|
|
226
|
-
// `dropDefaults` is opt-in and must be passed ONLY for the entity subtree.
|
|
227
|
-
// `active` means something different in feature config, where absent reads as
|
|
228
|
-
// INACTIVE (see feature_init) — dropping `active: true` there would silently
|
|
229
|
-
// disable the feature.
|
|
230
|
-
// jostraca's iteration metadata, injected by each()/names() while it walks the
|
|
231
|
-
// model. Listed explicitly rather than matched by trailing-dollar suffix: a
|
|
232
|
-
// trailing dollar is not exclusive to jostraca -- Seneca uses entity$ as real
|
|
233
|
-
// data -- so a blanket suffix match can silently drop a legitimate API field.
|
|
234
162
|
const MODEL_META = ['index$', 'key$', 'val$']
|
|
235
163
|
|
|
236
164
|
// Keys whose value IS the default the runtime already assumes when the key is
|
|
@@ -37,21 +37,12 @@ const Config = cmp(async function Config(props: any) {
|
|
|
37
37
|
const Name = model.const.Name
|
|
38
38
|
|
|
39
39
|
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
40
|
-
// Gated by the applicability tags, so this target never imports or
|
|
41
|
-
// registers a feature it has no source for. One rule, one place:
|
|
42
|
-
// helpers/applicability.
|
|
43
40
|
const feature = targetFeatures(model, target)
|
|
44
41
|
|
|
45
42
|
const headers = getModelPath(model, `main.${KIT}.config.headers`) || {}
|
|
46
43
|
|
|
47
44
|
const authActive = isAuthActive(model)
|
|
48
45
|
const authPrefix = resolveAuthPrefix(model)
|
|
49
|
-
// `in` and `name` travel with the prefix now. apidef resolved both from
|
|
50
|
-
// the spec's securityScheme all along (joplin's says `in: "query",
|
|
51
|
-
// name: "token"`) and generation dropped them, so an apiKey-in-query API
|
|
52
|
-
// got an Authorization header it does not read. Emitted below ONLY when
|
|
53
|
-
// they differ from the header/Authorization defaults, so a header SDK's
|
|
54
|
-
// config.ex is byte-identical to what it generated before.
|
|
55
46
|
const authIn = resolveAuthIn(model)
|
|
56
47
|
const authName = resolveAuthName(model)
|
|
57
48
|
|
|
@@ -62,34 +53,8 @@ const Config = cmp(async function Config(props: any) {
|
|
|
62
53
|
? ` "auth" => %{"prefix" => ${elixirString(authPrefix)}},\n`
|
|
63
54
|
: ''
|
|
64
55
|
|
|
65
|
-
// THE PLUGIN DEFINITIONS PER FEATURE (the elixir peer of Config_go's
|
|
66
|
-
// FeaturePlugins and Config_ts's pluginDefs).
|
|
67
|
-
//
|
|
68
|
-
// Upstream sekreto replaced its self-registration registry with
|
|
69
|
-
// voxgig/plugin definitions: a provider kind the caller did not pass in
|
|
70
|
-
// via `plugins: [...]` is unknown to that Sekreto, so the model's choice
|
|
71
|
-
// of plugin groups IS the SDK's provider vocabulary. Each active plugin's
|
|
72
|
-
// `def` key is a fully-qualified elixir CALL (`Sekreto.Plugins.Hashicorp
|
|
73
|
-
// .hashicorp`), emitted here as `...()` and handed to the feature.
|
|
74
|
-
//
|
|
75
|
-
// The smallest of the four emitters: Elixir resolves modules globally, by
|
|
76
|
-
// their `defmodule`, so there is no import block to keep in step with the
|
|
77
|
-
// trim - naming the call is the whole of it.
|
|
78
|
-
//
|
|
79
|
-
// Filter on `active` HERE rather than trusting the feature object to
|
|
80
|
-
// arrive filtered (the trap Config_ts and Config_go both carry a warning
|
|
81
|
-
// about): emitting a call into a module the plugin trim just deleted is
|
|
82
|
-
// an `UndefinedFunctionError` at the first client construction.
|
|
83
56
|
const featurePlugins: Record<string, string[]> = {}
|
|
84
57
|
|
|
85
|
-
// DECLARED at all, active or not - the emit gate. An SDK that selects no
|
|
86
|
-
// plugin-bearing feature gets no function, so config.ex is byte-identical
|
|
87
|
-
// to what it was before this feature existed: inactive costs nothing.
|
|
88
|
-
// (`only_active: false` for the same reason pluginExcludes needs it - the
|
|
89
|
-
// feature object a component is handed has ALREADY been filtered, so its
|
|
90
|
-
// `plugin` map holds only the ACTIVE groups and a project with the feature
|
|
91
|
-
// on but every group off would read as "no plugins declared" and lose the
|
|
92
|
-
// function the feature calls.)
|
|
93
58
|
let declared = false
|
|
94
59
|
|
|
95
60
|
each(feature, (f: any) => {
|
|
@@ -129,63 +94,20 @@ const Config = cmp(async function Config(props: any) {
|
|
|
129
94
|
`
|
|
130
95
|
|
|
131
96
|
Folder({ name: 'lib' }, () => {
|
|
132
|
-
// The same config as an OBJECT, built by the shared helper so this
|
|
133
|
-
// target's literal and the data that replaces it above the threshold are
|
|
134
|
-
// the same config by construction. The JSON is what the threshold is
|
|
135
|
-
// measured on - emitted source size varies by language, the model does not.
|
|
136
|
-
// Passing target.name opts in to the main slug/version/target identity
|
|
137
|
-
// fields (station descriptor input, mirrors Config_ts) - both reps below
|
|
138
|
-
// render from this same def, so the data and literal branches pick the
|
|
139
|
-
// fields up together.
|
|
140
97
|
const { def: configDef } = configDefinition(model, target.name)
|
|
141
98
|
|
|
142
|
-
// THE PLACEMENT, ONTO THE CANONICAL DEFINITION RATHER THAN INTO ONE
|
|
143
|
-
// BRANCH. Both reps below render from `configDef` - the literal through
|
|
144
|
-
// formatElixir, the data through JSON - so overlaying the fact here is
|
|
145
|
-
// what keeps them the same config either side of the threshold. (Targets
|
|
146
|
-
// whose literal is a hand-assembled fragment had to emit the block twice
|
|
147
|
-
// and only did it once; elixir renders `options` whole, so it cannot
|
|
148
|
-
// drift.)
|
|
149
|
-
//
|
|
150
|
-
// The optspec in utility.ex's make_options declares `in` and `name` for
|
|
151
|
-
// exactly this reason: this port's validate REJECTS a key the spec does
|
|
152
|
-
// not list, so a config carrying a placement the optspec has never heard
|
|
153
|
-
// of does not degrade quietly - the client cannot be constructed at all
|
|
154
|
-
// (`** (Voxgig.Struct.Error) Unexpected keys at field auth: in, name`,
|
|
155
|
-
// measured by removing the optspec entry from a generated query SDK).
|
|
156
99
|
if (authActive && null != configDef.options && null != configDef.options.auth) {
|
|
157
100
|
if ('header' !== authIn) configDef.options.auth.in = authIn
|
|
158
101
|
if ('Authorization' !== authName) configDef.options.auth.name = authName
|
|
159
102
|
}
|
|
160
103
|
|
|
161
|
-
// Re-stringified AFTER the overlay, so the size the threshold is measured
|
|
162
|
-
// on is the size of the config actually emitted. For a header SDK the
|
|
163
|
-
// overlay adds nothing and this is byte-identical to configDefinition's
|
|
164
|
-
// own json.
|
|
165
104
|
const configJson = JSON.stringify(configDef)
|
|
166
105
|
const asData = isConfigData(configJson, configReprSetting(model))
|
|
167
106
|
|
|
168
|
-
// configDefinition's `def.entity` verbatim, NOT rebuilt here. The reduce
|
|
169
|
-
// this replaces was one of fourteen copies of that function's entityDefs
|
|
170
|
-
// loop, and when configDefinition started reconstructing a point's
|
|
171
|
-
// `parts` from apidef's segment vector (its ADR-003), only the copies
|
|
172
|
-
// that read `configDef` got it — this target's literal config emitted
|
|
173
|
-
// paths with no parts at all while its data config had them. One rule,
|
|
174
|
-
// one place.
|
|
175
107
|
const entityClean = configDef.entity
|
|
176
108
|
|
|
177
109
|
File({ name: 'config.ex' }, () => {
|
|
178
110
|
|
|
179
|
-
// ABOVE THE THRESHOLD: emit the model as DATA.
|
|
180
|
-
//
|
|
181
|
-
// The literal is one nested `%{}` the Elixir compiler expands and holds
|
|
182
|
-
// in the module's constant pool; a binary is one token. `Json.parse`
|
|
183
|
-
// builds the vendored struct's heap nodes DIRECTLY - the same nodes
|
|
184
|
-
// `Helpers.deep/1` produces from a plain map - so make_config returns
|
|
185
|
-
// exactly what it returned before.
|
|
186
|
-
//
|
|
187
|
-
// `ProjectName.Json` is already the SDK's response decoder (see
|
|
188
|
-
// `safe_json` in utility.ex), so this adds no dependency.
|
|
189
111
|
if (asData) {
|
|
190
112
|
Content(`# ${Name} SDK configuration
|
|
191
113
|
#
|
|
@@ -1,28 +1,5 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
// Typed-model generator (Elixir target). Port of EntityTypes_ts.ts / _rb.ts.
|
|
4
|
-
//
|
|
5
|
-
// Reads main.<KIT>.entity.<e>.fields[] and per-op params
|
|
6
|
-
// (op.<name>.points[].args.params[]) and emits one module, lib/<app>_types.ex,
|
|
7
|
-
// holding an `@type` alias per active entity plus a request/match type per
|
|
8
|
-
// active op, each with a `@typedoc` documenting its concrete members.
|
|
9
|
-
//
|
|
10
|
-
// TYPE CHOICE: the SDK carries data as string-keyed struct value nodes, and
|
|
11
|
-
// Elixir map typespecs cannot pin individual string keys (only
|
|
12
|
-
// `optional(String.t()) => v`), so every alias resolves to an open string-keyed
|
|
13
|
-
// map `%{optional(String.t()) => any()}`. The precise per-member shape is
|
|
14
|
-
// documented in the accompanying @typedoc (the honest Elixir analogue of the
|
|
15
|
-
// TS interface / rb Struct). Field/param sentinels ($STRING, $INTEGER, ...) are
|
|
16
|
-
// turned into real Elixir typespec fragments (String.t(), integer(), ...) by
|
|
17
|
-
// the shared sdkgen canonToType 'elixir' column (via the `elixirType`
|
|
18
|
-
// delegate in utility_elixir).
|
|
19
|
-
//
|
|
20
|
-
// Op type-name scheme mirrors every other language — derived from the SHARED
|
|
21
|
-
// OP_SUFFIX policy, snake_cased for Elixir:
|
|
22
|
-
// <ename>, <ename>_load_match, <ename>_list_match, <ename>_create_data,
|
|
23
|
-
// <ename>_update_data, <ename>_remove_match.
|
|
24
|
-
// The generated entity modules reference these aliases from @spec annotations
|
|
25
|
-
// on their op functions (see fragment/Entity*Op.fragment.ex).
|
|
26
3
|
|
|
27
4
|
import {
|
|
28
5
|
cmp, each, names,
|
|
@@ -39,16 +16,11 @@ import {
|
|
|
39
16
|
import { elixirType } from './utility_elixir'
|
|
40
17
|
|
|
41
18
|
|
|
42
|
-
// Snake_case op type name, derived from the SHARED OP_SUFFIX policy (the
|
|
43
|
-
// PascalCase scheme <Name><Op><Match|Data> rendered Elixir-style):
|
|
44
|
-
// <ename>_load_match, <ename>_create_data, ...
|
|
45
19
|
function elixirOpTypeName(ename: string, opname: string): string {
|
|
46
20
|
return ename + '_' + opname + '_' + (OP_SUFFIX[opname] || 'Match').toLowerCase()
|
|
47
21
|
}
|
|
48
22
|
|
|
49
23
|
|
|
50
|
-
// Emit one `@typedoc` + `@type` alias. The alias is always an open
|
|
51
|
-
// string-keyed map; the members are documented in the doc block.
|
|
52
24
|
function emitType(
|
|
53
25
|
typeName: string,
|
|
54
26
|
doc: string,
|
|
@@ -79,10 +51,6 @@ const EntityTypes = cmp(function EntityTypes(props: any) {
|
|
|
79
51
|
const Name = model.const.Name
|
|
80
52
|
const app = model.const.name.toLowerCase()
|
|
81
53
|
|
|
82
|
-
// only_active:false — getModelPath DROPS active:false entries by default,
|
|
83
|
-
// but the consumer scaffold (create-sdkgen Root.ts) iterates the RAW entity
|
|
84
|
-
// collection, so inactive entities still get generated entity code that
|
|
85
|
-
// references these typed names. The typed model must cover them too.
|
|
86
54
|
const entity = getModelPath(model, `main.${KIT}.entity`, { only_active: false, required: false })
|
|
87
55
|
// Emit for EVERY entity that gets an entity module: the consumer scaffold
|
|
88
56
|
// (create-sdkgen Root.ts) iterates entities WITHOUT an active filter, and
|
|
@@ -93,9 +61,6 @@ const EntityTypes = cmp(function EntityTypes(props: any) {
|
|
|
93
61
|
// Derive the PascalCase Name up-front — it is set LAZILY by names(), so an
|
|
94
62
|
// entity not yet named would otherwise read `Name = undefined` below.
|
|
95
63
|
|
|
96
|
-
// Surface duplicate generated type names (two entities with the same
|
|
97
|
-
// PascalCase Name) — they would redeclare a type in statically-typed
|
|
98
|
-
// targets. Detection only; renaming is a model-level decision.
|
|
99
64
|
warnEntityTypeCollisions(entity, log, LANG)
|
|
100
65
|
|
|
101
66
|
Folder({ name: 'lib' }, () => {
|
|
@@ -126,15 +91,12 @@ defmodule ${Name}.Types do
|
|
|
126
91
|
const fields = (ent.fields ? each(ent.fields) : [])
|
|
127
92
|
.filter((f: any) => f.active !== false)
|
|
128
93
|
|
|
129
|
-
// Entity data model: one member per field (`req:false` -> optional).
|
|
130
94
|
emitType(
|
|
131
95
|
ename,
|
|
132
96
|
`${EName} entity data model.`,
|
|
133
97
|
fields.map((f: any) => ({ name: f.name, type: f.type, optional: false === f.req })),
|
|
134
98
|
)
|
|
135
99
|
|
|
136
|
-
// Per active op: a request/match type. Members and their optionality
|
|
137
|
-
// come from the shared partiality policy (opRequestShape).
|
|
138
100
|
const ops = ent.op || {}
|
|
139
101
|
;['load', 'list', 'create', 'update', 'remove'].forEach((opname: string) => {
|
|
140
102
|
if (null == ops[opname]) {
|
|
@@ -24,9 +24,6 @@ import { MainEntity } from './MainEntity_elixir'
|
|
|
24
24
|
import { EntityTypes } from './EntityTypes_elixir'
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
// #`-comment hook marker key (gotcha #1: jostraca's built-in #Name-Tag
|
|
28
|
-
// replacement only matches `//` comments, so an Elixir `# #<Name>-Hook`
|
|
29
|
-
// line never matches and the pipeline hook would be silently dropped).
|
|
30
27
|
const HOOK_KEY =
|
|
31
28
|
'/(?<indent>[ \\t]*)#[ \\t]*#(?<name>[A-Za-z0-9]+)-Hook[ \\t]*\\n?/'
|
|
32
29
|
|
|
@@ -55,16 +52,6 @@ const Main = cmp(async function Main(props: any) {
|
|
|
55
52
|
// Generate the documented typespec module (lib/<app>_types.ex).
|
|
56
53
|
EntityTypes({ target })
|
|
57
54
|
|
|
58
|
-
// Copy tm/elixir (with ProjectName/projectname substitution).
|
|
59
|
-
//
|
|
60
|
-
// THE RUNTIME DIRECTORY HAS TO CARRY THE APP NAME. Copy substitutes file
|
|
61
|
-
// CONTENTS, never path components, so a blanket copy shipped the runtime as
|
|
62
|
-
// lib/projectname/ in every generated SDK. Nothing broke — Elixir resolves
|
|
63
|
-
// modules by their `defmodule`, not by path, and those were substituted
|
|
64
|
-
// correctly — so it compiled, tested green, and published looking wrong.
|
|
65
|
-
//
|
|
66
|
-
// Copy's `to` prop names the destination, so lib/projectname is copied
|
|
67
|
-
// explicitly under the app's own name and excluded from the blanket copy.
|
|
68
55
|
Copy({
|
|
69
56
|
from: 'tm/' + target.name,
|
|
70
57
|
exclude: [/src\//, /lib\/projectname\//],
|
|
@@ -77,20 +64,6 @@ const Main = cmp(async function Main(props: any) {
|
|
|
77
64
|
Copy({
|
|
78
65
|
from: 'tm/' + target.name + '/lib/projectname',
|
|
79
66
|
to: model.const.name,
|
|
80
|
-
// pluginExcludes: the generate-time plugin trim (an INACTIVE plugin
|
|
81
|
-
// group's vendored files, declared per-target in the feature model).
|
|
82
|
-
// Rooted HERE, on lib/projectname, because that is this Copy's root
|
|
83
|
-
// and jostraca matches a candidate against the path relative to it -
|
|
84
|
-
// which is why the model's elixir plugin paths read
|
|
85
|
-
// `feature/secrets/sekreto/plugins/<kind>.ex` and not the full
|
|
86
|
-
// `lib/projectname/...`.
|
|
87
|
-
//
|
|
88
|
-
// AND THE TRIM IS INVISIBLE TO THE COMPILER HERE, unlike everywhere
|
|
89
|
-
// else. mix compiles everything under lib/ and Elixir needs no
|
|
90
|
-
// import, so a plugin file this exclude failed to remove compiles
|
|
91
|
-
// silently and SHIPS - where go fails on an unused import, py on a
|
|
92
|
-
// missing module and ts on an unresolved one. Only the parity and
|
|
93
|
-
// vendored guards can catch a broken trim in this target.
|
|
94
67
|
exclude: [...pluginExcludes(model)],
|
|
95
68
|
replace: {
|
|
96
69
|
...stdrep,
|
|
@@ -118,7 +91,6 @@ const Main = cmp(async function Main(props: any) {
|
|
|
118
91
|
)
|
|
119
92
|
})
|
|
120
93
|
|
|
121
|
-
// Operation pipeline (hook markers replaced here — gotcha #1).
|
|
122
94
|
File({ name: 'pipeline.' + target.ext }, () => {
|
|
123
95
|
Fragment({
|
|
124
96
|
from: ff + 'Pipeline.fragment.ex',
|
|
@@ -158,18 +130,6 @@ end
|
|
|
158
130
|
`)
|
|
159
131
|
})
|
|
160
132
|
|
|
161
|
-
// WHERE THE CREDENTIAL GOES IS GENERATED, NOT COPIED. prepare_auth was
|
|
162
|
-
// the one pipeline utility whose answer is a fact about the API rather
|
|
163
|
-
// than about the language, and tm/ can only hold one answer - so it is
|
|
164
|
-
// extracted out of the copied utility.ex into its own module here. See
|
|
165
|
-
// PrepareAuth_elixir for the extraction and for why the registration in
|
|
166
|
-
// utility.ex still binds it.
|
|
167
|
-
//
|
|
168
|
-
// CALLED FROM INSIDE THIS `lib` FOLDER, and the component opens only
|
|
169
|
-
// `<name>`, so the file lands at lib/<name>/prepare_auth.ex - beside the
|
|
170
|
-
// utility.ex the Copy above puts at lib/<name>/utility.ex. Opening `lib`
|
|
171
|
-
// in the component too would write lib/lib/<name>/, which mix would
|
|
172
|
-
// compile anyway (it globs the whole tree) and no test could see.
|
|
173
133
|
PrepareAuth({ target })
|
|
174
134
|
})
|
|
175
135
|
|
|
@@ -15,12 +15,6 @@ import type {
|
|
|
15
15
|
} from '@voxgig/apidef'
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
// Generate mix.exs for the Elixir SDK. The vendored struct library has zero
|
|
19
|
-
// third-party runtime deps, so a bare SDK ships with none - but dependencies
|
|
20
|
-
// declared by the model DO flow: the target's own `deps` block plus any
|
|
21
|
-
// feature-declared elixir deps (e.g. the station feature's voxgig_station),
|
|
22
|
-
// via the shared collectDeps helper, exactly like rust/dart/go. A model with
|
|
23
|
-
// no deps emits the byte-identical `defp deps, do: []` it always has.
|
|
24
18
|
const Package = cmp(async function Package(props: any) {
|
|
25
19
|
const ctx$ = props.ctx$
|
|
26
20
|
const target = props.target
|
|
@@ -32,13 +26,6 @@ const Package = cmp(async function Package(props: any) {
|
|
|
32
26
|
const app = String(model.const.name).replace(/-/g, '_')
|
|
33
27
|
const { repoUrl } = repoInfo(model)
|
|
34
28
|
|
|
35
|
-
// Render one mix deps entry per collected dependency. Hex package names
|
|
36
|
-
// share the atom alphabet, but a hyphen in a model dep name is mapped to
|
|
37
|
-
// '_' rather than emitted broken. Version -> Mix requirement: an explicit
|
|
38
|
-
// operator is kept (spaced, the mix convention: '>=0.0.1' -> '>= 0.0.1');
|
|
39
|
-
// a bare version gets hex's customary '~>'; a target dep with no version
|
|
40
|
-
// accepts anything. kind: 'dev' scopes to [:dev, :test]; 'peer'/'prod'
|
|
41
|
-
// (and anything else) are runtime deps - mix has no peer notion.
|
|
42
29
|
const entries: string[] = []
|
|
43
30
|
for (const d of collectDeps(model, target.name, target.deps, ctx$.log)) {
|
|
44
31
|
const atom = String(d.name).replace(/-/g, '_')
|
|
@@ -22,78 +22,10 @@ import {
|
|
|
22
22
|
} from './utility_elixir'
|
|
23
23
|
|
|
24
24
|
|
|
25
|
-
// WHERE THE CREDENTIAL GOES IS A FACT ABOUT THE API, so it is generated
|
|
26
|
-
// rather than templated. The elixir port of cmp/ts/PrepareAuth_ts.ts; see
|
|
27
|
-
// that file for the full account, and cmp/rb/PrepareAuth_rb.ts for the
|
|
28
|
-
// cookie-splice and basic-auth shapes this one follows.
|
|
29
|
-
//
|
|
30
|
-
// apidef has always resolved the scheme's `in` and `name` into
|
|
31
|
-
// `main.kit.info.security` — joplin's says `in: "query", name: "token"` —
|
|
32
|
-
// and generation dropped both. The result was an SDK that sent a header the
|
|
33
|
-
// API does not read and never sent the query parameter it does, so it could
|
|
34
|
-
// not authenticate at all. Four repos in the cedar fleet shipped that way:
|
|
35
|
-
// joplin (`token`), pipedrive (`api_token`), trello (`key`),
|
|
36
|
-
// lm-umbrella (`apiKey`).
|
|
37
|
-
//
|
|
38
|
-
// A template cannot fix this, because the three placements need three
|
|
39
|
-
// different bodies and a template has to pick one. A component emits the
|
|
40
|
-
// branch this API actually uses and nothing else — no dead query code in a
|
|
41
|
-
// bearer-token SDK, and no runtime `if` on a value that is fixed at
|
|
42
|
-
// generation time.
|
|
43
|
-
//
|
|
44
|
-
// ELIXIR IS THE ODD ONE OUT: it had NO prepare_auth template. The logic was
|
|
45
|
-
// embedded in `tm/elixir/lib/projectname/utility.ex` as `prepare_auth_impl/1`,
|
|
46
|
-
// one clause among thirty in the 1670-line runtime module. So this is an
|
|
47
|
-
// EXTRACTION as well as a port, and the extraction is into the function's
|
|
48
|
-
// OWN compilation unit — the PREFERRED shape — because Elixir has no reason
|
|
49
|
-
// to need the fallback:
|
|
50
|
-
//
|
|
51
|
-
// * mix compiles every `.ex` under `lib/`, with no manifest, include list
|
|
52
|
-
// or import to keep in step. A new file in lib/<app>/ is compiled by
|
|
53
|
-
// virtue of existing.
|
|
54
|
-
// * Elixir resolves modules by their `defmodule`, never by path, so a
|
|
55
|
-
// module in its own file is indistinguishable at every call site from
|
|
56
|
-
// the same code inlined elsewhere.
|
|
57
|
-
// * THE BINDING IS A VALUE, NOT A LEXICAL REFERENCE. utility.ex builds the
|
|
58
|
-
// utility node by setprop-ing a function into each slot
|
|
59
|
-
// (`{"prepare_auth", &prepare_auth_impl/1}`), and every caller reaches it
|
|
60
|
-
// through `u(ctx, "prepare_auth").(ctx)`. A remote capture
|
|
61
|
-
// `&PrepareAuth.prepare_auth_impl/1` is the same kind of value, so the
|
|
62
|
-
// registrar, the feature-override contract (a feature setprops over the
|
|
63
|
-
// slot on the reference-stable node) and the `Utility.prepare_auth/1`
|
|
64
|
-
// dispatch wrapper are all untouched. `Utility.prepare_auth(ctx)` —
|
|
65
|
-
// which is what Main.fragment.ex, make_spec_impl, pipeline_test.exs and
|
|
66
|
-
// primary_utility_test.exs all call — still resolves, still dispatches
|
|
67
|
-
// through the node, and still honours an override.
|
|
68
25
|
const PrepareAuth = cmp(async function PrepareAuth(props: any) {
|
|
69
26
|
const { target } = props
|
|
70
27
|
const { model } = props.ctx$
|
|
71
28
|
|
|
72
|
-
// FOLDER NESTING, worked out from the template's own path rather than
|
|
73
|
-
// guessed. utility.ex lives at `tm/elixir/lib/projectname/utility.ex`, and
|
|
74
|
-
// Main_elixir copies that directory with
|
|
75
|
-
//
|
|
76
|
-
// Folder({name:'lib'}, () => Copy({from:'tm/elixir/lib/projectname',
|
|
77
|
-
// to: model.const.name}))
|
|
78
|
-
//
|
|
79
|
-
// so the runtime lands at `lib/<name>/`. This component is CALLED from
|
|
80
|
-
// inside Main's second `Folder({ name: 'lib' })` block — the one that
|
|
81
|
-
// writes the generated (as opposed to copied) lib files — so `lib` is
|
|
82
|
-
// ALREADY OPEN at the call site and only `<name>` is opened here. The
|
|
83
|
-
// result is `lib/<name>/prepare_auth.ex`, beside the utility.ex that
|
|
84
|
-
// registers it.
|
|
85
|
-
//
|
|
86
|
-
// Opening `lib` again here would write `lib/lib/<name>/prepare_auth.ex`.
|
|
87
|
-
// That is the ts port's `src/src/utility/` trap, and it is WORSE in elixir
|
|
88
|
-
// than anywhere else: mix compiles everything under lib/ regardless of
|
|
89
|
-
// depth, so the module would still compile, still be found by name, and
|
|
90
|
-
// the mistake would be invisible to every test — only the published tree
|
|
91
|
-
// would look wrong. (Main_elixir carries the same warning about
|
|
92
|
-
// lib/projectname/ for the same reason.)
|
|
93
|
-
//
|
|
94
|
-
// Main's two `Folder({ name: 'lib' })` blocks are SIBLINGS, not nested:
|
|
95
|
-
// jostraca folders are scoped to their callback, so both resolve to
|
|
96
|
-
// `lib/` and this component sees exactly one of them open.
|
|
97
29
|
Folder({ name: model.const.name }, () => {
|
|
98
30
|
File({ name: 'prepare_auth.' + target.ext }, () => {
|
|
99
31
|
Content(render({
|
|
@@ -139,8 +71,6 @@ defmodule ${spec.Name}.PrepareAuth do
|
|
|
139
71
|
|
|
140
72
|
`
|
|
141
73
|
|
|
142
|
-
// NO AUTH AT ALL — the project switched it off. See authSwitchedOn for why
|
|
143
|
-
// ONLY an explicit switch counts.
|
|
144
74
|
if (!spec.active) {
|
|
145
75
|
return head + ` # This SDK is configured with authentication off, so there is no
|
|
146
76
|
# credential to place. The function stays in the pipeline because
|
|
@@ -162,27 +92,8 @@ end
|
|
|
162
92
|
const query = 'query' === spec.where
|
|
163
93
|
const cookie = 'cookie' === spec.where
|
|
164
94
|
|
|
165
|
-
// HTTP Basic is header-only by definition: the scheme is
|
|
166
|
-
// `Authorization: Basic base64(user:pass)`. It cannot be expressed as a
|
|
167
|
-
// query parameter or a cookie, so the branch is emitted only where it can
|
|
168
|
-
// mean something — and only when the model says the scheme IS basic, so an
|
|
169
|
-
// ordinary bearer SDK carries no dead code and regenerates byte-identical
|
|
170
|
-
// to what utility.ex produced.
|
|
171
95
|
const basicHere = spec.basic && 'header' === spec.where
|
|
172
96
|
|
|
173
|
-
// HEADER NAMES ARE LOWER-CASED; QUERY AND COOKIE NAMES ARE NOT.
|
|
174
|
-
//
|
|
175
|
-
// `resolveAuthName` answers 'Authorization' by default, but the whole
|
|
176
|
-
// elixir runtime spells header names in lower case: the extracted code
|
|
177
|
-
// said `S.delprop(headers, "authorization")`, feature/secrets.ex rewrites
|
|
178
|
-
// `headers["authorization"]`, feature/debug.ex masks the same key, the
|
|
179
|
-
// shared corpus asserts `ctx:spec:headers:authorization`, and
|
|
180
|
-
// pipeline_test.exs reads it. A struct map key is case-sensitive, so
|
|
181
|
-
// emitting "Authorization" verbatim would put the credential under a key
|
|
182
|
-
// nothing reads and leave the secrets feature writing a SECOND header.
|
|
183
|
-
// HTTP header names are case-insensitive on the wire, so lower-casing
|
|
184
|
-
// costs nothing. A query parameter and a cookie ARE case-sensitive
|
|
185
|
-
// (`?Token=` is not `?token=`), so those keep the spec's spelling.
|
|
186
97
|
const credName = query || cookie ? spec.name : spec.name.toLowerCase()
|
|
187
98
|
|
|
188
99
|
const attrs = ` @cred_name ${elixirString(credName)}
|
|
@@ -203,9 +114,6 @@ end
|
|
|
203
114
|
? ` query = S.getprop(spec, "query")`
|
|
204
115
|
: ` headers = S.getprop(spec, "headers")`
|
|
205
116
|
|
|
206
|
-
// Clearing: a query parameter and a header are a plain delprop, but a
|
|
207
|
-
// cookie header is SHARED with whatever cookies the caller set, so only
|
|
208
|
-
// our own pair comes out.
|
|
209
117
|
const clear = query
|
|
210
118
|
? 'S.delprop(query, @cred_name)'
|
|
211
119
|
: cookie
|
|
@@ -266,8 +174,6 @@ ${indent(place(spec, clear), 1)}
|
|
|
266
174
|
}
|
|
267
175
|
|
|
268
176
|
|
|
269
|
-
// The one thing that actually differs between placements: where the
|
|
270
|
-
// credential is written, and whether the prefix travels with it.
|
|
271
177
|
function place(spec: AuthSpec, clear: string): string {
|
|
272
178
|
const guard = ` if (is_binary(apikey) and apikey == @not_found) or apikey == nil or apikey == "" do
|
|
273
179
|
${clear}
|
|
@@ -294,7 +200,6 @@ function place(spec: AuthSpec, clear: string): string {
|
|
|
294
200
|
`
|
|
295
201
|
}
|
|
296
202
|
|
|
297
|
-
// HEADER: the extracted body, unchanged.
|
|
298
203
|
return guard + ` ap = S.getpath(options, "auth.prefix")
|
|
299
204
|
auth_prefix = if is_binary(ap), do: ap, else: ""
|
|
300
205
|
apikey_val = if is_binary(apikey), do: apikey, else: ""
|
|
@@ -306,11 +211,6 @@ function place(spec: AuthSpec, clear: string): string {
|
|
|
306
211
|
}
|
|
307
212
|
|
|
308
213
|
|
|
309
|
-
// The private helpers the emitted body needs. `opts_map/1` is the one
|
|
310
|
-
// utility.ex keeps for itself (it is `defp` there, so it could not be
|
|
311
|
-
// called across the module boundary) - eight lines, reproduced rather than
|
|
312
|
-
// made public, because widening a private helper to export one caller is a
|
|
313
|
-
// bigger change to utility.ex than this extraction is.
|
|
314
214
|
function helpers(spec: AuthSpec): string {
|
|
315
215
|
const optsMap = ` # The client's options as a MAP, cloned. The clone is load-bearing: the
|
|
316
216
|
# secrets feature rewrites options.apikey on the live client, and
|
|
@@ -383,29 +283,6 @@ function indent(block: string, n: number): string {
|
|
|
383
283
|
}
|
|
384
284
|
|
|
385
285
|
|
|
386
|
-
// NOT `isAuthActive`, AND THE DIFFERENCE IS LOAD-BEARING (the py port found
|
|
387
|
-
// this first; same reasoning, same fix).
|
|
388
|
-
//
|
|
389
|
-
// `isAuthActive` is false whenever the SPEC declares no security scheme
|
|
390
|
-
// (`main.kit.info.auth: false`). That is a statement about the DEFINITION,
|
|
391
|
-
// not a ban on ever sending a credential: apidef writes it for every spec
|
|
392
|
-
// with no securitySchemes block, GitHub's official OpenAPI included, and
|
|
393
|
-
// those SDKs are still expected to honour an `apikey` the caller passes.
|
|
394
|
-
// `optspec` always declares `apikey` and make_options fills `options.auth`
|
|
395
|
-
// from its defaults, so the runtime `S.getprop(options, "auth") == nil`
|
|
396
|
-
// guard never fired and every such SDK has always sent `options.apikey`.
|
|
397
|
-
//
|
|
398
|
-
// Gating the body on `isAuthActive` therefore does not trim dead code, it
|
|
399
|
-
// deletes working authentication - and takes the secrets feature with it,
|
|
400
|
-
// since that resolves a secret into options.apikey and prepare_auth then
|
|
401
|
-
// places nothing. elixir is one of the three targets in generatedcompile's
|
|
402
|
-
// AUTHNULL_STANDALONE list, whose lane (`elixir: the secrets feature runs
|
|
403
|
-
// with the feature active`) runs the shipped secrets suite against a LIVE
|
|
404
|
-
// client on a real mix and names its two auth-nil cases.
|
|
405
|
-
//
|
|
406
|
-
// So the no-op is emitted only when the PROJECT says so: `config.auth.active:
|
|
407
|
-
// false`, an explicit per-SDK switch nobody sets by accident. A spec that is
|
|
408
|
-
// merely silent keeps the credential path it has always had.
|
|
409
286
|
function authSwitchedOn(model: any): boolean {
|
|
410
287
|
const auth = getModelPath(model, `main.${KIT}.config.auth`,
|
|
411
288
|
{ only_active: false, required: false })
|