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