@voxgig/sdkgen 4.8.2 → 4.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/voxgig-sdkgen +1 -1
- package/dist/action/doctor.d.ts +1 -0
- package/dist/action/doctor.js +50 -2
- package/dist/action/doctor.js.map +1 -1
- package/dist/helpers/naming.js +4 -2
- package/dist/helpers/naming.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/model/sdkgen.aon +21 -0
- package/package.json +1 -1
- package/project/.sdk/model/feature/secrets.aon +120 -18
- package/project/.sdk/model/target/c.aon +10 -0
- package/project/.sdk/model/target/clojure.aon +13 -0
- package/project/.sdk/model/target/cpp.aon +10 -0
- package/project/.sdk/model/target/csharp.aon +9 -0
- package/project/.sdk/model/target/dart.aon +10 -0
- package/project/.sdk/model/target/elixir.aon +9 -0
- package/project/.sdk/model/target/go.aon +13 -0
- package/project/.sdk/model/target/java.aon +9 -0
- package/project/.sdk/model/target/js.aon +7 -0
- package/project/.sdk/model/target/kotlin.aon +9 -0
- package/project/.sdk/model/target/lean.aon +17 -0
- package/project/.sdk/model/target/lua.aon +8 -0
- package/project/.sdk/model/target/ocaml.aon +9 -0
- package/project/.sdk/model/target/perl.aon +8 -0
- package/project/.sdk/model/target/php.aon +8 -0
- package/project/.sdk/model/target/py.aon +13 -0
- package/project/.sdk/model/target/rb.aon +8 -0
- package/project/.sdk/model/target/rust.aon +10 -0
- package/project/.sdk/model/target/scala.aon +21 -2
- package/project/.sdk/model/target/swift.aon +18 -0
- package/project/.sdk/model/target/ts.aon +13 -0
- package/project/.sdk/model/target/zig.aon +9 -0
- package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
- package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
- package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
- package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
- package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
- package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
- package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
- package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
- package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
- package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
- package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
- package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
- package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
- package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
- package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
- package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
- package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
- package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
- package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
- package/project/.sdk/src/cmp/zig/Package_zig.ts +15 -11
- package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +3 -3
- package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +3 -3
- package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +3 -3
- package/project/.sdk/src/cmp/zig/utility_zig.ts +50 -1
- package/project/.sdk/tm/c/Makefile +38 -3
- package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
- package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
- package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
- package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
- package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
- package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
- package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
- package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
- package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
- package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
- package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
- package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
- package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
- package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
- package/project/.sdk/tm/cpp/Makefile +5 -1
- package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
- package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
- package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
- package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
- package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
- package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
- package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
- package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
- package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
- package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
- package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
- package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
- package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
- package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
- package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
- package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
- package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
- package/project/.sdk/tm/dart/test/omni.dart +520 -0
- package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
- package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
- package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
- package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
- package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
- package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
- package/project/.sdk/tm/elixir/Makefile +11 -3
- package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
- package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
- package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
- package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
- package/project/.sdk/tm/go/core/context.go +32 -16
- package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
- package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +208 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +150 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
- package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +442 -0
- package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +714 -0
- package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
- package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
- package/project/.sdk/tm/go/test/omni/omni.go +902 -0
- package/project/.sdk/tm/go/test/omni/util.go +381 -0
- package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
- package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
- package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
- package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
- package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
- package/project/.sdk/tm/go/utility/make_options.go +8 -1
- package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
- package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
- package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
- package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
- package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
- package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
- package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
- package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
- package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
- package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
- package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
- package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
- package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
- package/project/.sdk/tm/js/test/omni.js +251 -0
- package/project/.sdk/tm/js/test/omni.test.js +105 -0
- package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
- package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
- package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
- package/project/.sdk/tm/js/test/vendor/omni/runner.js +628 -0
- package/project/.sdk/tm/js/test/vendor/omni/util.js +229 -0
- package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
- package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
- package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
- package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
- package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
- package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
- package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
- package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
- package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
- package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
- package/project/.sdk/tm/lean/Makefile +12 -5
- package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
- package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
- package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
- package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
- package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
- package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
- package/project/.sdk/tm/lua/test/omni.lua +456 -0
- package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
- package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
- package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
- package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
- package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
- package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
- package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
- package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
- package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
- package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
- package/project/.sdk/tm/ocaml/Makefile +37 -12
- package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
- package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
- package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
- package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
- package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
- package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
- package/project/.sdk/tm/perl/t/omni.pm +647 -0
- package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
- package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
- package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
- package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
- package/project/.sdk/tm/php/test/Omni.php +691 -0
- package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
- package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
- package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
- package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
- package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
- package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
- package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
- package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +76 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +151 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +90 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +475 -0
- package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
- package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
- package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
- package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
- package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
- package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
- package/project/.sdk/tm/py/test/omni.py +415 -0
- package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
- package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
- package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
- package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
- package/project/.sdk/tm/py/test/voxgig_omni/runner.py +580 -0
- package/project/.sdk/tm/py/test/voxgig_omni/util.py +252 -0
- package/project/.sdk/tm/rb/test/omni.rb +505 -0
- package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
- package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
- package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
- package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
- package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
- package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
- package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
- package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
- package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
- package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
- package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
- package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
- package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
- package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
- package/project/.sdk/tm/scala/Makefile +16 -6
- package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
- package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
- package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
- package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
- package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
- package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
- package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
- package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
- package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
- package/project/.sdk/tm/ts/test/omni.ts +104 -32
- package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
- package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
- package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
- package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
- package/project/.sdk/tm/zig/Makefile +15 -1
- package/project/.sdk/tm/zig/build.zig +23 -5
- package/project/.sdk/tm/zig/core/helpers.zig +52 -11
- package/project/.sdk/tm/zig/core/mem.zig +17 -1
- package/project/.sdk/tm/zig/core/utility.zig +23 -19
- package/project/.sdk/tm/zig/feature/audit.zig +2 -2
- package/project/.sdk/tm/zig/feature/cache.zig +2 -2
- package/project/.sdk/tm/zig/feature/debug.zig +5 -5
- package/project/.sdk/tm/zig/feature/netsim.zig +2 -2
- package/project/.sdk/tm/zig/feature/paging.zig +2 -2
- package/project/.sdk/tm/zig/feature/proxy.zig +15 -8
- package/project/.sdk/tm/zig/feature/streaming.zig +5 -5
- package/project/.sdk/tm/zig/feature/support.zig +3 -3
- package/project/.sdk/tm/zig/feature/telemetry.zig +5 -5
- package/project/.sdk/tm/zig/feature/test.zig +10 -5
- package/project/.sdk/tm/zig/test/fh.zig +10 -10
- package/project/.sdk/tm/zig/test/gotcha_test.zig +5 -5
- package/project/.sdk/tm/zig/test/omniresolver.zig +515 -0
- package/project/.sdk/tm/zig/test/omnismoke_test.zig +284 -0
- package/project/.sdk/tm/zig/test/pipeline_test.zig +8 -8
- package/project/.sdk/tm/zig/test/primary_utility_test.zig +145 -155
- package/project/.sdk/tm/zig/test/struct_corpus.zig +264 -187
- package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1314 -0
- package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +446 -0
- package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +7 -4
- package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +356 -157
- package/project/sdkgen-package.json +1 -1
- package/src/action/doctor.ts +66 -2
- package/src/helpers/naming.ts +4 -2
- package/project/.sdk/tm/c/tests/runner.h +0 -274
- package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
- package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
- package/project/.sdk/tm/dart/test/runner.dart +0 -406
- package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
- package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
- package/project/.sdk/tm/go/test/runner_test.go +0 -629
- package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
- package/project/.sdk/tm/java/test/StructRunner.java +0 -281
- package/project/.sdk/tm/js/test/runner.js +0 -387
- package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
- package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
- package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
- package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
- package/project/.sdk/tm/php/test/StructRunner.php +0 -275
- package/project/.sdk/tm/py/test/struct_runner.py +0 -411
- package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
- package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
- package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
- package/project/.sdk/tm/zig/test/struct_runner.zig +0 -464
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
// VENDORED: @voxgig/plugin 0.1.6 (go/plugin/types.go)
|
|
2
|
+
// Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
|
|
3
|
+
// License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
|
+
/* Shared types. Deliberately small: the design's §19 budget says the
|
|
5
|
+
* library owns naming, configuration, lifecycle, ordering, binding and
|
|
6
|
+
* teardown, and nothing else.
|
|
7
|
+
*
|
|
8
|
+
* GO IS THE FIRST PORT AND IT CHANGES ONE THING ON PURPOSE (§18, P4):
|
|
9
|
+
* errors are RETURNED, not raised. The canonical raises, and every
|
|
10
|
+
* signature that could fail here returns `error` instead. That is the
|
|
11
|
+
* point of porting Go first — "static-only + typed extension points +
|
|
12
|
+
* explicit errors will find every TypeScript-shaped assumption in the
|
|
13
|
+
* model" — and the corpus compares by CODE, which survives the change
|
|
14
|
+
* intact. */
|
|
15
|
+
|
|
16
|
+
package plugin
|
|
17
|
+
|
|
18
|
+
import (
|
|
19
|
+
"bytes"
|
|
20
|
+
"encoding/json"
|
|
21
|
+
"fmt"
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
// Ref is the two halves of an identity (§4). Tag is "" when absent —
|
|
25
|
+
// never nil and never missing, because a port returning three shapes
|
|
26
|
+
// for two states makes every downstream comparison a special case.
|
|
27
|
+
type Ref struct {
|
|
28
|
+
Name string `json:"name"`
|
|
29
|
+
Tag string `json:"tag"`
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Status is one of §5.1's seven statuses, and no more. A port that adds
|
|
33
|
+
// an eighth is diverging. `loading` and `closing` are observable only
|
|
34
|
+
// from inside a callback or from another thread.
|
|
35
|
+
type Status string
|
|
36
|
+
|
|
37
|
+
const (
|
|
38
|
+
StatusDeclared Status = "declared"
|
|
39
|
+
StatusLoaded Status = "loaded"
|
|
40
|
+
StatusPending Status = "pending"
|
|
41
|
+
StatusLive Status = "live"
|
|
42
|
+
StatusFailed Status = "failed"
|
|
43
|
+
StatusLoading Status = "loading"
|
|
44
|
+
StatusClosing Status = "closing"
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
// OrderBlock is §4.4 of DOCS.md — `band` rather than a nested `order`,
|
|
48
|
+
// because `order.order` needs explaining every time it is read.
|
|
49
|
+
type OrderBlock struct {
|
|
50
|
+
Before OrderRef `json:"before,omitempty"`
|
|
51
|
+
After OrderRef `json:"after,omitempty"`
|
|
52
|
+
Band *int `json:"band,omitempty"`
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// MarshalJSON omits an unstated constraint entirely.
|
|
56
|
+
//
|
|
57
|
+
// `omitempty` does not apply to a struct, so without this an absent
|
|
58
|
+
// `before` serialized as `"before": null` while canonical simply has no
|
|
59
|
+
// key - the same language-dependent shape divergence as emitting a list
|
|
60
|
+
// for an authored scalar, one level up.
|
|
61
|
+
func (block OrderBlock) MarshalJSON() ([]byte, error) {
|
|
62
|
+
out := map[string]any{}
|
|
63
|
+
if block.Before.Stated() {
|
|
64
|
+
out["before"] = block.Before
|
|
65
|
+
}
|
|
66
|
+
if block.After.Stated() {
|
|
67
|
+
out["after"] = block.After
|
|
68
|
+
}
|
|
69
|
+
if nil != block.Band {
|
|
70
|
+
out["band"] = *block.Band
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
// `marshal` for the same reason as OrderRef.MarshalJSON above.
|
|
74
|
+
return marshal(out)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// OrderRef is ONE spelling or a LIST of them.
|
|
78
|
+
//
|
|
79
|
+
// plugin used to type this as a bare string, so a list matched nothing and
|
|
80
|
+
// was SILENTLY DROPPED - the sort came out as if no constraint had been
|
|
81
|
+
// declared. Go could not even represent the input.
|
|
82
|
+
//
|
|
83
|
+
// `raw` is THE AUTHORED VALUE, kept so normalization can hand the block
|
|
84
|
+
// back exactly as written; `List` is the parsed form the sort consumes,
|
|
85
|
+
// and `set` says whether the key was stated at all. Canonical does not
|
|
86
|
+
// need any of this: it never decodes the block, it assigns it (`ent.order
|
|
87
|
+
// = ord`), so every spelling survives untouched. Go is the only port that
|
|
88
|
+
// decodes and rebuilds, and a rebuild silently loses whatever it does not
|
|
89
|
+
// model. That single cause produced four separate parity breaks - the
|
|
90
|
+
// list form, scalar-vs-one-element-list, an authored empty list, an
|
|
91
|
+
// authored null - and the corpus could see none of them until
|
|
92
|
+
// `config/normorder` was written to assert the block's own shape.
|
|
93
|
+
//
|
|
94
|
+
// `set` is deliberately not `0 < len(list)`: an authored `[]` states a
|
|
95
|
+
// constraint that names nothing, which is NOT the same document as an
|
|
96
|
+
// absent key.
|
|
97
|
+
//
|
|
98
|
+
// `raw` is the ONE source of truth and `list` is a derived cache, both
|
|
99
|
+
// unexported. An earlier round exported `List`, which made the value
|
|
100
|
+
// mutable from outside and gave it two sources that could disagree: a
|
|
101
|
+
// caller mutating the slice it passed in changed what marshalled while
|
|
102
|
+
// ResolveOrder kept the old constraint, and editing `List` directly did
|
|
103
|
+
// the reverse. A persisted-then-reloaded config could then order
|
|
104
|
+
// differently from the live one. NewOrderRef is now the only way to build
|
|
105
|
+
// one, it copies what it is given, and Refs() hands back a copy.
|
|
106
|
+
type OrderRef struct {
|
|
107
|
+
raw any
|
|
108
|
+
list []string
|
|
109
|
+
set bool
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Refs is the parsed spellings this ref names, as a copy. Callers get no
|
|
113
|
+
// handle on the ref's own state.
|
|
114
|
+
func (ref OrderRef) Refs() []string {
|
|
115
|
+
out := make([]string, len(ref.list))
|
|
116
|
+
copy(out, ref.list)
|
|
117
|
+
|
|
118
|
+
return out
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// UnmarshalJSON decodes to `any` first and then goes through the SAME
|
|
122
|
+
// decoder the in-memory path uses.
|
|
123
|
+
//
|
|
124
|
+
// It used to try `string` and then `[]string` directly. That is wrong
|
|
125
|
+
// twice over: json.Unmarshal into a string is a documented NO-OP on JSON
|
|
126
|
+
// null and returns a nil error, so `{"after":null}` took the string
|
|
127
|
+
// branch and came back as `{"after":""}` - an empty-string constraint
|
|
128
|
+
// nobody wrote; and having two decoders for one rule let them drift, so
|
|
129
|
+
// this path hard-failed on values the in-memory path quietly accepted.
|
|
130
|
+
func (ref *OrderRef) UnmarshalJSON(data []byte) error {
|
|
131
|
+
var authored any
|
|
132
|
+
|
|
133
|
+
if err := json.Unmarshal(data, &authored); nil != err {
|
|
134
|
+
return err
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
*ref = asorderref(authored, true)
|
|
138
|
+
|
|
139
|
+
return nil
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// Stated reports whether this ref says anything at all - because a
|
|
143
|
+
// document stated it, or because a Go caller built it by hand.
|
|
144
|
+
//
|
|
145
|
+
// It is NOT `0 < len(List)`: an authored `[]` states a constraint that
|
|
146
|
+
// names nothing, and an absent key states nothing, and those are
|
|
147
|
+
// different documents.
|
|
148
|
+
func (ref OrderRef) Stated() bool {
|
|
149
|
+
return ref.set
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// MarshalJSON replays the AUTHORED value.
|
|
153
|
+
//
|
|
154
|
+
// A ref that was never stated marshals as `null`, and OrderBlock omits
|
|
155
|
+
// the key rather than emitting that. There is no `List` fallback and no
|
|
156
|
+
// way to build a ref outside NewOrderRef: an earlier round had both, and
|
|
157
|
+
// carrying two ways to construct one value is exactly what let them
|
|
158
|
+
// desync.
|
|
159
|
+
//
|
|
160
|
+
// `marshal`, not `json.Marshal`. The latter escapes `<`, `>` and `&` as
|
|
161
|
+
// \u00XX, which canonical's JSON.stringify does not, and an outer encoder
|
|
162
|
+
// cannot undo an escape its input already carries - so a spelling holding
|
|
163
|
+
// any of those three came back with different bytes from every other
|
|
164
|
+
// port. go/AGENTS.md states this rule outright and both marshallers here
|
|
165
|
+
// broke it.
|
|
166
|
+
func (ref OrderRef) MarshalJSON() ([]byte, error) {
|
|
167
|
+
if ref.set {
|
|
168
|
+
return marshal(ref.raw)
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return []byte("null"), nil
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
// NewOrderRef builds an OrderRef from Go, for callers assembling a
|
|
175
|
+
// document programmatically rather than decoding one. It takes what a
|
|
176
|
+
// document may hold - a string, a []string, a []any of strings, or nil -
|
|
177
|
+
// and runs it through the SAME decoder the JSON and in-memory paths use,
|
|
178
|
+
// so a constructed ref and a decoded one cannot disagree.
|
|
179
|
+
func NewOrderRef(spelling any) OrderRef {
|
|
180
|
+
return asorderref(spelling, true)
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// Instance is a normalized instance entry. Option data is NOT merged
|
|
184
|
+
// here — see OptionLayers.
|
|
185
|
+
type Instance struct {
|
|
186
|
+
Pos int `json:"pos"`
|
|
187
|
+
Active bool `json:"active"`
|
|
188
|
+
Start string `json:"start"`
|
|
189
|
+
Order *OrderBlock `json:"order,omitempty"`
|
|
190
|
+
// OptionLayers holds levels 3-6 that are present, IN LADDER ORDER
|
|
191
|
+
// (§9.3).
|
|
192
|
+
//
|
|
193
|
+
// Normalization does not merge these, and cannot: §9.4 makes merge
|
|
194
|
+
// behaviour a property of the definition's option shape, which
|
|
195
|
+
// normalization has never seen. Flattening them here would make
|
|
196
|
+
// `$MERGE: append` unimplementable at load time, because the layers
|
|
197
|
+
// it must concatenate would already be collapsed.
|
|
198
|
+
OptionLayers []any `json:"optionlayers"`
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
type Normalized struct {
|
|
202
|
+
Instance map[string]*Instance `json:"instance"`
|
|
203
|
+
Order []string `json:"order"`
|
|
204
|
+
Default map[string]any `json:"default"`
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// DetailOrder is §12's detail fields, IN THIS FIXED ORDER.
|
|
208
|
+
//
|
|
209
|
+
// The order is part of the contract, not a formatting preference. An
|
|
210
|
+
// earlier draft named six fields while other sections promised
|
|
211
|
+
// diagnostics that had nowhere to go, which would have left each port
|
|
212
|
+
// inventing its own order and breaking message parity.
|
|
213
|
+
var DetailOrder = []string{
|
|
214
|
+
"host", "ref", "name", "tag", "point", "key", "capability",
|
|
215
|
+
"range", "version", "match", "candidates", "cycle", "holders",
|
|
216
|
+
"refs", "path", "cause",
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// compactjson renders a value the way JSON.stringify does: compact, and
|
|
220
|
+
// WITHOUT Go's default HTML escaping, which would turn `<` into `<`
|
|
221
|
+
// and break message parity against every other port.
|
|
222
|
+
func compactjson(v any) string {
|
|
223
|
+
var buf bytes.Buffer
|
|
224
|
+
enc := json.NewEncoder(&buf)
|
|
225
|
+
enc.SetEscapeHTML(false)
|
|
226
|
+
if err := enc.Encode(v); nil != err {
|
|
227
|
+
return fmt.Sprintf("%v", v)
|
|
228
|
+
}
|
|
229
|
+
return string(bytes.TrimRight(buf.Bytes(), "\n"))
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
// FormatError renders `plugin/<code>: <text> [<key>=<value> …]`.
|
|
233
|
+
//
|
|
234
|
+
// Values render as COMPACT JSON, so a value containing a space or a
|
|
235
|
+
// bracket cannot break the parse, and a list renders as a JSON array.
|
|
236
|
+
// The bracket is absent entirely when no field applies.
|
|
237
|
+
func FormatError(code string, text string, details map[string]any) string {
|
|
238
|
+
parts := []string{}
|
|
239
|
+
for _, k := range DetailOrder {
|
|
240
|
+
v, ok := details[k]
|
|
241
|
+
if !ok {
|
|
242
|
+
continue
|
|
243
|
+
}
|
|
244
|
+
parts = append(parts, k+"="+compactjson(v))
|
|
245
|
+
}
|
|
246
|
+
tail := ""
|
|
247
|
+
if 0 < len(parts) {
|
|
248
|
+
tail = " ["
|
|
249
|
+
for i, p := range parts {
|
|
250
|
+
if 0 < i {
|
|
251
|
+
tail += " "
|
|
252
|
+
}
|
|
253
|
+
tail += p
|
|
254
|
+
}
|
|
255
|
+
tail += "]"
|
|
256
|
+
}
|
|
257
|
+
return "plugin/" + code + ": " + text + tail
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// PluginError carries a §12 code. Ports compare by CODE and never by
|
|
261
|
+
// message: wording is a port's own business, and pinning the words would
|
|
262
|
+
// make every translation a corpus change. The FORMAT, however, is
|
|
263
|
+
// pinned — a parseable message is what makes a log searchable across
|
|
264
|
+
// twenty languages.
|
|
265
|
+
type PluginError struct {
|
|
266
|
+
Code string
|
|
267
|
+
Text string
|
|
268
|
+
Details map[string]any
|
|
269
|
+
message string
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
func (e *PluginError) Error() string { return e.message }
|
|
273
|
+
|
|
274
|
+
// Fail builds the error the canonical would have thrown. Go RETURNS it;
|
|
275
|
+
// every caller in this port propagates rather than unwinding.
|
|
276
|
+
func Fail(code string, text string, details map[string]any) *PluginError {
|
|
277
|
+
if nil == details {
|
|
278
|
+
details = map[string]any{}
|
|
279
|
+
}
|
|
280
|
+
return &PluginError{
|
|
281
|
+
Code: code,
|
|
282
|
+
Text: text,
|
|
283
|
+
Details: details,
|
|
284
|
+
message: FormatError(code, text, details),
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
// CodeOf reports the §12 code of an error, or "" for an error this
|
|
289
|
+
// library did not raise. The corpus compares by code, so the driver
|
|
290
|
+
// needs one place that knows how to read it.
|
|
291
|
+
func CodeOf(err error) string {
|
|
292
|
+
if pe, ok := err.(*PluginError); ok {
|
|
293
|
+
return pe.Code
|
|
294
|
+
}
|
|
295
|
+
return ""
|
|
296
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
// VENDORED: @voxgig/plugin 0.1.6 (go/plugin/util.go)
|
|
2
|
+
// Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
|
|
3
|
+
// License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
|
+
/* The handful of helpers the port needs that the canonical gets from
|
|
5
|
+
* JavaScript for free: sorted map keys (Object.keys(x).sort()), a
|
|
6
|
+
* JSON.stringify-equivalent marshal, and deep clone.
|
|
7
|
+
*
|
|
8
|
+
* `each(...) in sorted-key order` is a house rule across voxgig
|
|
9
|
+
* because it makes output BYTE-STABLE. Go's map iteration is
|
|
10
|
+
* deliberately randomized, so every traversal here goes through
|
|
11
|
+
* sortedkeys — an unsorted `for k := range m` is a bug that passes its
|
|
12
|
+
* own tests most of the time. */
|
|
13
|
+
|
|
14
|
+
package plugin
|
|
15
|
+
|
|
16
|
+
import (
|
|
17
|
+
"bytes"
|
|
18
|
+
"encoding/json"
|
|
19
|
+
"sort"
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
func sortedkeys[V any](m map[string]V) []string {
|
|
23
|
+
out := make([]string, 0, len(m))
|
|
24
|
+
for k := range m {
|
|
25
|
+
out = append(out, k)
|
|
26
|
+
}
|
|
27
|
+
sort.Strings(out)
|
|
28
|
+
return out
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// marshal is json.Marshal WITHOUT HTML escaping, so a `<` in a value
|
|
32
|
+
// renders as itself and message parity holds against ports whose JSON
|
|
33
|
+
// writer never had an opinion about HTML.
|
|
34
|
+
func marshal(v any) ([]byte, error) {
|
|
35
|
+
var buf bytes.Buffer
|
|
36
|
+
enc := json.NewEncoder(&buf)
|
|
37
|
+
enc.SetEscapeHTML(false)
|
|
38
|
+
if err := enc.Encode(v); nil != err {
|
|
39
|
+
return nil, err
|
|
40
|
+
}
|
|
41
|
+
return bytes.TrimRight(buf.Bytes(), "\n"), nil
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// ismap is the canonical's `isMap`: a JSON object, and not a list.
|
|
45
|
+
func ismap(v any) bool {
|
|
46
|
+
_, ok := v.(map[string]any)
|
|
47
|
+
return ok
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
func aslist(v any) ([]any, bool) {
|
|
51
|
+
l, ok := v.([]any)
|
|
52
|
+
return l, ok
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
func clonevalue(v any) any {
|
|
56
|
+
switch t := v.(type) {
|
|
57
|
+
case map[string]any:
|
|
58
|
+
out := map[string]any{}
|
|
59
|
+
for k, e := range t {
|
|
60
|
+
out[k] = clonevalue(e)
|
|
61
|
+
}
|
|
62
|
+
return out
|
|
63
|
+
case []any:
|
|
64
|
+
out := make([]any, len(t))
|
|
65
|
+
for i, e := range t {
|
|
66
|
+
out[i] = clonevalue(e)
|
|
67
|
+
}
|
|
68
|
+
return out
|
|
69
|
+
default:
|
|
70
|
+
return v
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// indexof is `Array.prototype.indexOf` for the string lists this port
|
|
75
|
+
// carries everywhere.
|
|
76
|
+
func indexof(l []string, s string) int {
|
|
77
|
+
for i, e := range l {
|
|
78
|
+
if e == s {
|
|
79
|
+
return i
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return -1
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
func hasstring(l []string, s string) bool {
|
|
86
|
+
return -1 != indexof(l, s)
|
|
87
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
// VENDORED: @voxgig/plugin 0.1.6 (go/plugin/version.go)
|
|
2
|
+
// Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
|
|
3
|
+
// License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
|
+
/* Versions and ranges (§11.2).
|
|
5
|
+
*
|
|
6
|
+
* TWO FIELDS AND ONE PREDICATE. A capability declares `version`, a
|
|
7
|
+
* concrete version. A requirement declares `range`. A requirement is
|
|
8
|
+
* satisfied when the names match, the `match` passes, and:
|
|
9
|
+
*
|
|
10
|
+
* the provider's `version` falls inside the requirement's `range`.
|
|
11
|
+
*
|
|
12
|
+
* That is the whole rule. There is no third field and no second
|
|
13
|
+
* comparison — an earlier draft added a provider-side `compat` range,
|
|
14
|
+
* which left three values and no statement of how they combine, and
|
|
15
|
+
* three defensible readings of one declaration is worse than the
|
|
16
|
+
* ambiguity it was introduced to fix. */
|
|
17
|
+
|
|
18
|
+
package plugin
|
|
19
|
+
|
|
20
|
+
import (
|
|
21
|
+
"regexp"
|
|
22
|
+
"strconv"
|
|
23
|
+
"strings"
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
type Range struct {
|
|
27
|
+
Lo []int `json:"lo"`
|
|
28
|
+
Hi []int `json:"hi"`
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
var versionRe = regexp.MustCompile(`^(\d+)(?:\.(\d+))?(?:\.(\d+))?$`)
|
|
32
|
+
|
|
33
|
+
// componentMax bounds a version component, like §4's 1024 bounds a ref.
|
|
34
|
+
//
|
|
35
|
+
// The grammar admits an unbounded digit sequence and every language then
|
|
36
|
+
// disagrees past its integer range: JavaScript silently loses precision,
|
|
37
|
+
// Go's Atoi errors (and this port was ignoring that, yielding 0), C
|
|
38
|
+
// overflows. `Satisfies("0", "9223372036854775808")` was false in the
|
|
39
|
+
// canonical and TRUE here, from the same corpus.
|
|
40
|
+
//
|
|
41
|
+
// 2^31-1, because every port has a signed 32-bit integer.
|
|
42
|
+
const componentMax = 2147483647
|
|
43
|
+
|
|
44
|
+
// ParseRange accepts two forms and no more (§11.2):
|
|
45
|
+
//
|
|
46
|
+
// '2.1' >= 2.1.0 and < 3.0.0
|
|
47
|
+
// '~2.1' >= 2.1.0 and < 2.2.0
|
|
48
|
+
func ParseRange(rng string) (Range, error) {
|
|
49
|
+
bad := func() (Range, error) {
|
|
50
|
+
return Range{}, Fail("plugin_bad_range", "invalid range: "+rng,
|
|
51
|
+
map[string]any{"range": rng})
|
|
52
|
+
}
|
|
53
|
+
if 0 == len(rng) {
|
|
54
|
+
return bad()
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
tilde := strings.HasPrefix(rng, "~")
|
|
58
|
+
body := rng
|
|
59
|
+
if tilde {
|
|
60
|
+
body = rng[1:]
|
|
61
|
+
}
|
|
62
|
+
m := versionRe.FindStringSubmatch(body)
|
|
63
|
+
if nil == m {
|
|
64
|
+
return bad()
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
major, ok := component(m[1])
|
|
68
|
+
if !ok {
|
|
69
|
+
return bad()
|
|
70
|
+
}
|
|
71
|
+
minor, ok := component(m[2])
|
|
72
|
+
if !ok {
|
|
73
|
+
return bad()
|
|
74
|
+
}
|
|
75
|
+
patch, ok := component(m[3])
|
|
76
|
+
if !ok {
|
|
77
|
+
return bad()
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
lo := []int{major, minor, patch}
|
|
81
|
+
hi := []int{major + 1, 0, 0}
|
|
82
|
+
if tilde {
|
|
83
|
+
hi = []int{major, minor + 1, 0}
|
|
84
|
+
}
|
|
85
|
+
return Range{Lo: lo, Hi: hi}, nil
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
func ParseVersion(version string) ([]int, error) {
|
|
89
|
+
m := versionRe.FindStringSubmatch(version)
|
|
90
|
+
if nil == m {
|
|
91
|
+
return nil, Fail("plugin_bad_range", "invalid version: "+version,
|
|
92
|
+
map[string]any{"version": version})
|
|
93
|
+
}
|
|
94
|
+
out := []int{}
|
|
95
|
+
for _, g := range []string{m[1], m[2], m[3]} {
|
|
96
|
+
n, ok := component(g)
|
|
97
|
+
if !ok {
|
|
98
|
+
return nil, Fail("plugin_bad_range",
|
|
99
|
+
"version component out of range in "+version+": "+g,
|
|
100
|
+
map[string]any{"version": version})
|
|
101
|
+
}
|
|
102
|
+
out = append(out, n)
|
|
103
|
+
}
|
|
104
|
+
return out, nil
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// component parses one bounded component. An absent optional group is
|
|
108
|
+
// "", which is a missing minor or patch and therefore 0.
|
|
109
|
+
func component(s string) (int, bool) {
|
|
110
|
+
if "" == s {
|
|
111
|
+
return 0, true
|
|
112
|
+
}
|
|
113
|
+
n, err := strconv.Atoi(s)
|
|
114
|
+
if nil != err || componentMax < n {
|
|
115
|
+
return 0, false
|
|
116
|
+
}
|
|
117
|
+
return n, true
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Satisfies is the one satisfaction predicate: lo <= version < hi.
|
|
121
|
+
func Satisfies(version string, rng string) (bool, error) {
|
|
122
|
+
v, err := ParseVersion(version)
|
|
123
|
+
if nil != err {
|
|
124
|
+
return false, err
|
|
125
|
+
}
|
|
126
|
+
r, err := ParseRange(rng)
|
|
127
|
+
if nil != err {
|
|
128
|
+
return false, err
|
|
129
|
+
}
|
|
130
|
+
return 0 <= Cmp(v, r.Lo) && 0 > Cmp(v, r.Hi), nil
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// satisfiesq is Satisfies for the internal callers that treat an
|
|
134
|
+
// unparseable version or range as "does not satisfy" — Capability and
|
|
135
|
+
// Graph, both of which run over data the corpus has already admitted.
|
|
136
|
+
func satisfiesq(version string, rng string) bool {
|
|
137
|
+
ok, err := Satisfies(version, rng)
|
|
138
|
+
return nil == err && ok
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
func Cmp(a []int, b []int) int {
|
|
142
|
+
for i := 0; i < 3; i++ {
|
|
143
|
+
x, y := at(a, i), at(b, i)
|
|
144
|
+
if x != y {
|
|
145
|
+
if x < y {
|
|
146
|
+
return -1
|
|
147
|
+
}
|
|
148
|
+
return 1
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return 0
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
func at(l []int, i int) int {
|
|
155
|
+
if i < len(l) {
|
|
156
|
+
return l[i]
|
|
157
|
+
}
|
|
158
|
+
return 0
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
|