@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
|
@@ -1,424 +0,0 @@
|
|
|
1
|
-
// Struct corpus runner — drives the shared JSON test spec
|
|
2
|
-
// (../.sdk/test/test.json, `struct` subtree) against the vendored voxgig
|
|
3
|
-
// struct port. Vendored/adapted from the struct rust port's corpus runner
|
|
4
|
-
// (mirrors tm/go/test/struct_runner_test.go).
|
|
5
|
-
#![allow(dead_code)]
|
|
6
|
-
|
|
7
|
-
use std::fs;
|
|
8
|
-
use std::path::PathBuf;
|
|
9
|
-
|
|
10
|
-
use RUSTCRATE::utility::voxgigstruct::ordered_map::OrderedMap;
|
|
11
|
-
|
|
12
|
-
use RUSTCRATE::utility::voxgigstruct::value::Value;
|
|
13
|
-
use RUSTCRATE::utility::voxgigstruct::*;
|
|
14
|
-
|
|
15
|
-
pub const NULLMARK: &str = "__NULL__";
|
|
16
|
-
pub const UNDEFMARK: &str = "__UNDEF__";
|
|
17
|
-
pub const EXISTSMARK: &str = "__EXISTS__";
|
|
18
|
-
|
|
19
|
-
// ---- JSON -> Value -----------------------------------------------------
|
|
20
|
-
// The shared SDK test spec, parsed with the crate's own JSON parser (no
|
|
21
|
-
// external dependency).
|
|
22
|
-
|
|
23
|
-
pub fn test_json() -> Value {
|
|
24
|
-
let mut p = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
|
25
|
-
p.push("..");
|
|
26
|
-
p.push(".sdk");
|
|
27
|
-
p.push("test");
|
|
28
|
-
p.push("test.json");
|
|
29
|
-
let txt = fs::read_to_string(&p).unwrap_or_else(|e| panic!("read {:?}: {e}", p));
|
|
30
|
-
RUSTCRATE::utility::jsonparse::json_parse(&txt).expect("parse test.json")
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// ---- value helpers -----------------------------------------------------
|
|
34
|
-
|
|
35
|
-
// Raw field extraction from corpus entries: preserves a stored JSON null so a
|
|
36
|
-
// field declared `null` (e.g. `in: null`, `{val:null}`) reaches the subject as
|
|
37
|
-
// Value::Null and is not silently dropped (Group A null-unification only
|
|
38
|
-
// applies to the public get_prop API under test, not to test-harness plumbing).
|
|
39
|
-
// Mirrors the canonical TS runner reading entry fields by direct property access.
|
|
40
|
-
pub fn vget(v: &Value, key: &str) -> Value {
|
|
41
|
-
lookup(v, &Value::str(key))
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
pub fn vget_path(v: &Value, keys: &[&str]) -> Value {
|
|
45
|
-
let mut cur = v.clone();
|
|
46
|
-
for k in keys {
|
|
47
|
-
cur = vget(&cur, k);
|
|
48
|
-
}
|
|
49
|
-
cur
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
pub fn as_i64_opt(v: &Value) -> Option<i64> {
|
|
53
|
-
match v {
|
|
54
|
-
Value::Num(n) => Some(*n as i64),
|
|
55
|
-
_ => None,
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
pub fn as_str_opt(v: &Value) -> Option<String> {
|
|
60
|
-
match v {
|
|
61
|
-
Value::Str(s) => Some(s.clone()),
|
|
62
|
-
_ => None,
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// fixJSON: deep-replace JSON null (and undefined) with NULLMARK (when
|
|
67
|
-
// null_flag). Matches `JSON.parse(JSON.stringify(val, replacer))` with the
|
|
68
|
-
// null->NULLMARK replacer used by ts/test/runner.ts.
|
|
69
|
-
pub fn fix_json(v: &Value, null_flag: bool) -> Value {
|
|
70
|
-
match v {
|
|
71
|
-
Value::Null | Value::Noval => {
|
|
72
|
-
if null_flag {
|
|
73
|
-
Value::str(NULLMARK)
|
|
74
|
-
} else {
|
|
75
|
-
v.clone()
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
Value::List(l) => Value::list(l.borrow().iter().map(|x| fix_json(x, null_flag)).collect()),
|
|
79
|
-
Value::Map(m) => {
|
|
80
|
-
let mut nm = OrderedMap::new();
|
|
81
|
-
for (k, x) in m.borrow().iter() {
|
|
82
|
-
nm.insert(k.clone(), fix_json(x, null_flag));
|
|
83
|
-
}
|
|
84
|
-
Value::map(nm)
|
|
85
|
-
}
|
|
86
|
-
Value::Func(_) => {
|
|
87
|
-
// JSON.stringify drops functions (object key) / -> null (array elem).
|
|
88
|
-
// At the comparison boundary, treat as null-ish.
|
|
89
|
-
if null_flag {
|
|
90
|
-
Value::str(NULLMARK)
|
|
91
|
-
} else {
|
|
92
|
-
Value::Null
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
other => other.clone(),
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// match check for the `match` field of a test entry (substring / regex / etc).
|
|
100
|
-
pub fn matchval(check: &Value, base: &Value) -> bool {
|
|
101
|
-
if check == base {
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
if let Value::Str(cs) = check {
|
|
105
|
-
let bstr = stringify(base, None, false);
|
|
106
|
-
if let Some(rem) = cs.strip_prefix('/').and_then(|s| s.strip_suffix('/')) {
|
|
107
|
-
if let Ok(re) = RUSTCRATE::utility::voxgigstruct::re::Regex::new(rem) {
|
|
108
|
-
return re.is_match(&bstr);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
return bstr
|
|
112
|
-
.to_lowercase()
|
|
113
|
-
.contains(&stringify(check, None, false).to_lowercase());
|
|
114
|
-
}
|
|
115
|
-
false
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
// ---- the test loop -----------------------------------------------------
|
|
119
|
-
|
|
120
|
-
pub struct Run {
|
|
121
|
-
pub failures: Vec<String>,
|
|
122
|
-
pub passed: usize,
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
impl Run {
|
|
126
|
-
pub fn new() -> Self {
|
|
127
|
-
Run {
|
|
128
|
-
failures: Vec::new(),
|
|
129
|
-
passed: 0,
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/// Run a test set: `label` for messages, `null_flag` matches the TS
|
|
134
|
-
/// `flags.null` (`runset` => true, `runsetflags({null:false})` => false),
|
|
135
|
-
/// `subject` takes the (cloned) `vin` and returns the result Value.
|
|
136
|
-
pub fn run_set<F>(&mut self, set: &Value, null_flag: bool, label: &str, mut subject: F)
|
|
137
|
-
where
|
|
138
|
-
F: FnMut(Value) -> Value,
|
|
139
|
-
{
|
|
140
|
-
if set.is_noval() {
|
|
141
|
-
// Section absent from this SDK's test.json subset.
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
let fixed = fix_json(set, null_flag);
|
|
145
|
-
let testset = vget(&fixed, "set");
|
|
146
|
-
let entries = match testset.as_list() {
|
|
147
|
-
Some(l) => l.borrow().clone(),
|
|
148
|
-
None => {
|
|
149
|
-
self.failures.push(format!("{label}: no `set` array"));
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
};
|
|
153
|
-
for (i, entry) in entries.iter().enumerate() {
|
|
154
|
-
// resolveEntry: missing `out` + null_flag => NULLMARK
|
|
155
|
-
let out0 = vget(entry, "out");
|
|
156
|
-
let expected = if out0.is_noval() && null_flag {
|
|
157
|
-
Value::str(NULLMARK)
|
|
158
|
-
} else {
|
|
159
|
-
out0
|
|
160
|
-
};
|
|
161
|
-
let err_expected = vget(entry, "err");
|
|
162
|
-
let match_spec = vget(entry, "match");
|
|
163
|
-
|
|
164
|
-
// `vin` = clone(entry.in) (deep). The subject gets a shallow
|
|
165
|
-
// Rc-clone of it, so any in-place mutation it makes (setpath,
|
|
166
|
-
// setprop, …) is visible through `vin` afterwards.
|
|
167
|
-
let vin = clone(&vget(entry, "in"));
|
|
168
|
-
let res = fix_json(&subject(vin.clone()), null_flag);
|
|
169
|
-
|
|
170
|
-
if !err_expected.is_noval() {
|
|
171
|
-
self.failures.push(format!(
|
|
172
|
-
"{label}#{i}: expected error [{}] but got {}",
|
|
173
|
-
stringify(&err_expected, Some(80), false),
|
|
174
|
-
stringify(&res, Some(80), false),
|
|
175
|
-
));
|
|
176
|
-
continue;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
let mut matched = false;
|
|
180
|
-
if !match_spec.is_noval() {
|
|
181
|
-
// base = { in: entry.in (original), args: [vin (post-call)], out: res }
|
|
182
|
-
let mut base = OrderedMap::new();
|
|
183
|
-
base.insert("in".to_string(), vget(entry, "in"));
|
|
184
|
-
base.insert("args".to_string(), Value::list(vec![vin.clone()]));
|
|
185
|
-
base.insert("out".to_string(), res.clone());
|
|
186
|
-
let base = Value::map(base);
|
|
187
|
-
if let Some(why) = match_check(&match_spec, &base) {
|
|
188
|
-
self.failures.push(format!(
|
|
189
|
-
"{label}#{i}: match failed ({why}); got {}",
|
|
190
|
-
stringify(&res, Some(160), false)
|
|
191
|
-
));
|
|
192
|
-
continue;
|
|
193
|
-
}
|
|
194
|
-
matched = true;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
if res == expected {
|
|
198
|
-
self.passed += 1;
|
|
199
|
-
continue;
|
|
200
|
-
}
|
|
201
|
-
if matched
|
|
202
|
-
&& (expected == Value::str(NULLMARK) || expected.is_noval() || expected.is_null())
|
|
203
|
-
{
|
|
204
|
-
self.passed += 1;
|
|
205
|
-
continue;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
self.failures.push(format!(
|
|
209
|
-
"{label}#{i}: in={} -> got {}, want {}",
|
|
210
|
-
stringify(&vget(entry, "in"), Some(120), false),
|
|
211
|
-
stringify(&res, Some(120), false),
|
|
212
|
-
stringify(&expected, Some(120), false),
|
|
213
|
-
));
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
impl Run {
|
|
219
|
-
/// Like `run_set`, but the subject may return `Err(message)` — matched
|
|
220
|
-
/// (substring / regex, case-insensitive) against the entry's `err` field.
|
|
221
|
-
pub fn run_set_fallible<F>(&mut self, set: &Value, null_flag: bool, label: &str, mut subject: F)
|
|
222
|
-
where
|
|
223
|
-
F: FnMut(Value) -> Result<Value, String>,
|
|
224
|
-
{
|
|
225
|
-
if set.is_noval() {
|
|
226
|
-
// Section absent from this SDK's test.json subset.
|
|
227
|
-
return;
|
|
228
|
-
}
|
|
229
|
-
let fixed = fix_json(set, null_flag);
|
|
230
|
-
let testset = vget(&fixed, "set");
|
|
231
|
-
let entries = match testset.as_list() {
|
|
232
|
-
Some(l) => l.borrow().clone(),
|
|
233
|
-
None => {
|
|
234
|
-
self.failures.push(format!("{label}: no `set` array"));
|
|
235
|
-
return;
|
|
236
|
-
}
|
|
237
|
-
};
|
|
238
|
-
for (i, entry) in entries.iter().enumerate() {
|
|
239
|
-
let out0 = vget(entry, "out");
|
|
240
|
-
let expected = if out0.is_noval() && null_flag {
|
|
241
|
-
Value::str(NULLMARK)
|
|
242
|
-
} else {
|
|
243
|
-
out0
|
|
244
|
-
};
|
|
245
|
-
let err_expected = vget(entry, "err");
|
|
246
|
-
let match_spec = vget(entry, "match");
|
|
247
|
-
let vin = clone(&vget(entry, "in"));
|
|
248
|
-
let result = subject(vin.clone());
|
|
249
|
-
|
|
250
|
-
match result {
|
|
251
|
-
Err(msg) => {
|
|
252
|
-
if err_expected.is_noval() {
|
|
253
|
-
self.failures
|
|
254
|
-
.push(format!("{label}#{i}: unexpected error: {msg}"));
|
|
255
|
-
continue;
|
|
256
|
-
}
|
|
257
|
-
let want = match &err_expected {
|
|
258
|
-
Value::Bool(true) => {
|
|
259
|
-
self.passed += 1;
|
|
260
|
-
continue;
|
|
261
|
-
}
|
|
262
|
-
Value::Str(s) => s.clone(),
|
|
263
|
-
other => stringify(other, None, false),
|
|
264
|
-
};
|
|
265
|
-
let ok = if let Some(rem) =
|
|
266
|
-
want.strip_prefix('/').and_then(|s| s.strip_suffix('/'))
|
|
267
|
-
{
|
|
268
|
-
RUSTCRATE::utility::voxgigstruct::re::Regex::new(rem)
|
|
269
|
-
.map(|re| re.is_match(&msg))
|
|
270
|
-
.unwrap_or(false)
|
|
271
|
-
} else {
|
|
272
|
-
msg.to_lowercase().contains(&want.to_lowercase())
|
|
273
|
-
};
|
|
274
|
-
if ok {
|
|
275
|
-
self.passed += 1;
|
|
276
|
-
} else {
|
|
277
|
-
self.failures.push(format!(
|
|
278
|
-
"{label}#{i}: error mismatch: got [{}] want [{}]",
|
|
279
|
-
msg, want
|
|
280
|
-
));
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
Ok(v) => {
|
|
284
|
-
if !err_expected.is_noval() {
|
|
285
|
-
self.failures.push(format!(
|
|
286
|
-
"{label}#{i}: expected error [{}] but got value {}",
|
|
287
|
-
stringify(&err_expected, Some(80), false),
|
|
288
|
-
stringify(&fix_json(&v, null_flag), Some(80), false)
|
|
289
|
-
));
|
|
290
|
-
continue;
|
|
291
|
-
}
|
|
292
|
-
let res = fix_json(&v, null_flag);
|
|
293
|
-
let mut matched = false;
|
|
294
|
-
if !match_spec.is_noval() {
|
|
295
|
-
let mut base = OrderedMap::new();
|
|
296
|
-
base.insert("in".to_string(), vget(entry, "in"));
|
|
297
|
-
base.insert("args".to_string(), Value::list(vec![vin.clone()]));
|
|
298
|
-
base.insert("out".to_string(), res.clone());
|
|
299
|
-
let base = Value::map(base);
|
|
300
|
-
if let Some(why) = match_check(&match_spec, &base) {
|
|
301
|
-
self.failures
|
|
302
|
-
.push(format!("{label}#{i}: match failed ({why})"));
|
|
303
|
-
continue;
|
|
304
|
-
}
|
|
305
|
-
matched = true;
|
|
306
|
-
}
|
|
307
|
-
if res == expected
|
|
308
|
-
|| (matched && (expected == Value::str(NULLMARK) || expected.is_nullish()))
|
|
309
|
-
{
|
|
310
|
-
self.passed += 1;
|
|
311
|
-
} else {
|
|
312
|
-
self.failures.push(format!(
|
|
313
|
-
"{label}#{i}: in={} -> got {}, want {}",
|
|
314
|
-
stringify(&vget(entry, "in"), Some(120), false),
|
|
315
|
-
stringify(&res, Some(120), false),
|
|
316
|
-
stringify(&expected, Some(120), false),
|
|
317
|
-
));
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
/// Walk `check`; every leaf must equal/match `getpath(base, path)`. Returns
|
|
326
|
-
/// `Some(reason)` on the first mismatch, `None` if all leaves match.
|
|
327
|
-
pub fn match_check(check: &Value, base: &Value) -> Option<String> {
|
|
328
|
-
fn rec(check: &Value, base: &Value, path: &mut Vec<String>) -> Option<String> {
|
|
329
|
-
match check {
|
|
330
|
-
Value::Map(cm) => {
|
|
331
|
-
for (k, cv) in cm.borrow().iter() {
|
|
332
|
-
path.push(k.clone());
|
|
333
|
-
let r = rec(cv, base, path);
|
|
334
|
-
path.pop();
|
|
335
|
-
if r.is_some() {
|
|
336
|
-
return r;
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
None
|
|
340
|
-
}
|
|
341
|
-
Value::List(cl) => {
|
|
342
|
-
for (i, cv) in cl.borrow().iter().enumerate() {
|
|
343
|
-
path.push(i.to_string());
|
|
344
|
-
let r = rec(cv, base, path);
|
|
345
|
-
path.pop();
|
|
346
|
-
if r.is_some() {
|
|
347
|
-
return r;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
None
|
|
351
|
-
}
|
|
352
|
-
leaf => {
|
|
353
|
-
let bv = get_path(
|
|
354
|
-
base,
|
|
355
|
-
&Value::list(path.iter().cloned().map(Value::Str).collect()),
|
|
356
|
-
None,
|
|
357
|
-
);
|
|
358
|
-
if leaf == &bv {
|
|
359
|
-
return None;
|
|
360
|
-
}
|
|
361
|
-
if let Value::Str(s) = leaf {
|
|
362
|
-
if s == UNDEFMARK && bv.is_noval() {
|
|
363
|
-
return None;
|
|
364
|
-
}
|
|
365
|
-
if s == EXISTSMARK && !bv.is_nullish() {
|
|
366
|
-
return None;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
if matchval(leaf, &bv) {
|
|
370
|
-
return None;
|
|
371
|
-
}
|
|
372
|
-
Some(format!(
|
|
373
|
-
"{}: {} <=> {}",
|
|
374
|
-
path.join("."),
|
|
375
|
-
stringify(leaf, Some(40), false),
|
|
376
|
-
stringify(&bv, Some(40), false)
|
|
377
|
-
))
|
|
378
|
-
}
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
let mut path = Vec::new();
|
|
382
|
-
rec(check, base, &mut path)
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
// ---- adapters helpers --------------------------------------------------
|
|
386
|
-
|
|
387
|
-
pub fn b(v: bool) -> Value {
|
|
388
|
-
Value::Bool(v)
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
pub fn inject_def_from_value(v: &Value) -> InjectDef {
|
|
392
|
-
let mut d = InjectDef::default();
|
|
393
|
-
if let Value::Map(_) = v {
|
|
394
|
-
let key = vget(v, "key");
|
|
395
|
-
if !key.is_noval() {
|
|
396
|
-
d.key = Some(key);
|
|
397
|
-
}
|
|
398
|
-
let meta = vget(v, "meta");
|
|
399
|
-
if !meta.is_noval() {
|
|
400
|
-
d.meta = Some(meta);
|
|
401
|
-
}
|
|
402
|
-
let base = vget(v, "base");
|
|
403
|
-
if let Value::Str(s) = base {
|
|
404
|
-
d.base = Some(s);
|
|
405
|
-
}
|
|
406
|
-
let dparent = vget(v, "dparent");
|
|
407
|
-
if !dparent.is_noval() {
|
|
408
|
-
d.dparent = Some(dparent);
|
|
409
|
-
}
|
|
410
|
-
let dpath = vget(v, "dpath");
|
|
411
|
-
if let Value::Str(s) = dpath {
|
|
412
|
-
d.dpath = Some(s.split('.').map(|x| x.to_string()).collect());
|
|
413
|
-
} else if let Value::List(l) = &dpath {
|
|
414
|
-
d.dpath = Some(
|
|
415
|
-
l.borrow()
|
|
416
|
-
.iter()
|
|
417
|
-
.map(|x| as_str_opt(x).unwrap_or_default())
|
|
418
|
-
.collect(),
|
|
419
|
-
);
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
d
|
|
423
|
-
}
|
|
424
|
-
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
// VENDORED: @voxgig/sekreto 0.1.2 (typescript/src/provider/Registry.ts)
|
|
2
|
-
// Source: https://github.com/voxgig/sekreto @ 65009cb5758850db767785ab666e71895f86086b
|
|
3
|
-
// License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
|
-
/* Copyright (c) 2025 Voxgig Ltd, MIT License */
|
|
5
|
-
|
|
6
|
-
// THE PROVIDER REGISTRY — the seam that replaced the `makeprovider`
|
|
7
|
-
// switch, and the reason an SDK no longer carries thirteen providers to
|
|
8
|
-
// use two.
|
|
9
|
-
//
|
|
10
|
-
// The switch named every kind in one function, so every kind was
|
|
11
|
-
// statically reachable from `Sekreto` and no bundler could drop one. Its
|
|
12
|
-
// replacement is a map that a provider ADDS ITSELF to. A kind that is
|
|
13
|
-
// never imported is never registered, is never reachable, and is not in
|
|
14
|
-
// the build — which is the whole point.
|
|
15
|
-
//
|
|
16
|
-
// The vocabulary is voxgig/plugin's (docs/design/plugin-providers.md): a
|
|
17
|
-
// provider kind is a plugin `Definition`, a configured provider is an
|
|
18
|
-
// instance addressed by name+tag. What sekreto does NOT route through
|
|
19
|
-
// plugin is the lookup itself: `Provider.lookup` is async, and plugin's
|
|
20
|
-
// dispatch is synchronous by design — twenty ports, many with no
|
|
21
|
-
// async/await. So plugin owns the catalog, the instances and their
|
|
22
|
-
// order; sekreto walks them in each language's own idiom.
|
|
23
|
-
//
|
|
24
|
-
// `define` is the definition's factory: spec in, Provider out. It is
|
|
25
|
-
// separate from the plugin `Definition.define` callback on purpose —
|
|
26
|
-
// this one runs at construction and returns a value, while plugin's runs
|
|
27
|
-
// at load and binds. They are bridged in Catalog.ts.
|
|
28
|
-
|
|
29
|
-
import { Provider, ProviderSpec, SekretoError } from './support'
|
|
30
|
-
|
|
31
|
-
export type ProviderDefinition = {
|
|
32
|
-
/** The `kind` a ProviderSpec names. */
|
|
33
|
-
name: string
|
|
34
|
-
/** What this provider needs of its runtime, so a host can refuse or
|
|
35
|
-
* report before a lookup fails: 'fs', 'fetch', 'crypto', 'process'. */
|
|
36
|
-
needs?: string[]
|
|
37
|
-
/** Build the provider from its declarative spec. */
|
|
38
|
-
define: (spec: ProviderSpec) => Provider
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
const registry: { [kind: string]: ProviderDefinition } = {}
|
|
42
|
-
|
|
43
|
-
/** Register a provider kind. Called by each provider module at import,
|
|
44
|
-
* so importing the module IS installing it. Re-registering the same name
|
|
45
|
-
* replaces it, which is how a host substitutes an implementation. */
|
|
46
|
-
export function register(def: ProviderDefinition): void {
|
|
47
|
-
if (null == def || 'string' !== typeof def.name || '' === def.name) {
|
|
48
|
-
throw new SekretoError('sekreto: invalid provider definition')
|
|
49
|
-
}
|
|
50
|
-
registry[def.name] = def
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export function registered(kind: string): ProviderDefinition | undefined {
|
|
54
|
-
return registry[kind]
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export function kinds(): string[] {
|
|
58
|
-
return Object.keys(registry).sort()
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/** Build a provider from its spec.
|
|
62
|
-
*
|
|
63
|
-
* An UNREGISTERED kind is not the same failure as an unknown one, and the
|
|
64
|
-
* message says which: a kind sekreto has never heard of is a typo, while
|
|
65
|
-
* a known kind that was not imported is the leanness mechanism working as
|
|
66
|
-
* designed and telling you to import it. Collapsing the two was the first
|
|
67
|
-
* thing that made the split confusing to use. */
|
|
68
|
-
export function makeprovider(spec: ProviderSpec): Provider {
|
|
69
|
-
const kind = null == spec ? undefined : (spec as any).kind
|
|
70
|
-
const def = registry[kind as string]
|
|
71
|
-
|
|
72
|
-
if (null == def) {
|
|
73
|
-
throw new SekretoError(
|
|
74
|
-
'sekreto: unknown provider kind: ' + String(kind) +
|
|
75
|
-
' (registered: ' + (kinds().join(', ') || 'none') + ')' +
|
|
76
|
-
(KNOWN.indexOf(String(kind)) < 0 ? '' :
|
|
77
|
-
" - that kind exists but its module was not imported; import" +
|
|
78
|
-
" '@voxgig/sekreto/provider/" + String(kind) + "' to register it"))
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
return def.define(spec)
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/** Every kind this library ships, registered or not. Used only to tell a
|
|
85
|
-
* typo from a module that was not imported. */
|
|
86
|
-
const KNOWN = [
|
|
87
|
-
'env', 'memory', 'dotenv', 'file', 'hashicorp', 'boru',
|
|
88
|
-
'awssecrets', 'awsparams', 'gcpsecrets', 'azuresecrets',
|
|
89
|
-
'onepassword', 'doppler', 'infisical',
|
|
90
|
-
]
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
// VENDORED: @voxgig/sekreto 0.1.2 (typescript/src/provider/http.ts)
|
|
2
|
-
// Source: https://github.com/voxgig/sekreto @ 65009cb5758850db767785ab666e71895f86086b
|
|
3
|
-
// License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
|
-
/* Copyright (c) 2025 Voxgig Ltd, MIT License */
|
|
5
|
-
|
|
6
|
-
import { SekretoError } from './support'
|
|
7
|
-
import { checkaddr } from './addr'
|
|
8
|
-
|
|
9
|
-
// Moved here with fetchjson, its only consumer.
|
|
10
|
-
const HTTP_TIMEOUT_MS = 10000
|
|
11
|
-
|
|
12
|
-
export async function fetchjson(
|
|
13
|
-
method: string,
|
|
14
|
-
url: string,
|
|
15
|
-
headers: Record<string, string>,
|
|
16
|
-
body?: string,
|
|
17
|
-
): Promise<{ status: number; body: any }> {
|
|
18
|
-
let res: Response
|
|
19
|
-
try {
|
|
20
|
-
res = await fetch(url, {
|
|
21
|
-
method,
|
|
22
|
-
headers,
|
|
23
|
-
body,
|
|
24
|
-
// A vault API never legitimately redirects, and a followed redirect
|
|
25
|
-
// carries X-Vault-Token to the redirect's host (and can downgrade
|
|
26
|
-
// https to http), which checkaddr - it only validates the configured
|
|
27
|
-
// address - cannot see. Refuse to follow one.
|
|
28
|
-
redirect: 'error',
|
|
29
|
-
// Bound the wait so an accepted-but-silent endpoint cannot hang the
|
|
30
|
-
// caller (and the app's startup) forever.
|
|
31
|
-
signal: AbortSignal.timeout(HTTP_TIMEOUT_MS),
|
|
32
|
-
})
|
|
33
|
-
} catch (err: any) {
|
|
34
|
-
throw new SekretoError('sekreto: cannot reach ' + url.split('?')[0] + ': ' + err.message)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
let parsed: any = undefined
|
|
38
|
-
try {
|
|
39
|
-
parsed = await res.json()
|
|
40
|
-
} catch (err: any) {
|
|
41
|
-
// A success status promised JSON; a body that does not parse means
|
|
42
|
-
// the store could not answer coherently, and treating it as a miss
|
|
43
|
-
// would fall through to a weaker store. Error statuses may carry
|
|
44
|
-
// any body - they are decided on status alone.
|
|
45
|
-
if (200 === res.status) {
|
|
46
|
-
throw new SekretoError('sekreto: malformed response from ' + url.split('?')[0])
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
return { status: res.status, body: parsed }
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/** HashiCorp Vault.
|
|
54
|
-
*
|
|
55
|
-
* KV v2 (the default): `api.token` reads `{addr}/v1/{mount}/data/api`
|
|
56
|
-
* and takes the `token` field of `data.data`. KV v1 (`kv: 1`) reads
|
|
57
|
-
* `{addr}/v1/{mount}/api` and takes the field of `data`. A 404 means
|
|
58
|
-
* "not here" - a miss - so a vault can sit in a chain with fallbacks.
|
|
59
|
-
*
|
|
60
|
-
* A Vault Enterprise namespace rides the X-Vault-Namespace header, on
|
|
61
|
-
* logins as well as reads.
|
|
62
|
-
*
|
|
63
|
-
* Instead of being handed a token, the provider can log in: Kubernetes
|
|
64
|
-
* auth (the pod's service-account JWT, from its conventional path) or
|
|
65
|
-
* AppRole. A failed login is an error, never a miss - it means this
|
|
66
|
-
* store could not answer at all. */
|