@voxgig/sdkgen 4.8.2 → 4.9.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/doctor.d.ts +1 -0
- package/dist/action/doctor.js +50 -2
- package/dist/action/doctor.js.map +1 -1
- package/dist/helpers/naming.js +4 -2
- package/dist/helpers/naming.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/model/sdkgen.aon +21 -0
- package/package.json +1 -1
- package/project/.sdk/model/feature/secrets.aon +120 -18
- package/project/.sdk/model/target/c.aon +10 -0
- package/project/.sdk/model/target/clojure.aon +13 -0
- package/project/.sdk/model/target/cpp.aon +10 -0
- package/project/.sdk/model/target/csharp.aon +9 -0
- package/project/.sdk/model/target/dart.aon +10 -0
- package/project/.sdk/model/target/elixir.aon +9 -0
- package/project/.sdk/model/target/go.aon +13 -0
- package/project/.sdk/model/target/java.aon +9 -0
- package/project/.sdk/model/target/js.aon +7 -0
- package/project/.sdk/model/target/kotlin.aon +9 -0
- package/project/.sdk/model/target/lean.aon +17 -0
- package/project/.sdk/model/target/lua.aon +8 -0
- package/project/.sdk/model/target/ocaml.aon +9 -0
- package/project/.sdk/model/target/perl.aon +8 -0
- package/project/.sdk/model/target/php.aon +8 -0
- package/project/.sdk/model/target/py.aon +13 -0
- package/project/.sdk/model/target/rb.aon +8 -0
- package/project/.sdk/model/target/rust.aon +10 -0
- package/project/.sdk/model/target/scala.aon +21 -2
- package/project/.sdk/model/target/swift.aon +18 -0
- package/project/.sdk/model/target/ts.aon +13 -0
- package/project/.sdk/model/target/zig.aon +9 -0
- package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
- package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
- package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
- package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
- package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
- package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
- package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
- package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
- package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
- package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
- package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
- package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
- package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
- package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
- package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
- package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
- package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
- package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
- package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
- package/project/.sdk/src/cmp/zig/Package_zig.ts +15 -11
- package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +3 -3
- package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +3 -3
- package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +3 -3
- package/project/.sdk/src/cmp/zig/utility_zig.ts +50 -1
- package/project/.sdk/tm/c/Makefile +38 -3
- package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
- package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
- package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
- package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
- package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
- package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
- package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
- package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
- package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
- package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
- package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
- package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
- package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
- package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
- package/project/.sdk/tm/cpp/Makefile +5 -1
- package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
- package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
- package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
- package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
- package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
- package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
- package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
- package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
- package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
- package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
- package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
- package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
- package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
- package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
- package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
- package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
- package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
- package/project/.sdk/tm/dart/test/omni.dart +520 -0
- package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
- package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
- package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
- package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
- package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
- package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
- package/project/.sdk/tm/elixir/Makefile +11 -3
- package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
- package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
- package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
- package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
- package/project/.sdk/tm/go/core/context.go +32 -16
- package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +208 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +150 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +442 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +714 -0
- package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
- package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
- package/project/.sdk/tm/go/test/omni/omni.go +902 -0
- package/project/.sdk/tm/go/test/omni/util.go +381 -0
- package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
- package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
- package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
- package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
- package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
- package/project/.sdk/tm/go/utility/make_options.go +8 -1
- package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
- package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
- package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
- package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
- package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
- package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
- package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
- package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
- package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
- package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
- package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
- package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
- package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
- package/project/.sdk/tm/js/test/omni.js +251 -0
- package/project/.sdk/tm/js/test/omni.test.js +105 -0
- package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
- package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
- package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
- package/project/.sdk/tm/js/test/vendor/omni/runner.js +628 -0
- package/project/.sdk/tm/js/test/vendor/omni/util.js +229 -0
- package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
- package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
- package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
- package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
- package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
- package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
- package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
- package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
- package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
- package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
- package/project/.sdk/tm/lean/Makefile +12 -5
- package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
- package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
- package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
- package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
- package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
- package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
- package/project/.sdk/tm/lua/test/omni.lua +456 -0
- package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
- package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
- package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
- package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
- package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
- package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
- package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
- package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
- package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
- package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
- package/project/.sdk/tm/ocaml/Makefile +37 -12
- package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
- package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
- package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
- package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
- package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
- package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
- package/project/.sdk/tm/perl/t/omni.pm +647 -0
- package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
- package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
- package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
- package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
- package/project/.sdk/tm/php/test/Omni.php +691 -0
- package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
- package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
- package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
- package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
- package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
- package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
- package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
- package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +76 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +151 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +90 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +475 -0
- package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
- package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
- package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
- package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
- package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
- package/project/.sdk/tm/py/test/omni.py +415 -0
- package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
- package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
- package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
- package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
- package/project/.sdk/tm/py/test/voxgig_omni/runner.py +580 -0
- package/project/.sdk/tm/py/test/voxgig_omni/util.py +252 -0
- package/project/.sdk/tm/rb/test/omni.rb +505 -0
- package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
- package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
- package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
- package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
- package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
- package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
- package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
- package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
- package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
- package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
- package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
- package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
- package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
- package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
- package/project/.sdk/tm/scala/Makefile +16 -6
- package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
- package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
- package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
- package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
- package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
- package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
- package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
- package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
- package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
- package/project/.sdk/tm/ts/test/omni.ts +104 -32
- package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
- package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
- package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
- package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
- package/project/.sdk/tm/zig/Makefile +15 -1
- package/project/.sdk/tm/zig/build.zig +23 -5
- package/project/.sdk/tm/zig/core/helpers.zig +52 -11
- package/project/.sdk/tm/zig/core/mem.zig +17 -1
- package/project/.sdk/tm/zig/core/utility.zig +23 -19
- package/project/.sdk/tm/zig/feature/audit.zig +2 -2
- package/project/.sdk/tm/zig/feature/cache.zig +2 -2
- package/project/.sdk/tm/zig/feature/debug.zig +5 -5
- package/project/.sdk/tm/zig/feature/netsim.zig +2 -2
- package/project/.sdk/tm/zig/feature/paging.zig +2 -2
- package/project/.sdk/tm/zig/feature/proxy.zig +15 -8
- package/project/.sdk/tm/zig/feature/streaming.zig +5 -5
- package/project/.sdk/tm/zig/feature/support.zig +3 -3
- package/project/.sdk/tm/zig/feature/telemetry.zig +5 -5
- package/project/.sdk/tm/zig/feature/test.zig +10 -5
- package/project/.sdk/tm/zig/test/fh.zig +10 -10
- package/project/.sdk/tm/zig/test/gotcha_test.zig +5 -5
- package/project/.sdk/tm/zig/test/omniresolver.zig +515 -0
- package/project/.sdk/tm/zig/test/omnismoke_test.zig +284 -0
- package/project/.sdk/tm/zig/test/pipeline_test.zig +8 -8
- package/project/.sdk/tm/zig/test/primary_utility_test.zig +145 -155
- package/project/.sdk/tm/zig/test/struct_corpus.zig +264 -187
- package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1314 -0
- package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +446 -0
- package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +7 -4
- package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +356 -157
- package/project/sdkgen-package.json +1 -1
- package/src/action/doctor.ts +66 -2
- package/src/helpers/naming.ts +4 -2
- package/project/.sdk/tm/c/tests/runner.h +0 -274
- package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
- package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
- package/project/.sdk/tm/dart/test/runner.dart +0 -406
- package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
- package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
- package/project/.sdk/tm/go/test/runner_test.go +0 -629
- package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
- package/project/.sdk/tm/java/test/StructRunner.java +0 -281
- package/project/.sdk/tm/js/test/runner.js +0 -387
- package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
- package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
- package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
- package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
- package/project/.sdk/tm/php/test/StructRunner.php +0 -275
- package/project/.sdk/tm/py/test/struct_runner.py +0 -411
- package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
- package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
- package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
- package/project/.sdk/tm/zig/test/struct_runner.zig +0 -464
package/src/action/doctor.ts
CHANGED
|
@@ -128,6 +128,11 @@ type DoctorReport = {
|
|
|
128
128
|
// Project-owned components the scaffold never shipped. NOT drift.
|
|
129
129
|
additive: string[]
|
|
130
130
|
|
|
131
|
+
// Generated files the model declares RETIRED (`target.superseded`) that
|
|
132
|
+
// still sit in the target output directories — the old runner beside its
|
|
133
|
+
// replacement. `doctor prune` deletes exactly these.
|
|
134
|
+
superseded: string[]
|
|
135
|
+
|
|
131
136
|
// Root-level components this sdkgen provides that the project's root
|
|
132
137
|
// wiring never calls. Informational: opting out is legitimate.
|
|
133
138
|
unwired: string[]
|
|
@@ -151,6 +156,7 @@ type DoctorReport = {
|
|
|
151
156
|
|
|
152
157
|
const CMD_MAP: any = {
|
|
153
158
|
check: cmd_doctor_check,
|
|
159
|
+
prune: cmd_doctor_prune,
|
|
154
160
|
}
|
|
155
161
|
|
|
156
162
|
|
|
@@ -173,6 +179,57 @@ async function cmd_doctor_check(_args: string[], actx: ActionContext): Promise<A
|
|
|
173
179
|
}
|
|
174
180
|
|
|
175
181
|
|
|
182
|
+
// `doctor prune` — the ONE write doctor performs, and only ever of files a
|
|
183
|
+
// target's model DECLARES superseded (retired templates jostraca cannot
|
|
184
|
+
// delete from a consumer: the old runner beside its replacement, a
|
|
185
|
+
// pre-reshape vendored file). Everything else doctor does stays read-only.
|
|
186
|
+
async function cmd_doctor_prune(_args: string[], actx: ActionContext): Promise<ActionResult> {
|
|
187
|
+
const log = actx.log
|
|
188
|
+
const fs = actx.fs()
|
|
189
|
+
|
|
190
|
+
const found = supersededFiles(actx)
|
|
191
|
+
const pruned: string[] = []
|
|
192
|
+
|
|
193
|
+
for (const abs of found) {
|
|
194
|
+
fs.unlinkSync(abs)
|
|
195
|
+
pruned.push(abs)
|
|
196
|
+
log.info({ point: 'doctor-prune', file: abs, note: 'pruned superseded: ' + abs })
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
log.info({
|
|
200
|
+
point: 'doctor-prune-end', pruned: pruned.length,
|
|
201
|
+
note: 0 === pruned.length ? 'nothing superseded to prune' :
|
|
202
|
+
('pruned ' + pruned.length + ' superseded file(s)')
|
|
203
|
+
})
|
|
204
|
+
|
|
205
|
+
return { report: { pruned, ok: true } }
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
// Generated files the model says this toolchain NO LONGER writes, that
|
|
210
|
+
// still exist in the project's target output directories. Paths in the
|
|
211
|
+
// model are relative to each target's output dir (a sibling of `.sdk/`,
|
|
212
|
+
// named for the target).
|
|
213
|
+
function supersededFiles(actx: ActionContext): string[] {
|
|
214
|
+
const fs = actx.fs()
|
|
215
|
+
const model = actx.model
|
|
216
|
+
const root = actx.folder
|
|
217
|
+
|
|
218
|
+
const targets = (model as any)?.main?.[KIT]?.target ?? {}
|
|
219
|
+
|
|
220
|
+
const found: string[] = []
|
|
221
|
+
for (const tname of Object.keys(targets).sort()) {
|
|
222
|
+
for (const rel of (targets[tname].superseded || [])) {
|
|
223
|
+
const abs = Path.join(root, '..', tname, String(rel))
|
|
224
|
+
if (fs.existsSync(abs)) {
|
|
225
|
+
found.push(abs)
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return found
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
|
|
176
233
|
// Narrows the check to particular items — `package update` runs doctor as
|
|
177
234
|
// its pre-check and needs the verdict for ONE package's items, not the
|
|
178
235
|
// project's. Reusing the real comparison rather than writing a second one is
|
|
@@ -193,9 +250,14 @@ async function doctor(
|
|
|
193
250
|
|
|
194
251
|
const report: DoctorReport = {
|
|
195
252
|
forked: [], edited: [], stale: [], missing: [], additive: [],
|
|
196
|
-
unwired: [], resyncPending: [], aliasedDiff: [], ok: true,
|
|
253
|
+
superseded: [], unwired: [], resyncPending: [], aliasedDiff: [], ok: true,
|
|
197
254
|
}
|
|
198
255
|
|
|
256
|
+
// Retired-output leftovers first: purely model-driven, and a finding —
|
|
257
|
+
// two copies of the same machinery, one stale, is exactly the state the
|
|
258
|
+
// migration guide had to clean up by hand three times.
|
|
259
|
+
report.superseded = supersededFiles(actx)
|
|
260
|
+
|
|
199
261
|
// EVERY KIND, not just targets.
|
|
200
262
|
//
|
|
201
263
|
// `add` writes a copied model file for each kind — `model/target/<t>.aon`
|
|
@@ -283,7 +345,7 @@ async function doctor(
|
|
|
283
345
|
}
|
|
284
346
|
|
|
285
347
|
report.ok = 0 === report.forked.length + report.edited.length +
|
|
286
|
-
report.stale.length + report.missing.length
|
|
348
|
+
report.stale.length + report.missing.length + report.superseded.length
|
|
287
349
|
|
|
288
350
|
for (const [kind, note] of [
|
|
289
351
|
['forked', 'FORKED (will be reverted by `target add`)'],
|
|
@@ -291,6 +353,7 @@ async function doctor(
|
|
|
291
353
|
['stale', 'STALE (no longer written by `target add`)'],
|
|
292
354
|
['missing', 'MISSING (would be written by `target add`)'],
|
|
293
355
|
['additive', 'additive (project-owned, not drift)'],
|
|
356
|
+
['superseded', 'SUPERSEDED generated output (run `doctor prune` to delete)'],
|
|
294
357
|
['unwired', 'NOT WIRED IN (root capability this project is missing)'],
|
|
295
358
|
['resyncPending', 'RESYNC PENDING (predates provenance; `target add` updates it)'],
|
|
296
359
|
['aliasedDiff', 'aliased model differs from its origin (project-owned, not drift)'],
|
|
@@ -308,6 +371,7 @@ async function doctor(
|
|
|
308
371
|
stale: report.stale.length,
|
|
309
372
|
missing: report.missing.length,
|
|
310
373
|
additive: report.additive.length,
|
|
374
|
+
superseded: report.superseded.length,
|
|
311
375
|
unwired: report.unwired.length,
|
|
312
376
|
resyncPending: report.resyncPending.length,
|
|
313
377
|
aliasedDiff: report.aliasedDiff.length,
|
package/src/helpers/naming.ts
CHANGED
|
@@ -148,6 +148,8 @@ const RB_SDK_CONSTANTS = new Set<string>([
|
|
|
148
148
|
// vendored struct library and its test scaffolding
|
|
149
149
|
'StructRunner', 'StructTestClient', 'StructUtilityTest', 'VoxgigStruct',
|
|
150
150
|
'STRUCT_TEST_JSON_FILE',
|
|
151
|
+
// vendored omni runner and its smoke test (vendor-tag rollout)
|
|
152
|
+
'VoxgigOmni', 'OmniSmokeTest',
|
|
151
153
|
// the generated/templated test classes
|
|
152
154
|
'ExistsTest', 'FeatureCorpusTest', 'FeatureTest', 'NetsimTest',
|
|
153
155
|
'PipelineTest', 'PrimaryUtilityTest', 'ReadmeExamplesTest',
|
|
@@ -330,8 +332,8 @@ function isPhpReservedType(Name: string): boolean {
|
|
|
330
332
|
const PHP_SDK_CLASSES = new Set<string>([
|
|
331
333
|
// the generated/templated test classes
|
|
332
334
|
'existstest', 'featurecorpustest', 'featuretest', 'netsimtest',
|
|
333
|
-
'
|
|
334
|
-
'structutilitytest',
|
|
335
|
+
'omnismoketest', 'pipelinetest', 'primaryutilitytest',
|
|
336
|
+
'readmeexamplestest', 'structutilitytest',
|
|
335
337
|
// helper classes those suites declare beside them
|
|
336
338
|
'ftclient', 'ftclock', 'ftctrl', 'ftentity', 'ftharness', 'ftrecorder',
|
|
337
339
|
'plclient', 'plentity', 'plentityitem',
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
/* Voxgig Struct corpus runner — C port.
|
|
2
|
-
* Mirrors cpp/tests/runner.hpp.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
#ifndef VOXGIG_STRUCT_RUNNER_H
|
|
6
|
-
#define VOXGIG_STRUCT_RUNNER_H
|
|
7
|
-
|
|
8
|
-
#include "voxgig_struct.h"
|
|
9
|
-
|
|
10
|
-
#include <ctype.h>
|
|
11
|
-
#include <math.h>
|
|
12
|
-
#include <stdio.h>
|
|
13
|
-
#include <stdlib.h>
|
|
14
|
-
#include <string.h>
|
|
15
|
-
|
|
16
|
-
/* Subject: function from input value to output value.
|
|
17
|
-
* On error, the subject may set *err to an error message (caller-owned char*).
|
|
18
|
-
*/
|
|
19
|
-
typedef voxgig_value* (*runner_subject_fn)(voxgig_value* in, char** err, void* ud);
|
|
20
|
-
|
|
21
|
-
typedef struct runner_result {
|
|
22
|
-
char* name;
|
|
23
|
-
int passed;
|
|
24
|
-
int total;
|
|
25
|
-
/* Failure messages (owned). */
|
|
26
|
-
size_t fail_len;
|
|
27
|
-
size_t fail_cap;
|
|
28
|
-
char** failures;
|
|
29
|
-
} runner_result;
|
|
30
|
-
|
|
31
|
-
static inline void runner_result_init(runner_result* r, const char* name) {
|
|
32
|
-
r->name = strdup(name);
|
|
33
|
-
r->passed = 0;
|
|
34
|
-
r->total = 0;
|
|
35
|
-
r->fail_len = 0;
|
|
36
|
-
r->fail_cap = 0;
|
|
37
|
-
r->failures = NULL;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
static inline void runner_result_free(runner_result* r) {
|
|
41
|
-
free(r->name);
|
|
42
|
-
for (size_t i = 0; i < r->fail_len; i++)
|
|
43
|
-
free(r->failures[i]);
|
|
44
|
-
free(r->failures);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
static inline void runner_push_failure(runner_result* r, const char* msg) {
|
|
48
|
-
if (r->fail_len + 1 > r->fail_cap) {
|
|
49
|
-
size_t nc = r->fail_cap == 0 ? 8 : r->fail_cap * 2;
|
|
50
|
-
r->failures = (char**)realloc(r->failures, nc * sizeof(char*));
|
|
51
|
-
r->fail_cap = nc;
|
|
52
|
-
}
|
|
53
|
-
r->failures[r->fail_len++] = strdup(msg);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/* Normalize: turn integer-valued doubles into ints; sort map keys; sentinels and
|
|
57
|
-
* undef → null for stable comparison. */
|
|
58
|
-
static voxgig_value* normalize(const voxgig_value* v) {
|
|
59
|
-
if (!v || voxgig_is_undef(v) || voxgig_is_null(v))
|
|
60
|
-
return voxgig_new_null();
|
|
61
|
-
if (voxgig_is_double(v)) {
|
|
62
|
-
double d = voxgig_as_double(v);
|
|
63
|
-
if (isfinite(d) && floor(d) == d)
|
|
64
|
-
return voxgig_new_int((int64_t)d);
|
|
65
|
-
return voxgig_new_double(d);
|
|
66
|
-
}
|
|
67
|
-
if (voxgig_is_list(v)) {
|
|
68
|
-
voxgig_value* out = voxgig_new_list();
|
|
69
|
-
voxgig_list* l = voxgig_as_list(v);
|
|
70
|
-
for (size_t i = 0; i < l->len; i++) {
|
|
71
|
-
voxgig_list_push(voxgig_as_list(out), normalize(l->items[i]));
|
|
72
|
-
}
|
|
73
|
-
return out;
|
|
74
|
-
}
|
|
75
|
-
if (voxgig_is_map(v)) {
|
|
76
|
-
/* Sort by key (alphabetical). */
|
|
77
|
-
voxgig_map* m = voxgig_as_map(v);
|
|
78
|
-
size_t n = m->len;
|
|
79
|
-
size_t* idx = (size_t*)malloc(n * sizeof(size_t) + 1);
|
|
80
|
-
for (size_t i = 0; i < n; i++)
|
|
81
|
-
idx[i] = i;
|
|
82
|
-
for (size_t i = 1; i < n; i++) {
|
|
83
|
-
size_t j = i;
|
|
84
|
-
while (j > 0 && strcmp(m->entries[idx[j - 1]].key, m->entries[idx[j]].key) > 0) {
|
|
85
|
-
size_t t = idx[j - 1];
|
|
86
|
-
idx[j - 1] = idx[j];
|
|
87
|
-
idx[j] = t;
|
|
88
|
-
j--;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
voxgig_value* out = voxgig_new_map();
|
|
92
|
-
for (size_t i = 0; i < n; i++) {
|
|
93
|
-
voxgig_map_set(voxgig_as_map(out), m->entries[idx[i]].key,
|
|
94
|
-
normalize(m->entries[idx[i]].value));
|
|
95
|
-
}
|
|
96
|
-
free(idx);
|
|
97
|
-
return out;
|
|
98
|
-
}
|
|
99
|
-
return voxgig_clone((voxgig_value*)v);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
static bool deep_equal(const voxgig_value* a, const voxgig_value* b) {
|
|
103
|
-
voxgig_value* na = normalize(a);
|
|
104
|
-
voxgig_value* nb = normalize(b);
|
|
105
|
-
bool eq = voxgig_equals(na, nb);
|
|
106
|
-
voxgig_release(na);
|
|
107
|
-
voxgig_release(nb);
|
|
108
|
-
return eq;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
static char* brief(const voxgig_value* v) {
|
|
112
|
-
if (!v || voxgig_is_undef(v))
|
|
113
|
-
return strdup("__UNDEF__");
|
|
114
|
-
char* s = voxgig_jsonify((voxgig_value*)v, NULL);
|
|
115
|
-
if (!s)
|
|
116
|
-
return strdup("?");
|
|
117
|
-
size_t n = strlen(s);
|
|
118
|
-
if (n > 200) {
|
|
119
|
-
s[197] = '\0';
|
|
120
|
-
char* tmp = (char*)malloc(202);
|
|
121
|
-
snprintf(tmp, 202, "%s...", s);
|
|
122
|
-
free(s);
|
|
123
|
-
return tmp;
|
|
124
|
-
}
|
|
125
|
-
return s;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
__attribute__((unused)) static void str_lower(char* s) {
|
|
129
|
-
for (; *s; s++)
|
|
130
|
-
*s = (char)tolower((unsigned char)*s);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/* Deep-copy `v`, replacing every JSON null with the marker string "__NULL__".
|
|
134
|
-
* Mirrors what the TS / JS / Py / Go / Lua runners do under their null flag —
|
|
135
|
-
* the corpus uses null in source to mean "JSON null" but every runner
|
|
136
|
-
* substitutes a string marker so comparisons can be done in JSON-poor
|
|
137
|
-
* languages. */
|
|
138
|
-
__attribute__((unused)) static voxgig_value* null_substitute(voxgig_value* v) {
|
|
139
|
-
if (!v || voxgig_is_undef(v))
|
|
140
|
-
return voxgig_new_undef();
|
|
141
|
-
if (voxgig_is_null(v))
|
|
142
|
-
return voxgig_new_string("__NULL__");
|
|
143
|
-
if (voxgig_is_list(v)) {
|
|
144
|
-
voxgig_value* out = voxgig_new_list();
|
|
145
|
-
voxgig_list* l = voxgig_as_list(v);
|
|
146
|
-
for (size_t i = 0; i < l->len; i++)
|
|
147
|
-
voxgig_list_push(voxgig_as_list(out), null_substitute(l->items[i]));
|
|
148
|
-
return out;
|
|
149
|
-
}
|
|
150
|
-
if (voxgig_is_map(v)) {
|
|
151
|
-
voxgig_value* out = voxgig_new_map();
|
|
152
|
-
voxgig_map* m = voxgig_as_map(v);
|
|
153
|
-
for (size_t i = 0; i < m->len; i++)
|
|
154
|
-
voxgig_map_set(voxgig_as_map(out), m->entries[i].key, null_substitute(m->entries[i].value));
|
|
155
|
-
return out;
|
|
156
|
-
}
|
|
157
|
-
return voxgig_clone(v);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
static void run_subject(runner_result* res, voxgig_value* testspec, bool null_flag,
|
|
161
|
-
runner_subject_fn subj, void* ud) {
|
|
162
|
-
voxgig_value* setk = voxgig_new_string("set");
|
|
163
|
-
voxgig_value* set = voxgig_getprop(testspec, setk, NULL);
|
|
164
|
-
voxgig_release(setk);
|
|
165
|
-
if (!voxgig_is_list(set)) {
|
|
166
|
-
voxgig_release(set);
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
voxgig_list* sl = voxgig_as_list(set);
|
|
170
|
-
for (size_t i = 0; i < sl->len; i++) {
|
|
171
|
-
voxgig_value* eo = sl->items[i];
|
|
172
|
-
if (!voxgig_is_map(eo))
|
|
173
|
-
continue;
|
|
174
|
-
/* Use voxgig_map_get directly: voxgig_haskey treats null at a key as "no value"
|
|
175
|
-
(Group A rule), but the runner needs literal presence to preserve
|
|
176
|
-
test inputs like { in: null } where null IS the value to pass. */
|
|
177
|
-
voxgig_value* in_raw_ptr = voxgig_map_get(voxgig_as_map(eo), "in");
|
|
178
|
-
bool has_in = (in_raw_ptr != NULL);
|
|
179
|
-
voxgig_value* in_raw = in_raw_ptr ? voxgig_retain(in_raw_ptr) : voxgig_new_undef();
|
|
180
|
-
voxgig_value* in = has_in ? voxgig_clone(in_raw) : voxgig_new_undef();
|
|
181
|
-
voxgig_value* out_raw_ptr = voxgig_map_get(voxgig_as_map(eo), "out");
|
|
182
|
-
bool has_out = (out_raw_ptr != NULL);
|
|
183
|
-
voxgig_value* expected = NULL;
|
|
184
|
-
if (has_out)
|
|
185
|
-
expected = voxgig_retain(out_raw_ptr);
|
|
186
|
-
else if (null_flag)
|
|
187
|
-
expected = voxgig_new_null();
|
|
188
|
-
else
|
|
189
|
-
expected = voxgig_new_undef();
|
|
190
|
-
voxgig_value* err_ptr = voxgig_map_get(voxgig_as_map(eo), "err");
|
|
191
|
-
voxgig_value* err_v = err_ptr ? voxgig_retain(err_ptr) : voxgig_new_undef();
|
|
192
|
-
|
|
193
|
-
res->total++;
|
|
194
|
-
char* err_msg = NULL;
|
|
195
|
-
voxgig_value* got = subj(in, &err_msg, ud);
|
|
196
|
-
|
|
197
|
-
if (!voxgig_is_undef(err_v)) {
|
|
198
|
-
/* Test expects an error. Check if err_msg was set. */
|
|
199
|
-
bool match = false;
|
|
200
|
-
if (err_msg) {
|
|
201
|
-
if (voxgig_is_bool(err_v) && voxgig_as_bool(err_v)) {
|
|
202
|
-
match = true;
|
|
203
|
-
} else if (voxgig_is_string(err_v)) {
|
|
204
|
-
const char* es = voxgig_as_string(err_v);
|
|
205
|
-
if (!es || !*es)
|
|
206
|
-
match = true;
|
|
207
|
-
else if (strstr(err_msg, es))
|
|
208
|
-
match = true;
|
|
209
|
-
else {
|
|
210
|
-
/* Case-insensitive substring. */
|
|
211
|
-
char* lm = strdup(err_msg);
|
|
212
|
-
char* le = strdup(es);
|
|
213
|
-
str_lower(lm);
|
|
214
|
-
str_lower(le);
|
|
215
|
-
if (strstr(lm, le))
|
|
216
|
-
match = true;
|
|
217
|
-
free(lm);
|
|
218
|
-
free(le);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
222
|
-
if (match) {
|
|
223
|
-
res->passed++;
|
|
224
|
-
} else {
|
|
225
|
-
char* gs = brief(got);
|
|
226
|
-
char* es = brief(err_v);
|
|
227
|
-
char buf[2048];
|
|
228
|
-
snprintf(buf, sizeof(buf), "[%zu] err mode (expected '%s' got err='%s' val=%s)", i, es,
|
|
229
|
-
err_msg ? err_msg : "(no err)", gs);
|
|
230
|
-
runner_push_failure(res, buf);
|
|
231
|
-
free(gs);
|
|
232
|
-
free(es);
|
|
233
|
-
}
|
|
234
|
-
free(err_msg);
|
|
235
|
-
voxgig_release(got);
|
|
236
|
-
voxgig_release(err_v);
|
|
237
|
-
voxgig_release(in);
|
|
238
|
-
voxgig_release(in_raw);
|
|
239
|
-
voxgig_release(expected);
|
|
240
|
-
continue;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
if (err_msg) {
|
|
244
|
-
char* gs = brief(got);
|
|
245
|
-
char* ins = brief(in_raw);
|
|
246
|
-
char buf[2048];
|
|
247
|
-
snprintf(buf, sizeof(buf), "[%zu] in=%s threw='%s' got=%s", i, ins, err_msg, gs);
|
|
248
|
-
runner_push_failure(res, buf);
|
|
249
|
-
free(gs);
|
|
250
|
-
free(ins);
|
|
251
|
-
} else if (deep_equal(got, expected)) {
|
|
252
|
-
res->passed++;
|
|
253
|
-
} else {
|
|
254
|
-
char* gs = brief(got);
|
|
255
|
-
char* es = brief(expected);
|
|
256
|
-
char* ins = brief(in_raw);
|
|
257
|
-
char buf[2048];
|
|
258
|
-
snprintf(buf, sizeof(buf), "[%zu] in=%s expected=%s got=%s", i, ins, es, gs);
|
|
259
|
-
runner_push_failure(res, buf);
|
|
260
|
-
free(gs);
|
|
261
|
-
free(es);
|
|
262
|
-
free(ins);
|
|
263
|
-
}
|
|
264
|
-
free(err_msg);
|
|
265
|
-
voxgig_release(got);
|
|
266
|
-
voxgig_release(err_v);
|
|
267
|
-
voxgig_release(in);
|
|
268
|
-
voxgig_release(in_raw);
|
|
269
|
-
voxgig_release(expected);
|
|
270
|
-
}
|
|
271
|
-
voxgig_release(set);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
#endif
|