@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
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
package sdktest
|
|
6
6
|
|
|
7
7
|
import (
|
|
8
|
+
"encoding/json"
|
|
8
9
|
"fmt"
|
|
9
10
|
"math"
|
|
10
11
|
"reflect"
|
|
@@ -58,11 +59,11 @@ func TestStructUtility(t *testing.T) {
|
|
|
58
59
|
"getelem": voxgigstruct.GetElem,
|
|
59
60
|
"getprop": voxgigstruct.GetProp,
|
|
60
61
|
|
|
61
|
-
"getpath":
|
|
62
|
-
"haskey":
|
|
63
|
-
"inject":
|
|
64
|
-
"isempty":
|
|
65
|
-
"isfunc":
|
|
62
|
+
"getpath": voxgigstruct.GetPath,
|
|
63
|
+
"haskey": voxgigstruct.HasKey,
|
|
64
|
+
"inject": voxgigstruct.Inject,
|
|
65
|
+
"isempty": voxgigstruct.IsEmpty,
|
|
66
|
+
"isfunc": voxgigstruct.IsFunc,
|
|
66
67
|
|
|
67
68
|
"iskey": voxgigstruct.IsKey,
|
|
68
69
|
"islist": voxgigstruct.IsList,
|
|
@@ -70,18 +71,18 @@ func TestStructUtility(t *testing.T) {
|
|
|
70
71
|
"isnode": voxgigstruct.IsNode,
|
|
71
72
|
"items": voxgigstruct.Items,
|
|
72
73
|
|
|
73
|
-
"joinurl":
|
|
74
|
-
"jsonify":
|
|
75
|
-
"keysof":
|
|
76
|
-
"merge":
|
|
77
|
-
"pad":
|
|
78
|
-
"pathify":
|
|
74
|
+
"joinurl": voxgigstruct.JoinUrl,
|
|
75
|
+
"jsonify": voxgigstruct.Jsonify,
|
|
76
|
+
"keysof": voxgigstruct.KeysOf,
|
|
77
|
+
"merge": voxgigstruct.Merge,
|
|
78
|
+
"pad": voxgigstruct.Pad,
|
|
79
|
+
"pathify": voxgigstruct.Pathify,
|
|
79
80
|
|
|
80
|
-
"select":
|
|
81
|
-
"setpath":
|
|
82
|
-
"size":
|
|
83
|
-
"slice":
|
|
84
|
-
"setprop":
|
|
81
|
+
"select": voxgigstruct.Select,
|
|
82
|
+
"setpath": voxgigstruct.SetPath,
|
|
83
|
+
"size": voxgigstruct.Size,
|
|
84
|
+
"slice": voxgigstruct.Slice,
|
|
85
|
+
"setprop": voxgigstruct.SetProp,
|
|
85
86
|
|
|
86
87
|
"strkey": voxgigstruct.StrKey,
|
|
87
88
|
"stringify": voxgigstruct.Stringify,
|
|
@@ -349,6 +350,53 @@ func TestStructUtility(t *testing.T) {
|
|
|
349
350
|
structRunSet(t, minorSpec["keysof"], voxgigstruct.KeysOf)
|
|
350
351
|
})
|
|
351
352
|
|
|
353
|
+
// The struct.nullsem section: does a PRESENT key holding a JSON null
|
|
354
|
+
// read as "no value"? Opt-in per target (create-sdkgen ships it; an
|
|
355
|
+
// older project corpus may predate it - the skip below says so OUT
|
|
356
|
+
// LOUD rather than passing vacuously). All lanes run {null: false}.
|
|
357
|
+
t.Run("nullsem", func(t *testing.T) {
|
|
358
|
+
nullsemRaw, has := spec["nullsem"]
|
|
359
|
+
if !has {
|
|
360
|
+
t.Skip("corpus predates struct.nullsem - refresh .sdk/test/struct from create-sdkgen")
|
|
361
|
+
}
|
|
362
|
+
nullsemSpec := nullsemRaw.(map[string]any)
|
|
363
|
+
|
|
364
|
+
structRunSetFlags(t, nullsemSpec["getprop"], map[string]bool{"null": false},
|
|
365
|
+
func(v any) any {
|
|
366
|
+
m := v.(map[string]any)
|
|
367
|
+
alt, hasAlt := m["alt"]
|
|
368
|
+
if !hasAlt {
|
|
369
|
+
return voxgigstruct.GetProp(m["val"], m["key"])
|
|
370
|
+
}
|
|
371
|
+
return voxgigstruct.GetProp(m["val"], m["key"], alt)
|
|
372
|
+
})
|
|
373
|
+
|
|
374
|
+
structRunSetFlags(t, nullsemSpec["getelem"], map[string]bool{"null": false},
|
|
375
|
+
func(v any) any {
|
|
376
|
+
m := v.(map[string]any)
|
|
377
|
+
alt, hasAlt := m["alt"]
|
|
378
|
+
if !hasAlt {
|
|
379
|
+
return voxgigstruct.GetElem(m["val"], m["key"])
|
|
380
|
+
}
|
|
381
|
+
return voxgigstruct.GetElem(m["val"], m["key"], alt)
|
|
382
|
+
})
|
|
383
|
+
|
|
384
|
+
structRunSetFlags(t, nullsemSpec["getpath"], map[string]bool{"null": false},
|
|
385
|
+
func(v any) any {
|
|
386
|
+
m := v.(map[string]any)
|
|
387
|
+
return voxgigstruct.GetPath(m["store"], m["path"])
|
|
388
|
+
})
|
|
389
|
+
|
|
390
|
+
structRunSetFlags(t, nullsemSpec["haskey"], map[string]bool{"null": false},
|
|
391
|
+
func(v any) any {
|
|
392
|
+
m := v.(map[string]any)
|
|
393
|
+
return voxgigstruct.HasKey(m["src"], m["key"])
|
|
394
|
+
})
|
|
395
|
+
|
|
396
|
+
structRunSetFlags(t, nullsemSpec["keysof"], map[string]bool{"null": false},
|
|
397
|
+
voxgigstruct.KeysOf)
|
|
398
|
+
})
|
|
399
|
+
|
|
352
400
|
t.Run("minor-filter", func(t *testing.T) {
|
|
353
401
|
checkmap := map[string]func([2]any) bool{
|
|
354
402
|
"gt3": func(n [2]any) bool {
|
|
@@ -1457,3 +1505,262 @@ func IsSameFunc(target any, candidate any) bool {
|
|
|
1457
1505
|
|
|
1458
1506
|
return reflect.ValueOf(target).Pointer() == reflect.ValueOf(candidate).Pointer()
|
|
1459
1507
|
}
|
|
1508
|
+
|
|
1509
|
+
// ---------------------------------------------------------------------
|
|
1510
|
+
// Struct-corpus SUPPORT, retained from the retired struct_runner_test.go
|
|
1511
|
+
// (its engine half is superseded by the vendored omni runner driven
|
|
1512
|
+
// through omniresolver_test.go). The StructSDK below is the client the
|
|
1513
|
+
// runner wraps for the struct sections; NullModifier names struct's own
|
|
1514
|
+
// *voxgigstruct.Injection and so cannot live in the language-neutral
|
|
1515
|
+
// resolver; Fdt/ToJSONString are debug helpers, not runner API.
|
|
1516
|
+
|
|
1517
|
+
type StructUtility struct {
|
|
1518
|
+
IsNode func(val any) bool
|
|
1519
|
+
Clone func(val any) any
|
|
1520
|
+
CloneFlags func(val any, flags map[string]bool) any
|
|
1521
|
+
GetPath func(store any, path any, injdefs ...*voxgigstruct.Injection) any
|
|
1522
|
+
Inject func(val any, store any, injdefs ...*voxgigstruct.Injection) any
|
|
1523
|
+
Items func(val any) [][2]any
|
|
1524
|
+
Stringify func(val any, maxlen ...int) string
|
|
1525
|
+
Walk func(val any, apply voxgigstruct.WalkApply, opts ...any) any
|
|
1526
|
+
|
|
1527
|
+
DelProp func(parent any, key any) any
|
|
1528
|
+
EscRe func(s string) string
|
|
1529
|
+
EscUrl func(s string) string
|
|
1530
|
+
Filter func(val any, check func([2]any) bool) []any
|
|
1531
|
+
Flatten func(list any, depths ...int) any
|
|
1532
|
+
GetDef func(val any, alt any) any
|
|
1533
|
+
GetElem func(val any, key any, alts ...any) any
|
|
1534
|
+
GetProp func(val any, key any, alts ...any) any
|
|
1535
|
+
HasKey func(val any, key any) bool
|
|
1536
|
+
IsEmpty func(val any) bool
|
|
1537
|
+
IsFunc func(val any) bool
|
|
1538
|
+
IsKey func(val any) bool
|
|
1539
|
+
IsList func(val any) bool
|
|
1540
|
+
IsMap func(val any) bool
|
|
1541
|
+
Join func(arr []any, args ...any) string
|
|
1542
|
+
Jsonify func(val any, flags ...map[string]any) string
|
|
1543
|
+
KeysOf func(val any) []string
|
|
1544
|
+
Merge func(val any, maxdepths ...int) any
|
|
1545
|
+
Pad func(str any, args ...any) string
|
|
1546
|
+
Pathify func(val any, from ...int) string
|
|
1547
|
+
Select func(children any, query any) []any
|
|
1548
|
+
SetPath func(store any, path any, val any, injdefs ...map[string]any) any
|
|
1549
|
+
SetProp func(parent any, key any, newval any) any
|
|
1550
|
+
Size func(val any) int
|
|
1551
|
+
Slice func(val any, args ...any) any
|
|
1552
|
+
StrKey func(key any) string
|
|
1553
|
+
Transform func(data any, spec any, injdefs ...*voxgigstruct.Injection) (any, error)
|
|
1554
|
+
Typify func(value any) int
|
|
1555
|
+
Typename func(t int) string
|
|
1556
|
+
Validate func(data any, spec any, injdefs ...*voxgigstruct.Injection) (any, error)
|
|
1557
|
+
|
|
1558
|
+
SKIP any
|
|
1559
|
+
DELETE any
|
|
1560
|
+
|
|
1561
|
+
Jm func(kv ...any) map[string]any
|
|
1562
|
+
Jt func(v ...any) []any
|
|
1563
|
+
|
|
1564
|
+
CheckPlacement func(modes int, ijname string, parentTypes int, inj *voxgigstruct.Injection) bool
|
|
1565
|
+
InjectorArgs func(argTypes []int, args []any) []any
|
|
1566
|
+
InjectChild func(child any, store any, inj *voxgigstruct.Injection) *voxgigstruct.Injection
|
|
1567
|
+
}
|
|
1568
|
+
|
|
1569
|
+
func NullModifier(
|
|
1570
|
+
val any,
|
|
1571
|
+
key any,
|
|
1572
|
+
parent any,
|
|
1573
|
+
inj *voxgigstruct.Injection,
|
|
1574
|
+
store any,
|
|
1575
|
+
) {
|
|
1576
|
+
switch v := val.(type) {
|
|
1577
|
+
case string:
|
|
1578
|
+
if NULLMARK == v {
|
|
1579
|
+
_ = voxgigstruct.SetProp(parent, key, nil)
|
|
1580
|
+
} else if UNDEFMARK == v {
|
|
1581
|
+
_ = voxgigstruct.SetProp(parent, key, nil)
|
|
1582
|
+
} else if EXISTSMARK == v {
|
|
1583
|
+
// For EXISTSMARK, no transform needed
|
|
1584
|
+
} else {
|
|
1585
|
+
_ = voxgigstruct.SetProp(parent, key,
|
|
1586
|
+
strings.ReplaceAll(v, NULLMARK, "null"))
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
func Fdt(data any) string {
|
|
1592
|
+
return fdti(data, "")
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
func fdti(data any, indent string) string {
|
|
1596
|
+
result := ""
|
|
1597
|
+
|
|
1598
|
+
switch v := data.(type) {
|
|
1599
|
+
case map[string]any:
|
|
1600
|
+
result += indent + "{\n"
|
|
1601
|
+
for key, value := range v {
|
|
1602
|
+
result += fmt.Sprintf("%s \"%s\": %s", indent, key, fdti(value, indent+" "))
|
|
1603
|
+
}
|
|
1604
|
+
result += indent + "}\n"
|
|
1605
|
+
|
|
1606
|
+
case []any:
|
|
1607
|
+
result += indent + "[\n"
|
|
1608
|
+
for _, value := range v {
|
|
1609
|
+
result += fmt.Sprintf("%s - %s", indent, fdti(value, indent+" "))
|
|
1610
|
+
}
|
|
1611
|
+
result += indent + "]\n"
|
|
1612
|
+
|
|
1613
|
+
default:
|
|
1614
|
+
result += fmt.Sprintf("%v (%s)\n", v, reflect.TypeOf(v))
|
|
1615
|
+
}
|
|
1616
|
+
|
|
1617
|
+
return result
|
|
1618
|
+
}
|
|
1619
|
+
|
|
1620
|
+
func ToJSONString(data any) string {
|
|
1621
|
+
jsonBytes, err := json.Marshal(data)
|
|
1622
|
+
if err != nil {
|
|
1623
|
+
return ""
|
|
1624
|
+
}
|
|
1625
|
+
return string(jsonBytes)
|
|
1626
|
+
}
|
|
1627
|
+
|
|
1628
|
+
// StructSDK is the test SDK client for the struct runner
|
|
1629
|
+
type StructSDK struct {
|
|
1630
|
+
opts map[string]any
|
|
1631
|
+
utility *StructSDKUtility
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
// StructSDKUtility is the utility container the resolver reaches by
|
|
1635
|
+
// reflection (Struct / Contextify / Check).
|
|
1636
|
+
type StructSDKUtility struct {
|
|
1637
|
+
sdk *StructSDK
|
|
1638
|
+
structu *StructUtility
|
|
1639
|
+
}
|
|
1640
|
+
|
|
1641
|
+
// Struct returns the StructUtility
|
|
1642
|
+
func (u *StructSDKUtility) Struct() *StructUtility {
|
|
1643
|
+
return u.structu
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
// Contextify implements the contextify function
|
|
1647
|
+
func (u *StructSDKUtility) Contextify(ctxmap map[string]any) map[string]any {
|
|
1648
|
+
return ctxmap
|
|
1649
|
+
}
|
|
1650
|
+
|
|
1651
|
+
// Check implements the check function
|
|
1652
|
+
func (u *StructSDKUtility) Check(ctx map[string]any) map[string]any {
|
|
1653
|
+
zed := "ZED"
|
|
1654
|
+
if u.sdk.opts != nil {
|
|
1655
|
+
if foo, ok := u.sdk.opts["foo"]; ok && foo != nil {
|
|
1656
|
+
zed += fmt.Sprint(foo)
|
|
1657
|
+
}
|
|
1658
|
+
}
|
|
1659
|
+
zed += "_"
|
|
1660
|
+
|
|
1661
|
+
if ctx == nil {
|
|
1662
|
+
zed += "0"
|
|
1663
|
+
} else if meta, ok := ctx["meta"].(map[string]any); ok && meta != nil {
|
|
1664
|
+
if bar, ok := meta["bar"]; ok && bar != nil {
|
|
1665
|
+
zed += fmt.Sprint(bar)
|
|
1666
|
+
} else {
|
|
1667
|
+
zed += "0"
|
|
1668
|
+
}
|
|
1669
|
+
} else {
|
|
1670
|
+
zed += "0"
|
|
1671
|
+
}
|
|
1672
|
+
|
|
1673
|
+
return map[string]any{
|
|
1674
|
+
"zed": zed,
|
|
1675
|
+
}
|
|
1676
|
+
}
|
|
1677
|
+
|
|
1678
|
+
// NewStructSDK creates a new StructSDK instance with the given options
|
|
1679
|
+
func NewStructSDK(opts map[string]any) *StructSDK {
|
|
1680
|
+
if opts == nil {
|
|
1681
|
+
opts = map[string]any{}
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1684
|
+
sdk := &StructSDK{
|
|
1685
|
+
opts: opts,
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1688
|
+
// Create the StructUtility
|
|
1689
|
+
structUtil := &StructUtility{
|
|
1690
|
+
IsNode: voxgigstruct.IsNode,
|
|
1691
|
+
Clone: voxgigstruct.Clone,
|
|
1692
|
+
CloneFlags: voxgigstruct.CloneFlags,
|
|
1693
|
+
GetPath: voxgigstruct.GetPath,
|
|
1694
|
+
Inject: voxgigstruct.Inject,
|
|
1695
|
+
Items: voxgigstruct.Items,
|
|
1696
|
+
Stringify: voxgigstruct.Stringify,
|
|
1697
|
+
Walk: voxgigstruct.Walk,
|
|
1698
|
+
|
|
1699
|
+
DelProp: voxgigstruct.DelProp,
|
|
1700
|
+
EscRe: voxgigstruct.EscRe,
|
|
1701
|
+
EscUrl: voxgigstruct.EscUrl,
|
|
1702
|
+
Filter: voxgigstruct.Filter,
|
|
1703
|
+
Flatten: voxgigstruct.Flatten,
|
|
1704
|
+
GetDef: voxgigstruct.GetDef,
|
|
1705
|
+
GetElem: voxgigstruct.GetElem,
|
|
1706
|
+
GetProp: voxgigstruct.GetProp,
|
|
1707
|
+
HasKey: voxgigstruct.HasKey,
|
|
1708
|
+
IsEmpty: voxgigstruct.IsEmpty,
|
|
1709
|
+
IsFunc: voxgigstruct.IsFunc,
|
|
1710
|
+
IsKey: voxgigstruct.IsKey,
|
|
1711
|
+
IsList: voxgigstruct.IsList,
|
|
1712
|
+
IsMap: voxgigstruct.IsMap,
|
|
1713
|
+
Join: voxgigstruct.Join,
|
|
1714
|
+
Jsonify: voxgigstruct.Jsonify,
|
|
1715
|
+
KeysOf: voxgigstruct.KeysOf,
|
|
1716
|
+
Merge: voxgigstruct.Merge,
|
|
1717
|
+
Pad: voxgigstruct.Pad,
|
|
1718
|
+
Pathify: voxgigstruct.Pathify,
|
|
1719
|
+
Select: voxgigstruct.Select,
|
|
1720
|
+
SetPath: voxgigstruct.SetPath,
|
|
1721
|
+
SetProp: voxgigstruct.SetProp,
|
|
1722
|
+
Size: voxgigstruct.Size,
|
|
1723
|
+
Slice: voxgigstruct.Slice,
|
|
1724
|
+
StrKey: voxgigstruct.StrKey,
|
|
1725
|
+
Transform: voxgigstruct.Transform,
|
|
1726
|
+
Typify: voxgigstruct.Typify,
|
|
1727
|
+
Typename: voxgigstruct.Typename,
|
|
1728
|
+
Validate: voxgigstruct.Validate,
|
|
1729
|
+
|
|
1730
|
+
SKIP: voxgigstruct.SKIP,
|
|
1731
|
+
DELETE: voxgigstruct.DELETE,
|
|
1732
|
+
|
|
1733
|
+
Jm: voxgigstruct.Jm,
|
|
1734
|
+
Jt: voxgigstruct.Jt,
|
|
1735
|
+
|
|
1736
|
+
CheckPlacement: voxgigstruct.CheckPlacement,
|
|
1737
|
+
InjectorArgs: voxgigstruct.InjectorArgs,
|
|
1738
|
+
InjectChild: voxgigstruct.InjectChild,
|
|
1739
|
+
}
|
|
1740
|
+
|
|
1741
|
+
// Create the utility
|
|
1742
|
+
sdk.utility = &StructSDKUtility{
|
|
1743
|
+
sdk: sdk,
|
|
1744
|
+
structu: structUtil,
|
|
1745
|
+
}
|
|
1746
|
+
|
|
1747
|
+
return sdk
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1750
|
+
// MakeTestStructSDK creates a new StructSDK instance for testing
|
|
1751
|
+
func MakeTestStructSDK(opts map[string]any) (*StructSDK, error) {
|
|
1752
|
+
return NewStructSDK(opts), nil
|
|
1753
|
+
}
|
|
1754
|
+
|
|
1755
|
+
// Tester creates a new StructSDK instance with options or default options
|
|
1756
|
+
func (s *StructSDK) Tester(opts map[string]any) (*StructSDK, error) {
|
|
1757
|
+
if opts == nil {
|
|
1758
|
+
opts = s.opts
|
|
1759
|
+
}
|
|
1760
|
+
return NewStructSDK(opts), nil
|
|
1761
|
+
}
|
|
1762
|
+
|
|
1763
|
+
// Utility returns the utility object
|
|
1764
|
+
func (s *StructSDK) Utility() *StructSDKUtility {
|
|
1765
|
+
return s.utility
|
|
1766
|
+
}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
// SDK test SUPPORT: the helpers the generated entity/direct tests and the
|
|
2
|
+
// corpus call sites share - env loading, the sdk-test-control.json skip and
|
|
3
|
+
// pacing machinery, corpus access, and entity-data conversion.
|
|
4
|
+
//
|
|
5
|
+
// Split out of the retired runner_test.go (vendor-tag rollout: the corpus
|
|
6
|
+
// ENGINE half of that file is superseded by the vendored omni runner driven
|
|
7
|
+
// through the resolver in omniresolver_test.go; this support half is
|
|
8
|
+
// retained). Same package, same names - the emitted call sites did not move.
|
|
9
|
+
|
|
10
|
+
package sdktest
|
|
11
|
+
|
|
12
|
+
import (
|
|
13
|
+
"encoding/json"
|
|
14
|
+
"os"
|
|
15
|
+
"path/filepath"
|
|
16
|
+
"runtime"
|
|
17
|
+
"strings"
|
|
18
|
+
"sync"
|
|
19
|
+
"testing"
|
|
20
|
+
|
|
21
|
+
sdk "GOMODULE"
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
var envLocalOnce sync.Once
|
|
25
|
+
|
|
26
|
+
func loadEnvLocal() {
|
|
27
|
+
envLocalOnce.Do(func() {
|
|
28
|
+
_, filename, _, _ := runtime.Caller(0)
|
|
29
|
+
dir := filepath.Dir(filename)
|
|
30
|
+
envFile := filepath.Join(dir, "..", "..", ".env.local")
|
|
31
|
+
|
|
32
|
+
data, err := os.ReadFile(envFile)
|
|
33
|
+
if err != nil {
|
|
34
|
+
return
|
|
35
|
+
}
|
|
36
|
+
for _, line := range strings.Split(string(data), "\n") {
|
|
37
|
+
line = strings.TrimSpace(line)
|
|
38
|
+
if line == "" || strings.HasPrefix(line, "#") {
|
|
39
|
+
continue
|
|
40
|
+
}
|
|
41
|
+
parts := strings.SplitN(line, "=", 2)
|
|
42
|
+
if len(parts) == 2 {
|
|
43
|
+
key := strings.TrimSpace(parts[0])
|
|
44
|
+
val := strings.TrimSpace(parts[1])
|
|
45
|
+
os.Setenv(key, val)
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
func envOverride(m map[string]any) map[string]any {
|
|
52
|
+
if os.Getenv("PROJECTENV_TEST_LIVE") == "TRUE" ||
|
|
53
|
+
os.Getenv("PROJECTENV_TEST_OVERRIDE") == "TRUE" {
|
|
54
|
+
for key := range m {
|
|
55
|
+
envval := os.Getenv(key)
|
|
56
|
+
if envval != "" {
|
|
57
|
+
envval = strings.TrimSpace(envval)
|
|
58
|
+
if strings.HasPrefix(envval, "{") {
|
|
59
|
+
var parsed any
|
|
60
|
+
if err := json.Unmarshal([]byte(envval), &parsed); err == nil {
|
|
61
|
+
m[key] = parsed
|
|
62
|
+
continue
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
m[key] = envval
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if explain := os.Getenv("PROJECTENV_TEST_EXPLAIN"); explain != "" {
|
|
71
|
+
m["PROJECTENV_TEST_EXPLAIN"] = explain
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return m
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
type entityTestSetup struct {
|
|
78
|
+
client *sdk.ProjectNameSDK
|
|
79
|
+
data map[string]any
|
|
80
|
+
idmap map[string]any
|
|
81
|
+
env map[string]any
|
|
82
|
+
explain bool
|
|
83
|
+
live bool
|
|
84
|
+
syntheticOnly bool
|
|
85
|
+
now int64
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
var (
|
|
89
|
+
cachedTestControl map[string]any
|
|
90
|
+
cachedTestControlOnce sync.Once
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
// loadTestControl reads sdk-test-control.json from this test dir; caches
|
|
94
|
+
// after first read. Returns an empty-skip default if the file is missing
|
|
95
|
+
// or invalid so tests never crash on a bad config.
|
|
96
|
+
func loadTestControl() map[string]any {
|
|
97
|
+
cachedTestControlOnce.Do(func() {
|
|
98
|
+
_, filename, _, _ := runtime.Caller(0)
|
|
99
|
+
dir := filepath.Dir(filename)
|
|
100
|
+
ctrlPath := filepath.Join(dir, "sdk-test-control.json")
|
|
101
|
+
def := map[string]any{
|
|
102
|
+
"version": 1,
|
|
103
|
+
"test": map[string]any{"skip": map[string]any{
|
|
104
|
+
"live": map[string]any{"direct": []any{}, "entityOp": []any{}},
|
|
105
|
+
"unit": map[string]any{"direct": []any{}, "entityOp": []any{}},
|
|
106
|
+
}},
|
|
107
|
+
}
|
|
108
|
+
data, err := os.ReadFile(ctrlPath)
|
|
109
|
+
if err != nil {
|
|
110
|
+
cachedTestControl = def
|
|
111
|
+
return
|
|
112
|
+
}
|
|
113
|
+
var parsed map[string]any
|
|
114
|
+
if err := json.Unmarshal(data, &parsed); err != nil {
|
|
115
|
+
cachedTestControl = def
|
|
116
|
+
return
|
|
117
|
+
}
|
|
118
|
+
cachedTestControl = parsed
|
|
119
|
+
})
|
|
120
|
+
return cachedTestControl
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// isControlSkipped checks sdk-test-control.json for a skip entry.
|
|
124
|
+
// Returns (skip, reason).
|
|
125
|
+
func isControlSkipped(kind, name, mode string) (bool, string) {
|
|
126
|
+
ctrl := loadTestControl()
|
|
127
|
+
test, _ := ctrl["test"].(map[string]any)
|
|
128
|
+
if test == nil {
|
|
129
|
+
return false, ""
|
|
130
|
+
}
|
|
131
|
+
skip, _ := test["skip"].(map[string]any)
|
|
132
|
+
if skip == nil {
|
|
133
|
+
return false, ""
|
|
134
|
+
}
|
|
135
|
+
modeMap, _ := skip[mode].(map[string]any)
|
|
136
|
+
if modeMap == nil {
|
|
137
|
+
return false, ""
|
|
138
|
+
}
|
|
139
|
+
items, _ := modeMap[kind].([]any)
|
|
140
|
+
for _, raw := range items {
|
|
141
|
+
item, _ := raw.(map[string]any)
|
|
142
|
+
if item == nil {
|
|
143
|
+
continue
|
|
144
|
+
}
|
|
145
|
+
reason, _ := item["reason"].(string)
|
|
146
|
+
if kind == "direct" {
|
|
147
|
+
if t, _ := item["test"].(string); t == name {
|
|
148
|
+
return true, reason
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if kind == "entityOp" {
|
|
152
|
+
ent, _ := item["entity"].(string)
|
|
153
|
+
op, _ := item["op"].(string)
|
|
154
|
+
if ent+"."+op == name {
|
|
155
|
+
return true, reason
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return false, ""
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// liveDelayMs returns the configured per-test live delay in ms; default 500.
|
|
163
|
+
// liveClientOptions returns the extra SDK options every LIVE client is
|
|
164
|
+
// constructed with, from sdk-test-control.json `test.client.options`.
|
|
165
|
+
//
|
|
166
|
+
// The generated live client knows two things: the base URL (from the spec)
|
|
167
|
+
// and the credential (from the environment). Everything else about how a
|
|
168
|
+
// particular API wants to be talked to - which features to switch on, and
|
|
169
|
+
// with what settings - is a property of THAT API, known to the project and
|
|
170
|
+
// to nothing in the toolchain.
|
|
171
|
+
//
|
|
172
|
+
// Merged UNDER the generated fields, so the suite's own base/apikey/server
|
|
173
|
+
// values win: this ADDS to the live client, it does not redirect it.
|
|
174
|
+
//
|
|
175
|
+
// That contract is enforced HERE rather than left to each merge site: the
|
|
176
|
+
// generated map only names a field when the model calls for one, so a
|
|
177
|
+
// "base" in this block would face no competing value and would silently
|
|
178
|
+
// redirect the whole suite - credential included - to another host.
|
|
179
|
+
var liveReserved = map[string]bool{
|
|
180
|
+
"base": true, "prefix": true, "suffix": true,
|
|
181
|
+
"server": true, "apikey": true, "secret": true,
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
func liveClientOptions() map[string]any {
|
|
185
|
+
ctrl := loadTestControl()
|
|
186
|
+
test, _ := ctrl["test"].(map[string]any)
|
|
187
|
+
if test == nil {
|
|
188
|
+
return map[string]any{}
|
|
189
|
+
}
|
|
190
|
+
client, _ := test["client"].(map[string]any)
|
|
191
|
+
if client == nil {
|
|
192
|
+
return map[string]any{}
|
|
193
|
+
}
|
|
194
|
+
opts, _ := client["options"].(map[string]any)
|
|
195
|
+
if opts == nil {
|
|
196
|
+
return map[string]any{}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
out := map[string]any{}
|
|
200
|
+
for k, v := range opts {
|
|
201
|
+
if !liveReserved[k] {
|
|
202
|
+
out[k] = v
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return out
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
func liveDelayMs() int {
|
|
209
|
+
ctrl := loadTestControl()
|
|
210
|
+
test, _ := ctrl["test"].(map[string]any)
|
|
211
|
+
if test == nil {
|
|
212
|
+
return 500
|
|
213
|
+
}
|
|
214
|
+
live, _ := test["live"].(map[string]any)
|
|
215
|
+
if live == nil {
|
|
216
|
+
return 500
|
|
217
|
+
}
|
|
218
|
+
switch v := live["delayMs"].(type) {
|
|
219
|
+
case float64:
|
|
220
|
+
if v >= 0 {
|
|
221
|
+
return int(v)
|
|
222
|
+
}
|
|
223
|
+
case int:
|
|
224
|
+
if v >= 0 {
|
|
225
|
+
return v
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return 500
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
var cachedTestSpec map[string]any
|
|
232
|
+
|
|
233
|
+
func loadTestSpec(t *testing.T) map[string]any {
|
|
234
|
+
t.Helper()
|
|
235
|
+
if cachedTestSpec != nil {
|
|
236
|
+
return cachedTestSpec
|
|
237
|
+
}
|
|
238
|
+
data, err := os.ReadFile("../../.sdk/test/test.json")
|
|
239
|
+
if err != nil {
|
|
240
|
+
t.Fatalf("Failed to load test.json: %v", err)
|
|
241
|
+
}
|
|
242
|
+
var spec map[string]any
|
|
243
|
+
if err := json.Unmarshal(data, &spec); err != nil {
|
|
244
|
+
t.Fatalf("Failed to parse test.json: %v", err)
|
|
245
|
+
}
|
|
246
|
+
cachedTestSpec = spec
|
|
247
|
+
return spec
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
func getSpec(spec map[string]any, keys ...string) map[string]any {
|
|
251
|
+
var cur any = spec
|
|
252
|
+
for _, key := range keys {
|
|
253
|
+
if m, ok := cur.(map[string]any); ok {
|
|
254
|
+
cur = m[key]
|
|
255
|
+
} else {
|
|
256
|
+
return nil
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
if m, ok := cur.(map[string]any); ok {
|
|
260
|
+
return m
|
|
261
|
+
}
|
|
262
|
+
return nil
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// entityData extracts the data map from an op result.
|
|
266
|
+
//
|
|
267
|
+
// Every entity operation resolves to the ENTITY (see AGENTS.md), so a flow
|
|
268
|
+
// test that wants the record takes this hop. A plain map passes through
|
|
269
|
+
// unchanged, so this is safe for the direct/prepare results too.
|
|
270
|
+
func entityData(v any) any {
|
|
271
|
+
if ent, ok := v.(sdk.Entity); ok {
|
|
272
|
+
return ent.Data()
|
|
273
|
+
}
|
|
274
|
+
return v
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// entityListToData extracts data maps from a list of Entity objects.
|
|
278
|
+
func entityListToData(list []any) []any {
|
|
279
|
+
var out []any
|
|
280
|
+
for _, item := range list {
|
|
281
|
+
if ent, ok := item.(sdk.Entity); ok {
|
|
282
|
+
d := ent.Data()
|
|
283
|
+
if dm, ok := d.(map[string]any); ok {
|
|
284
|
+
out = append(out, dm)
|
|
285
|
+
}
|
|
286
|
+
} else if m, ok := item.(map[string]any); ok {
|
|
287
|
+
out = append(out, m)
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if out == nil {
|
|
291
|
+
out = []any{}
|
|
292
|
+
}
|
|
293
|
+
return out
|
|
294
|
+
}
|
|
@@ -122,7 +122,14 @@ func makeOptionsUtil(ctx *core.Context) map[string]any {
|
|
|
122
122
|
},
|
|
123
123
|
},
|
|
124
124
|
"utility": map[string]any{},
|
|
125
|
-
|
|
125
|
+
// Feature INSTANCES supplied at construction (the station adopt
|
|
126
|
+
// path): consumed by the constructor's featureAdd loop, so they
|
|
127
|
+
// are class instances, not data - `$ANY` accepts them verbatim.
|
|
128
|
+
// Without this entry the seam is dead: the constructor reads
|
|
129
|
+
// options.extend, but validate rejected the key (mirrors
|
|
130
|
+
// MakeOptionsUtility.ts).
|
|
131
|
+
"extend": "`$ANY`",
|
|
132
|
+
"system": map[string]any{},
|
|
126
133
|
"test": map[string]any{
|
|
127
134
|
"active": false,
|
|
128
135
|
"entity": map[string]any{
|
|
@@ -30,5 +30,9 @@ func prepareMethodUtil(ctx *core.Context) string {
|
|
|
30
30
|
if m, ok := methodMap[opname]; ok {
|
|
31
31
|
return m
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
|
|
34
|
+
// An op the API does not define resolves NO method - ts answers
|
|
35
|
+
// undefined here, and "" is go's spelling of the same "no value"
|
|
36
|
+
// (the corpus pins this via primary.prepareMethod).
|
|
37
|
+
return ""
|
|
34
38
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
// VENDORED: @voxgig/struct 0.1.
|
|
2
|
-
// Source: https://github.com/voxgig/struct @
|
|
1
|
+
// VENDORED: @voxgig/struct 0.1.0 (go/voxgigstruct.go)
|
|
2
|
+
// Source: https://github.com/voxgig/struct @ 2caf7f448f265144c18dd6fab6ba270a7f3bca07 [tag: sdk-20260904-1610-0]
|
|
3
3
|
// License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
4
|
/* Copyright (c) 2025 Voxgig Ltd. MIT LICENSE. */
|
|
5
5
|
|