@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,1018 @@
|
|
|
1
|
+
;; VENDORED: @voxgig/plugin sdk-20260908-1556-0 (clojure/src/voxgig/plugin/host.clj)
|
|
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
|
+
(ns voxgig.plugin.host
|
|
5
|
+
"The host: the lifecycle state machine (section 5), extension points
|
|
6
|
+
(section 6), and resource capture (section 8) - and the instance api
|
|
7
|
+
(`Instance`) the definitions see.
|
|
8
|
+
|
|
9
|
+
TWO RULES SHAPE EVERY FUNCTION BELOW.
|
|
10
|
+
|
|
11
|
+
Transitions are SEQUENTIAL (section 5.2). One at a time, in call order,
|
|
12
|
+
never interleaved; a transition triggered from inside a lifecycle
|
|
13
|
+
callback is `plugin_reentrant`. A hard rule, because it is the only way
|
|
14
|
+
the semantics can be identical in Go, in Ruby and in single-threaded
|
|
15
|
+
JavaScript.
|
|
16
|
+
|
|
17
|
+
Reconciliation is EAGER (section 18's portability budget). A transition
|
|
18
|
+
settles by running the state machine to a fixed point, not by suspending
|
|
19
|
+
on a promise.
|
|
20
|
+
|
|
21
|
+
ONE NAMESPACE FOR HOST AND INSTANCE, unlike every other port's two
|
|
22
|
+
files. `Instance` calls back into the host and the host constructs `Instance`,
|
|
23
|
+
and clojure namespaces cannot be circular; splitting them would need a
|
|
24
|
+
protocol whose only purpose is to break a cycle that does not exist in
|
|
25
|
+
the design.
|
|
26
|
+
|
|
27
|
+
THE REGISTRY IS AN ATOM, and it is the one mutable thing in the port.
|
|
28
|
+
Two consequences are worth stating plainly, because both are easy to get
|
|
29
|
+
wrong and neither is visible from a green corpus.
|
|
30
|
+
|
|
31
|
+
CALLBACKS NEVER RUN INSIDE `swap!`. `swap!` RETRIES its function under
|
|
32
|
+
contention, so a callback run there could execute twice; and a callback
|
|
33
|
+
that called back into its own host would be reading the atom it is
|
|
34
|
+
mid-update on. Every function here computes outside and writes with a
|
|
35
|
+
short, pure, targeted `swap!`.
|
|
36
|
+
|
|
37
|
+
NEVER WRITE BACK A WHOLE SNAPSHOT. A callback mutates the registry while
|
|
38
|
+
it runs, so the entry read before running one is stale afterwards. Every
|
|
39
|
+
internal function takes a REF, not an entry."
|
|
40
|
+
(:refer-clojure :exclude [list load apply declare])
|
|
41
|
+
(:require [voxgig.plugin.types :as t]
|
|
42
|
+
[voxgig.plugin.ref :as r]
|
|
43
|
+
[voxgig.plugin.catalog :as cat]
|
|
44
|
+
[voxgig.plugin.config :as config]
|
|
45
|
+
[voxgig.plugin.capability :as cap]
|
|
46
|
+
[voxgig.plugin.depend :as dep]
|
|
47
|
+
[voxgig.plugin.export :as export]
|
|
48
|
+
[voxgig.plugin.order :as ord]
|
|
49
|
+
[voxgig.plugin.point :as pt]
|
|
50
|
+
[clojure.string :as str]))
|
|
51
|
+
|
|
52
|
+
(deftype Host [state])
|
|
53
|
+
(deftype Instance [host ref])
|
|
54
|
+
|
|
55
|
+
(clojure.core/declare activate deactivate load unload reconcile! cascade! close
|
|
56
|
+
positionof order chosen exports catalog-add!)
|
|
57
|
+
|
|
58
|
+
;; --- the atom, and the only four ways this namespace touches it ------
|
|
59
|
+
|
|
60
|
+
(defn- snap [^Host h] @(.state h))
|
|
61
|
+
(defn- edit! [^Host h f] (swap! (.state h) f))
|
|
62
|
+
(defn- edit-vals! [^Host h f] (swap-vals! (.state h) f))
|
|
63
|
+
(defn- entry [h ref] (get-in (snap h) [:inst ref]))
|
|
64
|
+
|
|
65
|
+
(defn entry-update! [h ref f] (edit! h #(update-in % [:inst ref] f)))
|
|
66
|
+
(defn- set-field! [h ref k v] (entry-update! h ref #(assoc % k v)))
|
|
67
|
+
(defn- field [h ref k] (get-in (snap h) [:inst ref k]))
|
|
68
|
+
(defn- refs [h] (sort (keys (:inst (snap h)))))
|
|
69
|
+
|
|
70
|
+
(defn make-host
|
|
71
|
+
([] (make-host nil))
|
|
72
|
+
([options]
|
|
73
|
+
(let [opts (or options {})]
|
|
74
|
+
(->Host
|
|
75
|
+
(atom {:opts opts
|
|
76
|
+
:dependency (or (t/get opts "dependency") "restart")
|
|
77
|
+
;; Set for the duration of a bulk teardown, so `held` knows
|
|
78
|
+
;; this is a coordinated operation rather than an ad-hoc
|
|
79
|
+
;; deactivation.
|
|
80
|
+
:coordinated false
|
|
81
|
+
:catalog (or (t/get opts "catalog") (cat/make-catalog))
|
|
82
|
+
:reserved (or (t/get opts "reserved") [])
|
|
83
|
+
:points (or (t/get opts "points") {})
|
|
84
|
+
:inst {}
|
|
85
|
+
:log []
|
|
86
|
+
;; Section 14: the lifecycle event record. `seq` distinguishes
|
|
87
|
+
;; ONE INCARNATION of stripe$test from the next, which is the
|
|
88
|
+
;; whole reason it is not `pos` (section 4 rule 4).
|
|
89
|
+
:events []
|
|
90
|
+
:seqn 0
|
|
91
|
+
:open 0
|
|
92
|
+
:scopeid 0
|
|
93
|
+
:intransition false
|
|
94
|
+
;; WHICH callback is running, not merely that one is. Section
|
|
95
|
+
;; 8.1 puts resource capture in `activate` and 8.3 says
|
|
96
|
+
;; `release` outside `activate` is `plugin_release_scope` -
|
|
97
|
+
;; and `intransition` alone cannot tell `activate` from
|
|
98
|
+
;; `define`, so it admitted an acquire in `define` whose scope
|
|
99
|
+
;; `unload` would never unwind.
|
|
100
|
+
:phase nil})))))
|
|
101
|
+
|
|
102
|
+
(defn intransition? [h] (:intransition (snap h)))
|
|
103
|
+
(defn phase [h] (:phase (snap h)))
|
|
104
|
+
(defn point? [h nm] (contains? (:points (snap h)) nm))
|
|
105
|
+
(defn catalog [h] (:catalog (snap h)))
|
|
106
|
+
|
|
107
|
+
(defn catalog-add!
|
|
108
|
+
"Extend a LIVE host's catalog. The catalog is a value (see `catalog`), so
|
|
109
|
+
a caller holding one just keeps the result of `cat/add`; this is for the
|
|
110
|
+
one that holds a host instead. Validation runs HERE, outside the
|
|
111
|
+
`swap!`, because `swap!` retries and a throwing update function is not
|
|
112
|
+
something to retry."
|
|
113
|
+
[h definition]
|
|
114
|
+
(let [updated (cat/add (catalog h) definition)]
|
|
115
|
+
(edit! h #(assoc % :catalog updated))
|
|
116
|
+
nil))
|
|
117
|
+
|
|
118
|
+
(defn define [h definition] (catalog-add! h definition))
|
|
119
|
+
|
|
120
|
+
;; --- scope (section 8) ----------------------------------------------
|
|
121
|
+
|
|
122
|
+
(defn- scope-release!
|
|
123
|
+
"Releasing POPS THE ENTRY BY ID, which is what makes it idempotent: a
|
|
124
|
+
second call finds nothing and does nothing, and so does one made after
|
|
125
|
+
the whole scope unwound."
|
|
126
|
+
[h ref id]
|
|
127
|
+
(let [[old _] (edit-vals!
|
|
128
|
+
h (fn [s]
|
|
129
|
+
(let [scope (get-in s [:inst ref "scope"] [])
|
|
130
|
+
hit (first (filter #(= id (:id %)) scope))]
|
|
131
|
+
(if (nil? hit)
|
|
132
|
+
s
|
|
133
|
+
(-> s
|
|
134
|
+
(update :open - (:open hit))
|
|
135
|
+
(assoc-in [:inst ref "scope"]
|
|
136
|
+
(vec (remove #(= id (:id %)) scope))))))))
|
|
137
|
+
hit (first (filter #(= id (:id %)) (get-in old [:inst ref "scope"] [])))]
|
|
138
|
+
(when (and hit (:fn hit)) ((:fn hit)))
|
|
139
|
+
nil))
|
|
140
|
+
|
|
141
|
+
(defn- scope-push! [h ref f message]
|
|
142
|
+
(when (not= "activate" (phase h)) (t/fail "plugin_release_scope" message))
|
|
143
|
+
(let [[old _] (edit-vals!
|
|
144
|
+
h (fn [s]
|
|
145
|
+
(-> s
|
|
146
|
+
(update :scopeid inc)
|
|
147
|
+
(update :open inc)
|
|
148
|
+
(update-in [:inst ref "scope"] conj
|
|
149
|
+
{:id (:scopeid s) :fn f :open 1}))))
|
|
150
|
+
id (:scopeid old)]
|
|
151
|
+
(fn [] (scope-release! h ref id))))
|
|
152
|
+
|
|
153
|
+
(defn- scope-uncounted! [h ref f]
|
|
154
|
+
(edit! h (fn [s]
|
|
155
|
+
(-> s
|
|
156
|
+
(update :scopeid inc)
|
|
157
|
+
(update-in [:inst ref "scope"] conj {:id (:scopeid s) :fn f :open 0}))))
|
|
158
|
+
nil)
|
|
159
|
+
|
|
160
|
+
(defn- unwind!
|
|
161
|
+
"Bindings go live only when activation succeeds (section 8.1), so the
|
|
162
|
+
teardown is the exact inverse: reverse order, always.
|
|
163
|
+
|
|
164
|
+
Returns the errors the scope raised. Section 8.3: \"A failing release
|
|
165
|
+
does not stop the rest. Every entry runs, in reverse order, whatever any
|
|
166
|
+
of them does; the errors are collected and raised as one
|
|
167
|
+
`plugin_release_failed`.\"
|
|
168
|
+
|
|
169
|
+
A selection belongs to ONE activation (section 11.4). Leaving `live` by
|
|
170
|
+
any door drops it, so the next activation ranks afresh - keeping it
|
|
171
|
+
would make a consumer prefer a provider it never actually ran against."
|
|
172
|
+
[h ref]
|
|
173
|
+
(let [[old _] (edit-vals!
|
|
174
|
+
h (fn [s]
|
|
175
|
+
(let [scope (get-in s [:inst ref "scope"])]
|
|
176
|
+
(-> s
|
|
177
|
+
(update :open - (reduce + 0 (map :open scope)))
|
|
178
|
+
(assoc-in [:inst ref "scope"] [])
|
|
179
|
+
(assoc-in [:inst ref "selected"] {})))))]
|
|
180
|
+
(vec (keep (fn [one]
|
|
181
|
+
(when (:fn one)
|
|
182
|
+
(try ((:fn one)) nil (catch Exception e e))))
|
|
183
|
+
(reverse (get-in old [:inst ref "scope"]))))))
|
|
184
|
+
|
|
185
|
+
(defn- release-check!
|
|
186
|
+
"Section 8.3: \"A failed release ends the instance in `failed`, exactly
|
|
187
|
+
as a failed callback does (5.2) - a release that raised may have leaked,
|
|
188
|
+
and an instance that may be holding resources it cannot account for must
|
|
189
|
+
not be reactivated.\""
|
|
190
|
+
[h ref errors]
|
|
191
|
+
(when (seq errors)
|
|
192
|
+
(set-field! h ref "status" "failed")
|
|
193
|
+
(let [causes (mapv t/message-of errors)]
|
|
194
|
+
(t/fail "plugin_release_failed"
|
|
195
|
+
(str "release failed for " ref ": " (str/join "; " causes))
|
|
196
|
+
{"ref" ref "cause" causes}))))
|
|
197
|
+
|
|
198
|
+
;; --- the instance api (what a definition's callbacks see) ------------
|
|
199
|
+
;;
|
|
200
|
+
;; Deliberately not the internal record: a plugin that could reach
|
|
201
|
+
;; `status` could also write it. THE INSTANCE IS A HANDLE, `{host, ref}`
|
|
202
|
+
;; and nothing else, so a callback always sees current values and there is
|
|
203
|
+
;; no snapshot to keep in sync. That is this port's whole answer to the
|
|
204
|
+
;; canonical's "REFILL rather than REBIND" (section 9.6).
|
|
205
|
+
|
|
206
|
+
(defn inst-ref [^Instance i] (.ref i))
|
|
207
|
+
(defn inst-host [^Instance i] (.host i))
|
|
208
|
+
(defn inst-name [^Instance i] ((r/parse-ref (.ref i)) "name"))
|
|
209
|
+
(defn inst-tag [^Instance i] ((r/parse-ref (.ref i)) "tag"))
|
|
210
|
+
(defn inst-options [^Instance i] (field (.host i) (.ref i) "options"))
|
|
211
|
+
(defn inst-state [^Instance i] (field (.host i) (.ref i) "state"))
|
|
212
|
+
|
|
213
|
+
(defn state-put!
|
|
214
|
+
"The state map is a VALUE here, so a callback cannot mutate what it
|
|
215
|
+
reads; this is the write. Every other port spells it `i.state[k] = v`
|
|
216
|
+
because its maps are objects."
|
|
217
|
+
[^Instance i k v]
|
|
218
|
+
(entry-update! (.host i) (.ref i) #(assoc-in % ["state" k] v))
|
|
219
|
+
nil)
|
|
220
|
+
|
|
221
|
+
(defn state-update! [^Instance i k dflt f]
|
|
222
|
+
(state-put! i k (f (or (t/get (inst-state i) k) dflt))))
|
|
223
|
+
|
|
224
|
+
(defn release!
|
|
225
|
+
"Foreign resources the host did not hand out are registered explicitly
|
|
226
|
+
(section 8.3); host calls are recorded automatically.
|
|
227
|
+
|
|
228
|
+
SYMMETRIC WITH `acquire!`, and it has to be: `open` counts the resources
|
|
229
|
+
CURRENTLY HELD, so an entry that is registered and then unwound must
|
|
230
|
+
leave the count where it found it.
|
|
231
|
+
|
|
232
|
+
Section 8.3: \"`inst.release` outside `activate` is
|
|
233
|
+
`plugin_release_scope`\". A scope entry registered in `define` is never
|
|
234
|
+
unwound, so \"in a transition\" is not the test - the PHASE is."
|
|
235
|
+
[^Instance i f]
|
|
236
|
+
(scope-push! (.host i) (.ref i) f "release called outside activate"))
|
|
237
|
+
|
|
238
|
+
(defn acquire!
|
|
239
|
+
"The synthetic counter the driver owns, so \"what is open\" is data
|
|
240
|
+
rather than an assertion each port words differently.
|
|
241
|
+
|
|
242
|
+
Returns its own release, so a plugin can hand one back early. The scope
|
|
243
|
+
still holds the entry and unwinding it twice is a no-op - releasing
|
|
244
|
+
early must not make teardown wrong."
|
|
245
|
+
[^Instance i]
|
|
246
|
+
(scope-push! (.host i) (.ref i) nil "acquire called outside activate"))
|
|
247
|
+
|
|
248
|
+
(defn bind!
|
|
249
|
+
"Bind into a host point. Declared in `define`; the host inserts it only
|
|
250
|
+
after `activate` returns successfully (section 8.1), which is why a
|
|
251
|
+
failing activate leaves no live binding behind.
|
|
252
|
+
|
|
253
|
+
Section 12 has carried `plugin_bind_scope` - \"binding declared outside
|
|
254
|
+
`define`\" - since before anything raised it, and it was the half nobody
|
|
255
|
+
wrote: a binding added from `activate` went live without being part of
|
|
256
|
+
the loaded definition, and a deactivate/activate cycle appended it
|
|
257
|
+
again."
|
|
258
|
+
([i point f] (bind! i point f nil))
|
|
259
|
+
([^Instance i point f band]
|
|
260
|
+
(let [h (.host i) ref (.ref i)]
|
|
261
|
+
(when (not= "define" (phase h))
|
|
262
|
+
(t/fail "plugin_bind_scope" (str "bind called outside define: " point)
|
|
263
|
+
{"ref" ref "point" point}))
|
|
264
|
+
(when-not (point? h point)
|
|
265
|
+
(t/fail "plugin_point_unknown" (str "no such point: " point) {"point" point}))
|
|
266
|
+
(entry-update! h ref #(update % "bindings" conj
|
|
267
|
+
{:ref ref :point point :fn f :band (or band 0)}))
|
|
268
|
+
nil)))
|
|
269
|
+
|
|
270
|
+
(defn export!
|
|
271
|
+
"Published for other plugins and for the application (section 11)."
|
|
272
|
+
[^Instance i k v]
|
|
273
|
+
(entry-update! (.host i) (.ref i) #(assoc-in % ["exports" k] v))
|
|
274
|
+
nil)
|
|
275
|
+
|
|
276
|
+
(defn provides!
|
|
277
|
+
"What this instance can do for others (section 11.1)."
|
|
278
|
+
[^Instance i prov]
|
|
279
|
+
(entry-update! (.host i) (.ref i) #(update % "provides" conj prov))
|
|
280
|
+
nil)
|
|
281
|
+
|
|
282
|
+
(defn position
|
|
283
|
+
"Where this binding landed (section 6.6) - the plugin-side counterpart to
|
|
284
|
+
a host pin. THE HOST DOES NOT POLICE THIS; it just makes the fact
|
|
285
|
+
available. Verification tells a plugin it was misplaced; a pin (section
|
|
286
|
+
7) stops the misplacement from being expressible at all. The two are not
|
|
287
|
+
substitutes."
|
|
288
|
+
[^Instance i point]
|
|
289
|
+
(positionof (.host i) (.ref i) point))
|
|
290
|
+
|
|
291
|
+
(defn nest!
|
|
292
|
+
"AN INSTANCE MAY ITSELF BE A HOST (section 6.5), and THE OUTER ONE OWNS
|
|
293
|
+
THE INNER ONE'S LIFETIME. Registering the teardown in the instance scope
|
|
294
|
+
is what makes that true rather than aspirational."
|
|
295
|
+
([i] (nest! i nil))
|
|
296
|
+
([^Instance i nestopts]
|
|
297
|
+
(let [h (.host i) ref (.ref i)]
|
|
298
|
+
(when-not (intransition? h)
|
|
299
|
+
(t/fail "plugin_release_scope" "nest called outside a lifecycle callback"))
|
|
300
|
+
(let [inner (make-host nestopts)]
|
|
301
|
+
;; NOT through `scope-push!`: a nested host is not a counted
|
|
302
|
+
;; resource, and `open` must read the same before and after one is
|
|
303
|
+
;; created.
|
|
304
|
+
(scope-uncounted! h ref (fn [] (close inner)))
|
|
305
|
+
(entry-update! h ref #(assoc % "inner" inner))
|
|
306
|
+
inner))))
|
|
307
|
+
|
|
308
|
+
;; --- observation ----------------------------------------------------
|
|
309
|
+
|
|
310
|
+
(defn list
|
|
311
|
+
"Introspection NEVER advances the state (section 5.2). A status page must
|
|
312
|
+
not be a way to accidentally import twenty packages."
|
|
313
|
+
[h]
|
|
314
|
+
(into {} (for [[ref e] (:inst (snap h))] [ref (e "status")])))
|
|
315
|
+
|
|
316
|
+
(defn instance [h ref] (entry h (r/canon-ref ref)))
|
|
317
|
+
|
|
318
|
+
(defn trace [h] (vec (:events (snap h))))
|
|
319
|
+
|
|
320
|
+
(defn observable
|
|
321
|
+
([h] (observable h nil))
|
|
322
|
+
([h result]
|
|
323
|
+
(let [s (snap h)]
|
|
324
|
+
{"status" (into {} (for [[ref e] (:inst s)] [ref (e "status")]))
|
|
325
|
+
"open" (:open s)
|
|
326
|
+
"log" (vec (:log s))
|
|
327
|
+
"result" result})))
|
|
328
|
+
|
|
329
|
+
;; --- the state machine ----------------------------------------------
|
|
330
|
+
|
|
331
|
+
(defn- guard [h]
|
|
332
|
+
(when (intransition? h)
|
|
333
|
+
(t/fail "plugin_reentrant" "transition attempted from inside a lifecycle callback")))
|
|
334
|
+
|
|
335
|
+
(defn- need [h ref]
|
|
336
|
+
(let [rf (r/canon-ref ref)
|
|
337
|
+
e (entry h rf)]
|
|
338
|
+
(when (nil? e)
|
|
339
|
+
(t/fail "plugin_not_loaded" (str "no such instance: " rf) {"ref" rf}))
|
|
340
|
+
e))
|
|
341
|
+
|
|
342
|
+
(defn- check-reserved [h ref]
|
|
343
|
+
(when (some #(= % (r/ref-name ref)) (:reserved (snap h)))
|
|
344
|
+
(t/fail "plugin_ref_reserved" (str "ref is reserved by the host: " ref) {"ref" ref})))
|
|
345
|
+
|
|
346
|
+
(defn- invoke! [h ref f at]
|
|
347
|
+
(edit! h #(assoc % :intransition true :phase at))
|
|
348
|
+
(try
|
|
349
|
+
(f (->Instance h ref))
|
|
350
|
+
(catch Exception e
|
|
351
|
+
;; Section 12: `plugin_define_failed` and its three siblings are "a
|
|
352
|
+
;; callback raised; wraps the cause". AN ERROR THAT ALREADY CARRIES A
|
|
353
|
+
;; CODE KEEPS IT - the code is the error's identity, and a plugin
|
|
354
|
+
;; raising `store_unreachable` must not have it rewritten. Only a
|
|
355
|
+
;; code-less error is wrapped.
|
|
356
|
+
(if (not= "" (t/code-of e))
|
|
357
|
+
(throw e)
|
|
358
|
+
(t/fail (str "plugin_" at "_failed")
|
|
359
|
+
(str ref " raised in " at ": " (t/message-of e))
|
|
360
|
+
{"ref" ref "cause" (t/message-of e)})))
|
|
361
|
+
(finally (edit! h #(assoc % :intransition false :phase nil)))))
|
|
362
|
+
|
|
363
|
+
(defn- run-callback! [h ref callback at]
|
|
364
|
+
(let [e (entry h ref)
|
|
365
|
+
f (t/get (e "def") callback)]
|
|
366
|
+
(edit! h (fn [s]
|
|
367
|
+
(-> s
|
|
368
|
+
(update :log conj (str ref ":" at))
|
|
369
|
+
(update :events conj {"ref" ref "event" at
|
|
370
|
+
"seq" (e "seq") "status" (e "status")}))))
|
|
371
|
+
(when (fn? f) (invoke! h ref f at))
|
|
372
|
+
nil))
|
|
373
|
+
|
|
374
|
+
(defn- autotag
|
|
375
|
+
"AUTO-TAGGING IS EXPLICIT (section 4 rule 3). `(declare h \"stripe\"
|
|
376
|
+
{\"tag\" \"?\"})` assigns the LOWEST UNUSED POSITIVE INTEGER tag and
|
|
377
|
+
returns the assigned pair. Without `\"?\"`, a collision is an error."
|
|
378
|
+
[h nm]
|
|
379
|
+
(let [taken (:inst (snap h))]
|
|
380
|
+
(first (for [n (iterate inc 1)
|
|
381
|
+
:let [cand (r/format-ref nm (str n))]
|
|
382
|
+
:when (not (contains? taken cand))]
|
|
383
|
+
cand))))
|
|
384
|
+
|
|
385
|
+
(defn- new-entry! [h rf spec definition]
|
|
386
|
+
(let [pos (t/get spec "pos")
|
|
387
|
+
[old _] (edit-vals!
|
|
388
|
+
h (fn [s]
|
|
389
|
+
(-> s
|
|
390
|
+
(update :seqn inc)
|
|
391
|
+
(assoc-in [:inst rf]
|
|
392
|
+
{"ref" rf "def" definition "status" "declared"
|
|
393
|
+
"pos" (if (nil? pos) (count (:inst s)) pos)
|
|
394
|
+
"seq" (:seqn s)
|
|
395
|
+
"options" (or (t/get spec "options") {})
|
|
396
|
+
"state" {} "order" (t/get spec "order")
|
|
397
|
+
"unmet" [] "scope" []
|
|
398
|
+
;; Section 11.4's ALWAYS-RELUCTANT
|
|
399
|
+
;; rebinding made concrete: the
|
|
400
|
+
;; provider ref this instance's
|
|
401
|
+
;; activation actually chose, per
|
|
402
|
+
;; requirement name. Re-ranking on
|
|
403
|
+
;; every question silently re-points a
|
|
404
|
+
;; live consumer at any better
|
|
405
|
+
;; newcomer, and then losing the
|
|
406
|
+
;; provider it was really using does
|
|
407
|
+
;; not restart it.
|
|
408
|
+
"selected" {} "bindings" []
|
|
409
|
+
"exports" {} "provides" []
|
|
410
|
+
"inner" nil "barred" false}))))]
|
|
411
|
+
(entry h rf)))
|
|
412
|
+
|
|
413
|
+
(defn declare
|
|
414
|
+
([h ref] (declare h ref nil))
|
|
415
|
+
([h ref spec]
|
|
416
|
+
(let [spec (or spec {})
|
|
417
|
+
ref (if (= "?" (t/get spec "tag"))
|
|
418
|
+
(autotag h (r/ref-name (r/canon-ref ref)))
|
|
419
|
+
ref)
|
|
420
|
+
rf (r/canon-ref ref)]
|
|
421
|
+
(when-not (t/truthy (t/get spec "hostowned")) (check-reserved h rf))
|
|
422
|
+
(let [defname (or (t/get spec "definition") (r/ref-name rf))
|
|
423
|
+
definition (cat/definition-of (catalog h) defname)]
|
|
424
|
+
(when (nil? definition)
|
|
425
|
+
(t/fail "plugin_unknown_definition" (str "not in catalog: " defname)
|
|
426
|
+
{"name" defname}))
|
|
427
|
+
(let [existing (entry h rf)]
|
|
428
|
+
(cond
|
|
429
|
+
(nil? existing) (new-entry! h rf spec definition)
|
|
430
|
+
;; Section 4 rule 1: a pair addresses at most one instance.
|
|
431
|
+
;; Re-declaring the SAME definition is the idempotent case; a
|
|
432
|
+
;; different one is a duplicate, not a silent overwrite (seneca)
|
|
433
|
+
;; and not an impossibility (sdkgen).
|
|
434
|
+
(not= (t/get (existing "def") "name") (t/get definition "name"))
|
|
435
|
+
(t/fail "plugin_ref_duplicate" (str "instance already declared: " rf)
|
|
436
|
+
{"ref" rf})
|
|
437
|
+
:else existing))))))
|
|
438
|
+
|
|
439
|
+
(defn hostdeclare
|
|
440
|
+
"Section 9.1: a host that reserves a name MUST still be able to declare
|
|
441
|
+
the instance it reserved - \"The host declares those instances itself,
|
|
442
|
+
after the user merge, and always wins.\"
|
|
443
|
+
|
|
444
|
+
THE BOUNDARY IS BY FUNCTION, NOT BY CALLER, and that is a real limit: no
|
|
445
|
+
language here can tell the embedding host from a plugin holding the same
|
|
446
|
+
host value. What reservation protects is CONFIGURATION - documents,
|
|
447
|
+
overlays, `VOXGIG_PLUGIN_*`, construction options and ordinary
|
|
448
|
+
declare/load/options - and all of that still checks."
|
|
449
|
+
([h ref] (hostdeclare h ref nil))
|
|
450
|
+
([h ref spec]
|
|
451
|
+
(guard h)
|
|
452
|
+
(declare h ref (assoc (or spec {}) "hostowned" true))))
|
|
453
|
+
|
|
454
|
+
;; The requirement graph as plain data, for the pure detector.
|
|
455
|
+
(defn- graph-nodes [h]
|
|
456
|
+
(let [s (snap h)]
|
|
457
|
+
(vec (for [rf (sort (keys (:inst s)))
|
|
458
|
+
:let [e (get-in s [:inst rf])]]
|
|
459
|
+
{:ref rf
|
|
460
|
+
:provides (mapv #(t/get % "name") (e "provides"))
|
|
461
|
+
:requires (dep/requirements (e "options"))}))))
|
|
462
|
+
|
|
463
|
+
;; A step whose failure lands the instance in `failed` and re-raises.
|
|
464
|
+
(defn- stage! [h ref f]
|
|
465
|
+
(try (f)
|
|
466
|
+
(catch Exception e (set-field! h ref "status" "failed") (throw e))))
|
|
467
|
+
|
|
468
|
+
(defn load
|
|
469
|
+
([h ref] (load h ref nil))
|
|
470
|
+
([h ref spec]
|
|
471
|
+
(guard h)
|
|
472
|
+
(let [spec (or spec {})
|
|
473
|
+
e (declare h ref spec)
|
|
474
|
+
rf (e "ref")]
|
|
475
|
+
(if (not= "declared" (e "status"))
|
|
476
|
+
;; Idempotent trivially.
|
|
477
|
+
e
|
|
478
|
+
(do
|
|
479
|
+
(when-let [options (t/get spec "options")] (set-field! h rf "options" options))
|
|
480
|
+
(stage! h rf #(run-callback! h rf "define" "define"))
|
|
481
|
+
(set-field! h rf "status" "loaded")
|
|
482
|
+
;; AT LOAD, and before anything runs: a cycle through
|
|
483
|
+
;; restart-causing requirements does not settle, and the only safe
|
|
484
|
+
;; time to report a non-terminating reconcile is before it starts
|
|
485
|
+
;; (section 11.3). `provides` is populated by `define`, which has
|
|
486
|
+
;; just run, so this is the first moment the graph is complete.
|
|
487
|
+
(stage! h rf #(dep/check-cycle (graph-nodes h)))
|
|
488
|
+
(entry h rf))))))
|
|
489
|
+
|
|
490
|
+
;; --- dependencies ---------------------------------------------------
|
|
491
|
+
|
|
492
|
+
(defn- providers-of [h req]
|
|
493
|
+
(let [nm (t/get req "name")
|
|
494
|
+
want (r/canon nm)
|
|
495
|
+
s (snap h)
|
|
496
|
+
cands (vec (for [rf (sort (keys (:inst s)))
|
|
497
|
+
:let [target (get-in s [:inst rf])]
|
|
498
|
+
:when (= "live" (target "status"))
|
|
499
|
+
c (if (= rf want)
|
|
500
|
+
;; A ref satisfies directly.
|
|
501
|
+
[{"ref" rf "pos" (target "pos") "provides" {"name" nm}}]
|
|
502
|
+
(for [prov (target "provides")
|
|
503
|
+
:when (= nm (t/get prov "name"))]
|
|
504
|
+
{"ref" rf "pos" (target "pos") "provides" prov}))]
|
|
505
|
+
c))]
|
|
506
|
+
(cap/resolve-capability req cands)))
|
|
507
|
+
|
|
508
|
+
(defn- unmet-of
|
|
509
|
+
"A REQUIREMENT IS ON A CAPABILITY, not on a ref (section 11.1). A bare
|
|
510
|
+
string is shorthand for `{name}`. A ref satisfies too, because a host
|
|
511
|
+
that genuinely needs a specific instance should not have to invent a
|
|
512
|
+
capability for it."
|
|
513
|
+
[h ref]
|
|
514
|
+
(vec (for [req (dep/requirements (field h ref "options"))
|
|
515
|
+
:when (dep/gates-activation? req)
|
|
516
|
+
:when (empty? (providers-of h req))]
|
|
517
|
+
(t/get req "name"))))
|
|
518
|
+
|
|
519
|
+
(defn- chosen
|
|
520
|
+
"Section 11.4's always-reluctant selection, and the ONE place a provider
|
|
521
|
+
is picked for a live instance. If this instance already selected a
|
|
522
|
+
provider for `req` and that provider is STILL a candidate, it keeps it -
|
|
523
|
+
a better-ranked newcomer does not take it.
|
|
524
|
+
|
|
525
|
+
`remember` is false for the questions asked ABOUT an instance rather
|
|
526
|
+
than BY it: introspection must not create a binding."
|
|
527
|
+
[h ref req remember]
|
|
528
|
+
(let [cands (providers-of h req)
|
|
529
|
+
nm (t/get req "name")
|
|
530
|
+
held (t/get (field h ref "selected") nm)]
|
|
531
|
+
(cond
|
|
532
|
+
(empty? cands) nil
|
|
533
|
+
(and (some? held) (some #(= held (t/get % "ref")) cands)) held
|
|
534
|
+
:else
|
|
535
|
+
(let [pick (t/get (first cands) "ref")]
|
|
536
|
+
(when remember (entry-update! h ref #(assoc-in % ["selected" nm] pick)))
|
|
537
|
+
pick))))
|
|
538
|
+
|
|
539
|
+
(defn- bound-providers
|
|
540
|
+
"The instances currently SELECTED for this one's restart-causing
|
|
541
|
+
requirements. A BINDING IS TO AN INSTANCE, not to a capability (section
|
|
542
|
+
11.1): the selected one going away restarts a `static` consumer even
|
|
543
|
+
though a survivor is available."
|
|
544
|
+
[h ref]
|
|
545
|
+
(->> (dep/requirements (field h ref "options"))
|
|
546
|
+
(filter dep/restarts-on-loss?)
|
|
547
|
+
(map #(chosen h ref % false))
|
|
548
|
+
(remove nil?)
|
|
549
|
+
distinct
|
|
550
|
+
set))
|
|
551
|
+
|
|
552
|
+
(defn- consumers-of
|
|
553
|
+
"Live instances whose selected provider is `ref` and which would be
|
|
554
|
+
restarted by losing it."
|
|
555
|
+
[h ref]
|
|
556
|
+
(filterv #(and (not= % ref)
|
|
557
|
+
(= "live" (field h % "status"))
|
|
558
|
+
(contains? (bound-providers h %) ref))
|
|
559
|
+
(refs h)))
|
|
560
|
+
|
|
561
|
+
(defn- holders-of
|
|
562
|
+
"Section 11.3's `hold` asks a DIFFERENT question from the cascade, and
|
|
563
|
+
reading it off `consumers-of` answered the cascade's.
|
|
564
|
+
|
|
565
|
+
The cascade wants the edges that RESTART - mandatory-static and
|
|
566
|
+
optional-static - because a restart is what it performs. `hold` says
|
|
567
|
+
\"deactivating a REQUIRED instance is `plugin_dependency_held`\", and
|
|
568
|
+
required is cardinality: `gates-activation?`, not `restarts-on-loss?`.
|
|
569
|
+
The two sets differ in both directions and each difference was a real
|
|
570
|
+
bug.
|
|
571
|
+
|
|
572
|
+
A MANDATORY-DYNAMIC consumer was excluded, so the strictest policy let a
|
|
573
|
+
provider go that a live consumer could not do without - `dynamic`
|
|
574
|
+
promises survival of a SWAP, and under `hold` there is no swap, so the
|
|
575
|
+
consumer falls back to `pending`.
|
|
576
|
+
|
|
577
|
+
An OPTIONAL-STATIC consumer was included, so `hold` refused a
|
|
578
|
+
deactivation on behalf of an instance that had said in writing it does
|
|
579
|
+
not need the thing."
|
|
580
|
+
[h ref]
|
|
581
|
+
(filterv (fn [rf]
|
|
582
|
+
(and (not= rf ref)
|
|
583
|
+
(= "live" (field h rf "status"))
|
|
584
|
+
(boolean (some #(and (dep/gates-activation? %)
|
|
585
|
+
(= ref (chosen h rf % false)))
|
|
586
|
+
(dep/requirements (field h rf "options"))))))
|
|
587
|
+
(refs h)))
|
|
588
|
+
|
|
589
|
+
(defn- held
|
|
590
|
+
"The hold check is A GUARD ON AD-HOC DEACTIVATION, NOT ON COORDINATED
|
|
591
|
+
TEARDOWN. In a bulk operation that is removing the holders too - `close`,
|
|
592
|
+
or an `apply` plan whose own steps deactivate them - it is suspended for
|
|
593
|
+
exactly those holders, and the teardown still runs consumers before
|
|
594
|
+
providers."
|
|
595
|
+
[h ref]
|
|
596
|
+
(let [s (snap h)]
|
|
597
|
+
(when (and (= "hold" (:dependency s)) (not (:coordinated s)))
|
|
598
|
+
(let [holders (holders-of h ref)]
|
|
599
|
+
(when (seq holders)
|
|
600
|
+
(t/fail "plugin_dependency_held"
|
|
601
|
+
(str "instance is required by live consumers: " ref)
|
|
602
|
+
{"ref" ref "holders" holders}))))))
|
|
603
|
+
|
|
604
|
+
(defn- failed? [f] (try (f) false (catch Exception _ true)))
|
|
605
|
+
|
|
606
|
+
(defn- demote!
|
|
607
|
+
"Leaving `live` for `pending` - or for `failed`, because section 5.2 says
|
|
608
|
+
ANY failure during a transition lands the instance there. Marking it
|
|
609
|
+
`pending` handed it straight back to `reconcile`, which would activate it
|
|
610
|
+
again the moment the provider returned."
|
|
611
|
+
[h rf]
|
|
612
|
+
(let [bad (failed? #(run-callback! h rf "deactivate" "deactivate"))
|
|
613
|
+
errors (unwind! h rf)]
|
|
614
|
+
(if (or bad (seq errors))
|
|
615
|
+
(set-field! h rf "status" "failed")
|
|
616
|
+
(do (set-field! h rf "status" "pending")
|
|
617
|
+
(set-field! h rf "unmet" (unmet-of h rf))))))
|
|
618
|
+
|
|
619
|
+
(defn- cascade!
|
|
620
|
+
"CONSUMERS GO DOWN FIRST, NOT AFTERWARDS (section 11.3).
|
|
621
|
+
|
|
622
|
+
The cascade is part of the provider's own deactivation and runs BEFORE
|
|
623
|
+
the provider's `deactivate` callback and scope unwind, so a consumer's
|
|
624
|
+
teardown can still call the thing it depends on - flushing a buffer to
|
|
625
|
+
the store it is about to lose is exactly what a `deactivate` callback is
|
|
626
|
+
for, and a cascade that fired after the provider was already gone would
|
|
627
|
+
make that impossible."
|
|
628
|
+
[h ref seen]
|
|
629
|
+
(if (contains? seen ref)
|
|
630
|
+
seen
|
|
631
|
+
(reduce (fn [acc rf]
|
|
632
|
+
(if (not= "live" (field h rf "status"))
|
|
633
|
+
acc
|
|
634
|
+
(let [acc (cascade! h rf acc)] ; deepest-first
|
|
635
|
+
(demote! h rf)
|
|
636
|
+
acc)))
|
|
637
|
+
(conj seen ref)
|
|
638
|
+
(consumers-of h ref))))
|
|
639
|
+
|
|
640
|
+
;; The live half of leaving `live`: the callback, then the scope.
|
|
641
|
+
(defn- teardown! [h rf]
|
|
642
|
+
(try
|
|
643
|
+
(run-callback! h rf "deactivate" "deactivate")
|
|
644
|
+
(catch Exception e (unwind! h rf) (set-field! h rf "status" "failed") (throw e)))
|
|
645
|
+
(release-check! h rf (unwind! h rf)))
|
|
646
|
+
|
|
647
|
+
(defn- to-active! [h rf]
|
|
648
|
+
;; A declared requirement that is not live means `pending`: activation is
|
|
649
|
+
;; a STANDING REQUEST, not a one-shot event.
|
|
650
|
+
(let [unmet (unmet-of h rf)]
|
|
651
|
+
(if (seq unmet)
|
|
652
|
+
(do (set-field! h rf "unmet" unmet)
|
|
653
|
+
(set-field! h rf "status" "pending")
|
|
654
|
+
(entry h rf))
|
|
655
|
+
(do
|
|
656
|
+
(try
|
|
657
|
+
(run-callback! h rf "activate" "activate")
|
|
658
|
+
(catch Exception e
|
|
659
|
+
;; Unwind whatever the partial activation captured, in reverse.
|
|
660
|
+
(unwind! h rf)
|
|
661
|
+
(set-field! h rf "status" "failed")
|
|
662
|
+
(throw e)))
|
|
663
|
+
;; Section 11.4: THE SELECTION IS MADE HERE, once, and remembered.
|
|
664
|
+
;; Every later question - the cascade, `hold`, `unmet` - reads it
|
|
665
|
+
;; back rather than re-ranking, which is what "always-reluctant"
|
|
666
|
+
;; means.
|
|
667
|
+
(doseq [req (dep/requirements (field h rf "options"))] (chosen h rf req true))
|
|
668
|
+
(set-field! h rf "status" "live")
|
|
669
|
+
(reconcile! h)
|
|
670
|
+
(entry h rf)))))
|
|
671
|
+
|
|
672
|
+
(defn activate [h ref]
|
|
673
|
+
(guard h)
|
|
674
|
+
(let [e (need h ref)
|
|
675
|
+
rf (e "ref")]
|
|
676
|
+
(cond
|
|
677
|
+
;; A no-op returning success.
|
|
678
|
+
(= "live" (e "status")) e
|
|
679
|
+
(= "failed" (e "status"))
|
|
680
|
+
(t/fail "plugin_bad_state" (str "instance has failed: " rf) {"ref" rf})
|
|
681
|
+
;; Section 9.6: `active: false` bars the instance from running, and
|
|
682
|
+
;; the bar is on the INSTANCE rather than on the apply that set it.
|
|
683
|
+
;; `ready` reaches this through `activate`, so one guard covers both
|
|
684
|
+
;; verbs the design names.
|
|
685
|
+
(t/truthy (e "barred"))
|
|
686
|
+
(t/fail "plugin_inactive" (str "instance is barred by active: false: " rf)
|
|
687
|
+
{"ref" rf})
|
|
688
|
+
:else (do (when (= "declared" (e "status")) (load h rf))
|
|
689
|
+
(to-active! h rf)))))
|
|
690
|
+
|
|
691
|
+
(defn deactivate [h ref]
|
|
692
|
+
(guard h)
|
|
693
|
+
(let [e (need h ref)
|
|
694
|
+
rf (e "ref")]
|
|
695
|
+
(cond
|
|
696
|
+
(contains? #{"loaded" "declared"} (e "status")) e
|
|
697
|
+
;; Section 5.2: `unload` is THE ONLY TRANSITION OUT OF `failed`.
|
|
698
|
+
(= "failed" (e "status"))
|
|
699
|
+
(t/fail "plugin_bad_state" (str "instance has failed: " rf) {"ref" rf})
|
|
700
|
+
;; DEACTIVATING A PENDING INSTANCE RUNS NO CALLBACK (section 5.2). It
|
|
701
|
+
;; never reached activate, so it holds no scope and no live bindings;
|
|
702
|
+
;; running the definition's deactivate there would be teardown
|
|
703
|
+
;; without matching setup, which plugins are not written to survive
|
|
704
|
+
;; and which could fail an instance that had done nothing wrong. It
|
|
705
|
+
;; cannot fail.
|
|
706
|
+
(= "pending" (e "status"))
|
|
707
|
+
(do (set-field! h rf "status" "loaded") (set-field! h rf "unmet" []) (entry h rf))
|
|
708
|
+
:else
|
|
709
|
+
(do (held h rf)
|
|
710
|
+
(cascade! h rf #{})
|
|
711
|
+
(teardown! h rf)
|
|
712
|
+
(set-field! h rf "status" "loaded")
|
|
713
|
+
(reconcile! h)
|
|
714
|
+
(entry h rf)))))
|
|
715
|
+
|
|
716
|
+
(defn unload [h ref]
|
|
717
|
+
(guard h)
|
|
718
|
+
(let [e (need h ref)
|
|
719
|
+
rf (e "ref")]
|
|
720
|
+
(when (contains? #{"live" "pending"} (e "status"))
|
|
721
|
+
;; Section 5.2: ANY failure during a transition lands the instance in
|
|
722
|
+
;; `failed`, with the scope STILL FULLY UNWOUND - and the instance
|
|
723
|
+
;; STAYS REGISTERED, because `failed` is a state an operator has to
|
|
724
|
+
;; be able to see.
|
|
725
|
+
(when (= "live" (e "status"))
|
|
726
|
+
(held h rf)
|
|
727
|
+
(cascade! h rf #{})
|
|
728
|
+
(teardown! h rf))
|
|
729
|
+
(set-field! h rf "status" "loaded"))
|
|
730
|
+
(if (contains? #{"loaded" "failed"} (field h rf "status"))
|
|
731
|
+
(try (run-callback! h rf "close" "close")
|
|
732
|
+
(finally (edit! h #(update % :inst dissoc rf))))
|
|
733
|
+
(edit! h #(update % :inst dissoc rf)))
|
|
734
|
+
nil))
|
|
735
|
+
|
|
736
|
+
(defn ready
|
|
737
|
+
"Runs the whole forward path in one call (section 5.1)."
|
|
738
|
+
[h ref]
|
|
739
|
+
(guard h)
|
|
740
|
+
(let [rf (r/canon-ref ref)]
|
|
741
|
+
(when (nil? (entry h rf)) (declare h rf))
|
|
742
|
+
(when (= "declared" (field h rf "status")) (load h rf))
|
|
743
|
+
(activate h rf)))
|
|
744
|
+
|
|
745
|
+
;; --- reconciliation --------------------------------------------------
|
|
746
|
+
|
|
747
|
+
(defn- restartable?
|
|
748
|
+
"POLICY IS PER REQUIREMENT, not per instance (section 11.3). A `dynamic`
|
|
749
|
+
requirement whose provider is gone leaves the consumer LIVE and
|
|
750
|
+
notified."
|
|
751
|
+
[h rf]
|
|
752
|
+
(boolean (some dep/restarts-on-loss?
|
|
753
|
+
(for [req (dep/requirements (field h rf "options"))
|
|
754
|
+
:when (dep/gates-activation? req)
|
|
755
|
+
:when (empty? (providers-of h req))]
|
|
756
|
+
req))))
|
|
757
|
+
|
|
758
|
+
(defn- loss-pass! [h]
|
|
759
|
+
(reduce (fn [moved rf]
|
|
760
|
+
(if (or (not= "live" (field h rf "status")) (not (restartable? h rf)))
|
|
761
|
+
moved
|
|
762
|
+
(do (demote! h rf) true)))
|
|
763
|
+
false
|
|
764
|
+
(refs h)))
|
|
765
|
+
|
|
766
|
+
(defn- gain-pass! [h]
|
|
767
|
+
(reduce (fn [moved rf]
|
|
768
|
+
(if (or (not= "pending" (field h rf "status")) (seq (unmet-of h rf)))
|
|
769
|
+
moved
|
|
770
|
+
(do (try
|
|
771
|
+
(run-callback! h rf "activate" "activate")
|
|
772
|
+
(set-field! h rf "status" "live")
|
|
773
|
+
(set-field! h rf "unmet" [])
|
|
774
|
+
(catch Exception _
|
|
775
|
+
(unwind! h rf)
|
|
776
|
+
(set-field! h rf "status" "failed")))
|
|
777
|
+
true)))
|
|
778
|
+
false
|
|
779
|
+
(refs h)))
|
|
780
|
+
|
|
781
|
+
(defn- reconcile!
|
|
782
|
+
"EAGER reconciliation: run to a fixed point rather than scheduling.
|
|
783
|
+
|
|
784
|
+
Two directions, and both are the reason `pending` exists. Activation is a
|
|
785
|
+
STANDING REQUEST, not a one-shot event."
|
|
786
|
+
[h]
|
|
787
|
+
(loop [rounds 0]
|
|
788
|
+
(when (>= 1000 rounds)
|
|
789
|
+
;; Losses first, so a cascade settles in one pass rather than
|
|
790
|
+
;; alternating with re-activations.
|
|
791
|
+
(let [lost (loss-pass! h)
|
|
792
|
+
gained (gain-pass! h)]
|
|
793
|
+
(when (or lost gained) (recur (inc rounds)))))))
|
|
794
|
+
|
|
795
|
+
;; --- ordering --------------------------------------------------------
|
|
796
|
+
|
|
797
|
+
(defn order
|
|
798
|
+
([h] (order h nil))
|
|
799
|
+
([h point]
|
|
800
|
+
(let [s (snap h)
|
|
801
|
+
bindings (->> (keys (:inst s))
|
|
802
|
+
(filter #(= "live" (get-in s [:inst % "status"])))
|
|
803
|
+
;; Sorted by declaration SEQUENCE, which is what
|
|
804
|
+
;; makes the section 7 sort's fall-through
|
|
805
|
+
;; deterministic in a language whose maps have no
|
|
806
|
+
;; insertion order. Section 7 breaks ties by `pos`;
|
|
807
|
+
;; two instances CAN share one - `declare` defaults
|
|
808
|
+
;; `pos` to the registry size, so an unload followed
|
|
809
|
+
;; by a fresh declare reuses a surviving instance's
|
|
810
|
+
;; - and past that this was falling through to map
|
|
811
|
+
;; order. `seq` is that order, made explicit.
|
|
812
|
+
(sort-by #(get-in s [:inst % "seq"]))
|
|
813
|
+
(mapv #(hash-map :ref % :pos (get-in s [:inst % "pos"])
|
|
814
|
+
:order (get-in s [:inst % "order"]))))]
|
|
815
|
+
(ord/resolve-order bindings (when point (t/get (get-in s [:points point]) "pin"))))))
|
|
816
|
+
|
|
817
|
+
;; --- points ----------------------------------------------------------
|
|
818
|
+
|
|
819
|
+
(defn- point-at [h point] (get-in (snap h) [:points point]))
|
|
820
|
+
|
|
821
|
+
(defn- bound
|
|
822
|
+
"Live bindings on a point, in resolved order. Recomputed on any change to
|
|
823
|
+
the live set (section 7) rather than cached at startup - the bug a host
|
|
824
|
+
discovers only when something deactivates in production."
|
|
825
|
+
[h point]
|
|
826
|
+
(vec (for [rf (order h point)
|
|
827
|
+
:let [e (entry h rf)
|
|
828
|
+
;; The band is the INSTANCE's ordering block (section
|
|
829
|
+
;; 7), stamped by the host. A plugin passing its own
|
|
830
|
+
;; would be ranking itself above the order its document
|
|
831
|
+
;; declared.
|
|
832
|
+
band (or (t/asint (t/get (or (e "order") {}) "band")) 0)]
|
|
833
|
+
b (e "bindings")
|
|
834
|
+
:when (= point (:point b))]
|
|
835
|
+
(assoc b :band band))))
|
|
836
|
+
|
|
837
|
+
(defn- point-spec [h point want]
|
|
838
|
+
(let [spec (point-at h point)]
|
|
839
|
+
(when (nil? spec)
|
|
840
|
+
(t/fail "plugin_point_unknown" (str "no such point: " point) {"point" point}))
|
|
841
|
+
(let [kind (t/get spec "kind")]
|
|
842
|
+
(cond
|
|
843
|
+
;; A point with no declared kind is a hook, which is what makes
|
|
844
|
+
;; `{}` the minimal point declaration.
|
|
845
|
+
(and (= "hook" want) (or (nil? kind) (= "hook" kind))) spec
|
|
846
|
+
(and (not= "hook" want) (= kind want)) spec
|
|
847
|
+
:else (t/fail "plugin_point_kind" (str "point is not a " want ": " point)
|
|
848
|
+
{"point" point "kind" kind})))))
|
|
849
|
+
|
|
850
|
+
(defn emit
|
|
851
|
+
([h point] (emit h point nil))
|
|
852
|
+
([h point arg]
|
|
853
|
+
(let [spec (point-spec h point "hook")]
|
|
854
|
+
(pt/point-emit (bound h point) (or (t/get spec "mode") "emit") arg))))
|
|
855
|
+
|
|
856
|
+
(defn call
|
|
857
|
+
([h point] (call h point nil))
|
|
858
|
+
([h point arg]
|
|
859
|
+
(let [spec (point-spec h point "chain")]
|
|
860
|
+
((pt/compose (bound h point) (or (t/get spec "base") identity)) arg))))
|
|
861
|
+
|
|
862
|
+
(defn provider
|
|
863
|
+
([h point] (provider h point nil))
|
|
864
|
+
([h point arg]
|
|
865
|
+
(let [spec (point-spec h point "provider")
|
|
866
|
+
pick (pt/point-provider (bound h point) spec)]
|
|
867
|
+
(if (nil? (:winner pick))
|
|
868
|
+
(t/get spec "default")
|
|
869
|
+
((:fn (:winner pick)) nil arg)))))
|
|
870
|
+
|
|
871
|
+
(defn shadowed
|
|
872
|
+
"The losers are VISIBLE rather than silently ignored (section 6.3)."
|
|
873
|
+
[h point]
|
|
874
|
+
(let [spec (point-at h point)]
|
|
875
|
+
(if (nil? spec) [] (:shadowed (pt/point-provider (bound h point) spec)))))
|
|
876
|
+
|
|
877
|
+
(defn exports [h spec]
|
|
878
|
+
(let [s (snap h)]
|
|
879
|
+
(export/resolve-export
|
|
880
|
+
spec
|
|
881
|
+
(vec (for [rf (sort (keys (:inst s)))
|
|
882
|
+
:let [e (get-in s [:inst rf])]
|
|
883
|
+
;; Exports of a `loaded` (not live) instance are VISIBLE
|
|
884
|
+
;; (11).
|
|
885
|
+
:when (not (contains? #{"declared" "failed"} (e "status")))
|
|
886
|
+
k (t/sorted-keys (e "exports"))]
|
|
887
|
+
{:ref rf :key k :value (get-in e ["exports" k])})))))
|
|
888
|
+
|
|
889
|
+
(defn capability
|
|
890
|
+
"The live providers of a capability, best-first (section 11.1)."
|
|
891
|
+
[h nm]
|
|
892
|
+
(let [s (snap h)
|
|
893
|
+
cands (vec (for [rf (sort (keys (:inst s)))
|
|
894
|
+
:let [e (get-in s [:inst rf])]
|
|
895
|
+
:when (= "live" (e "status"))
|
|
896
|
+
prov (e "provides")
|
|
897
|
+
:when (= nm (t/get prov "name"))]
|
|
898
|
+
{"ref" rf "pos" (e "pos") "provides" prov}))]
|
|
899
|
+
(mapv #(t/get % "ref") (cap/resolve-capability {"name" nm} cands))))
|
|
900
|
+
|
|
901
|
+
;; --- documents -------------------------------------------------------
|
|
902
|
+
|
|
903
|
+
(defn- shape-of [h ref]
|
|
904
|
+
(t/get (cat/definition-of (catalog h) (r/ref-name ref)) "shape"))
|
|
905
|
+
|
|
906
|
+
(defn- drop-phase!
|
|
907
|
+
"Phase 1: deactivations and unloads, REVERSE load order."
|
|
908
|
+
[h want-live?]
|
|
909
|
+
(doseq [rf (->> (refs h)
|
|
910
|
+
(remove #(or (= "declared" (field h % "status")) (want-live? %)))
|
|
911
|
+
;; Highest `pos` first, ref-descending for a tie, so a
|
|
912
|
+
;; consumer declared after its provider goes down first.
|
|
913
|
+
(sort-by (fn [rf] [(- (field h rf "pos")) rf])
|
|
914
|
+
(fn [[pa a] [pb b]] (if (= pa pb) (compare b a) (compare pa pb)))))]
|
|
915
|
+
(unload h rf)))
|
|
916
|
+
|
|
917
|
+
(defn- declare-phase!
|
|
918
|
+
"Phase 2: declare and patch EVERYTHING, in load order."
|
|
919
|
+
[h ref norm optionsof]
|
|
920
|
+
(let [ent (t/get (norm "instance") ref)]
|
|
921
|
+
(declare h ref {"options" (optionsof ref) "order" (t/get ent "order")
|
|
922
|
+
"pos" (t/get ent "pos")})
|
|
923
|
+
(entry-update! h ref
|
|
924
|
+
#(merge % {;; The bar is REASSERTED ON EVERY APPLY, in
|
|
925
|
+
;; both directions - a document that turns
|
|
926
|
+
;; the instance back on clears it, which is
|
|
927
|
+
;; the whole point of a config switch.
|
|
928
|
+
"barred" (not (t/truthy (t/get ent "active")))
|
|
929
|
+
"options" (optionsof ref)
|
|
930
|
+
"order" (t/get ent "order")
|
|
931
|
+
"pos" (t/get ent "pos")}))))
|
|
932
|
+
|
|
933
|
+
(defn apply
|
|
934
|
+
"Section 9.6: \"load what is missing, UNLOAD WHAT IS GONE, patch what
|
|
935
|
+
changed, and move activation state to match\", with the stated ordering -
|
|
936
|
+
\"deactivations and unloads first (reverse load order), then loads, then
|
|
937
|
+
activations in load order\".
|
|
938
|
+
|
|
939
|
+
FOUR PHASES, NOT ONE INTERLEAVED LOOP. An earlier draft walked the
|
|
940
|
+
document once, which never looked at instances the new document had
|
|
941
|
+
DROPPED - so an integration removed from a config reload stayed live with
|
|
942
|
+
its bindings and resources."
|
|
943
|
+
([h doc] (apply h doc nil))
|
|
944
|
+
([h doc profile]
|
|
945
|
+
(guard h)
|
|
946
|
+
(let [s (snap h)
|
|
947
|
+
profile (or profile (t/get (:opts s) "profile"))
|
|
948
|
+
norm (config/normalize-config {"doc" doc "profile" profile
|
|
949
|
+
"keys" (t/get (:opts s) "keys")
|
|
950
|
+
"reserved" (:reserved s)})
|
|
951
|
+
want (norm "order")
|
|
952
|
+
defaults (or (t/get (:opts s) "defaults") {})
|
|
953
|
+
optionsof (into {} (for [ref want]
|
|
954
|
+
[ref (config/resolve-options
|
|
955
|
+
{"ref" ref "doc" doc "profile" profile
|
|
956
|
+
"shape" (shape-of h ref)
|
|
957
|
+
"hostdefaults" (t/get defaults (r/ref-name ref))})]))
|
|
958
|
+
;; Should this ref be LIVE after the apply? False for a ref the
|
|
959
|
+
;; document declares lazy or inactive AND for one it does not name
|
|
960
|
+
;; at all - which is what makes "unload what is gone" and "unload
|
|
961
|
+
;; what was toggled off" one rule rather than two.
|
|
962
|
+
want-live? (fn [ref]
|
|
963
|
+
(let [e (t/get (norm "instance") ref)]
|
|
964
|
+
(and (some? e) (t/truthy (t/get e "active"))
|
|
965
|
+
(= "eager" (t/get e "start")))))]
|
|
966
|
+
(drop-phase! h want-live?)
|
|
967
|
+
(doseq [ref want] (declare-phase! h ref norm optionsof))
|
|
968
|
+
;; ONLY THE EAGER, ACTIVE ONES: "a document of twenty lazy instances
|
|
969
|
+
;; is twenty map entries and no executed code" (9.6).
|
|
970
|
+
(doseq [ref want :when (want-live? ref)] (load h ref))
|
|
971
|
+
(doseq [ref want :when (want-live? ref)] (activate h ref))
|
|
972
|
+
nil)))
|
|
973
|
+
|
|
974
|
+
(defn- reconfigure! [h rf definition resolved previous]
|
|
975
|
+
(let [f (t/get definition "reconfigure")]
|
|
976
|
+
(if (fn? f)
|
|
977
|
+
(do (edit! h #(assoc % :intransition true))
|
|
978
|
+
(try (f (->Instance h rf) resolved previous)
|
|
979
|
+
(finally (edit! h #(assoc % :intransition false)))))
|
|
980
|
+
;; Always correct and sometimes expensive; `reconfigure` exists to
|
|
981
|
+
;; make the common case cheap (section 9.4).
|
|
982
|
+
(do (deactivate h rf) (activate h rf)))))
|
|
983
|
+
|
|
984
|
+
(defn options [h ref patch]
|
|
985
|
+
(guard h)
|
|
986
|
+
(let [e (need h ref)
|
|
987
|
+
rf (e "ref")
|
|
988
|
+
previous (e "options")
|
|
989
|
+
resolved (config/resolve-options {"ref" rf "shape" (shape-of h rf) "doc" {}
|
|
990
|
+
"patch" (merge previous (or patch {}))})]
|
|
991
|
+
(set-field! h rf "options" resolved)
|
|
992
|
+
(when (= "live" (e "status")) (reconfigure! h rf (e "def") resolved previous))
|
|
993
|
+
nil))
|
|
994
|
+
|
|
995
|
+
(defn close [h]
|
|
996
|
+
;; A bulk teardown removing the holders too, so `hold` is suspended for
|
|
997
|
+
;; exactly those holders (section 11.3) - while the consumers-first
|
|
998
|
+
;; cascade still runs, which is the half that matters.
|
|
999
|
+
(edit! h #(assoc % :coordinated true))
|
|
1000
|
+
(try (doseq [rf (reverse (refs h))] (unload h rf))
|
|
1001
|
+
(finally (edit! h #(assoc % :coordinated false)))))
|
|
1002
|
+
|
|
1003
|
+
(defn positionof
|
|
1004
|
+
"The same record section 6.6 gives a plugin about itself, reachable from
|
|
1005
|
+
outside for the corpus."
|
|
1006
|
+
[h ref point]
|
|
1007
|
+
(let [e (entry h (r/canon ref))]
|
|
1008
|
+
(when (nil? e)
|
|
1009
|
+
(t/fail "plugin_not_loaded" (str "no such instance: " ref) {"ref" ref}))
|
|
1010
|
+
(let [ranked (order h point)
|
|
1011
|
+
index (or (first (keep-indexed #(when (= %2 (e "ref")) %1) ranked)) -1)]
|
|
1012
|
+
{"index" index
|
|
1013
|
+
"count" (count ranked)
|
|
1014
|
+
;; Section 6.2 composes b1(b2(b3(base))) with the FIRST binding
|
|
1015
|
+
;; OUTERMOST, so these are not index 0 and index count-1 the other
|
|
1016
|
+
;; way round.
|
|
1017
|
+
"outermost" (zero? index)
|
|
1018
|
+
"innermost" (= index (dec (count ranked)))})))
|