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