@voxgig/sdkgen 4.9.0 → 4.11.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/helpers/manifest.d.ts +2 -1
- package/dist/helpers/manifest.js +75 -1
- package/dist/helpers/manifest.js.map +1 -1
- package/dist/helpers/modelNames.d.ts +7 -0
- package/dist/helpers/modelNames.js +232 -0
- package/dist/helpers/modelNames.js.map +1 -0
- package/dist/helpers/naming.d.ts +2 -1
- package/dist/helpers/naming.js +45 -1
- package/dist/helpers/naming.js.map +1 -1
- package/dist/sdkgen.d.ts +3 -2
- package/dist/sdkgen.js +12 -3
- package/dist/sdkgen.js.map +1 -1
- package/dist/testkit.d.ts +2 -0
- package/dist/testkit.js +80 -24
- package/dist/testkit.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility.js +17 -7
- package/dist/utility.js.map +1 -1
- package/package.json +1 -1
- package/project/.sdk/model/feature/secrets.aon +1001 -0
- package/project/.sdk/model/target/c.aon +15 -2
- package/project/.sdk/model/target/clojure.aon +10 -0
- package/project/.sdk/model/target/cpp.aon +18 -0
- package/project/.sdk/model/target/csharp.aon +5 -0
- package/project/.sdk/model/target/elixir.aon +6 -0
- package/project/.sdk/model/target/java.aon +5 -0
- package/project/.sdk/model/target/js.aon +5 -0
- package/project/.sdk/model/target/kotlin.aon +7 -0
- package/project/.sdk/model/target/lua.aon +17 -0
- package/project/.sdk/model/target/ocaml.aon +48 -5
- package/project/.sdk/model/target/perl.aon +5 -0
- package/project/.sdk/model/target/php.aon +5 -0
- package/project/.sdk/model/target/rb.aon +5 -0
- package/project/.sdk/model/target/rust.aon +5 -0
- package/project/.sdk/model/target/scala.aon +38 -2
- package/project/.sdk/model/target/swift.aon +10 -0
- package/project/.sdk/model/target/zig.aon +30 -4
- package/project/.sdk/src/cmp/c/Config_c.ts +338 -1
- package/project/.sdk/src/cmp/c/Main_c.ts +57 -2
- package/project/.sdk/src/cmp/c/Package_c.ts +12 -2
- package/project/.sdk/src/cmp/clojure/Config_clojure.ts +51 -4
- package/project/.sdk/src/cmp/clojure/Main_clojure.ts +43 -1
- package/project/.sdk/src/cmp/clojure/Package_clojure.ts +17 -1
- package/project/.sdk/src/cmp/clojure/featureextra_clojure.ts +130 -0
- package/project/.sdk/src/cmp/cpp/Config_cpp.ts +324 -2
- package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +2 -0
- package/project/.sdk/src/cmp/cpp/Main_cpp.ts +62 -4
- package/project/.sdk/src/cmp/cpp/Package_cpp.ts +10 -0
- package/project/.sdk/src/cmp/csharp/Config_csharp.ts +70 -0
- package/project/.sdk/src/cmp/csharp/Main_csharp.ts +9 -1
- package/project/.sdk/src/cmp/csharp/Package_csharp.ts +25 -1
- package/project/.sdk/src/cmp/elixir/Config_elixir.ts +68 -2
- package/project/.sdk/src/cmp/elixir/Main_elixir.ts +16 -0
- package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +14 -1
- package/project/.sdk/src/cmp/java/Config_java.ts +84 -2
- package/project/.sdk/src/cmp/java/Main_java.ts +10 -1
- package/project/.sdk/src/cmp/js/Config_js.ts +75 -8
- package/project/.sdk/src/cmp/js/Main_js.ts +66 -2
- package/project/.sdk/src/cmp/js/fragment/Config.data.fragment.js +18 -1
- package/project/.sdk/src/cmp/js/fragment/Config.fragment.js +18 -1
- package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +7 -0
- package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +63 -1
- package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +32 -2
- package/project/.sdk/src/cmp/lua/Config_lua.ts +88 -0
- package/project/.sdk/src/cmp/lua/Gitignore_lua.ts +4 -0
- package/project/.sdk/src/cmp/lua/Main_lua.ts +93 -3
- package/project/.sdk/src/cmp/lua/Package_lua.ts +60 -0
- package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +10 -0
- package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +183 -5
- package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +160 -3
- package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +25 -1
- package/project/.sdk/src/cmp/perl/Config_perl.ts +129 -3
- package/project/.sdk/src/cmp/perl/Main_perl.ts +41 -1
- package/project/.sdk/src/cmp/perl/Package_perl.ts +13 -1
- package/project/.sdk/src/cmp/perl/fragment/Main.fragment.pm +1 -0
- package/project/.sdk/src/cmp/php/Config_php.ts +105 -1
- package/project/.sdk/src/cmp/php/Gitignore_php.ts +4 -2
- package/project/.sdk/src/cmp/php/Main_php.ts +16 -1
- package/project/.sdk/src/cmp/rb/Config_rb.ts +92 -2
- package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +11 -1
- package/project/.sdk/src/cmp/rb/Main_rb.ts +7 -1
- package/project/.sdk/src/cmp/rust/Main_rust.ts +99 -1
- package/project/.sdk/src/cmp/rust/Package_rust.ts +72 -6
- package/project/.sdk/src/cmp/scala/Config_scala.ts +44 -0
- package/project/.sdk/src/cmp/scala/Main_scala.ts +68 -1
- package/project/.sdk/src/cmp/swift/Config_swift.ts +62 -1
- package/project/.sdk/src/cmp/swift/Main_swift.ts +35 -1
- package/project/.sdk/src/cmp/swift/Package_swift.ts +81 -11
- package/project/.sdk/src/cmp/swift/fragment/Main.fragment.swift +58 -44
- package/project/.sdk/src/cmp/swift/utility_swift.ts +22 -0
- package/project/.sdk/src/cmp/zig/Config_zig.ts +130 -9
- package/project/.sdk/src/cmp/zig/Main_zig.ts +208 -4
- package/project/.sdk/{tm/zig/build.zig → src/cmp/zig/fragment/Build.fragment.zig} +7 -0
- package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +25 -0
- package/project/.sdk/{tm/zig/root.zig → src/cmp/zig/fragment/Root.fragment.zig} +9 -0
- package/project/.sdk/tm/c/Makefile +58 -9
- package/project/.sdk/tm/c/core/sdk.h +10 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +133 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +39 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +83 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +48 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/config.c +413 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/config.h +24 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +264 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +29 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/env.c +220 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/env.h +19 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/export.c +97 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/export.h +19 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +237 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +17 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/host.c +1494 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/host.h +135 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/order.c +288 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/order.h +18 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/point.c +141 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/point.h +80 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +170 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +52 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +98 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +18 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/types.c +150 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/types.h +104 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/value.c +649 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/value.h +135 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/version.c +151 -0
- package/project/.sdk/tm/c/feature/secrets/plugin/version.h +34 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +281 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +207 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +164 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +75 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +141 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +144 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +177 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +239 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +599 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +165 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +194 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +233 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +125 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +125 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +270 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +382 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/support.h +153 -0
- package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +420 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +86 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +721 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +813 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +944 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +490 -0
- package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +442 -0
- package/project/.sdk/tm/c/feature/secrets.c +797 -0
- package/project/.sdk/tm/c/feature/secrets.h +46 -0
- package/project/.sdk/tm/c/tests/feature/secrets/secrets_test.c +802 -0
- package/project/.sdk/tm/c/tests/vendor/omni/json.c +2 -2
- package/project/.sdk/tm/c/tests/vendor/omni/omni.h +2 -2
- package/project/.sdk/tm/c/tests/vendor/omni/runner.c +2 -2
- package/project/.sdk/tm/c/tests/vendor/omni/util.c +2 -2
- package/project/.sdk/tm/clojure/Makefile +3 -0
- package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +530 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/capability.clj +84 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/catalog.clj +44 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/config.clj +240 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/depend.clj +199 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/env.clj +111 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/export.clj +46 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/graph.clj +122 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/host.clj +1018 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/json.clj +106 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/order.clj +157 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/point.clj +77 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/ref.clj +92 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/resolve.clj +46 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/types.clj +177 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/version.clj +90 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin.clj +40 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/addr.clj +111 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/chain.clj +297 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/core.clj +192 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/json.clj +261 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/aws.clj +165 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/azuresecrets.clj +111 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/boru.clj +107 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/doppler.clj +61 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/gcpsecrets.clj +88 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/hashicorp.clj +115 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/httpjson.clj +214 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/infisical.clj +80 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/onepassword.clj +93 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/proc.clj +63 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/secretspec.clj +99 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/sigv4.clj +142 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/provider.clj +25 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/providers.clj +196 -0
- package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto.clj +113 -0
- package/project/.sdk/tm/clojure/src/sdk/core.clj +9 -0
- package/project/.sdk/tm/clojure/src/sdk/features.clj +13 -1
- package/project/.sdk/tm/clojure/test/sdk/test/feature/secrets.clj +581 -0
- package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +103 -14
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +2 -2
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +2 -2
- package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +2 -2
- package/project/.sdk/tm/cpp/Makefile +48 -4
- package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +121 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +41 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +60 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +66 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +376 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +29 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +230 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +31 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +205 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +25 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +84 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +24 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +222 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +21 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +1200 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +250 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +250 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +22 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +110 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +79 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +136 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +60 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +82 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +25 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +90 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +65 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +491 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +120 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +143 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +36 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +248 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +30 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +149 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +117 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +27 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +180 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +52 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +87 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +121 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +153 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +666 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +160 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +123 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +125 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +23 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +223 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +47 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +104 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +27 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +242 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +58 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +260 -0
- package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +47 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +476 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +89 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +312 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +263 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +354 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +111 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +613 -0
- package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +227 -0
- package/project/.sdk/tm/cpp/feature/secrets.hpp +745 -0
- package/project/.sdk/tm/cpp/test/feature/secrets/secrets_test.cpp +808 -0
- package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +2 -2
- package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +2 -2
- package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +2 -2
- package/project/.sdk/tm/csharp/feature/SecretsFeature.cs +915 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Capability.cs +196 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Catalog.cs +70 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Config.cs +505 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Definition.cs +52 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Depend.cs +285 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Entry.cs +55 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Env.cs +228 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Export.cs +102 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Graph.cs +256 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Host.cs +1379 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Inst.cs +177 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Json.cs +326 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Order.cs +295 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Plugin.cs +113 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Point.cs +177 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Refs.cs +198 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Resolve.cs +95 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Types.cs +351 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugin/Version.cs +196 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Aws.cs +325 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/AzureSecrets.cs +195 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Boru.cs +192 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Child.cs +75 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Doppler.cs +112 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/GcpSecrets.cs +167 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Hashicorp.cs +221 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/HttpJson.cs +213 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Infisical.cs +155 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/OnePassword.cs +169 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/SecretSpec.cs +172 -0
- package/project/.sdk/tm/csharp/feature/secrets/plugins/Sigv4.cs +240 -0
- package/project/.sdk/tm/csharp/feature/secrets/sekreto/Json.cs +192 -0
- package/project/.sdk/tm/csharp/feature/secrets/sekreto/Providers.cs +503 -0
- package/project/.sdk/tm/csharp/feature/secrets/sekreto/Sekreto.cs +775 -0
- package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +1787 -0
- package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +2 -2
- package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +2 -2
- package/project/.sdk/tm/csharp/utility/MakeOptions.cs +10 -0
- package/project/.sdk/tm/csharp/utility/struct/Struct.cs +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/capability.ex +118 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/catalog.ex +56 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/config.ex +320 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/depend.ex +205 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/env.ex +166 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/error.ex +13 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/export.ex +73 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/graph.ex +185 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/host.ex +1182 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/inst.ex +139 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/json.ex +132 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/order.ex +179 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/point.ex +99 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/ref.ex +129 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/resolve.ex +59 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/types.ex +190 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/version.ex +136 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/voxgig_plugin.ex +42 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/json.ex +368 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/aws.ex +257 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/azuresecrets.ex +160 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/boru.ex +127 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/doppler.ex +96 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/gcpsecrets.ex +124 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/hashicorp.ex +162 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/http.ex +627 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/httpjson.ex +134 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/infisical.ex +125 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/onepassword.ex +152 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/proc.ex +80 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/secretspec.ex +101 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/sigv4.ex +176 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/provider.ex +67 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/providers.ex +536 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/sekreto.ex +662 -0
- package/project/.sdk/tm/elixir/lib/projectname/feature/secrets.ex +839 -0
- package/project/.sdk/tm/elixir/test/feature/secrets/secrets_test.exs +1113 -0
- package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +2 -2
- package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +2 -2
- package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/config.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/env.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/export.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/order.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/point.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/types.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/util.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugin/version.go +1 -1
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +2 -2
- package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +2 -2
- package/project/.sdk/tm/go/feature/secrets_feature.go +48 -10
- package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +239 -0
- package/project/.sdk/tm/go/test/omni/omni.go +2 -2
- package/project/.sdk/tm/go/test/omni/util.go +2 -2
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +1 -1
- package/project/.sdk/tm/java/feature/SecretsFeature.java +791 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Capability.java +181 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Catalog.java +64 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Config.java +433 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Definition.java +54 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Depend.java +292 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Entry.java +49 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Env.java +204 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Export.java +93 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Graph.java +244 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Host.java +1196 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Inst.java +173 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Json.java +339 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Order.java +274 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Plugin.java +94 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/PluginException.java +37 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Point.java +172 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Refs.java +171 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Resolve.java +89 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Types.java +232 -0
- package/project/.sdk/tm/java/feature/secrets/plugin/Version.java +198 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/Addr.java +142 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/Builtins.java +229 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/Json.java +302 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/Provider.java +21 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/Sekreto.java +698 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/Support.java +100 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Aws.java +294 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Azuresecrets.java +164 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Boru.java +161 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Doppler.java +103 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Gcpsecrets.java +143 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Hashicorp.java +186 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Httpjson.java +192 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Infisical.java +139 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Onepassword.java +143 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Proc.java +80 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Secretspec.java +138 -0
- package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Sigv4.java +243 -0
- package/project/.sdk/tm/java/test/feature/secrets/SecretsFeatureTest.java +1050 -0
- package/project/.sdk/tm/java/test/vendor/omni/Json.java +2 -2
- package/project/.sdk/tm/java/test/vendor/omni/Runner.java +2 -2
- package/project/.sdk/tm/java/test/vendor/omni/Util.java +2 -2
- package/project/.sdk/tm/java/utility/MakeOptions.java +7 -0
- package/project/.sdk/tm/java/utility/struct/Struct.java +1 -1
- package/project/.sdk/tm/js/src/feature/secrets/SecretsFeature.js +454 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/capability.js +119 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/catalog.js +42 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/config.js +323 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/depend.js +196 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/env.js +120 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/export.js +48 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/graph.js +150 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/host.js +949 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/index.js +35 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/order.js +165 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/point.js +94 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/ref.js +106 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/resolve.js +59 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/types.js +79 -0
- package/project/.sdk/tm/js/src/feature/secrets/plugin/version.js +100 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/Sekreto.js +574 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/index.js +56 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/aws.js +188 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/azuresecrets.js +135 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/boru.js +128 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/doppler.js +67 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/gcpsecrets.js +115 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/hashicorp.js +139 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/httpjson.js +93 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/infisical.js +99 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/onepassword.js +111 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/secretspec.js +105 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/sigv4.js +157 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/addr.js +119 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/builtin.js +39 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/dotenv.js +40 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/env.js +21 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/file.js +42 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/memory.js +18 -0
- package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/support.js +151 -0
- package/project/.sdk/tm/js/src/utility/StructUtility.js +1 -1
- package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +1019 -0
- package/project/.sdk/tm/js/test/vendor/omni/index.js +1 -1
- package/project/.sdk/tm/js/test/vendor/omni/runner.js +1 -1
- package/project/.sdk/tm/js/test/vendor/omni/util.js +1 -1
- package/project/.sdk/tm/kotlin/feature/SecretsFeature.kt +684 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Capability.kt +117 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Catalog.kt +40 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Config.kt +322 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Depend.kt +227 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Env.kt +163 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Export.kt +57 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Graph.kt +179 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Host.kt +1131 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Json.kt +241 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Order.kt +180 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Plugin.kt +64 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Point.kt +124 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Refs.kt +125 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Resolve.kt +66 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Types.kt +171 -0
- package/project/.sdk/tm/kotlin/feature/secrets/plugin/Version.kt +132 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Json.kt +359 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Provider.kt +21 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Providers.kt +308 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Sekreto.kt +525 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Spec.kt +126 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Support.kt +205 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Aws.kt +251 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Azuresecrets.kt +145 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Boru.kt +130 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Doppler.kt +77 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Gcpsecrets.kt +119 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Hashicorp.kt +156 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Httpjson.kt +219 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Infisical.kt +114 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Onepassword.kt +114 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Secretspec.kt +118 -0
- package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Sigv4.kt +220 -0
- package/project/.sdk/tm/kotlin/test/feature/secrets/SecretsTest.kt +1217 -0
- package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +2 -2
- package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +2 -2
- package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +2 -2
- package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +1 -1
- package/project/.sdk/tm/lua/Makefile +15 -4
- package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +806 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +135 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +63 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +361 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +232 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +168 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +66 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +194 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +1190 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +169 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +207 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +106 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +115 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +78 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +275 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +131 -0
- package/project/.sdk/tm/lua/feature/secrets/plugin.lua +76 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +124 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +47 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +315 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +228 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +137 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +124 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +212 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +89 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +129 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +154 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +248 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +113 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +449 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +198 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +126 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +93 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +269 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +146 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +346 -0
- package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +479 -0
- package/project/.sdk/tm/lua/feature/secrets_feature.lua +690 -0
- package/project/.sdk/tm/lua/test/extend_test.lua +105 -0
- package/project/.sdk/tm/lua/test/feature/secrets/secrets_feature_test.lua +862 -0
- package/project/.sdk/tm/lua/test/vendor/omni/json.lua +2 -2
- package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +2 -2
- package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +2 -2
- package/project/.sdk/tm/lua/test/vendor/omni/util.lua +2 -2
- package/project/.sdk/tm/lua/utility/struct/regex.lua +1 -1
- package/project/.sdk/tm/lua/utility/struct/struct.lua +1 -1
- package/project/.sdk/tm/ocaml/Makefile +52 -8
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +106 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +43 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +349 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +143 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +217 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +197 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +89 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +227 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +1112 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +202 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +138 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +126 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +62 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +97 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +387 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +139 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +171 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +116 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +95 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +149 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +61 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +93 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +120 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +421 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +66 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +85 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +112 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +97 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +68 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +259 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +44 -0
- package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +358 -0
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +376 -0
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +647 -0
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +299 -0
- package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +347 -0
- package/project/.sdk/tm/ocaml/feature/secrets_feature.ml +453 -0
- package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +670 -0
- package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +2 -2
- package/project/.sdk/tm/perl/Makefile +6 -1
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Capability.pm +141 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Catalog.pm +65 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Config.pm +346 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Depend.pm +216 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Env.pm +176 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Export.pm +59 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Graph.pm +157 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Host.pm +1139 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Order.pm +187 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Point.pm +100 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Ref.pm +119 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Resolve.pm +71 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Types.pm +251 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Version.pm +122 -0
- package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin.pm +70 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Aws.pm +263 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Azuresecrets.pm +159 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Boru.pm +180 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Doppler.pm +92 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Gcpsecrets.pm +138 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Hashicorp.pm +213 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Httpjson.pm +173 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Infisical.pm +132 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Onepassword.pm +132 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Proc.pm +102 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Secretspec.pm +132 -0
- package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Sigv4.pm +190 -0
- package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Addr.pm +124 -0
- package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Providers.pm +301 -0
- package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto.pm +605 -0
- package/project/.sdk/tm/perl/feature/secrets_feature.pm +696 -0
- package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +1 -1
- package/project/.sdk/tm/perl/t/feature/secrets/secrets.t +1004 -0
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +1 -1
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +1 -1
- package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +1 -1
- package/project/.sdk/tm/php/feature/SecretsFeature.php +694 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Capability.php +226 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Catalog.php +75 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Config.php +444 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Depend.php +262 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Env.php +202 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Export.php +74 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Graph.php +195 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Host.php +1514 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Order.php +260 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Point.php +129 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Ref.php +169 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Resolve.php +79 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Types.php +348 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/Version.php +163 -0
- package/project/.sdk/tm/php/feature/secrets/plugin/plugin.php +40 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/aws.php +274 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/azuresecrets.php +170 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/boru.php +163 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/doppler.php +106 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/gcpsecrets.php +144 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/hashicorp.php +194 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/httpjson.php +113 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/infisical.php +131 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/onepassword.php +150 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/runcmd.php +101 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/secretspec.php +146 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/sigv4.php +161 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/src/Addr.php +129 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/src/Providers.php +322 -0
- package/project/.sdk/tm/php/feature/secrets/sekreto/src/Sekreto.php +724 -0
- package/project/.sdk/tm/php/test/feature/secrets/SecretsTest.php +1165 -0
- package/project/.sdk/tm/php/test/vendor/omni/Runner.php +2 -2
- package/project/.sdk/tm/php/test/vendor/omni/Util.php +2 -2
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +2 -2
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +1 -1
- package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +28 -6
- package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +1 -1
- package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +114 -0
- package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +1 -1
- package/project/.sdk/tm/py/test/voxgig_omni/runner.py +1 -1
- package/project/.sdk/tm/py/test/voxgig_omni/util.py +1 -1
- package/project/.sdk/tm/rb/Makefile +7 -1
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/capability.rb +118 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/catalog.rb +55 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/config.rb +315 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/depend.rb +197 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/env.rb +143 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/export.rb +52 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/graph.rb +147 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/host.rb +1079 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/order.rb +169 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/point.rb +93 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/ref.rb +112 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/resolve.rb +56 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/types.rb +99 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/version.rb +106 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin.rb +24 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/addr.rb +111 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/aws.rb +200 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/azuresecrets.rb +130 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/boru.rb +121 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/doppler.rb +66 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.rb +107 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/hashicorp.rb +137 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/httpjson.rb +136 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/infisical.rb +97 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/onepassword.rb +104 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/secretspec.rb +113 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/sigv4.rb +127 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/providers.rb +210 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/sekreto.rb +465 -0
- package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto.rb +30 -0
- package/project/.sdk/tm/rb/feature/secrets_feature.rb +583 -0
- package/project/.sdk/tm/rb/test/feature/secrets/secrets_feature_test.rb +935 -0
- package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +2 -2
- package/project/.sdk/tm/rb/test/vendor/omni/util.rb +2 -2
- package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +2 -2
- package/project/.sdk/tm/rust/feature/secrets/plugin/capability.rs +130 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/catalog.rs +114 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/config.rs +416 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/depend.rs +245 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/env.rs +200 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/export.rs +90 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/graph.rs +231 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/host.rs +1565 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/mod.rs +18 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/order.rs +226 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/point.rs +137 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/refs.rs +148 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/resolve.rs +83 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/types.rs +132 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/value.rs +433 -0
- package/project/.sdk/tm/rust/feature/secrets/plugin/version.rs +174 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/aws/crypto.rs +146 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/aws/sigv4.rs +230 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/aws.rs +328 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/azuresecrets.rs +184 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/boru.rs +172 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/doppler.rs +102 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/gcpsecrets.rs +153 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/hashicorp.rs +228 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/http.rs +537 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/json.rs +300 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson.rs +137 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/infisical.rs +148 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/onepassword.rs +165 -0
- package/project/.sdk/tm/rust/feature/secrets/plugins/secretspec.rs +150 -0
- package/project/.sdk/tm/rust/feature/secrets/sekreto/addr.rs +144 -0
- package/project/.sdk/tm/rust/feature/secrets/sekreto/mod.rs +51 -0
- package/project/.sdk/tm/rust/feature/secrets/sekreto/providers.rs +637 -0
- package/project/.sdk/tm/rust/feature/secrets/sekreto/sekreto.rs +677 -0
- package/project/.sdk/tm/rust/feature/secrets.rs +984 -0
- package/project/.sdk/tm/rust/tests/feature/secrets/main.rs +1605 -0
- package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +2 -2
- package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +2 -2
- package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +2 -2
- package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +2 -2
- package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +2 -2
- package/project/.sdk/tm/scala/Makefile +8 -3
- package/project/.sdk/tm/scala/feature/SecretsFeature.scala +578 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Capability.scala +96 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Config.scala +270 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Depend.scala +216 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Env.scala +144 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Export.scala +59 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Graph.scala +149 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Host.scala +1089 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Json.scala +156 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Order.scala +169 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Plugin.scala +47 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Point.scala +107 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Refs.scala +131 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Resolve.scala +53 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Types.scala +110 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Value.scala +157 -0
- package/project/.sdk/tm/scala/feature/secrets/plugin/Version.scala +136 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Json.scala +302 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Provider.scala +20 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Providers.scala +281 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Sekreto.scala +473 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Spec.scala +123 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/Support.scala +216 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Aws.scala +225 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Azuresecrets.scala +124 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Boru.scala +104 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Doppler.scala +68 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Gcpsecrets.scala +97 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Hashicorp.scala +131 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Httpjson.scala +209 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Infisical.scala +98 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Onepassword.scala +90 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Secretspec.scala +95 -0
- package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Sigv4.scala +214 -0
- package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +1042 -0
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +2 -2
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +2 -2
- package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +2 -2
- package/project/.sdk/tm/scala/utility/Make.scala +7 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/SecretsFeature.swift +669 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Capability.swift +98 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Catalog.swift +87 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Config.swift +298 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Depend.swift +209 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Env.swift +191 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Export.swift +63 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Graph.swift +158 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Host.swift +1141 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Json.swift +192 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Order.swift +183 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Point.swift +130 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Refs.swift +141 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Resolve.swift +59 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Types.swift +125 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Value.swift +198 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Version.swift +139 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Aws.swift +271 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Azuresecrets.swift +173 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Boru.swift +139 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Crypto.swift +198 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Doppler.swift +86 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Gcpsecrets.swift +129 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Hashicorp.swift +175 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Httpjson.swift +310 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Infisical.swift +140 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Onepassword.swift +118 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Proc.swift +105 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Secretspec.swift +111 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Sigv4.swift +297 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Addr.swift +120 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Json.swift +452 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Provider.swift +25 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Providers.swift +689 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Sekreto.swift +755 -0
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +9 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +30 -0
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/feature/secrets/SecretsFeatureTest.swift +1030 -0
- package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +2 -2
- package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +2 -2
- package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +2 -2
- package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +35 -12
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/aws.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/azuresecrets.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/boru.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/doppler.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/gcpsecrets.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/hashicorp.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/infisical.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/onepassword.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/sigv4.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +1 -1
- package/project/.sdk/tm/ts/src/utility/StructUtility.ts +1 -1
- package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +73 -0
- package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +1 -1
- package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +1 -1
- package/project/.sdk/tm/ts/test/vendor/omni/index.ts +1 -1
- package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +137 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +90 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +346 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +244 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +201 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +83 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +212 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +1224 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +126 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +228 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +34 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +166 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +147 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +74 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +140 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +662 -0
- package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +139 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +294 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +222 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +188 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +135 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +170 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +242 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +535 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +167 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +202 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +160 -0
- package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +336 -0
- package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +148 -0
- package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +259 -0
- package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +440 -0
- package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +944 -0
- package/project/.sdk/tm/zig/feature/secrets.zig +854 -0
- package/project/.sdk/tm/zig/test/feature/secrets/secrets_test.zig +891 -0
- package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +2 -2
- package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +2 -2
- package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +2 -2
- package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +2 -2
- package/project/sdkgen-package.json +1 -4
- package/src/helpers/manifest.ts +81 -1
- package/src/helpers/modelNames.ts +284 -0
- package/src/helpers/naming.ts +45 -1
- package/src/sdkgen.ts +11 -1
- package/src/testkit.ts +115 -26
- package/src/utility.ts +17 -7
- package/project/.sdk/model/target/dart.aon +0 -58
- package/project/.sdk/model/target/lean.aon +0 -91
- package/project/.sdk/model/target/seneca-provider.aon +0 -120
- package/project/.sdk/src/cmp/dart/Config_dart.ts +0 -176
- package/project/.sdk/src/cmp/dart/EntityBase_dart.ts +0 -34
- package/project/.sdk/src/cmp/dart/EntityOperation_dart.ts +0 -43
- package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +0 -207
- package/project/.sdk/src/cmp/dart/Entity_dart.ts +0 -87
- package/project/.sdk/src/cmp/dart/Gitignore_dart.ts +0 -34
- package/project/.sdk/src/cmp/dart/MainEntity_dart.ts +0 -33
- package/project/.sdk/src/cmp/dart/Main_dart.ts +0 -106
- package/project/.sdk/src/cmp/dart/Package_dart.ts +0 -82
- package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +0 -177
- package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +0 -238
- package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +0 -53
- package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +0 -152
- package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +0 -59
- package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +0 -65
- package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +0 -151
- package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +0 -63
- package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +0 -225
- package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +0 -397
- package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +0 -24
- package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +0 -106
- package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +0 -78
- package/project/.sdk/src/cmp/dart/SdkError_dart.ts +0 -42
- package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +0 -516
- package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +0 -628
- package/project/.sdk/src/cmp/dart/Test_dart.ts +0 -116
- package/project/.sdk/src/cmp/dart/fragment/Config.data.fragment.dart +0 -79
- package/project/.sdk/src/cmp/dart/fragment/Config.fragment.dart +0 -51
- package/project/.sdk/src/cmp/dart/fragment/Direct.test.fragment.dart +0 -25
- package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +0 -29
- package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +0 -28
- package/project/.sdk/src/cmp/dart/fragment/EntityBase.fragment.dart +0 -302
- package/project/.sdk/src/cmp/dart/fragment/EntityCreateOp.fragment.dart +0 -98
- package/project/.sdk/src/cmp/dart/fragment/EntityListOp.fragment.dart +0 -90
- package/project/.sdk/src/cmp/dart/fragment/EntityLoadOp.fragment.dart +0 -102
- package/project/.sdk/src/cmp/dart/fragment/EntityRemoveOp.fragment.dart +0 -108
- package/project/.sdk/src/cmp/dart/fragment/EntityUpdateOp.fragment.dart +0 -102
- package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +0 -338
- package/project/.sdk/src/cmp/dart/fragment/SdkError.fragment.dart +0 -26
- package/project/.sdk/src/cmp/dart/tsconfig.json +0 -15
- package/project/.sdk/src/cmp/dart/utility_dart.ts +0 -155
- package/project/.sdk/src/cmp/lean/Config_lean.ts +0 -93
- package/project/.sdk/src/cmp/lean/Entity_lean.ts +0 -9
- package/project/.sdk/src/cmp/lean/Gitignore_lean.ts +0 -18
- package/project/.sdk/src/cmp/lean/Main_lean.ts +0 -120
- package/project/.sdk/src/cmp/lean/Package_lean.ts +0 -93
- package/project/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +0 -29
- package/project/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +0 -19
- package/project/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +0 -25
- package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +0 -39
- package/project/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +0 -25
- package/project/.sdk/src/cmp/lean/ReadmeModel_lean.ts +0 -24
- package/project/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +0 -22
- package/project/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +0 -50
- package/project/.sdk/src/cmp/lean/ReadmeRef_lean.ts +0 -40
- package/project/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +0 -16
- package/project/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +0 -23
- package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +0 -19
- package/project/.sdk/src/cmp/lean/Test_lean.ts +0 -261
- package/project/.sdk/src/cmp/lean/utility_lean.ts +0 -129
- package/project/.sdk/src/cmp/seneca-provider/Extras_seneca-provider.ts +0 -4080
- package/project/.sdk/src/cmp/seneca-provider/Gitignore_seneca-provider.ts +0 -161
- package/project/.sdk/src/cmp/seneca-provider/Main_seneca-provider.ts +0 -1011
- package/project/.sdk/tm/dart/LICENSE +0 -22
- package/project/.sdk/tm/dart/Makefile +0 -50
- package/project/.sdk/tm/dart/lib/Context.dart +0 -150
- package/project/.sdk/tm/dart/lib/Control.dart +0 -15
- package/project/.sdk/tm/dart/lib/Operation.dart +0 -31
- package/project/.sdk/tm/dart/lib/Point.dart +0 -51
- package/project/.sdk/tm/dart/lib/Response.dart +0 -32
- package/project/.sdk/tm/dart/lib/Result.dart +0 -39
- package/project/.sdk/tm/dart/lib/Spec.dart +0 -49
- package/project/.sdk/tm/dart/lib/feature/audit/AuditFeature.dart +0 -103
- package/project/.sdk/tm/dart/lib/feature/base/BaseFeature.dart +0 -76
- package/project/.sdk/tm/dart/lib/feature/cache/CacheFeature.dart +0 -152
- package/project/.sdk/tm/dart/lib/feature/clienttrack/ClienttrackFeature.dart +0 -104
- package/project/.sdk/tm/dart/lib/feature/cost/CostFeature.dart +0 -446
- package/project/.sdk/tm/dart/lib/feature/debug/DebugFeature.dart +0 -153
- package/project/.sdk/tm/dart/lib/feature/idempotency/IdempotencyFeature.dart +0 -92
- package/project/.sdk/tm/dart/lib/feature/log/LogFeature.dart +0 -85
- package/project/.sdk/tm/dart/lib/feature/metrics/MetricsFeature.dart +0 -103
- package/project/.sdk/tm/dart/lib/feature/netsim/NetsimFeature.dart +0 -186
- package/project/.sdk/tm/dart/lib/feature/paging/PagingFeature.dart +0 -240
- package/project/.sdk/tm/dart/lib/feature/proxy/ProxyFeature.dart +0 -118
- package/project/.sdk/tm/dart/lib/feature/ratelimit/RatelimitFeature.dart +0 -103
- package/project/.sdk/tm/dart/lib/feature/rbac/RbacFeature.dart +0 -121
- package/project/.sdk/tm/dart/lib/feature/retry/RetryFeature.dart +0 -155
- package/project/.sdk/tm/dart/lib/feature/streaming/StreamingFeature.dart +0 -97
- package/project/.sdk/tm/dart/lib/feature/telemetry/TelemetryFeature.dart +0 -136
- package/project/.sdk/tm/dart/lib/feature/test/TestFeature.dart +0 -328
- package/project/.sdk/tm/dart/lib/feature/timeout/TimeoutFeature.dart +0 -104
- package/project/.sdk/tm/dart/lib/utility/CleanUtility.dart +0 -12
- package/project/.sdk/tm/dart/lib/utility/DoneUtility.dart +0 -18
- package/project/.sdk/tm/dart/lib/utility/ErrUtility.dart +0 -46
- package/project/.sdk/tm/dart/lib/utility/FeatureAddUtility.dart +0 -35
- package/project/.sdk/tm/dart/lib/utility/FeatureHookUtility.dart +0 -20
- package/project/.sdk/tm/dart/lib/utility/FeatureInitUtility.dart +0 -9
- package/project/.sdk/tm/dart/lib/utility/FetcherUtility.dart +0 -104
- package/project/.sdk/tm/dart/lib/utility/GraphqlUtility.dart +0 -162
- package/project/.sdk/tm/dart/lib/utility/MakeContextUtility.dart +0 -6
- package/project/.sdk/tm/dart/lib/utility/MakeErrorUtility.dart +0 -71
- package/project/.sdk/tm/dart/lib/utility/MakeFetchDefUtility.dart +0 -42
- package/project/.sdk/tm/dart/lib/utility/MakeOptionsUtility.dart +0 -233
- package/project/.sdk/tm/dart/lib/utility/MakePointUtility.dart +0 -130
- package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +0 -66
- package/project/.sdk/tm/dart/lib/utility/MakeResponseUtility.dart +0 -59
- package/project/.sdk/tm/dart/lib/utility/MakeResultUtility.dart +0 -49
- package/project/.sdk/tm/dart/lib/utility/MakeSpecUtility.dart +0 -77
- package/project/.sdk/tm/dart/lib/utility/MakeUrlUtility.dart +0 -51
- package/project/.sdk/tm/dart/lib/utility/ParamUtility.dart +0 -56
- package/project/.sdk/tm/dart/lib/utility/PrepareAuthUtility.dart +0 -46
- package/project/.sdk/tm/dart/lib/utility/PrepareBodyUtility.dart +0 -19
- package/project/.sdk/tm/dart/lib/utility/PrepareHeadersUtility.dart +0 -11
- package/project/.sdk/tm/dart/lib/utility/PrepareMethodUtility.dart +0 -30
- package/project/.sdk/tm/dart/lib/utility/PrepareParamsUtility.dart +0 -23
- package/project/.sdk/tm/dart/lib/utility/PreparePathUtility.dart +0 -9
- package/project/.sdk/tm/dart/lib/utility/PrepareQueryUtility.dart +0 -18
- package/project/.sdk/tm/dart/lib/utility/ResultBasicUtility.dart +0 -29
- package/project/.sdk/tm/dart/lib/utility/ResultBodyUtility.dart +0 -15
- package/project/.sdk/tm/dart/lib/utility/ResultHeadersUtility.dart +0 -18
- package/project/.sdk/tm/dart/lib/utility/StructUtility.dart +0 -127
- package/project/.sdk/tm/dart/lib/utility/TransformRequestUtility.dart +0 -28
- package/project/.sdk/tm/dart/lib/utility/TransformResponseUtility.dart +0 -44
- package/project/.sdk/tm/dart/lib/utility/Utility.dart +0 -239
- package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +0 -2462
- package/project/.sdk/tm/dart/src/feature/README.md +0 -3
- package/project/.sdk/tm/dart/src/feature/telemetry/.gitkeep +0 -0
- package/project/.sdk/tm/dart/src/feature/test/.gitkeep +0 -0
- package/project/.sdk/tm/dart/src/feature/timeout/.gitkeep +0 -0
- package/project/.sdk/tm/dart/test/custom_test.dart +0 -65
- package/project/.sdk/tm/dart/test/exists_test.dart +0 -12
- package/project/.sdk/tm/dart/test/feature/harness.dart +0 -329
- package/project/.sdk/tm/dart/test/feature_test.dart +0 -1193
- package/project/.sdk/tm/dart/test/harness.dart +0 -153
- package/project/.sdk/tm/dart/test/netsim_test.dart +0 -48
- package/project/.sdk/tm/dart/test/omni.dart +0 -520
- package/project/.sdk/tm/dart/test/omni_smoke_test.dart +0 -143
- package/project/.sdk/tm/dart/test/pipeline_test.dart +0 -608
- package/project/.sdk/tm/dart/test/primary_test.dart +0 -476
- package/project/.sdk/tm/dart/test/sdk-test-control.json +0 -19
- package/project/.sdk/tm/dart/test/struct_test.dart +0 -468
- package/project/.sdk/tm/dart/test/utility.dart +0 -198
- package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +0 -7
- package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +0 -653
- package/project/.sdk/tm/dart/test/vendor/omni/util.dart +0 -232
- package/project/.sdk/tm/lean/LICENSE +0 -21
- package/project/.sdk/tm/lean/Makefile +0 -32
- package/project/.sdk/tm/lean/VERSION +0 -1
- package/project/.sdk/tm/lean/src/SdkFeature.lean +0 -171
- package/project/.sdk/tm/lean/src/SdkFeatures.lean +0 -787
- package/project/.sdk/tm/lean/src/SdkJson.lean +0 -134
- package/project/.sdk/tm/lean/src/SdkRuntime.lean +0 -374
- package/project/.sdk/tm/lean/src/SdkUtility.lean +0 -809
- package/project/.sdk/tm/lean/src/VoxgigStruct.lean +0 -2880
- package/project/.sdk/tm/lean/src/Vregex.lean +0 -412
- package/project/.sdk/tm/lean/src/feature/README.md +0 -5
- package/project/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/cost/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
- package/project/.sdk/tm/lean/test/OmniResolver.lean +0 -358
- package/project/.sdk/tm/lean/test/OmniSmoke.lean +0 -174
- package/project/.sdk/tm/lean/test/StructCorpus.lean +0 -368
- package/project/.sdk/tm/lean/test/TFeature.lean +0 -281
- package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +0 -227
- package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +0 -997
- package/project/.sdk/tm/seneca-provider/CODE_OF_CONDUCT.md +0 -132
- package/project/.sdk/tm/seneca-provider/LICENSE +0 -21
- package/project/.sdk/tm/seneca-provider/Makefile +0 -15
- package/project/.sdk/tm/seneca-provider/src/tsconfig.json +0 -18
- package/project/.sdk/tm/seneca-provider/test/tsconfig.json +0 -16
- package/project/.sdk/tm/seneca-provider/tsfmt.json +0 -3
- /package/project/.sdk/tm/{dart/src/feature/audit → c/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/base → clojure/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/cache → cpp/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/clienttrack → csharp/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/cost → elixir/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/debug → java/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/idempotency → kotlin/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/log → lua/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/metrics → ocaml/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/netsim → perl/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/paging → php/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/proxy → rb/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/ratelimit → rust/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/rbac → scala/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/retry → swift/src/feature/secrets}/.gitkeep +0 -0
- /package/project/.sdk/tm/{dart/src/feature/streaming → zig/src/feature/secrets}/.gitkeep +0 -0
|
@@ -0,0 +1,1089 @@
|
|
|
1
|
+
// VENDORED: @voxgig/plugin sdk-20260908-1556-0 (scala/src/Host.scala)
|
|
2
|
+
// Source: https://github.com/voxgig/plugin @ 48392f5e2b6d1434ee9b1a4a9a11f4480aaeb46a [tag: sdk-20260908-1556-0]
|
|
3
|
+
// License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
|
|
4
|
+
package voxgig.plugin
|
|
5
|
+
|
|
6
|
+
import scala.collection.mutable
|
|
7
|
+
|
|
8
|
+
/** The host: the lifecycle state machine (section 5), extension points
|
|
9
|
+
* (section 6), and resource capture (section 8) - and the definition and
|
|
10
|
+
* instance types the callbacks see.
|
|
11
|
+
*
|
|
12
|
+
* TWO RULES SHAPE EVERY METHOD BELOW.
|
|
13
|
+
*
|
|
14
|
+
* Transitions are SEQUENTIAL (section 5.2). One at a time, in call order,
|
|
15
|
+
* never interleaved; a transition triggered from inside a lifecycle callback
|
|
16
|
+
* is `plugin_reentrant`. A hard rule, because it is the only way the semantics
|
|
17
|
+
* can be identical in Go, in Ruby and in single-threaded JavaScript.
|
|
18
|
+
*
|
|
19
|
+
* Reconciliation is EAGER (section 18's portability budget). A transition
|
|
20
|
+
* settles by running the state machine to a fixed point, not by suspending on
|
|
21
|
+
* a promise. NOTHING HERE RETURNS A `Future`, and that is the decision scala
|
|
22
|
+
* most invites you to get wrong: a `Future`-returning transition would make
|
|
23
|
+
* section 5.2's "one at a time, in call order" a claim about an
|
|
24
|
+
* `ExecutionContext` rather than about the code.
|
|
25
|
+
*
|
|
26
|
+
* THE HOST AND ITS ENTRIES ARE MUTABLE, and nothing else in the port is. Every
|
|
27
|
+
* value here is immutable and every `Value` is a case class; these two classes
|
|
28
|
+
* are the state machine, and threading a rebuilt registry through every method
|
|
29
|
+
* would make a callback's writes land in a copy nobody reads back.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/** A plugin definition. A CASE CLASS WITH NAMED CALLBACKS, not a `Value` map:
|
|
33
|
+
* scala cannot hold a function in the sealed JSON hierarchy, and pretending
|
|
34
|
+
* otherwise would mean a `VOpaque` per callback and a cast at every call. The
|
|
35
|
+
* shape every port has - a name, four lifecycle callbacks, `reconfigure` and
|
|
36
|
+
* an option shape - is written in the type system rather than in a comment.
|
|
37
|
+
*/
|
|
38
|
+
final case class Definition(
|
|
39
|
+
name: String,
|
|
40
|
+
define: Option[Inst => Unit] = None,
|
|
41
|
+
activate: Option[Inst => Unit] = None,
|
|
42
|
+
deactivate: Option[Inst => Unit] = None,
|
|
43
|
+
close: Option[Inst => Unit] = None,
|
|
44
|
+
reconfigure: Option[(Inst, Value, Value) => Unit] = None,
|
|
45
|
+
shape: Value = VNull
|
|
46
|
+
) {
|
|
47
|
+
def callback(at: String): Option[Inst => Unit] = at match {
|
|
48
|
+
case "define" => define
|
|
49
|
+
case "activate" => activate
|
|
50
|
+
case "deactivate" => deactivate
|
|
51
|
+
case "close" => close
|
|
52
|
+
case _ => None
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** One declared extension point. */
|
|
57
|
+
final case class PointSpec(
|
|
58
|
+
kind: String = "hook",
|
|
59
|
+
mode: String = "emit",
|
|
60
|
+
base: Option[Value => Value] = None,
|
|
61
|
+
pin: Value = VNull,
|
|
62
|
+
exclusive: Boolean = false,
|
|
63
|
+
dflt: Value = VNull
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
/** Host construction options. */
|
|
67
|
+
final case class HostOptions(
|
|
68
|
+
catalog: Option[Catalog] = None,
|
|
69
|
+
reserved: List[String] = Nil,
|
|
70
|
+
points: Map[String, PointSpec] = Map.empty,
|
|
71
|
+
dependency: String = "restart",
|
|
72
|
+
keys: Value = VNull,
|
|
73
|
+
defaults: Value = VNull,
|
|
74
|
+
profile: Option[String] = None
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
/** The definition catalog (section 10.1).
|
|
78
|
+
*
|
|
79
|
+
* A definition is registered once and may back many instances. Option shapes
|
|
80
|
+
* are validated AT REGISTRATION, not when a document happens to exercise a key
|
|
81
|
+
* - so a malformed shape fails once, and in the same place everywhere
|
|
82
|
+
* (section 9.4).
|
|
83
|
+
*
|
|
84
|
+
* MUTABLE, because the host and its caller share one catalog and the driver's
|
|
85
|
+
* section 6.5 nest case adds to a live host's.
|
|
86
|
+
*/
|
|
87
|
+
final class Catalog {
|
|
88
|
+
|
|
89
|
+
private val defs = mutable.Map[String, Definition]()
|
|
90
|
+
|
|
91
|
+
def add(definition: Definition): Unit = {
|
|
92
|
+
if (!Refs.checkName(VStr(definition.name))) {
|
|
93
|
+
Types.fail("plugin_definition_name", "invalid definition name: " + definition.name)
|
|
94
|
+
}
|
|
95
|
+
// Validate the shape HERE. Deferring it to resolution time means a
|
|
96
|
+
// malformed shape surfaces at a different moment in every host that loads
|
|
97
|
+
// it, which is the divergence the stated domain exists to prevent.
|
|
98
|
+
if (!definition.shape.isNull) Config.checkShape(definition.shape)
|
|
99
|
+
defs(definition.name) = definition
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
def get(name: String): Option[Definition] = defs.get(name)
|
|
103
|
+
|
|
104
|
+
def has(name: String): Boolean = defs.contains(name)
|
|
105
|
+
|
|
106
|
+
def names: List[String] = defs.keys.toList.sorted
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** One registered instance. The INTERNAL record: a plugin sees `Inst`. */
|
|
110
|
+
final class Entry(
|
|
111
|
+
val ref: String,
|
|
112
|
+
val definition: Definition,
|
|
113
|
+
var status: String,
|
|
114
|
+
var pos: Int,
|
|
115
|
+
val seq: Int,
|
|
116
|
+
var options: Value,
|
|
117
|
+
var order: Value
|
|
118
|
+
) {
|
|
119
|
+
var state: Value = VMap(Map.empty)
|
|
120
|
+
var unmet: List[String] = Nil
|
|
121
|
+
val scope = mutable.ListBuffer[() => Unit]()
|
|
122
|
+
|
|
123
|
+
/** Section 11.4's ALWAYS-RELUCTANT rebinding made concrete: the provider ref
|
|
124
|
+
* this instance's activation actually chose, per requirement name.
|
|
125
|
+
* Re-ranking on every question silently re-points a live consumer at any
|
|
126
|
+
* better newcomer, and then losing the provider it was really using does not
|
|
127
|
+
* restart it.
|
|
128
|
+
*/
|
|
129
|
+
var selected: Map[String, String] = Map.empty
|
|
130
|
+
|
|
131
|
+
val bindings = mutable.ListBuffer[Binding]()
|
|
132
|
+
var exports: Map[String, Value] = Map.empty
|
|
133
|
+
val provides = mutable.ListBuffer[Value]()
|
|
134
|
+
var inner: Option[Host] = None
|
|
135
|
+
var barred: Boolean = false
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/** What a definition's callbacks see. Deliberately not the internal record: a
|
|
139
|
+
* plugin that could reach `status` could also write it.
|
|
140
|
+
*/
|
|
141
|
+
final class Inst(val host: Host, private val entry: Entry) {
|
|
142
|
+
|
|
143
|
+
val ref: String = entry.ref
|
|
144
|
+
val name: String = Refs.parseRef(VStr(entry.ref)).at("name").asString.getOrElse(entry.ref)
|
|
145
|
+
val tag: String = Refs.parseRef(VStr(entry.ref)).at("tag").asString.getOrElse("")
|
|
146
|
+
|
|
147
|
+
def options: Value = entry.options
|
|
148
|
+
|
|
149
|
+
def state: Value = entry.state
|
|
150
|
+
|
|
151
|
+
/** The state map is a VALUE, so a callback cannot mutate what it reads; this
|
|
152
|
+
* is the write. Every other port spells it `i.state[k] = v` because its maps
|
|
153
|
+
* are objects.
|
|
154
|
+
*/
|
|
155
|
+
def statePut(key: String, value: Value): Unit = {
|
|
156
|
+
entry.state = entry.state.setting(key, value)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/** Foreign resources the host did not hand out are registered explicitly
|
|
160
|
+
* (section 8.3); host calls are recorded automatically.
|
|
161
|
+
*
|
|
162
|
+
* SYMMETRIC WITH `acquire`, and it has to be: `open` counts the resources
|
|
163
|
+
* CURRENTLY HELD, so an entry that is registered and then unwound must leave
|
|
164
|
+
* the count where it found it.
|
|
165
|
+
*/
|
|
166
|
+
def release(fn: () => Unit): Unit = {
|
|
167
|
+
// Section 8.3: "`inst.release` outside `activate` is
|
|
168
|
+
// `plugin_release_scope`". `intransition` is true in `define` too, and a
|
|
169
|
+
// scope entry registered there is never unwound.
|
|
170
|
+
if (host.phase != Some("activate")) {
|
|
171
|
+
Types.fail("plugin_release_scope", "release called outside activate")
|
|
172
|
+
}
|
|
173
|
+
var done = false
|
|
174
|
+
entry.scope += (() => {
|
|
175
|
+
if (!done) {
|
|
176
|
+
done = true
|
|
177
|
+
host.open -= 1
|
|
178
|
+
fn()
|
|
179
|
+
}
|
|
180
|
+
})
|
|
181
|
+
host.open += 1
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/** The synthetic counter the driver owns, so "what is open" is data rather
|
|
185
|
+
* than an assertion each port words differently.
|
|
186
|
+
*
|
|
187
|
+
* Returns its own release, so a plugin can hand one back early. The scope
|
|
188
|
+
* still holds the entry and unwinding it twice is a no-op - releasing early
|
|
189
|
+
* must not make teardown wrong.
|
|
190
|
+
*/
|
|
191
|
+
def acquire(): () => Unit = {
|
|
192
|
+
// Section 8.1: resources are "acquired during `activate` - the scope's
|
|
193
|
+
// actual job". Same reason as `release` above.
|
|
194
|
+
if (host.phase != Some("activate")) {
|
|
195
|
+
Types.fail("plugin_release_scope", "acquire called outside activate")
|
|
196
|
+
}
|
|
197
|
+
var done = false
|
|
198
|
+
val rel = () => {
|
|
199
|
+
if (!done) {
|
|
200
|
+
done = true
|
|
201
|
+
host.open -= 1
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
entry.scope += rel
|
|
205
|
+
host.open += 1
|
|
206
|
+
rel
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/** Bind into a host point. Declared in `define`; the host inserts it only
|
|
210
|
+
* after `activate` returns successfully (section 8.1), which is why a
|
|
211
|
+
* failing activate leaves no live binding behind.
|
|
212
|
+
*
|
|
213
|
+
* Section 12 has carried `plugin_bind_scope` - "binding declared outside
|
|
214
|
+
* `define`" - since before anything raised it, and it was the half nobody
|
|
215
|
+
* wrote: a binding added from `activate` went live without being part of the
|
|
216
|
+
* loaded definition, and a deactivate/activate cycle appended it again.
|
|
217
|
+
*/
|
|
218
|
+
def bind(
|
|
219
|
+
point: String,
|
|
220
|
+
fn: (Option[Value => Value], Value) => Value,
|
|
221
|
+
band: Value = VNull
|
|
222
|
+
): Unit = {
|
|
223
|
+
if (host.phase != Some("define")) {
|
|
224
|
+
Types.fail(
|
|
225
|
+
"plugin_bind_scope", "bind called outside define: " + point,
|
|
226
|
+
Map("ref" -> VStr(ref), "point" -> VStr(point))
|
|
227
|
+
)
|
|
228
|
+
}
|
|
229
|
+
if (!host.hasPoint(point)) {
|
|
230
|
+
Types.fail(
|
|
231
|
+
"plugin_point_unknown", "no such point: " + point, Map("point" -> VStr(point))
|
|
232
|
+
)
|
|
233
|
+
}
|
|
234
|
+
entry.bindings += Binding(ref, point, fn, band.asInt.getOrElse(0))
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/** Published for other plugins and for the application (section 11).
|
|
238
|
+
*
|
|
239
|
+
* BACKTICKED BECAUSE `export` IS A HARD KEYWORD IN SCALA 3 -- it introduces
|
|
240
|
+
* an export clause, so a bare `def export` is a SYNTAX error there, not a
|
|
241
|
+
* deprecation. The name is the one every other port uses (section 11), so
|
|
242
|
+
* the backticks buy parity with canonical rather than a scala-only alias.
|
|
243
|
+
*/
|
|
244
|
+
def `export`(key: String, value: Value): Unit = {
|
|
245
|
+
entry.exports = entry.exports + (key -> value)
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/** What this instance can do for others (section 11.1). */
|
|
249
|
+
def provides(prov: Value): Unit = { entry.provides += prov; () }
|
|
250
|
+
|
|
251
|
+
/** Where this binding landed (section 6.6) - the plugin-side counterpart to a
|
|
252
|
+
* host pin. THE HOST DOES NOT POLICE THIS; it just makes the fact available.
|
|
253
|
+
* Verification tells a plugin it was misplaced; a pin (section 7) stops the
|
|
254
|
+
* misplacement from being expressible at all. The two are not substitutes.
|
|
255
|
+
*/
|
|
256
|
+
def position(point: String): Value = host.positionOf(VStr(ref), point)
|
|
257
|
+
|
|
258
|
+
/** AN INSTANCE MAY ITSELF BE A HOST (section 6.5), and THE OUTER ONE OWNS THE
|
|
259
|
+
* INNER ONE'S LIFETIME. Registering the teardown in the instance scope is
|
|
260
|
+
* what makes that true rather than aspirational.
|
|
261
|
+
*/
|
|
262
|
+
def nest(nestopts: HostOptions = HostOptions()): Host = {
|
|
263
|
+
if (!host.intransition) {
|
|
264
|
+
Types.fail("plugin_release_scope", "nest called outside a lifecycle callback")
|
|
265
|
+
}
|
|
266
|
+
val innerHost = new Host(nestopts)
|
|
267
|
+
// NOT counted: `open` must read the same before and after a nested host is
|
|
268
|
+
// created.
|
|
269
|
+
entry.scope += (() => innerHost.close())
|
|
270
|
+
entry.inner = Some(innerHost)
|
|
271
|
+
innerHost
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
final class Host(opts: HostOptions = HostOptions()) {
|
|
276
|
+
|
|
277
|
+
private val dependency = opts.dependency
|
|
278
|
+
|
|
279
|
+
/** Set for the duration of a bulk teardown, so `held` knows this is a
|
|
280
|
+
* coordinated operation rather than an ad-hoc deactivation.
|
|
281
|
+
*/
|
|
282
|
+
private var coordinated = false
|
|
283
|
+
|
|
284
|
+
val catalog: Catalog = opts.catalog.getOrElse(new Catalog)
|
|
285
|
+
private val reserved = opts.reserved
|
|
286
|
+
private val points = opts.points
|
|
287
|
+
|
|
288
|
+
private val inst = mutable.Map[String, Entry]()
|
|
289
|
+
private val log = mutable.ListBuffer[String]()
|
|
290
|
+
|
|
291
|
+
/** Section 14: the lifecycle event record. `seq` distinguishes ONE INCARNATION
|
|
292
|
+
* of stripe$test from the next, which is the whole reason it is not `pos`
|
|
293
|
+
* (section 4 rule 4).
|
|
294
|
+
*/
|
|
295
|
+
private val events = mutable.ListBuffer[Value]()
|
|
296
|
+
private var seqn = 0
|
|
297
|
+
var open = 0
|
|
298
|
+
var intransition = false
|
|
299
|
+
|
|
300
|
+
/** WHICH callback is running, not merely that one is. Section 8.1 puts
|
|
301
|
+
* resource capture in `activate` and 8.3 says `release` outside `activate`
|
|
302
|
+
* is `plugin_release_scope` - and `intransition` alone cannot tell
|
|
303
|
+
* `activate` from `define`, so it admitted an acquire in `define` whose
|
|
304
|
+
* scope `unload` would never unwind.
|
|
305
|
+
*/
|
|
306
|
+
var phase: Option[String] = None
|
|
307
|
+
|
|
308
|
+
def hasPoint(name: String): Boolean = points.contains(name)
|
|
309
|
+
|
|
310
|
+
// --- observation -----------------------------------------------------
|
|
311
|
+
|
|
312
|
+
/** Introspection NEVER advances the state (section 5.2). A status page must
|
|
313
|
+
* not be a way to accidentally import twenty packages.
|
|
314
|
+
*/
|
|
315
|
+
def list: Value = VMap(inst.map { case (ref, e) => ref -> VStr(e.status) }.toMap)
|
|
316
|
+
|
|
317
|
+
def instance(ref: Value): Option[Entry] = inst.get(Refs.canonRef(ref))
|
|
318
|
+
|
|
319
|
+
def trace: Value = VList(events.toList)
|
|
320
|
+
|
|
321
|
+
def observable(result: Value = VNull): Value = Value.map(
|
|
322
|
+
"status" -> list,
|
|
323
|
+
"open" -> VNum(open.toDouble),
|
|
324
|
+
"log" -> VList(log.toList.map(VStr.apply)),
|
|
325
|
+
"result" -> result
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
private def refs: List[String] = inst.keys.toList.sorted
|
|
329
|
+
|
|
330
|
+
// --- the state machine -------------------------------------------------
|
|
331
|
+
|
|
332
|
+
private def guardTransition(): Unit = {
|
|
333
|
+
if (intransition) {
|
|
334
|
+
Types.fail(
|
|
335
|
+
"plugin_reentrant", "transition attempted from inside a lifecycle callback"
|
|
336
|
+
)
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
private def need(ref: Value): Entry = {
|
|
341
|
+
val rf = Refs.canonRef(ref)
|
|
342
|
+
inst.getOrElse(rf, Types.fail(
|
|
343
|
+
"plugin_not_loaded", "no such instance: " + rf, Map("ref" -> VStr(rf))
|
|
344
|
+
))
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
private def checkReserved(ref: String): Unit = {
|
|
348
|
+
if (reserved.contains(Refs.refName(VStr(ref)))) {
|
|
349
|
+
Types.fail(
|
|
350
|
+
"plugin_ref_reserved", "ref is reserved by the host: " + ref,
|
|
351
|
+
Map("ref" -> VStr(ref))
|
|
352
|
+
)
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
private def run(entry: Entry, callback: String, at: String): Unit = {
|
|
357
|
+
val fn = entry.definition.callback(callback)
|
|
358
|
+
log += (entry.ref + ":" + at)
|
|
359
|
+
events += Value.map(
|
|
360
|
+
"ref" -> VStr(entry.ref), "event" -> VStr(at),
|
|
361
|
+
"seq" -> VNum(entry.seq.toDouble), "status" -> VStr(entry.status)
|
|
362
|
+
)
|
|
363
|
+
fn.foreach { f =>
|
|
364
|
+
intransition = true
|
|
365
|
+
phase = Some(at)
|
|
366
|
+
try {
|
|
367
|
+
f(new Inst(this, entry))
|
|
368
|
+
} catch {
|
|
369
|
+
case e: Exception =>
|
|
370
|
+
// Section 12: `plugin_define_failed` and its three siblings are "a
|
|
371
|
+
// callback raised; wraps the cause". AN ERROR THAT ALREADY CARRIES A
|
|
372
|
+
// CODE KEEPS IT - the code is the error's identity, and a plugin
|
|
373
|
+
// raising `store_unreachable` must not have it rewritten. Only a
|
|
374
|
+
// code-less error is wrapped.
|
|
375
|
+
if (Types.codeOf(e) != "") throw e
|
|
376
|
+
Types.fail(
|
|
377
|
+
"plugin_" + at + "_failed",
|
|
378
|
+
entry.ref + " raised in " + at + ": " + Types.messageOf(e),
|
|
379
|
+
Map("ref" -> VStr(entry.ref), "cause" -> VStr(Types.messageOf(e)))
|
|
380
|
+
)
|
|
381
|
+
} finally {
|
|
382
|
+
intransition = false
|
|
383
|
+
phase = None
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
/** AUTO-TAGGING IS EXPLICIT (section 4 rule 3). `declare("stripe", tag "?")`
|
|
389
|
+
* assigns the LOWEST UNUSED POSITIVE INTEGER tag and returns the assigned
|
|
390
|
+
* pair. Without `"?"`, a collision is an error.
|
|
391
|
+
*/
|
|
392
|
+
private def autotag(name: String): String =
|
|
393
|
+
// `Iterator.from`, NOT `Stream.from`: `Stream` is deprecated from 2.13 in
|
|
394
|
+
// favour of `LazyList`, and `LazyList` does not exist before it. `Iterator`
|
|
395
|
+
// is in every version, is deprecated in none, and is lazy enough -- `find`
|
|
396
|
+
// stops at the first free tag either way.
|
|
397
|
+
Iterator.from(1).map(n => Refs.formatRef(VStr(name), VStr(n.toString)))
|
|
398
|
+
.find(cand => !inst.contains(cand)).get
|
|
399
|
+
|
|
400
|
+
def declare(ref: Value, spec: Value = VMap(Map.empty)): Entry = {
|
|
401
|
+
val target =
|
|
402
|
+
if (spec.at("tag") == VStr("?")) VStr(autotag(Refs.refName(VStr(Refs.canon(ref)))))
|
|
403
|
+
else ref
|
|
404
|
+
val rf = Refs.canonRef(target)
|
|
405
|
+
if (!spec.at("hostowned").truthy) checkReserved(rf)
|
|
406
|
+
|
|
407
|
+
val defname = spec.at("definition").asString.getOrElse(Refs.refName(VStr(rf)))
|
|
408
|
+
val definition = catalog.get(defname).getOrElse(Types.fail(
|
|
409
|
+
"plugin_unknown_definition", "not in catalog: " + defname,
|
|
410
|
+
Map("name" -> VStr(defname))
|
|
411
|
+
))
|
|
412
|
+
|
|
413
|
+
inst.get(rf) match {
|
|
414
|
+
// Section 4 rule 1: a pair addresses at most one instance. Re-declaring
|
|
415
|
+
// the SAME definition is the idempotent case; a different one is a
|
|
416
|
+
// duplicate, not a silent overwrite (seneca) and not an impossibility
|
|
417
|
+
// (sdkgen).
|
|
418
|
+
case Some(existing) if existing.definition.name != definition.name =>
|
|
419
|
+
Types.fail(
|
|
420
|
+
"plugin_ref_duplicate", "instance already declared: " + rf,
|
|
421
|
+
Map("ref" -> VStr(rf))
|
|
422
|
+
)
|
|
423
|
+
case Some(existing) => existing
|
|
424
|
+
case None =>
|
|
425
|
+
val entry = new Entry(
|
|
426
|
+
rf, definition, "declared",
|
|
427
|
+
spec.at("pos").asInt.getOrElse(inst.size), seqn,
|
|
428
|
+
// PRESENT AND NOT NULL, not merely present. Every port's driver builds
|
|
429
|
+
// its spec with all four keys and a null for each absent one, so
|
|
430
|
+
// testing presence would read an omitted `options` as an authored
|
|
431
|
+
// empty.
|
|
432
|
+
if (spec.at("options").isNull) VMap(Map.empty) else spec.at("options"),
|
|
433
|
+
spec.at("order")
|
|
434
|
+
)
|
|
435
|
+
seqn += 1
|
|
436
|
+
inst(rf) = entry
|
|
437
|
+
entry
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
/** Section 9.1: a host that reserves a name MUST still be able to declare the
|
|
442
|
+
* instance it reserved - "The host declares those instances itself, after
|
|
443
|
+
* the user merge, and always wins."
|
|
444
|
+
*
|
|
445
|
+
* THE BOUNDARY IS BY METHOD, NOT BY CALLER, and that is a real limit: no
|
|
446
|
+
* language here can tell the embedding host from a plugin holding the same
|
|
447
|
+
* host object. What reservation protects is CONFIGURATION - documents,
|
|
448
|
+
* overlays, `VOXGIG_PLUGIN_*`, construction options and ordinary
|
|
449
|
+
* declare/load/options - and all of that still checks.
|
|
450
|
+
*/
|
|
451
|
+
def hostdeclare(ref: Value, spec: Value = VMap(Map.empty)): Entry = {
|
|
452
|
+
guardTransition()
|
|
453
|
+
declare(ref, spec.setting("hostowned", VBool(true)))
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
def load(ref: Value, spec: Value = VMap(Map.empty)): Entry = {
|
|
457
|
+
guardTransition()
|
|
458
|
+
val entry = declare(ref, spec)
|
|
459
|
+
if (entry.status != "declared") return entry // idempotent trivially
|
|
460
|
+
|
|
461
|
+
if (!spec.at("options").isNull) entry.options = spec.at("options")
|
|
462
|
+
try run(entry, "define", "define")
|
|
463
|
+
catch { case e: Exception => entry.status = "failed"; throw e }
|
|
464
|
+
entry.status = "loaded"
|
|
465
|
+
|
|
466
|
+
// AT LOAD, and before anything runs: a cycle through restart-causing
|
|
467
|
+
// requirements does not settle, and the only safe time to report a
|
|
468
|
+
// non-terminating reconcile is before it starts (section 11.3). `provides`
|
|
469
|
+
// is populated by `define`, which has just run, so this is the first moment
|
|
470
|
+
// the graph is complete.
|
|
471
|
+
try Depend.checkCycle(graphNodes)
|
|
472
|
+
catch { case e: Exception => entry.status = "failed"; throw e }
|
|
473
|
+
entry
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
/** The requirement graph as plain data, for the pure detector. */
|
|
477
|
+
private def graphNodes: List[GraphNode] = refs.map { rf =>
|
|
478
|
+
GraphNode(
|
|
479
|
+
rf,
|
|
480
|
+
inst(rf).provides.toList.map(_.at("name").asString.getOrElse("")),
|
|
481
|
+
Depend.requirements(inst(rf).options)
|
|
482
|
+
)
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
def activate(ref: Value): Entry = {
|
|
486
|
+
guardTransition()
|
|
487
|
+
val entry = need(ref)
|
|
488
|
+
if (entry.status == "live") return entry // no-op returning success
|
|
489
|
+
|
|
490
|
+
if (entry.status == "failed") {
|
|
491
|
+
Types.fail(
|
|
492
|
+
"plugin_bad_state", "instance has failed: " + entry.ref,
|
|
493
|
+
Map("ref" -> VStr(entry.ref))
|
|
494
|
+
)
|
|
495
|
+
}
|
|
496
|
+
// Section 9.6: `active: false` bars the instance from running, and the bar
|
|
497
|
+
// is on the INSTANCE rather than on the apply that set it. `ready` reaches
|
|
498
|
+
// this through `activate`, so one guard covers both verbs the design names.
|
|
499
|
+
if (entry.barred) {
|
|
500
|
+
Types.fail(
|
|
501
|
+
"plugin_inactive", "instance is barred by active: false: " + entry.ref,
|
|
502
|
+
Map("ref" -> VStr(entry.ref))
|
|
503
|
+
)
|
|
504
|
+
}
|
|
505
|
+
if (entry.status == "declared") load(VStr(entry.ref))
|
|
506
|
+
|
|
507
|
+
// A declared requirement that is not live means `pending`: activation is a
|
|
508
|
+
// STANDING REQUEST, not a one-shot event.
|
|
509
|
+
val unmet = unmetOf(entry)
|
|
510
|
+
if (unmet.nonEmpty) {
|
|
511
|
+
entry.unmet = unmet
|
|
512
|
+
entry.status = "pending"
|
|
513
|
+
return entry
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
try run(entry, "activate", "activate")
|
|
517
|
+
catch {
|
|
518
|
+
case e: Exception =>
|
|
519
|
+
// Unwind whatever the partial activation captured, in reverse.
|
|
520
|
+
unwind(entry)
|
|
521
|
+
entry.status = "failed"
|
|
522
|
+
throw e
|
|
523
|
+
}
|
|
524
|
+
// Section 11.4: THE SELECTION IS MADE HERE, once, and remembered. Every
|
|
525
|
+
// later question - the cascade, `hold`, `unmet` - reads it back rather than
|
|
526
|
+
// re-ranking, which is what "always-reluctant" means.
|
|
527
|
+
Depend.requirements(entry.options).foreach(req => chosen(entry, req, remember = true))
|
|
528
|
+
entry.status = "live"
|
|
529
|
+
reconcile()
|
|
530
|
+
entry
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
def deactivate(ref: Value): Entry = {
|
|
534
|
+
guardTransition()
|
|
535
|
+
val entry = need(ref)
|
|
536
|
+
if (entry.status == "loaded" || entry.status == "declared") return entry
|
|
537
|
+
|
|
538
|
+
// Section 5.2: `unload` is THE ONLY TRANSITION OUT OF `failed`.
|
|
539
|
+
if (entry.status == "failed") {
|
|
540
|
+
Types.fail(
|
|
541
|
+
"plugin_bad_state", "instance has failed: " + entry.ref,
|
|
542
|
+
Map("ref" -> VStr(entry.ref))
|
|
543
|
+
)
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
if (entry.status == "pending") {
|
|
547
|
+
// DEACTIVATING A PENDING INSTANCE RUNS NO CALLBACK (section 5.2). It
|
|
548
|
+
// never reached activate, so it holds no scope and no live bindings;
|
|
549
|
+
// running the definition's deactivate there would be teardown without
|
|
550
|
+
// matching setup, which plugins are not written to survive and which
|
|
551
|
+
// could fail an instance that had done nothing wrong. It cannot fail.
|
|
552
|
+
entry.status = "loaded"
|
|
553
|
+
entry.unmet = Nil
|
|
554
|
+
return entry
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
held(entry)
|
|
558
|
+
cascade(entry, Set.empty)
|
|
559
|
+
teardown(entry)
|
|
560
|
+
entry.status = "loaded"
|
|
561
|
+
reconcile()
|
|
562
|
+
entry
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
/** The live half of leaving `live`: the callback, then the scope. */
|
|
566
|
+
private def teardown(entry: Entry): Unit = {
|
|
567
|
+
try run(entry, "deactivate", "deactivate")
|
|
568
|
+
catch {
|
|
569
|
+
case e: Exception =>
|
|
570
|
+
unwind(entry)
|
|
571
|
+
entry.status = "failed"
|
|
572
|
+
throw e
|
|
573
|
+
}
|
|
574
|
+
releaseCheck(entry, unwind(entry))
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
def unload(ref: Value): Unit = {
|
|
578
|
+
guardTransition()
|
|
579
|
+
val entry = need(ref)
|
|
580
|
+
if (entry.status == "live" || entry.status == "pending") {
|
|
581
|
+
// Section 5.2: ANY failure during a transition lands the instance in
|
|
582
|
+
// `failed`, with the scope STILL FULLY UNWOUND - and the instance STAYS
|
|
583
|
+
// REGISTERED, because `failed` is a state an operator has to be able to
|
|
584
|
+
// see.
|
|
585
|
+
if (entry.status == "live") {
|
|
586
|
+
held(entry)
|
|
587
|
+
cascade(entry, Set.empty)
|
|
588
|
+
teardown(entry)
|
|
589
|
+
}
|
|
590
|
+
entry.status = "loaded"
|
|
591
|
+
}
|
|
592
|
+
if (entry.status == "loaded" || entry.status == "failed") {
|
|
593
|
+
try run(entry, "close", "close")
|
|
594
|
+
finally inst.remove(entry.ref)
|
|
595
|
+
} else {
|
|
596
|
+
inst.remove(entry.ref)
|
|
597
|
+
}
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
/** Runs the whole forward path in one call (section 5.1). */
|
|
601
|
+
def ready(ref: Value): Entry = {
|
|
602
|
+
guardTransition()
|
|
603
|
+
val rf = Refs.canonRef(ref)
|
|
604
|
+
if (!inst.contains(rf)) declare(VStr(rf))
|
|
605
|
+
if (inst(rf).status == "declared") load(VStr(rf))
|
|
606
|
+
activate(VStr(rf))
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
/** Bindings go live only when activation succeeds (section 8.1), so the
|
|
610
|
+
* teardown is the exact inverse: reverse order, always.
|
|
611
|
+
*
|
|
612
|
+
* Returns the errors the scope raised. Section 8.3: "A failing release does
|
|
613
|
+
* not stop the rest. Every entry runs, in reverse order, whatever any of
|
|
614
|
+
* them does; the errors are collected and raised as one
|
|
615
|
+
* `plugin_release_failed`."
|
|
616
|
+
*
|
|
617
|
+
* A selection belongs to ONE activation (section 11.4). Leaving `live` by
|
|
618
|
+
* any door drops it, so the next activation ranks afresh - keeping it would
|
|
619
|
+
* make a consumer prefer a provider it never actually ran against.
|
|
620
|
+
*/
|
|
621
|
+
private def unwind(entry: Entry): List[Throwable] = {
|
|
622
|
+
entry.selected = Map.empty
|
|
623
|
+
val errors = mutable.ListBuffer[Throwable]()
|
|
624
|
+
entry.scope.reverse.foreach { fn =>
|
|
625
|
+
try fn()
|
|
626
|
+
catch { case e: Exception => errors += e }
|
|
627
|
+
}
|
|
628
|
+
entry.scope.clear()
|
|
629
|
+
errors.toList
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
/** Section 8.3: "A failed release ends the instance in `failed`, exactly as a
|
|
633
|
+
* failed callback does (5.2) - a release that raised may have leaked, and an
|
|
634
|
+
* instance that may be holding resources it cannot account for must not be
|
|
635
|
+
* reactivated."
|
|
636
|
+
*/
|
|
637
|
+
private def releaseCheck(entry: Entry, errors: List[Throwable]): Unit = {
|
|
638
|
+
if (errors.isEmpty) return
|
|
639
|
+
entry.status = "failed"
|
|
640
|
+
val causes = errors.map(Types.messageOf)
|
|
641
|
+
Types.fail(
|
|
642
|
+
"plugin_release_failed",
|
|
643
|
+
"release failed for " + entry.ref + ": " + causes.mkString("; "),
|
|
644
|
+
Map("ref" -> VStr(entry.ref), "cause" -> VList(causes.map(VStr.apply)))
|
|
645
|
+
)
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
/** A REQUIREMENT IS ON A CAPABILITY, not on a ref (section 11.1). A bare
|
|
649
|
+
* string is shorthand for `{name}`. A ref satisfies too, because a host that
|
|
650
|
+
* genuinely needs a specific instance should not have to invent a capability
|
|
651
|
+
* for it.
|
|
652
|
+
*/
|
|
653
|
+
private def unmetOf(entry: Entry): List[String] =
|
|
654
|
+
Depend.requirements(entry.options)
|
|
655
|
+
.filter(Depend.gatesActivation)
|
|
656
|
+
.filter(req => providersOf(req).isEmpty)
|
|
657
|
+
.map(_.at("name").asString.getOrElse(""))
|
|
658
|
+
|
|
659
|
+
/** Section 11.4's always-reluctant selection, and the ONE place a provider is
|
|
660
|
+
* picked for a live instance. If this instance already selected a provider
|
|
661
|
+
* for `req` and that provider is STILL a candidate, it keeps it - a
|
|
662
|
+
* better-ranked newcomer does not take it.
|
|
663
|
+
*
|
|
664
|
+
* `remember` is false for the questions asked ABOUT an instance rather than
|
|
665
|
+
* BY it: introspection must not create a binding.
|
|
666
|
+
*/
|
|
667
|
+
private def chosen(entry: Entry, req: Value, remember: Boolean): Option[String] = {
|
|
668
|
+
val cands = providersOf(req)
|
|
669
|
+
if (cands.isEmpty) return None
|
|
670
|
+
val name = req.at("name").asString.getOrElse("")
|
|
671
|
+
entry.selected.get(name) match {
|
|
672
|
+
case Some(held) if cands.exists(_.at("ref").asString.contains(held)) => Some(held)
|
|
673
|
+
case _ =>
|
|
674
|
+
val pick = cands.head.at("ref").asString.getOrElse("")
|
|
675
|
+
if (remember) entry.selected = entry.selected + (name -> pick)
|
|
676
|
+
Some(pick)
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
|
|
680
|
+
/** The instances currently SELECTED for this one's restart-causing
|
|
681
|
+
* requirements. A BINDING IS TO AN INSTANCE, not to a capability (section
|
|
682
|
+
* 11.1): the selected one going away restarts a `static` consumer even
|
|
683
|
+
* though a survivor is available.
|
|
684
|
+
*/
|
|
685
|
+
private def boundProviders(entry: Entry): List[String] =
|
|
686
|
+
Depend.requirements(entry.options)
|
|
687
|
+
.filter(Depend.restartsOnLoss)
|
|
688
|
+
.flatMap(req => chosen(entry, req, remember = false))
|
|
689
|
+
.distinct
|
|
690
|
+
|
|
691
|
+
/** Live instances whose selected provider is `ref` and which would be
|
|
692
|
+
* restarted by losing it.
|
|
693
|
+
*/
|
|
694
|
+
private def consumersOf(ref: String): List[String] = refs.filter { rf =>
|
|
695
|
+
rf != ref && inst(rf).status == "live" && boundProviders(inst(rf)).contains(ref)
|
|
696
|
+
}
|
|
697
|
+
|
|
698
|
+
/** Section 11.3's `hold` asks a DIFFERENT question from the cascade, and
|
|
699
|
+
* reading it off `consumersOf` answered the cascade's.
|
|
700
|
+
*
|
|
701
|
+
* The cascade wants the edges that RESTART - mandatory-static and
|
|
702
|
+
* optional-static - because a restart is what it performs. `hold` says
|
|
703
|
+
* "deactivating a REQUIRED instance is `plugin_dependency_held`", and
|
|
704
|
+
* required is cardinality: `gatesActivation`, not `restartsOnLoss`. The two
|
|
705
|
+
* sets differ in both directions and each difference was a real bug.
|
|
706
|
+
*
|
|
707
|
+
* A MANDATORY-DYNAMIC consumer was excluded, so the strictest policy let a
|
|
708
|
+
* provider go that a live consumer could not do without - `dynamic` promises
|
|
709
|
+
* survival of a SWAP, and under `hold` there is no swap, so the consumer
|
|
710
|
+
* falls back to `pending`.
|
|
711
|
+
*
|
|
712
|
+
* An OPTIONAL-STATIC consumer was included, so `hold` refused a deactivation
|
|
713
|
+
* on behalf of an instance that had said in writing it does not need the
|
|
714
|
+
* thing.
|
|
715
|
+
*/
|
|
716
|
+
private def holdersOf(ref: String): List[String] = refs.filter { rf =>
|
|
717
|
+
val c = inst(rf)
|
|
718
|
+
rf != ref && c.status == "live" && Depend.requirements(c.options).exists { req =>
|
|
719
|
+
Depend.gatesActivation(req) && chosen(c, req, remember = false).contains(ref)
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
|
|
723
|
+
private def providersOf(req: Value): List[Value] = {
|
|
724
|
+
val name = req.at("name")
|
|
725
|
+
val want = Refs.canon(name)
|
|
726
|
+
val cands = refs.flatMap { ref =>
|
|
727
|
+
val target = inst(ref)
|
|
728
|
+
if (target.status != "live") {
|
|
729
|
+
Nil
|
|
730
|
+
} else if (ref == want) {
|
|
731
|
+
// A ref satisfies directly.
|
|
732
|
+
List(Value.map(
|
|
733
|
+
"ref" -> VStr(ref), "pos" -> VNum(target.pos.toDouble),
|
|
734
|
+
"provides" -> Value.map("name" -> name)
|
|
735
|
+
))
|
|
736
|
+
} else {
|
|
737
|
+
target.provides.toList.filter(_.at("name") == name).map(prov => Value.map(
|
|
738
|
+
"ref" -> VStr(ref), "pos" -> VNum(target.pos.toDouble), "provides" -> prov
|
|
739
|
+
))
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
Capability.resolveCapability(req, VList(cands))
|
|
743
|
+
}
|
|
744
|
+
|
|
745
|
+
/** CONSUMERS GO DOWN FIRST, NOT AFTERWARDS (section 11.3).
|
|
746
|
+
*
|
|
747
|
+
* The cascade is part of the provider's own deactivation and runs BEFORE the
|
|
748
|
+
* provider's `deactivate` callback and scope unwind, so a consumer's
|
|
749
|
+
* teardown can still call the thing it depends on - flushing a buffer to the
|
|
750
|
+
* store it is about to lose is exactly what a `deactivate` callback is for,
|
|
751
|
+
* and a cascade that fired after the provider was already gone would make
|
|
752
|
+
* that impossible.
|
|
753
|
+
*/
|
|
754
|
+
private def cascade(provider: Entry, seenIn: Set[String]): Unit = {
|
|
755
|
+
if (seenIn.contains(provider.ref)) return
|
|
756
|
+
val seen = seenIn + provider.ref
|
|
757
|
+
|
|
758
|
+
consumersOf(provider.ref).foreach { rf =>
|
|
759
|
+
val consumer = inst(rf)
|
|
760
|
+
if (consumer.status == "live") {
|
|
761
|
+
cascade(consumer, seen) // deepest-first
|
|
762
|
+
demote(consumer)
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
/** Leaving `live` for `pending` - or for `failed`, because section 5.2 says
|
|
768
|
+
* ANY failure during a transition lands the instance there. Marking it
|
|
769
|
+
* `pending` handed it straight back to `reconcile`, which would activate it
|
|
770
|
+
* again the moment the provider returned.
|
|
771
|
+
*/
|
|
772
|
+
private def demote(entry: Entry): Unit = {
|
|
773
|
+
var bad = false
|
|
774
|
+
try run(entry, "deactivate", "deactivate")
|
|
775
|
+
catch { case _: Exception => bad = true }
|
|
776
|
+
val errors = unwind(entry)
|
|
777
|
+
if (bad || errors.nonEmpty) {
|
|
778
|
+
entry.status = "failed"
|
|
779
|
+
} else {
|
|
780
|
+
entry.status = "pending"
|
|
781
|
+
entry.unmet = unmetOf(entry)
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
/** The hold check is A GUARD ON AD-HOC DEACTIVATION, NOT ON COORDINATED
|
|
786
|
+
* TEARDOWN. In a bulk operation that is removing the holders too - `close`,
|
|
787
|
+
* or an `apply` plan whose own steps deactivate them - it is suspended for
|
|
788
|
+
* exactly those holders, and the teardown still runs consumers before
|
|
789
|
+
* providers.
|
|
790
|
+
*/
|
|
791
|
+
private def held(entry: Entry): Unit = {
|
|
792
|
+
if (dependency != "hold" || coordinated) return
|
|
793
|
+
val holders = holdersOf(entry.ref)
|
|
794
|
+
if (holders.isEmpty) return
|
|
795
|
+
Types.fail(
|
|
796
|
+
"plugin_dependency_held",
|
|
797
|
+
"instance is required by live consumers: " + entry.ref,
|
|
798
|
+
Map("ref" -> VStr(entry.ref), "holders" -> VList(holders.map(VStr.apply)))
|
|
799
|
+
)
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
/** EAGER reconciliation: run to a fixed point rather than scheduling.
|
|
803
|
+
*
|
|
804
|
+
* Two directions, and both are the reason `pending` exists. Activation is a
|
|
805
|
+
* STANDING REQUEST, not a one-shot event.
|
|
806
|
+
*/
|
|
807
|
+
private def reconcile(): Unit = {
|
|
808
|
+
var moved = true
|
|
809
|
+
var rounds = 0
|
|
810
|
+
while (moved && rounds <= 1000) {
|
|
811
|
+
moved = false
|
|
812
|
+
rounds += 1
|
|
813
|
+
|
|
814
|
+
// Losses first, so a cascade settles in one pass rather than alternating
|
|
815
|
+
// with re-activations.
|
|
816
|
+
refs.foreach { rf =>
|
|
817
|
+
inst.get(rf).filter(_.status == "live").foreach { entry =>
|
|
818
|
+
// POLICY IS PER REQUIREMENT, not per instance (section 11.3). A
|
|
819
|
+
// `dynamic` requirement whose provider is gone leaves the consumer
|
|
820
|
+
// LIVE and notified.
|
|
821
|
+
val lost = Depend.requirements(entry.options)
|
|
822
|
+
.filter(Depend.gatesActivation)
|
|
823
|
+
.filter(q => providersOf(q).isEmpty)
|
|
824
|
+
if (lost.nonEmpty && lost.exists(Depend.restartsOnLoss)) {
|
|
825
|
+
demote(entry)
|
|
826
|
+
moved = true
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
refs.foreach { rf =>
|
|
832
|
+
inst.get(rf).filter(_.status == "pending").foreach { entry =>
|
|
833
|
+
if (unmetOf(entry).isEmpty) {
|
|
834
|
+
try {
|
|
835
|
+
run(entry, "activate", "activate")
|
|
836
|
+
entry.status = "live"
|
|
837
|
+
entry.unmet = Nil
|
|
838
|
+
} catch {
|
|
839
|
+
case _: Exception =>
|
|
840
|
+
unwind(entry)
|
|
841
|
+
entry.status = "failed"
|
|
842
|
+
}
|
|
843
|
+
moved = true
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
// --- ordering ----------------------------------------------------------
|
|
851
|
+
|
|
852
|
+
def order(point: Option[String] = None): List[String] = {
|
|
853
|
+
// Sorted by declaration SEQUENCE, which is what makes the section 7 sort's
|
|
854
|
+
// fall-through deterministic in a language whose maps have no order at all.
|
|
855
|
+
// Section 7 breaks ties by `pos`; two instances CAN share one - `declare`
|
|
856
|
+
// defaults `pos` to the registry size, so an unload followed by a fresh
|
|
857
|
+
// declare reuses a surviving instance's - and past that this was falling
|
|
858
|
+
// through to map order. `seq` is that order, made explicit.
|
|
859
|
+
val bindings = refs.filter(rf => inst(rf).status == "live")
|
|
860
|
+
.sortBy(rf => inst(rf).seq)
|
|
861
|
+
.map(rf => OrderNode(rf, inst(rf).pos, inst(rf).order))
|
|
862
|
+
val pin = point.flatMap(points.get).map(_.pin).getOrElse(VNull)
|
|
863
|
+
Order.resolveOrder(bindings, pin)
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
// --- points ------------------------------------------------------------
|
|
867
|
+
|
|
868
|
+
/** Live bindings on a point, in resolved order. Recomputed on any change to
|
|
869
|
+
* the live set (section 7) rather than cached at startup - the bug a host
|
|
870
|
+
* discovers only when something deactivates in production.
|
|
871
|
+
*/
|
|
872
|
+
private def bound(point: String): List[Binding] =
|
|
873
|
+
order(Some(point)).flatMap { ref =>
|
|
874
|
+
val entry = inst(ref)
|
|
875
|
+
// The band is the INSTANCE's ordering block (section 7), stamped by the
|
|
876
|
+
// host. A plugin passing its own would be ranking itself above the order
|
|
877
|
+
// its document declared.
|
|
878
|
+
val band = entry.order.at("band").asInt.getOrElse(0)
|
|
879
|
+
entry.bindings.toList.filter(_.point == point).map(_.copy(band = band))
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
private def pointSpec(point: String, want: String): PointSpec = {
|
|
883
|
+
val spec = points.getOrElse(point, Types.fail(
|
|
884
|
+
"plugin_point_unknown", "no such point: " + point, Map("point" -> VStr(point))
|
|
885
|
+
))
|
|
886
|
+
if (spec.kind != want) {
|
|
887
|
+
Types.fail(
|
|
888
|
+
"plugin_point_kind", "point is not a " + want + ": " + point,
|
|
889
|
+
Map("point" -> VStr(point), "kind" -> VStr(spec.kind))
|
|
890
|
+
)
|
|
891
|
+
}
|
|
892
|
+
spec
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
def emit(point: String, arg: Value = VNull): Value =
|
|
896
|
+
Point.pointEmit(bound(point), pointSpec(point, "hook").mode, arg)
|
|
897
|
+
|
|
898
|
+
def call(point: String, arg: Value = VNull): Value = {
|
|
899
|
+
val spec = pointSpec(point, "chain")
|
|
900
|
+
Point.compose(bound(point), spec.base.getOrElse((a: Value) => a))(arg)
|
|
901
|
+
}
|
|
902
|
+
|
|
903
|
+
def provider(point: String, arg: Value = VNull): Value = {
|
|
904
|
+
val spec = pointSpec(point, "provider")
|
|
905
|
+
val pick = Point.pointProvider(
|
|
906
|
+
bound(point), Value.map("exclusive" -> VBool(spec.exclusive))
|
|
907
|
+
)
|
|
908
|
+
pick.winner match {
|
|
909
|
+
case None => spec.dflt
|
|
910
|
+
case Some(w) => w.fn(None, arg)
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
/** The losers are VISIBLE rather than silently ignored (section 6.3). */
|
|
915
|
+
def shadowed(point: String): List[String] = points.get(point) match {
|
|
916
|
+
case None => Nil
|
|
917
|
+
case Some(spec) =>
|
|
918
|
+
Point.pointProvider(
|
|
919
|
+
bound(point), Value.map("exclusive" -> VBool(spec.exclusive))
|
|
920
|
+
).shadowed
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
def exports(spec: String): Value = {
|
|
924
|
+
val all = refs.flatMap { ref =>
|
|
925
|
+
val entry = inst(ref)
|
|
926
|
+
// Exports of a `loaded` (not live) instance are VISIBLE (11).
|
|
927
|
+
if (entry.status == "declared" || entry.status == "failed") {
|
|
928
|
+
Nil
|
|
929
|
+
} else {
|
|
930
|
+
entry.exports.keys.toList.sorted
|
|
931
|
+
.map(k => Export.Exported(ref, k, entry.exports(k)))
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
Export.resolveExport(spec, all)
|
|
935
|
+
}
|
|
936
|
+
|
|
937
|
+
/** The live providers of a capability, best-first (section 11.1). */
|
|
938
|
+
def capability(name: String): List[String] = {
|
|
939
|
+
val cands = refs.flatMap { ref =>
|
|
940
|
+
val entry = inst(ref)
|
|
941
|
+
if (entry.status != "live") {
|
|
942
|
+
Nil
|
|
943
|
+
} else {
|
|
944
|
+
entry.provides.toList.filter(_.at("name").asString.contains(name))
|
|
945
|
+
.map(prov => Value.map(
|
|
946
|
+
"ref" -> VStr(ref), "pos" -> VNum(entry.pos.toDouble), "provides" -> prov
|
|
947
|
+
))
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
Capability.resolveCapability(Value.map("name" -> VStr(name)), VList(cands))
|
|
951
|
+
.map(_.at("ref").asString.getOrElse(""))
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
// --- documents ---------------------------------------------------------
|
|
955
|
+
|
|
956
|
+
private def shapeOf(ref: String): Value =
|
|
957
|
+
catalog.get(Refs.refName(VStr(ref))).map(_.shape).getOrElse(VNull)
|
|
958
|
+
|
|
959
|
+
/** Section 9.6: "load what is missing, UNLOAD WHAT IS GONE, patch what
|
|
960
|
+
* changed, and move activation state to match", with the stated ordering -
|
|
961
|
+
* "deactivations and unloads first (reverse load order), then loads, then
|
|
962
|
+
* activations in load order".
|
|
963
|
+
*
|
|
964
|
+
* FOUR PHASES, NOT ONE INTERLEAVED LOOP. An earlier draft walked the
|
|
965
|
+
* document once, which never looked at instances the new document had
|
|
966
|
+
* DROPPED - so an integration removed from a config reload stayed live with
|
|
967
|
+
* its bindings and resources.
|
|
968
|
+
*/
|
|
969
|
+
def apply(doc: Value, profile: Option[String] = None): Unit = {
|
|
970
|
+
guardTransition()
|
|
971
|
+
val useProfile = profile.orElse(opts.profile)
|
|
972
|
+
val norm = Config.normalizeConfig(Value.map(
|
|
973
|
+
"doc" -> doc,
|
|
974
|
+
"profile" -> useProfile.map(VStr.apply).getOrElse(VNull),
|
|
975
|
+
"keys" -> opts.keys,
|
|
976
|
+
"reserved" -> VList(reserved.map(VStr.apply))
|
|
977
|
+
))
|
|
978
|
+
|
|
979
|
+
val want = norm.at("order").items.map(_.asString.getOrElse(""))
|
|
980
|
+
val optionsof = want.map { ref =>
|
|
981
|
+
ref -> Config.resolveOptions(Value.map(
|
|
982
|
+
"ref" -> VStr(ref), "doc" -> doc,
|
|
983
|
+
"profile" -> useProfile.map(VStr.apply).getOrElse(VNull),
|
|
984
|
+
"shape" -> shapeOf(ref),
|
|
985
|
+
"hostdefaults" -> opts.defaults.at(Refs.refName(VStr(ref)))
|
|
986
|
+
))
|
|
987
|
+
}.toMap
|
|
988
|
+
|
|
989
|
+
// Should this ref be LIVE after the apply? False for a ref the document
|
|
990
|
+
// declares lazy or inactive AND for one it does not name at all - which is
|
|
991
|
+
// what makes "unload what is gone" and "unload what was toggled off" one
|
|
992
|
+
// rule rather than two.
|
|
993
|
+
def wantlive(ref: String): Boolean = norm.at("instance").get(ref) match {
|
|
994
|
+
case None => false
|
|
995
|
+
case Some(ent) => ent.at("active").truthy && ent.at("start") == VStr("eager")
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
// --- phase 1: deactivations and unloads, REVERSE load order -----------
|
|
999
|
+
// Highest `pos` first, ref-descending for a tie, so a consumer declared
|
|
1000
|
+
// after its provider goes down first.
|
|
1001
|
+
refs.filter(rf => inst(rf).status != "declared" && !wantlive(rf))
|
|
1002
|
+
.sortWith { (a, b) =>
|
|
1003
|
+
val pa = inst(a).pos
|
|
1004
|
+
val pb = inst(b).pos
|
|
1005
|
+
if (pa == pb) a > b else pa > pb
|
|
1006
|
+
}
|
|
1007
|
+
.foreach(ref => unload(VStr(ref)))
|
|
1008
|
+
|
|
1009
|
+
// --- phase 2: declare and patch EVERYTHING, in load order -------------
|
|
1010
|
+
want.foreach { ref =>
|
|
1011
|
+
val ent = norm.at("instance").at(ref)
|
|
1012
|
+
declare(VStr(ref), Value.map(
|
|
1013
|
+
"options" -> optionsof(ref), "order" -> ent.at("order"), "pos" -> ent.at("pos")
|
|
1014
|
+
))
|
|
1015
|
+
val entry = inst(ref)
|
|
1016
|
+
// The bar is REASSERTED ON EVERY APPLY, in both directions - a document
|
|
1017
|
+
// that turns the instance back on clears it, which is the whole point of
|
|
1018
|
+
// a config switch.
|
|
1019
|
+
entry.barred = !ent.at("active").truthy
|
|
1020
|
+
entry.options = optionsof(ref)
|
|
1021
|
+
entry.order = ent.at("order")
|
|
1022
|
+
entry.pos = ent.at("pos").asInt.getOrElse(0)
|
|
1023
|
+
}
|
|
1024
|
+
|
|
1025
|
+
// --- phase 3: loads, in load order ------------------------------------
|
|
1026
|
+
// ONLY THE EAGER, ACTIVE ONES: "a document of twenty lazy instances is
|
|
1027
|
+
// twenty map entries and no executed code" (9.6).
|
|
1028
|
+
want.filter(wantlive).foreach(ref => load(VStr(ref)))
|
|
1029
|
+
|
|
1030
|
+
// --- phase 4: activations, in load order ------------------------------
|
|
1031
|
+
want.filter(wantlive).foreach(ref => activate(VStr(ref)))
|
|
1032
|
+
}
|
|
1033
|
+
|
|
1034
|
+
def options(ref: Value, patch: Value): Unit = {
|
|
1035
|
+
guardTransition()
|
|
1036
|
+
val entry = need(ref)
|
|
1037
|
+
val previous = entry.options
|
|
1038
|
+
val merged = patch.keys.foldLeft(previous.entries)((acc, k) => acc + (k -> patch.at(k)))
|
|
1039
|
+
|
|
1040
|
+
val resolved = Config.resolveOptions(Value.map(
|
|
1041
|
+
"ref" -> VStr(entry.ref), "shape" -> shapeOf(entry.ref),
|
|
1042
|
+
"doc" -> VMap(Map.empty), "patch" -> VMap(merged)
|
|
1043
|
+
))
|
|
1044
|
+
entry.options = resolved
|
|
1045
|
+
if (entry.status != "live") return
|
|
1046
|
+
|
|
1047
|
+
entry.definition.reconfigure match {
|
|
1048
|
+
case Some(fn) =>
|
|
1049
|
+
intransition = true
|
|
1050
|
+
try fn(new Inst(this, entry), resolved, previous)
|
|
1051
|
+
finally intransition = false
|
|
1052
|
+
case None =>
|
|
1053
|
+
// Always correct and sometimes expensive; `reconfigure` exists to make
|
|
1054
|
+
// the common case cheap (section 9.4).
|
|
1055
|
+
deactivate(VStr(entry.ref))
|
|
1056
|
+
activate(VStr(entry.ref))
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
|
|
1060
|
+
def close(): Unit = {
|
|
1061
|
+
// A bulk teardown removing the holders too, so `hold` is suspended for
|
|
1062
|
+
// exactly those holders (section 11.3) - while the consumers-first cascade
|
|
1063
|
+
// still runs, which is the half that matters.
|
|
1064
|
+
coordinated = true
|
|
1065
|
+
try refs.reverse.foreach(rf => unload(VStr(rf)))
|
|
1066
|
+
finally coordinated = false
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
/** The same record section 6.6 gives a plugin about itself, reachable from
|
|
1070
|
+
* outside for the corpus.
|
|
1071
|
+
*/
|
|
1072
|
+
def positionOf(ref: Value, point: String): Value = {
|
|
1073
|
+
val entry = inst.getOrElse(Refs.canon(ref), Types.fail(
|
|
1074
|
+
"plugin_not_loaded", "no such instance: " + Refs.show(ref), Map("ref" -> ref)
|
|
1075
|
+
))
|
|
1076
|
+
val ranked = order(Some(point))
|
|
1077
|
+
val index = ranked.indexOf(entry.ref)
|
|
1078
|
+
Value.map(
|
|
1079
|
+
"index" -> VNum(index.toDouble),
|
|
1080
|
+
"count" -> VNum(ranked.length.toDouble),
|
|
1081
|
+
// Section 6.2 composes b1(b2(b3(base))) with the FIRST binding OUTERMOST,
|
|
1082
|
+
// so these are not index 0 and index count-1 the other way round.
|
|
1083
|
+
"outermost" -> VBool(index == 0),
|
|
1084
|
+
"innermost" -> VBool(index == ranked.length - 1)
|
|
1085
|
+
)
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
def define(definition: Definition): Unit = catalog.add(definition)
|
|
1089
|
+
}
|