@voxgig/sdkgen 4.8.2 → 4.8.3
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/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/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 +209 -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 +151 -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 +439 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +685 -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 +897 -0
- package/project/.sdk/tm/go/test/omni/util.go +360 -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 +613 -0
- package/project/.sdk/tm/js/test/vendor/omni/util.js +212 -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 +74 -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 +152 -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 +92 -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 +455 -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 +566 -0
- package/project/.sdk/tm/py/test/voxgig_omni/util.py +237 -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/test/primary_utility_test.zig +1 -1
- package/project/.sdk/tm/zig/test/struct_runner.zig +5 -4
- 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
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
// Smoke test for the vendored omni runner ITSELF.
|
|
2
|
+
//
|
|
3
|
+
// A runner that cannot FAIL a bad entry would turn every corpus suite
|
|
4
|
+
// vacuously green, so this pins the failure paths, not just the happy one:
|
|
5
|
+
// a wrong result must be reported, and an expected error that does NOT
|
|
6
|
+
// occur must be reported. It also exercises the whole adapter — the
|
|
7
|
+
// in-memory spec capability, the Json <-> Value bridge, and OmniReport's
|
|
8
|
+
// accumulation — because those are what stand between the vendored engine
|
|
9
|
+
// and the two corpus mains.
|
|
10
|
+
//
|
|
11
|
+
// The Scala peer of tm/java/test/OmniSmokeTest.java, tm/lua/test/
|
|
12
|
+
// omni_smoke_test.lua and tm/ts/test/omni.test.ts. There is no test
|
|
13
|
+
// framework in this target (see model/target/scala.aon), so it is a plain
|
|
14
|
+
// scala-cli main that exits non-zero on failure, like the corpus mains
|
|
15
|
+
// beside it.
|
|
16
|
+
|
|
17
|
+
import voxgig.omni.Json as OJson
|
|
18
|
+
import voxgig.struct.{Noval, VNum, Value}
|
|
19
|
+
|
|
20
|
+
object OmniSmoke {
|
|
21
|
+
|
|
22
|
+
// A minimal in-memory spec: no fixture file, no OMNI block (lenient v0,
|
|
23
|
+
// like the shared corpus). Built in omni's OWN value model - the runner
|
|
24
|
+
// walks nothing else.
|
|
25
|
+
def smokespec(): OJson = OJson.map(
|
|
26
|
+
"primary" -> OJson.map(
|
|
27
|
+
"smoke" -> OJson.map(
|
|
28
|
+
"basic" -> OJson.map(
|
|
29
|
+
"set" -> OJson.list(
|
|
30
|
+
OJson.map("in" -> OJson.num(1), "out" -> OJson.num(2)),
|
|
31
|
+
OJson.map("in" -> OJson.num(41), "out" -> OJson.num(42)))),
|
|
32
|
+
"bad" -> OJson.map(
|
|
33
|
+
"set" -> OJson.list(
|
|
34
|
+
OJson.map("in" -> OJson.num(1), "out" -> OJson.num(999)))),
|
|
35
|
+
"err" -> OJson.map(
|
|
36
|
+
"set" -> OJson.list(
|
|
37
|
+
OJson.map("in" -> OJson.num(0), "err" -> OJson.str("zero refused")))),
|
|
38
|
+
// A single {in, out} node rather than a `set`: the shape the four
|
|
39
|
+
// struct groups OmniRun.compare drives have.
|
|
40
|
+
"node" -> OJson.map("in" -> OJson.num(7), "out" -> OJson.num(7)))))
|
|
41
|
+
|
|
42
|
+
// The subject under test, in this SDK's struct value model - so a pass
|
|
43
|
+
// here also proves the resolver's Json <-> Value bridge round-trips.
|
|
44
|
+
def inc(v: Value): Value = v match {
|
|
45
|
+
case VNum(n) if 0.0 == n => throw new RuntimeException("smoke: zero refused")
|
|
46
|
+
case VNum(n) => VNum(n + 1.0)
|
|
47
|
+
case other => other
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
def identity(v: Value): Value = v
|
|
51
|
+
|
|
52
|
+
private var nfail = 0
|
|
53
|
+
|
|
54
|
+
private def check(what: String, ok: Boolean, detail: String): Unit =
|
|
55
|
+
if (ok) println("ok " + what)
|
|
56
|
+
else { nfail += 1; println("FAIL " + what + " - " + detail) }
|
|
57
|
+
|
|
58
|
+
private def run(name: String, group: String, subject: Value => Value): OmniReport = {
|
|
59
|
+
val report = new OmniReport("")
|
|
60
|
+
val spec = smokespec()
|
|
61
|
+
val run = OmniResolver.section(OmniResolver.makeRunner(spec), spec, "smoke", report)
|
|
62
|
+
run.runset(name, run.group(group))(subject)
|
|
63
|
+
report
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
private def freshrun(section: String, report: OmniReport): OmniRun = {
|
|
67
|
+
val spec = smokespec()
|
|
68
|
+
OmniResolver.section(OmniResolver.makeRunner(spec), spec, section, report)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
def main(args: Array[String]): Unit = {
|
|
72
|
+
// 0. The section and its groups resolve at all.
|
|
73
|
+
val spec = smokespec()
|
|
74
|
+
val resolved =
|
|
75
|
+
OmniResolver.section(OmniResolver.makeRunner(spec), spec, "smoke",
|
|
76
|
+
new OmniReport("")).set("basic")
|
|
77
|
+
check("smoke section resolves", !resolved.isabsent, "primary.smoke did not resolve")
|
|
78
|
+
|
|
79
|
+
// 1. A correct subject passes, and every entry is counted.
|
|
80
|
+
val good = run("smoke.basic", "basic", inc)
|
|
81
|
+
check("runset passes a correct subject", good.failures.isEmpty,
|
|
82
|
+
good.failures.mkString(" | "))
|
|
83
|
+
check("runset counts every entry", 2 == good.passed,
|
|
84
|
+
"expected 2 checks, counted " + good.passed)
|
|
85
|
+
|
|
86
|
+
// 1b. The count is what the ENGINE RAN, not what the spec declares
|
|
87
|
+
// (OmniResolver decision 8). Counted here at the subject, the far
|
|
88
|
+
// side of the engine: a number the engine cannot move is not
|
|
89
|
+
// evidence that the engine ran.
|
|
90
|
+
var calls = 0
|
|
91
|
+
val counted = run("smoke.basic", "basic", v => { calls += 1; inc(v) })
|
|
92
|
+
check("the reported count is what the engine ran",
|
|
93
|
+
2 == calls && calls == counted.passed,
|
|
94
|
+
"the engine invoked the subject " + calls + " times but the report " +
|
|
95
|
+
"counted " + counted.passed + " passes")
|
|
96
|
+
|
|
97
|
+
// 2. A WRONG result is reported. Without this the corpus suites would be
|
|
98
|
+
// vacuously green.
|
|
99
|
+
val bad = run("smoke.bad", "bad", inc)
|
|
100
|
+
check("runset fails a wrong result", bad.failures.nonEmpty,
|
|
101
|
+
"a wrong result went unreported - the corpus suites would be vacuously green")
|
|
102
|
+
check("the failure names the mismatch",
|
|
103
|
+
bad.failures.exists(_.contains("result mismatch")),
|
|
104
|
+
"expected a result mismatch failure, got: " + bad.failures.mkString(" | "))
|
|
105
|
+
check("a failed group counts nothing", 0 == bad.passed,
|
|
106
|
+
"a failed group still counted " + bad.passed + " passes")
|
|
107
|
+
|
|
108
|
+
// 3. An expected error is matched; a MISSING expected error is reported.
|
|
109
|
+
val raised = run("smoke.err", "err", inc)
|
|
110
|
+
check("an expected error is matched", raised.failures.isEmpty,
|
|
111
|
+
raised.failures.mkString(" | "))
|
|
112
|
+
|
|
113
|
+
val missed = run("smoke.err", "err", identity)
|
|
114
|
+
check("a missing expected error fails", missed.failures.nonEmpty,
|
|
115
|
+
"a missing expected error went unreported")
|
|
116
|
+
check("the failure names the missing error",
|
|
117
|
+
missed.failures.exists(_.contains("expected error did not occur")),
|
|
118
|
+
"expected an expected-error failure, got: " + missed.failures.mkString(" | "))
|
|
119
|
+
|
|
120
|
+
// 4. Absence, BOTH kinds (OmniResolver decision 7). Neither is ever a
|
|
121
|
+
// silent pass, and the two are not the same fact.
|
|
122
|
+
//
|
|
123
|
+
// 4a. The section is carried and the GROUP is gone. That is a corpus
|
|
124
|
+
// regression - it must FAIL, because a skip would let the group stop
|
|
125
|
+
// running behind a green banner.
|
|
126
|
+
val gone = new OmniReport("")
|
|
127
|
+
val gonerun = freshrun("smoke", gone)
|
|
128
|
+
gonerun.runset("smoke.nosuch", gonerun.group("nosuch"))(inc)
|
|
129
|
+
check("a group missing from a section this corpus carries fails",
|
|
130
|
+
gone.failures.exists(_.contains("smoke.nosuch")) && 0 == gone.passed,
|
|
131
|
+
"absent group: failures=" + gone.failures.mkString(" | ") +
|
|
132
|
+
" passed=" + gone.passed + " skipped=" + gone.skipped.mkString(","))
|
|
133
|
+
|
|
134
|
+
// 4b. The whole SECTION is missing - a project corpus older than the
|
|
135
|
+
// section (struct.nullsem, fleet-wide). SKIPPED and NAMED, not
|
|
136
|
+
// failed, and never counted as a pass.
|
|
137
|
+
val older = new OmniReport("")
|
|
138
|
+
val olderrun = freshrun("smoke", older)
|
|
139
|
+
olderrun.runset("nosuch.basic", olderrun.group("nosuch", "basic"))(inc)
|
|
140
|
+
check("a group whose whole section is absent is skipped, not passed",
|
|
141
|
+
older.skipped.exists(_.startsWith("nosuch.basic")) && 0 == older.passed &&
|
|
142
|
+
older.failures.isEmpty,
|
|
143
|
+
"absent section: skipped=" + older.skipped.mkString(",") +
|
|
144
|
+
" passed=" + older.passed + " failures=" + older.failures.mkString(" | "))
|
|
145
|
+
|
|
146
|
+
// 4c. `compare` - the single-node groups (merge/basic, inject/basic,
|
|
147
|
+
// transform/basic, walk/log) - is held to the SAME rule. It used to
|
|
148
|
+
// have no guard at all: an absent node became Noval on both sides,
|
|
149
|
+
// fixjson rendered both as NULLMARK, and NULLMARK deep-equals
|
|
150
|
+
// NULLMARK, so three struct groups could stop running and leave a run
|
|
151
|
+
// bit-identical to a healthy one.
|
|
152
|
+
val nonode = new OmniReport("")
|
|
153
|
+
val nonoderun = freshrun("smoke", nonode)
|
|
154
|
+
nonoderun.compare("smoke.nonode", nonoderun.group("nonode"), Noval, Noval)
|
|
155
|
+
check("compare fails an absent single-node group, never passes it",
|
|
156
|
+
nonode.failures.exists(_.contains("smoke.nonode")) && 0 == nonode.passed,
|
|
157
|
+
"absent compare node: failures=" + nonode.failures.mkString(" | ") +
|
|
158
|
+
" passed=" + nonode.passed + " skipped=" + nonode.skipped.mkString(","))
|
|
159
|
+
|
|
160
|
+
// 4d. A node that IS there but carries no in/out pair compares nothing
|
|
161
|
+
// for the same reason, so the shape is checked before the values.
|
|
162
|
+
val hollow = new OmniReport("")
|
|
163
|
+
val hollowrun = freshrun("smoke", hollow)
|
|
164
|
+
hollowrun.compare("smoke.hollow", hollowrun.group("bad"), Noval, Noval)
|
|
165
|
+
check("compare fails a node with no in/out pair",
|
|
166
|
+
hollow.failures.exists(_.contains("no in/out")) && 0 == hollow.passed,
|
|
167
|
+
"hollow compare node: failures=" + hollow.failures.mkString(" | ") +
|
|
168
|
+
" passed=" + hollow.passed)
|
|
169
|
+
|
|
170
|
+
// 4e. And a WELL-FORMED single-node group still passes, so 4c/4d are a
|
|
171
|
+
// guard and not a blanket refusal.
|
|
172
|
+
val onenode = new OmniReport("")
|
|
173
|
+
val onenoderun = freshrun("smoke", onenode)
|
|
174
|
+
onenoderun.compare("smoke.node", onenoderun.group("node"),
|
|
175
|
+
OmniResolver.tostruct(onenoderun.group("node").node.get("out")),
|
|
176
|
+
OmniResolver.tostruct(onenoderun.group("node").node.get("in")))
|
|
177
|
+
check("compare passes a well-formed single-node group",
|
|
178
|
+
onenode.failures.isEmpty && 1 == onenode.passed,
|
|
179
|
+
"single node: failures=" + onenode.failures.mkString(" | ") +
|
|
180
|
+
" passed=" + onenode.passed)
|
|
181
|
+
|
|
182
|
+
// 5. A report that checked NOTHING must fail, not pass: a whole corpus
|
|
183
|
+
// section going missing is exactly how a suite goes vacuously green.
|
|
184
|
+
val empty = new OmniReport("")
|
|
185
|
+
empty.requireran("nothing")
|
|
186
|
+
check("a run that checked nothing fails", empty.failures.nonEmpty,
|
|
187
|
+
"an empty run passed - a missing corpus section would go unnoticed")
|
|
188
|
+
|
|
189
|
+
println("\nOMNI SMOKE FAIL " + nfail)
|
|
190
|
+
if (0 < nfail) System.exit(1)
|
|
191
|
+
}
|
|
192
|
+
}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
// Primary-utility corpus driver.
|
|
2
2
|
//
|
|
3
3
|
// Drives every `primary` section of the shared corpus (../.sdk/test/test.json)
|
|
4
|
-
// through this SDK's utilities, the way the ts reference harness does.
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
4
|
+
// through this SDK's utilities, the way the ts reference harness does.
|
|
5
|
+
//
|
|
6
|
+
// The ENGINE is the vendored @voxgig/omni runner (sdktest/vendor/omni),
|
|
7
|
+
// reached through sdktest/OmniResolver.scala — this file was REWRITTEN IN
|
|
8
|
+
// PLACE by the vendor-tag rollout and keeps its name, so no emitted call site
|
|
9
|
+
// moved. What it still owns is the bridge only this SDK can supply: the
|
|
10
|
+
// corpus Value ADT <-> the SDK's Java-collection world, plus a live Context
|
|
11
|
+
// built from each corpus entry and published back for `match` to read.
|
|
8
12
|
|
|
9
13
|
import voxgig.struct.{clone as sclone, *}
|
|
10
14
|
import SCALAPACKAGE.core.*
|
|
@@ -31,6 +35,8 @@ object PrimaryCorpus {
|
|
|
31
35
|
case VNum(n) =>
|
|
32
36
|
// The corpus writes whole numbers as JSON integers; handing the SDK a
|
|
33
37
|
// Double turned "1" into "1.0" everywhere it reached a URL or header.
|
|
38
|
+
// (omni parses every JSON number as a Double, so the narrowing has to
|
|
39
|
+
// happen on THIS boundary, not the omni one.)
|
|
34
40
|
if (n == Math.floor(n) && !n.isInfinite) java.lang.Long.valueOf(n.toLong)
|
|
35
41
|
else java.lang.Double.valueOf(n)
|
|
36
42
|
case _ => null
|
|
@@ -72,15 +78,22 @@ object PrimaryCorpus {
|
|
|
72
78
|
|
|
73
79
|
// ---- corpus access -----------------------------------------------------
|
|
74
80
|
|
|
75
|
-
|
|
81
|
+
// The whole corpus, and the omni runner built over it. One RunnerPack for
|
|
82
|
+
// the run; a section is resolved from it on demand (omni's own
|
|
83
|
+
// `primary.<name>` lookup, so the section names below ARE the corpus
|
|
84
|
+
// lookup keys).
|
|
85
|
+
private var ALL: voxgig.omni.Json = voxgig.omni.Json.Absent
|
|
86
|
+
private var PACK: voxgig.omni.RunnerPack = null
|
|
87
|
+
private var REPORT: OmniReport = null
|
|
76
88
|
|
|
77
|
-
private def
|
|
89
|
+
private def sectionRun(name: String): OmniRun =
|
|
90
|
+
OmniResolver.section(PACK, ALL, name, REPORT)
|
|
78
91
|
|
|
79
92
|
// makeSpec and prepareAuth read defaults off the CLIENT, as the ts reference
|
|
80
93
|
// does via client.options(), so a section's DEF.setup cannot reach them
|
|
81
94
|
// through ctx.options — those sections get their own client.
|
|
82
|
-
private def sectionSetup(
|
|
83
|
-
|
|
95
|
+
private def sectionSetup(run: OmniRun): Value =
|
|
96
|
+
OmniResolver.tostruct(run.set("DEF", "setup", "a"))
|
|
84
97
|
|
|
85
98
|
// ---- live context from a corpus map ------------------------------------
|
|
86
99
|
|
|
@@ -151,11 +164,17 @@ object PrimaryCorpus {
|
|
|
151
164
|
|
|
152
165
|
// The match reads the corpus map while the utilities mutate the live objects
|
|
153
166
|
// hanging off the context, so without this every ctx.* assertion reads null.
|
|
167
|
+
//
|
|
168
|
+
// The map written here is args(0), which the resolver converts BACK into
|
|
169
|
+
// omni's own argument list after the call — that is why the `match: {ctx:
|
|
170
|
+
// ...}` assertions are retargeted onto `match: {args: {"0": ...}}`
|
|
171
|
+
// (OmniResolver decision 3): omni's Json is an immutable value model, so
|
|
172
|
+
// the copy it keeps in `entry.ctx` can never see these writes.
|
|
154
173
|
private def publishCtx(ctxmap: Value, ctx: Context): Unit = ctxmap match {
|
|
155
174
|
case VMap(m) =>
|
|
156
175
|
if (ctx.spec != null) m.put("spec", specValue(ctx.spec))
|
|
157
176
|
if (ctx.result != null) m.put("result", resultValue(ctx.result))
|
|
158
|
-
if (ctx.response != null) m.put("response", VStr(
|
|
177
|
+
if (ctx.response != null) m.put("response", VStr(OmniResolver.EXISTSMARK))
|
|
159
178
|
case _ =>
|
|
160
179
|
}
|
|
161
180
|
|
|
@@ -191,29 +210,37 @@ object PrimaryCorpus {
|
|
|
191
210
|
|
|
192
211
|
private def argAt(args: Seq[Value], i: Int): Value = if (i < args.length) args(i) else Noval
|
|
193
212
|
|
|
194
|
-
// A section driven with a ctx built from the corpus entry.
|
|
195
|
-
|
|
196
|
-
|
|
213
|
+
// A section driven with a ctx built from the corpus entry. `run.group`
|
|
214
|
+
// rather than `run.set`: the group carries its parent, so a `basic` that
|
|
215
|
+
// has gone missing out of a section this corpus carries FAILS instead of
|
|
216
|
+
// being skipped past (OmniResolver decision 7).
|
|
217
|
+
private def runset(name: String, client: ProjectNameSDK)(f: (Context, Seq[Value]) => Value): Unit = {
|
|
218
|
+
val run = sectionRun(name)
|
|
219
|
+
run.runsetargs(name, run.group("basic")) { args =>
|
|
197
220
|
val ctxmap = argAt(args, 0)
|
|
198
221
|
val ctx = corpusCtx(client, ctxmap)
|
|
199
222
|
val out = f(ctx, args)
|
|
200
223
|
publishCtx(ctxmap, ctx)
|
|
201
224
|
out
|
|
202
|
-
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
203
227
|
|
|
204
228
|
// A section that takes a bare map or explicit args rather than a ctx.
|
|
205
|
-
private def runsetArgs(name: String)(f: Seq[Value] => Value): Unit =
|
|
206
|
-
|
|
229
|
+
private def runsetArgs(name: String)(f: Seq[Value] => Value): Unit = {
|
|
230
|
+
val run = sectionRun(name)
|
|
231
|
+
run.runsetargs(name, run.group("basic"))(f)
|
|
232
|
+
}
|
|
207
233
|
|
|
208
234
|
private def clientFor(name: String, shared: ProjectNameSDK): ProjectNameSDK =
|
|
209
|
-
sectionSetup(name) match {
|
|
235
|
+
sectionSetup(sectionRun(name)) match {
|
|
210
236
|
case m @ VMap(_) => ProjectNameSDK.testSDK(null, jmap(m))
|
|
211
237
|
case _ => shared
|
|
212
238
|
}
|
|
213
239
|
|
|
214
240
|
def run(testfile: String): Int = {
|
|
215
|
-
|
|
216
|
-
|
|
241
|
+
ALL = OmniResolver.loadspec(testfile)
|
|
242
|
+
PACK = OmniResolver.makeRunner(ALL)
|
|
243
|
+
REPORT = new OmniReport("PRIMARY CORPUS: ")
|
|
217
244
|
|
|
218
245
|
val sdk = ProjectNameSDK.testSDK()
|
|
219
246
|
val u = sdk.getUtility()
|
|
@@ -282,7 +309,8 @@ object PrimaryCorpus {
|
|
|
282
309
|
VMap(m)
|
|
283
310
|
}
|
|
284
311
|
|
|
285
|
-
|
|
312
|
+
REPORT.requireran("primary")
|
|
313
|
+
REPORT.finish()
|
|
286
314
|
}
|
|
287
315
|
}
|
|
288
316
|
|
|
Binary file
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
// VENDORED: @voxgig/omni sdk-20260904-1610-0 (scala/src/Json.scala)
|
|
2
|
+
// Source: https://github.com/voxgig/omni @ 8c3e1b573a8d35796f7fc45e3226b977023cabf7 [tag: sdk-20260904-1610-0]
|
|
3
|
+
// License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
|
+
// The omni JSON value model, with a small in-tree parser.
|
|
5
|
+
//
|
|
6
|
+
// The omni runner must be able to test *any* library, and must add no
|
|
7
|
+
// third-party dependencies, so it carries its own JSON support rather than
|
|
8
|
+
// borrowing circe, upickle or the system under test.
|
|
9
|
+
|
|
10
|
+
package voxgig.omni
|
|
11
|
+
|
|
12
|
+
import scala.collection.immutable.ListMap
|
|
13
|
+
|
|
14
|
+
/** A JSON value. `Absent` is the marker for "no value at all", as distinct
|
|
15
|
+
* from `Null`.
|
|
16
|
+
*/
|
|
17
|
+
enum Json:
|
|
18
|
+
case Absent
|
|
19
|
+
case Null
|
|
20
|
+
case Bool(value: Boolean)
|
|
21
|
+
case Num(value: Double)
|
|
22
|
+
case Str(value: String)
|
|
23
|
+
case JList(value: List[Json])
|
|
24
|
+
case JMap(value: ListMap[String, Json])
|
|
25
|
+
|
|
26
|
+
def ismap: Boolean = this match
|
|
27
|
+
case JMap(_) => true
|
|
28
|
+
case _ => false
|
|
29
|
+
|
|
30
|
+
def islist: Boolean = this match
|
|
31
|
+
case JList(_) => true
|
|
32
|
+
case _ => false
|
|
33
|
+
|
|
34
|
+
def isnode: Boolean = ismap || islist
|
|
35
|
+
|
|
36
|
+
def isabsent: Boolean = this match
|
|
37
|
+
case Absent => true
|
|
38
|
+
case _ => false
|
|
39
|
+
|
|
40
|
+
def isnull: Boolean = this match
|
|
41
|
+
case Null => true
|
|
42
|
+
case _ => false
|
|
43
|
+
|
|
44
|
+
def isnone: Boolean = isabsent || isnull
|
|
45
|
+
|
|
46
|
+
def isnum: Boolean = this match
|
|
47
|
+
case Num(_) => true
|
|
48
|
+
case _ => false
|
|
49
|
+
|
|
50
|
+
def isstr: Boolean = this match
|
|
51
|
+
case Str(_) => true
|
|
52
|
+
case _ => false
|
|
53
|
+
|
|
54
|
+
def asnum: Option[Double] = this match
|
|
55
|
+
case Num(value) => Some(value)
|
|
56
|
+
case _ => None
|
|
57
|
+
|
|
58
|
+
def asstr: Option[String] = this match
|
|
59
|
+
case Str(value) => Some(value)
|
|
60
|
+
case _ => None
|
|
61
|
+
|
|
62
|
+
def aslist: Option[List[Json]] = this match
|
|
63
|
+
case JList(value) => Some(value)
|
|
64
|
+
case _ => None
|
|
65
|
+
|
|
66
|
+
def asmap: Option[ListMap[String, Json]] = this match
|
|
67
|
+
case JMap(value) => Some(value)
|
|
68
|
+
case _ => None
|
|
69
|
+
|
|
70
|
+
/** Read a map entry. Returns Absent when missing. */
|
|
71
|
+
def get(key: String): Json = this match
|
|
72
|
+
case JMap(value) => value.getOrElse(key, Absent)
|
|
73
|
+
case _ => Absent
|
|
74
|
+
|
|
75
|
+
/** Is a map key present at all (even with a null value)? */
|
|
76
|
+
def has(key: String): Boolean = this match
|
|
77
|
+
case JMap(value) => value.contains(key)
|
|
78
|
+
case _ => false
|
|
79
|
+
|
|
80
|
+
/** A copy of this map with one entry set. */
|
|
81
|
+
def set(key: String, entry: Json): Json = this match
|
|
82
|
+
case JMap(value) => JMap(value.updated(key, entry))
|
|
83
|
+
case other => other
|
|
84
|
+
|
|
85
|
+
object Json:
|
|
86
|
+
def map(entries: (String, Json)*): Json = JMap(ListMap.from(entries))
|
|
87
|
+
|
|
88
|
+
def list(entries: Json*): Json = JList(entries.toList)
|
|
89
|
+
|
|
90
|
+
def num(value: Double): Json = Num(value)
|
|
91
|
+
|
|
92
|
+
def str(value: String): Json = Str(value)
|
|
93
|
+
|
|
94
|
+
/** Parse JSON text into the omni value model. */
|
|
95
|
+
def parse(text: String): Json =
|
|
96
|
+
val parser = Parser(text)
|
|
97
|
+
parser.skipws()
|
|
98
|
+
val value = parser.value()
|
|
99
|
+
parser.skipws()
|
|
100
|
+
if !parser.done then throw OmniError(s"omni: trailing JSON content at ${parser.pos}")
|
|
101
|
+
value
|
|
102
|
+
|
|
103
|
+
private class Parser(val text: String):
|
|
104
|
+
var pos: Int = 0
|
|
105
|
+
|
|
106
|
+
def done: Boolean = pos >= text.length
|
|
107
|
+
|
|
108
|
+
def skipws(): Unit =
|
|
109
|
+
while !done && (text(pos) == ' ' || text(pos) == '\t' || text(pos) == '\n' || text(pos) == '\r')
|
|
110
|
+
do pos += 1
|
|
111
|
+
|
|
112
|
+
def value(): Json =
|
|
113
|
+
if done then throw OmniError("omni: unexpected end of JSON")
|
|
114
|
+
|
|
115
|
+
text(pos) match
|
|
116
|
+
case '{' => mapval()
|
|
117
|
+
case '[' => listval()
|
|
118
|
+
case '"' => Json.Str(strval())
|
|
119
|
+
case 't' => word("true"); Json.Bool(true)
|
|
120
|
+
case 'f' => word("false"); Json.Bool(false)
|
|
121
|
+
case 'n' => word("null"); Json.Null
|
|
122
|
+
case _ => numval()
|
|
123
|
+
|
|
124
|
+
def word(want: String): Unit =
|
|
125
|
+
if !text.startsWith(want, pos) then throw OmniError(s"omni: bad JSON literal at $pos")
|
|
126
|
+
pos += want.length
|
|
127
|
+
|
|
128
|
+
def mapval(): Json =
|
|
129
|
+
var out = ListMap.empty[String, Json]
|
|
130
|
+
pos += 1 // {
|
|
131
|
+
|
|
132
|
+
skipws()
|
|
133
|
+
if !done && text(pos) == '}' then
|
|
134
|
+
pos += 1
|
|
135
|
+
return Json.JMap(out)
|
|
136
|
+
|
|
137
|
+
var running = true
|
|
138
|
+
while running do
|
|
139
|
+
skipws()
|
|
140
|
+
val key = strval()
|
|
141
|
+
skipws()
|
|
142
|
+
|
|
143
|
+
if done || text(pos) != ':' then throw OmniError(s"omni: expected ':' at $pos")
|
|
144
|
+
pos += 1
|
|
145
|
+
|
|
146
|
+
skipws()
|
|
147
|
+
out = out.updated(key, value())
|
|
148
|
+
skipws()
|
|
149
|
+
|
|
150
|
+
if done then throw OmniError("omni: unterminated JSON object")
|
|
151
|
+
if text(pos) == ',' then pos += 1
|
|
152
|
+
else if text(pos) == '}' then
|
|
153
|
+
pos += 1
|
|
154
|
+
running = false
|
|
155
|
+
else throw OmniError(s"omni: expected ',' or '}' at $pos")
|
|
156
|
+
|
|
157
|
+
Json.JMap(out)
|
|
158
|
+
|
|
159
|
+
def listval(): Json =
|
|
160
|
+
val out = scala.collection.mutable.ListBuffer.empty[Json]
|
|
161
|
+
pos += 1 // [
|
|
162
|
+
|
|
163
|
+
skipws()
|
|
164
|
+
if !done && text(pos) == ']' then
|
|
165
|
+
pos += 1
|
|
166
|
+
return Json.JList(out.toList)
|
|
167
|
+
|
|
168
|
+
var running = true
|
|
169
|
+
while running do
|
|
170
|
+
skipws()
|
|
171
|
+
out += value()
|
|
172
|
+
skipws()
|
|
173
|
+
|
|
174
|
+
if done then throw OmniError("omni: unterminated JSON array")
|
|
175
|
+
if text(pos) == ',' then pos += 1
|
|
176
|
+
else if text(pos) == ']' then
|
|
177
|
+
pos += 1
|
|
178
|
+
running = false
|
|
179
|
+
else throw OmniError(s"omni: expected ',' or ']' at $pos")
|
|
180
|
+
|
|
181
|
+
Json.JList(out.toList)
|
|
182
|
+
|
|
183
|
+
def strval(): String =
|
|
184
|
+
if done || text(pos) != '"' then throw OmniError(s"omni: expected string at $pos")
|
|
185
|
+
pos += 1
|
|
186
|
+
|
|
187
|
+
val out = StringBuilder()
|
|
188
|
+
|
|
189
|
+
while !done do
|
|
190
|
+
val ch = text(pos)
|
|
191
|
+
pos += 1
|
|
192
|
+
|
|
193
|
+
if ch == '"' then return out.toString
|
|
194
|
+
|
|
195
|
+
if ch != '\\' then out.append(ch)
|
|
196
|
+
else
|
|
197
|
+
if done then throw OmniError("omni: unterminated JSON string")
|
|
198
|
+
val escape = text(pos)
|
|
199
|
+
pos += 1
|
|
200
|
+
escape match
|
|
201
|
+
case '"' => out.append('"')
|
|
202
|
+
case '\\' => out.append('\\')
|
|
203
|
+
case '/' => out.append('/')
|
|
204
|
+
case 'b' => out.append('\b')
|
|
205
|
+
case 'f' => out.append('\f')
|
|
206
|
+
case 'n' => out.append('\n')
|
|
207
|
+
case 'r' => out.append('\r')
|
|
208
|
+
case 't' => out.append('\t')
|
|
209
|
+
case 'u' =>
|
|
210
|
+
if pos + 4 > text.length then throw OmniError("omni: bad JSON unicode escape")
|
|
211
|
+
out.append(Integer.parseInt(text.substring(pos, pos + 4), 16).toChar)
|
|
212
|
+
pos += 4
|
|
213
|
+
case other => throw OmniError(s"omni: bad JSON escape [$other] at $pos")
|
|
214
|
+
|
|
215
|
+
throw OmniError("omni: unterminated JSON string")
|
|
216
|
+
|
|
217
|
+
def numval(): Json =
|
|
218
|
+
val start = pos
|
|
219
|
+
|
|
220
|
+
if !done && (text(pos) == '-' || text(pos) == '+') then pos += 1
|
|
221
|
+
|
|
222
|
+
while !done && (text(pos).isDigit || text(pos) == '.' || text(pos) == 'e' ||
|
|
223
|
+
text(pos) == 'E' || text(pos) == '-' || text(pos) == '+')
|
|
224
|
+
do pos += 1
|
|
225
|
+
|
|
226
|
+
val span = text.substring(start, pos)
|
|
227
|
+
span.toDoubleOption match
|
|
228
|
+
case Some(value) => Json.Num(value)
|
|
229
|
+
case None => throw OmniError(s"omni: bad JSON number [$span] at $start")
|