@voxgig/sdkgen 4.9.0 → 4.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1159) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/helpers/manifest.d.ts +2 -1
  3. package/dist/helpers/manifest.js +75 -1
  4. package/dist/helpers/manifest.js.map +1 -1
  5. package/dist/helpers/modelNames.d.ts +7 -0
  6. package/dist/helpers/modelNames.js +232 -0
  7. package/dist/helpers/modelNames.js.map +1 -0
  8. package/dist/helpers/naming.d.ts +2 -1
  9. package/dist/helpers/naming.js +45 -1
  10. package/dist/helpers/naming.js.map +1 -1
  11. package/dist/sdkgen.d.ts +3 -2
  12. package/dist/sdkgen.js +12 -3
  13. package/dist/sdkgen.js.map +1 -1
  14. package/dist/testkit.d.ts +2 -0
  15. package/dist/testkit.js +80 -24
  16. package/dist/testkit.js.map +1 -1
  17. package/dist/tsconfig.tsbuildinfo +1 -1
  18. package/dist/utility.js +17 -7
  19. package/dist/utility.js.map +1 -1
  20. package/package.json +1 -1
  21. package/project/.sdk/model/feature/secrets.aon +1001 -0
  22. package/project/.sdk/model/target/c.aon +15 -2
  23. package/project/.sdk/model/target/clojure.aon +10 -0
  24. package/project/.sdk/model/target/cpp.aon +18 -0
  25. package/project/.sdk/model/target/csharp.aon +5 -0
  26. package/project/.sdk/model/target/elixir.aon +6 -0
  27. package/project/.sdk/model/target/java.aon +5 -0
  28. package/project/.sdk/model/target/js.aon +5 -0
  29. package/project/.sdk/model/target/kotlin.aon +7 -0
  30. package/project/.sdk/model/target/lua.aon +17 -0
  31. package/project/.sdk/model/target/ocaml.aon +48 -5
  32. package/project/.sdk/model/target/perl.aon +5 -0
  33. package/project/.sdk/model/target/php.aon +5 -0
  34. package/project/.sdk/model/target/rb.aon +5 -0
  35. package/project/.sdk/model/target/rust.aon +5 -0
  36. package/project/.sdk/model/target/scala.aon +38 -2
  37. package/project/.sdk/model/target/swift.aon +10 -0
  38. package/project/.sdk/model/target/zig.aon +30 -4
  39. package/project/.sdk/src/cmp/c/Config_c.ts +338 -1
  40. package/project/.sdk/src/cmp/c/Main_c.ts +57 -2
  41. package/project/.sdk/src/cmp/c/Package_c.ts +12 -2
  42. package/project/.sdk/src/cmp/clojure/Config_clojure.ts +51 -4
  43. package/project/.sdk/src/cmp/clojure/Main_clojure.ts +43 -1
  44. package/project/.sdk/src/cmp/clojure/Package_clojure.ts +17 -1
  45. package/project/.sdk/src/cmp/clojure/featureextra_clojure.ts +130 -0
  46. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +324 -2
  47. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +2 -0
  48. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +62 -4
  49. package/project/.sdk/src/cmp/cpp/Package_cpp.ts +10 -0
  50. package/project/.sdk/src/cmp/csharp/Config_csharp.ts +70 -0
  51. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +9 -1
  52. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +25 -1
  53. package/project/.sdk/src/cmp/elixir/Config_elixir.ts +68 -2
  54. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +16 -0
  55. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +14 -1
  56. package/project/.sdk/src/cmp/java/Config_java.ts +84 -2
  57. package/project/.sdk/src/cmp/java/Main_java.ts +10 -1
  58. package/project/.sdk/src/cmp/js/Config_js.ts +75 -8
  59. package/project/.sdk/src/cmp/js/Main_js.ts +66 -2
  60. package/project/.sdk/src/cmp/js/fragment/Config.data.fragment.js +18 -1
  61. package/project/.sdk/src/cmp/js/fragment/Config.fragment.js +18 -1
  62. package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +7 -0
  63. package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +63 -1
  64. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +32 -2
  65. package/project/.sdk/src/cmp/lua/Config_lua.ts +88 -0
  66. package/project/.sdk/src/cmp/lua/Gitignore_lua.ts +4 -0
  67. package/project/.sdk/src/cmp/lua/Main_lua.ts +93 -3
  68. package/project/.sdk/src/cmp/lua/Package_lua.ts +60 -0
  69. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +10 -0
  70. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +183 -5
  71. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +160 -3
  72. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +25 -1
  73. package/project/.sdk/src/cmp/perl/Config_perl.ts +129 -3
  74. package/project/.sdk/src/cmp/perl/Main_perl.ts +41 -1
  75. package/project/.sdk/src/cmp/perl/Package_perl.ts +13 -1
  76. package/project/.sdk/src/cmp/perl/fragment/Main.fragment.pm +1 -0
  77. package/project/.sdk/src/cmp/php/Config_php.ts +105 -1
  78. package/project/.sdk/src/cmp/php/Gitignore_php.ts +4 -2
  79. package/project/.sdk/src/cmp/php/Main_php.ts +16 -1
  80. package/project/.sdk/src/cmp/rb/Config_rb.ts +92 -2
  81. package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +11 -1
  82. package/project/.sdk/src/cmp/rb/Main_rb.ts +7 -1
  83. package/project/.sdk/src/cmp/rust/Main_rust.ts +99 -1
  84. package/project/.sdk/src/cmp/rust/Package_rust.ts +72 -6
  85. package/project/.sdk/src/cmp/scala/Config_scala.ts +44 -0
  86. package/project/.sdk/src/cmp/scala/Main_scala.ts +68 -1
  87. package/project/.sdk/src/cmp/swift/Config_swift.ts +62 -1
  88. package/project/.sdk/src/cmp/swift/Main_swift.ts +35 -1
  89. package/project/.sdk/src/cmp/swift/Package_swift.ts +81 -11
  90. package/project/.sdk/src/cmp/swift/fragment/Main.fragment.swift +58 -44
  91. package/project/.sdk/src/cmp/swift/utility_swift.ts +22 -0
  92. package/project/.sdk/src/cmp/zig/Config_zig.ts +130 -9
  93. package/project/.sdk/src/cmp/zig/Main_zig.ts +208 -4
  94. package/project/.sdk/{tm/zig/build.zig → src/cmp/zig/fragment/Build.fragment.zig} +7 -0
  95. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +25 -0
  96. package/project/.sdk/{tm/zig/root.zig → src/cmp/zig/fragment/Root.fragment.zig} +9 -0
  97. package/project/.sdk/tm/c/Makefile +58 -9
  98. package/project/.sdk/tm/c/core/sdk.h +10 -0
  99. package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +133 -0
  100. package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +39 -0
  101. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +83 -0
  102. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +48 -0
  103. package/project/.sdk/tm/c/feature/secrets/plugin/config.c +413 -0
  104. package/project/.sdk/tm/c/feature/secrets/plugin/config.h +24 -0
  105. package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +264 -0
  106. package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +29 -0
  107. package/project/.sdk/tm/c/feature/secrets/plugin/env.c +220 -0
  108. package/project/.sdk/tm/c/feature/secrets/plugin/env.h +19 -0
  109. package/project/.sdk/tm/c/feature/secrets/plugin/export.c +97 -0
  110. package/project/.sdk/tm/c/feature/secrets/plugin/export.h +19 -0
  111. package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +237 -0
  112. package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +17 -0
  113. package/project/.sdk/tm/c/feature/secrets/plugin/host.c +1494 -0
  114. package/project/.sdk/tm/c/feature/secrets/plugin/host.h +135 -0
  115. package/project/.sdk/tm/c/feature/secrets/plugin/order.c +288 -0
  116. package/project/.sdk/tm/c/feature/secrets/plugin/order.h +18 -0
  117. package/project/.sdk/tm/c/feature/secrets/plugin/point.c +141 -0
  118. package/project/.sdk/tm/c/feature/secrets/plugin/point.h +80 -0
  119. package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +170 -0
  120. package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +52 -0
  121. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +98 -0
  122. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +18 -0
  123. package/project/.sdk/tm/c/feature/secrets/plugin/types.c +150 -0
  124. package/project/.sdk/tm/c/feature/secrets/plugin/types.h +104 -0
  125. package/project/.sdk/tm/c/feature/secrets/plugin/value.c +649 -0
  126. package/project/.sdk/tm/c/feature/secrets/plugin/value.h +135 -0
  127. package/project/.sdk/tm/c/feature/secrets/plugin/version.c +151 -0
  128. package/project/.sdk/tm/c/feature/secrets/plugin/version.h +34 -0
  129. package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +281 -0
  130. package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +207 -0
  131. package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +164 -0
  132. package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +75 -0
  133. package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +141 -0
  134. package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +144 -0
  135. package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +177 -0
  136. package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +239 -0
  137. package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +599 -0
  138. package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +165 -0
  139. package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +194 -0
  140. package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +233 -0
  141. package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +125 -0
  142. package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +125 -0
  143. package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +270 -0
  144. package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +382 -0
  145. package/project/.sdk/tm/c/feature/secrets/plugins/support.h +153 -0
  146. package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +420 -0
  147. package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +86 -0
  148. package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +721 -0
  149. package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +813 -0
  150. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +944 -0
  151. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +490 -0
  152. package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +442 -0
  153. package/project/.sdk/tm/c/feature/secrets.c +797 -0
  154. package/project/.sdk/tm/c/feature/secrets.h +46 -0
  155. package/project/.sdk/tm/c/tests/feature/secrets/secrets_test.c +802 -0
  156. package/project/.sdk/tm/c/tests/vendor/omni/json.c +2 -2
  157. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +2 -2
  158. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +2 -2
  159. package/project/.sdk/tm/c/tests/vendor/omni/util.c +2 -2
  160. package/project/.sdk/tm/clojure/Makefile +3 -0
  161. package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +530 -0
  162. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/capability.clj +84 -0
  163. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/catalog.clj +44 -0
  164. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/config.clj +240 -0
  165. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/depend.clj +199 -0
  166. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/env.clj +111 -0
  167. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/export.clj +46 -0
  168. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/graph.clj +122 -0
  169. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/host.clj +1018 -0
  170. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/json.clj +106 -0
  171. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/order.clj +157 -0
  172. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/point.clj +77 -0
  173. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/ref.clj +92 -0
  174. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/resolve.clj +46 -0
  175. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/types.clj +177 -0
  176. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/version.clj +90 -0
  177. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin.clj +40 -0
  178. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/addr.clj +111 -0
  179. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/chain.clj +297 -0
  180. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/core.clj +192 -0
  181. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/json.clj +261 -0
  182. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/aws.clj +165 -0
  183. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/azuresecrets.clj +111 -0
  184. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/boru.clj +107 -0
  185. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/doppler.clj +61 -0
  186. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/gcpsecrets.clj +88 -0
  187. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/hashicorp.clj +115 -0
  188. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/httpjson.clj +214 -0
  189. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/infisical.clj +80 -0
  190. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/onepassword.clj +93 -0
  191. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/proc.clj +63 -0
  192. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/secretspec.clj +99 -0
  193. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/sigv4.clj +142 -0
  194. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/provider.clj +25 -0
  195. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/providers.clj +196 -0
  196. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto.clj +113 -0
  197. package/project/.sdk/tm/clojure/src/sdk/core.clj +9 -0
  198. package/project/.sdk/tm/clojure/src/sdk/features.clj +13 -1
  199. package/project/.sdk/tm/clojure/test/sdk/test/feature/secrets.clj +581 -0
  200. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +103 -14
  201. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +2 -2
  202. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +2 -2
  203. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +2 -2
  204. package/project/.sdk/tm/cpp/Makefile +48 -4
  205. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +121 -0
  206. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +41 -0
  207. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +60 -0
  208. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +66 -0
  209. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +376 -0
  210. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +29 -0
  211. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +230 -0
  212. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +31 -0
  213. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +205 -0
  214. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +25 -0
  215. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +84 -0
  216. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +24 -0
  217. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +222 -0
  218. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +21 -0
  219. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +1200 -0
  220. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +250 -0
  221. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +250 -0
  222. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +22 -0
  223. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +110 -0
  224. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +79 -0
  225. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +136 -0
  226. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +60 -0
  227. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +82 -0
  228. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +25 -0
  229. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +90 -0
  230. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +65 -0
  231. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +491 -0
  232. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +120 -0
  233. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +143 -0
  234. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +36 -0
  235. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +248 -0
  236. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +30 -0
  237. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +149 -0
  238. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +23 -0
  239. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +117 -0
  240. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +27 -0
  241. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +180 -0
  242. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +52 -0
  243. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +87 -0
  244. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +23 -0
  245. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +121 -0
  246. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +23 -0
  247. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +153 -0
  248. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +23 -0
  249. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +666 -0
  250. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +160 -0
  251. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +123 -0
  252. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +23 -0
  253. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +125 -0
  254. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +23 -0
  255. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +223 -0
  256. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +47 -0
  257. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +104 -0
  258. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +27 -0
  259. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +242 -0
  260. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +58 -0
  261. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +260 -0
  262. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +47 -0
  263. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +476 -0
  264. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +89 -0
  265. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +312 -0
  266. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +263 -0
  267. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +354 -0
  268. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +111 -0
  269. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +613 -0
  270. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +227 -0
  271. package/project/.sdk/tm/cpp/feature/secrets.hpp +745 -0
  272. package/project/.sdk/tm/cpp/test/feature/secrets/secrets_test.cpp +808 -0
  273. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +2 -2
  274. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +2 -2
  275. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +2 -2
  276. package/project/.sdk/tm/csharp/feature/SecretsFeature.cs +915 -0
  277. package/project/.sdk/tm/csharp/feature/secrets/plugin/Capability.cs +196 -0
  278. package/project/.sdk/tm/csharp/feature/secrets/plugin/Catalog.cs +70 -0
  279. package/project/.sdk/tm/csharp/feature/secrets/plugin/Config.cs +505 -0
  280. package/project/.sdk/tm/csharp/feature/secrets/plugin/Definition.cs +52 -0
  281. package/project/.sdk/tm/csharp/feature/secrets/plugin/Depend.cs +285 -0
  282. package/project/.sdk/tm/csharp/feature/secrets/plugin/Entry.cs +55 -0
  283. package/project/.sdk/tm/csharp/feature/secrets/plugin/Env.cs +228 -0
  284. package/project/.sdk/tm/csharp/feature/secrets/plugin/Export.cs +102 -0
  285. package/project/.sdk/tm/csharp/feature/secrets/plugin/Graph.cs +256 -0
  286. package/project/.sdk/tm/csharp/feature/secrets/plugin/Host.cs +1379 -0
  287. package/project/.sdk/tm/csharp/feature/secrets/plugin/Inst.cs +177 -0
  288. package/project/.sdk/tm/csharp/feature/secrets/plugin/Json.cs +326 -0
  289. package/project/.sdk/tm/csharp/feature/secrets/plugin/Order.cs +295 -0
  290. package/project/.sdk/tm/csharp/feature/secrets/plugin/Plugin.cs +113 -0
  291. package/project/.sdk/tm/csharp/feature/secrets/plugin/Point.cs +177 -0
  292. package/project/.sdk/tm/csharp/feature/secrets/plugin/Refs.cs +198 -0
  293. package/project/.sdk/tm/csharp/feature/secrets/plugin/Resolve.cs +95 -0
  294. package/project/.sdk/tm/csharp/feature/secrets/plugin/Types.cs +351 -0
  295. package/project/.sdk/tm/csharp/feature/secrets/plugin/Version.cs +196 -0
  296. package/project/.sdk/tm/csharp/feature/secrets/plugins/Aws.cs +325 -0
  297. package/project/.sdk/tm/csharp/feature/secrets/plugins/AzureSecrets.cs +195 -0
  298. package/project/.sdk/tm/csharp/feature/secrets/plugins/Boru.cs +192 -0
  299. package/project/.sdk/tm/csharp/feature/secrets/plugins/Child.cs +75 -0
  300. package/project/.sdk/tm/csharp/feature/secrets/plugins/Doppler.cs +112 -0
  301. package/project/.sdk/tm/csharp/feature/secrets/plugins/GcpSecrets.cs +167 -0
  302. package/project/.sdk/tm/csharp/feature/secrets/plugins/Hashicorp.cs +221 -0
  303. package/project/.sdk/tm/csharp/feature/secrets/plugins/HttpJson.cs +213 -0
  304. package/project/.sdk/tm/csharp/feature/secrets/plugins/Infisical.cs +155 -0
  305. package/project/.sdk/tm/csharp/feature/secrets/plugins/OnePassword.cs +169 -0
  306. package/project/.sdk/tm/csharp/feature/secrets/plugins/SecretSpec.cs +172 -0
  307. package/project/.sdk/tm/csharp/feature/secrets/plugins/Sigv4.cs +240 -0
  308. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Json.cs +192 -0
  309. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Providers.cs +503 -0
  310. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Sekreto.cs +775 -0
  311. package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +1787 -0
  312. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +2 -2
  313. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +2 -2
  314. package/project/.sdk/tm/csharp/utility/MakeOptions.cs +10 -0
  315. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +1 -1
  316. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/capability.ex +118 -0
  317. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/catalog.ex +56 -0
  318. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/config.ex +320 -0
  319. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/depend.ex +205 -0
  320. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/env.ex +166 -0
  321. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/error.ex +13 -0
  322. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/export.ex +73 -0
  323. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/graph.ex +185 -0
  324. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/host.ex +1182 -0
  325. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/inst.ex +139 -0
  326. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/json.ex +132 -0
  327. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/order.ex +179 -0
  328. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/point.ex +99 -0
  329. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/ref.ex +129 -0
  330. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/resolve.ex +59 -0
  331. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/types.ex +190 -0
  332. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/version.ex +136 -0
  333. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/voxgig_plugin.ex +42 -0
  334. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/json.ex +368 -0
  335. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/aws.ex +257 -0
  336. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/azuresecrets.ex +160 -0
  337. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/boru.ex +127 -0
  338. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/doppler.ex +96 -0
  339. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/gcpsecrets.ex +124 -0
  340. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/hashicorp.ex +162 -0
  341. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/http.ex +627 -0
  342. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/httpjson.ex +134 -0
  343. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/infisical.ex +125 -0
  344. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/onepassword.ex +152 -0
  345. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/proc.ex +80 -0
  346. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/secretspec.ex +101 -0
  347. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/sigv4.ex +176 -0
  348. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/provider.ex +67 -0
  349. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/providers.ex +536 -0
  350. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/sekreto.ex +662 -0
  351. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets.ex +839 -0
  352. package/project/.sdk/tm/elixir/test/feature/secrets/secrets_test.exs +1113 -0
  353. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +2 -2
  354. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +2 -2
  355. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +2 -2
  356. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +1 -1
  357. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +1 -1
  358. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +1 -1
  359. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +1 -1
  360. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +1 -1
  361. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +1 -1
  362. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +1 -1
  363. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1 -1
  364. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +1 -1
  365. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +1 -1
  366. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +1 -1
  367. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +1 -1
  368. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +1 -1
  369. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +1 -1
  370. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +1 -1
  371. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +2 -2
  372. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +2 -2
  373. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +2 -2
  374. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +2 -2
  375. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +2 -2
  376. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +2 -2
  377. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +2 -2
  378. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +2 -2
  379. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +2 -2
  380. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +2 -2
  381. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +2 -2
  382. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +2 -2
  383. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +2 -2
  384. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +2 -2
  385. package/project/.sdk/tm/go/feature/secrets_feature.go +48 -10
  386. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +239 -0
  387. package/project/.sdk/tm/go/test/omni/omni.go +2 -2
  388. package/project/.sdk/tm/go/test/omni/util.go +2 -2
  389. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +1 -1
  390. package/project/.sdk/tm/java/feature/SecretsFeature.java +791 -0
  391. package/project/.sdk/tm/java/feature/secrets/plugin/Capability.java +181 -0
  392. package/project/.sdk/tm/java/feature/secrets/plugin/Catalog.java +64 -0
  393. package/project/.sdk/tm/java/feature/secrets/plugin/Config.java +433 -0
  394. package/project/.sdk/tm/java/feature/secrets/plugin/Definition.java +54 -0
  395. package/project/.sdk/tm/java/feature/secrets/plugin/Depend.java +292 -0
  396. package/project/.sdk/tm/java/feature/secrets/plugin/Entry.java +49 -0
  397. package/project/.sdk/tm/java/feature/secrets/plugin/Env.java +204 -0
  398. package/project/.sdk/tm/java/feature/secrets/plugin/Export.java +93 -0
  399. package/project/.sdk/tm/java/feature/secrets/plugin/Graph.java +244 -0
  400. package/project/.sdk/tm/java/feature/secrets/plugin/Host.java +1196 -0
  401. package/project/.sdk/tm/java/feature/secrets/plugin/Inst.java +173 -0
  402. package/project/.sdk/tm/java/feature/secrets/plugin/Json.java +339 -0
  403. package/project/.sdk/tm/java/feature/secrets/plugin/Order.java +274 -0
  404. package/project/.sdk/tm/java/feature/secrets/plugin/Plugin.java +94 -0
  405. package/project/.sdk/tm/java/feature/secrets/plugin/PluginException.java +37 -0
  406. package/project/.sdk/tm/java/feature/secrets/plugin/Point.java +172 -0
  407. package/project/.sdk/tm/java/feature/secrets/plugin/Refs.java +171 -0
  408. package/project/.sdk/tm/java/feature/secrets/plugin/Resolve.java +89 -0
  409. package/project/.sdk/tm/java/feature/secrets/plugin/Types.java +232 -0
  410. package/project/.sdk/tm/java/feature/secrets/plugin/Version.java +198 -0
  411. package/project/.sdk/tm/java/feature/secrets/sekreto/Addr.java +142 -0
  412. package/project/.sdk/tm/java/feature/secrets/sekreto/Builtins.java +229 -0
  413. package/project/.sdk/tm/java/feature/secrets/sekreto/Json.java +302 -0
  414. package/project/.sdk/tm/java/feature/secrets/sekreto/Provider.java +21 -0
  415. package/project/.sdk/tm/java/feature/secrets/sekreto/Sekreto.java +698 -0
  416. package/project/.sdk/tm/java/feature/secrets/sekreto/Support.java +100 -0
  417. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Aws.java +294 -0
  418. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Azuresecrets.java +164 -0
  419. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Boru.java +161 -0
  420. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Doppler.java +103 -0
  421. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Gcpsecrets.java +143 -0
  422. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Hashicorp.java +186 -0
  423. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Httpjson.java +192 -0
  424. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Infisical.java +139 -0
  425. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Onepassword.java +143 -0
  426. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Proc.java +80 -0
  427. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Secretspec.java +138 -0
  428. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Sigv4.java +243 -0
  429. package/project/.sdk/tm/java/test/feature/secrets/SecretsFeatureTest.java +1050 -0
  430. package/project/.sdk/tm/java/test/vendor/omni/Json.java +2 -2
  431. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +2 -2
  432. package/project/.sdk/tm/java/test/vendor/omni/Util.java +2 -2
  433. package/project/.sdk/tm/java/utility/MakeOptions.java +7 -0
  434. package/project/.sdk/tm/java/utility/struct/Struct.java +1 -1
  435. package/project/.sdk/tm/js/src/feature/secrets/SecretsFeature.js +454 -0
  436. package/project/.sdk/tm/js/src/feature/secrets/plugin/capability.js +119 -0
  437. package/project/.sdk/tm/js/src/feature/secrets/plugin/catalog.js +42 -0
  438. package/project/.sdk/tm/js/src/feature/secrets/plugin/config.js +323 -0
  439. package/project/.sdk/tm/js/src/feature/secrets/plugin/depend.js +196 -0
  440. package/project/.sdk/tm/js/src/feature/secrets/plugin/env.js +120 -0
  441. package/project/.sdk/tm/js/src/feature/secrets/plugin/export.js +48 -0
  442. package/project/.sdk/tm/js/src/feature/secrets/plugin/graph.js +150 -0
  443. package/project/.sdk/tm/js/src/feature/secrets/plugin/host.js +949 -0
  444. package/project/.sdk/tm/js/src/feature/secrets/plugin/index.js +35 -0
  445. package/project/.sdk/tm/js/src/feature/secrets/plugin/order.js +165 -0
  446. package/project/.sdk/tm/js/src/feature/secrets/plugin/point.js +94 -0
  447. package/project/.sdk/tm/js/src/feature/secrets/plugin/ref.js +106 -0
  448. package/project/.sdk/tm/js/src/feature/secrets/plugin/resolve.js +59 -0
  449. package/project/.sdk/tm/js/src/feature/secrets/plugin/types.js +79 -0
  450. package/project/.sdk/tm/js/src/feature/secrets/plugin/version.js +100 -0
  451. package/project/.sdk/tm/js/src/feature/secrets/sekreto/Sekreto.js +574 -0
  452. package/project/.sdk/tm/js/src/feature/secrets/sekreto/index.js +56 -0
  453. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/aws.js +188 -0
  454. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/azuresecrets.js +135 -0
  455. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/boru.js +128 -0
  456. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/doppler.js +67 -0
  457. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/gcpsecrets.js +115 -0
  458. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/hashicorp.js +139 -0
  459. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/httpjson.js +93 -0
  460. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/infisical.js +99 -0
  461. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/onepassword.js +111 -0
  462. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/secretspec.js +105 -0
  463. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/sigv4.js +157 -0
  464. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/addr.js +119 -0
  465. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/builtin.js +39 -0
  466. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/dotenv.js +40 -0
  467. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/env.js +21 -0
  468. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/file.js +42 -0
  469. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/memory.js +18 -0
  470. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/support.js +151 -0
  471. package/project/.sdk/tm/js/src/utility/StructUtility.js +1 -1
  472. package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +1019 -0
  473. package/project/.sdk/tm/js/test/vendor/omni/index.js +1 -1
  474. package/project/.sdk/tm/js/test/vendor/omni/runner.js +1 -1
  475. package/project/.sdk/tm/js/test/vendor/omni/util.js +1 -1
  476. package/project/.sdk/tm/kotlin/feature/SecretsFeature.kt +684 -0
  477. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Capability.kt +117 -0
  478. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Catalog.kt +40 -0
  479. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Config.kt +322 -0
  480. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Depend.kt +227 -0
  481. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Env.kt +163 -0
  482. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Export.kt +57 -0
  483. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Graph.kt +179 -0
  484. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Host.kt +1131 -0
  485. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Json.kt +241 -0
  486. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Order.kt +180 -0
  487. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Plugin.kt +64 -0
  488. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Point.kt +124 -0
  489. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Refs.kt +125 -0
  490. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Resolve.kt +66 -0
  491. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Types.kt +171 -0
  492. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Version.kt +132 -0
  493. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Json.kt +359 -0
  494. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Provider.kt +21 -0
  495. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Providers.kt +308 -0
  496. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Sekreto.kt +525 -0
  497. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Spec.kt +126 -0
  498. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Support.kt +205 -0
  499. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Aws.kt +251 -0
  500. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Azuresecrets.kt +145 -0
  501. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Boru.kt +130 -0
  502. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Doppler.kt +77 -0
  503. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Gcpsecrets.kt +119 -0
  504. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Hashicorp.kt +156 -0
  505. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Httpjson.kt +219 -0
  506. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Infisical.kt +114 -0
  507. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Onepassword.kt +114 -0
  508. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Secretspec.kt +118 -0
  509. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Sigv4.kt +220 -0
  510. package/project/.sdk/tm/kotlin/test/feature/secrets/SecretsTest.kt +1217 -0
  511. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +2 -2
  512. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +2 -2
  513. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +2 -2
  514. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +1 -1
  515. package/project/.sdk/tm/lua/Makefile +15 -4
  516. package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +806 -0
  517. package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +135 -0
  518. package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +63 -0
  519. package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +361 -0
  520. package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +232 -0
  521. package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +168 -0
  522. package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +66 -0
  523. package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +194 -0
  524. package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +1190 -0
  525. package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +169 -0
  526. package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +207 -0
  527. package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +106 -0
  528. package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +115 -0
  529. package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +78 -0
  530. package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +275 -0
  531. package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +131 -0
  532. package/project/.sdk/tm/lua/feature/secrets/plugin.lua +76 -0
  533. package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +124 -0
  534. package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +47 -0
  535. package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +315 -0
  536. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +228 -0
  537. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +137 -0
  538. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +124 -0
  539. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +212 -0
  540. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +89 -0
  541. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +129 -0
  542. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +154 -0
  543. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +248 -0
  544. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +113 -0
  545. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +449 -0
  546. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +198 -0
  547. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +126 -0
  548. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +93 -0
  549. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +269 -0
  550. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +146 -0
  551. package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +346 -0
  552. package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +479 -0
  553. package/project/.sdk/tm/lua/feature/secrets_feature.lua +690 -0
  554. package/project/.sdk/tm/lua/test/extend_test.lua +105 -0
  555. package/project/.sdk/tm/lua/test/feature/secrets/secrets_feature_test.lua +862 -0
  556. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +2 -2
  557. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +2 -2
  558. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +2 -2
  559. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +2 -2
  560. package/project/.sdk/tm/lua/utility/struct/regex.lua +1 -1
  561. package/project/.sdk/tm/lua/utility/struct/struct.lua +1 -1
  562. package/project/.sdk/tm/ocaml/Makefile +52 -8
  563. package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +106 -0
  564. package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +43 -0
  565. package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +349 -0
  566. package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +143 -0
  567. package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +217 -0
  568. package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +197 -0
  569. package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +89 -0
  570. package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +227 -0
  571. package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +1112 -0
  572. package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +202 -0
  573. package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +138 -0
  574. package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +126 -0
  575. package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +62 -0
  576. package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +97 -0
  577. package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +387 -0
  578. package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +139 -0
  579. package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +171 -0
  580. package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +116 -0
  581. package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +95 -0
  582. package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +149 -0
  583. package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +61 -0
  584. package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +93 -0
  585. package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +120 -0
  586. package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +421 -0
  587. package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +66 -0
  588. package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +85 -0
  589. package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +112 -0
  590. package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +97 -0
  591. package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +68 -0
  592. package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +259 -0
  593. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +44 -0
  594. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +358 -0
  595. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +376 -0
  596. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +647 -0
  597. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +299 -0
  598. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +347 -0
  599. package/project/.sdk/tm/ocaml/feature/secrets_feature.ml +453 -0
  600. package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +670 -0
  601. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +2 -2
  602. package/project/.sdk/tm/perl/Makefile +6 -1
  603. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Capability.pm +141 -0
  604. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Catalog.pm +65 -0
  605. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Config.pm +346 -0
  606. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Depend.pm +216 -0
  607. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Env.pm +176 -0
  608. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Export.pm +59 -0
  609. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Graph.pm +157 -0
  610. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Host.pm +1139 -0
  611. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Order.pm +187 -0
  612. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Point.pm +100 -0
  613. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Ref.pm +119 -0
  614. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Resolve.pm +71 -0
  615. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Types.pm +251 -0
  616. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Version.pm +122 -0
  617. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin.pm +70 -0
  618. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Aws.pm +263 -0
  619. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Azuresecrets.pm +159 -0
  620. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Boru.pm +180 -0
  621. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Doppler.pm +92 -0
  622. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Gcpsecrets.pm +138 -0
  623. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Hashicorp.pm +213 -0
  624. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Httpjson.pm +173 -0
  625. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Infisical.pm +132 -0
  626. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Onepassword.pm +132 -0
  627. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Proc.pm +102 -0
  628. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Secretspec.pm +132 -0
  629. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Sigv4.pm +190 -0
  630. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Addr.pm +124 -0
  631. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Providers.pm +301 -0
  632. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto.pm +605 -0
  633. package/project/.sdk/tm/perl/feature/secrets_feature.pm +696 -0
  634. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +1 -1
  635. package/project/.sdk/tm/perl/t/feature/secrets/secrets.t +1004 -0
  636. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +1 -1
  637. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +1 -1
  638. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +1 -1
  639. package/project/.sdk/tm/php/feature/SecretsFeature.php +694 -0
  640. package/project/.sdk/tm/php/feature/secrets/plugin/Capability.php +226 -0
  641. package/project/.sdk/tm/php/feature/secrets/plugin/Catalog.php +75 -0
  642. package/project/.sdk/tm/php/feature/secrets/plugin/Config.php +444 -0
  643. package/project/.sdk/tm/php/feature/secrets/plugin/Depend.php +262 -0
  644. package/project/.sdk/tm/php/feature/secrets/plugin/Env.php +202 -0
  645. package/project/.sdk/tm/php/feature/secrets/plugin/Export.php +74 -0
  646. package/project/.sdk/tm/php/feature/secrets/plugin/Graph.php +195 -0
  647. package/project/.sdk/tm/php/feature/secrets/plugin/Host.php +1514 -0
  648. package/project/.sdk/tm/php/feature/secrets/plugin/Order.php +260 -0
  649. package/project/.sdk/tm/php/feature/secrets/plugin/Point.php +129 -0
  650. package/project/.sdk/tm/php/feature/secrets/plugin/Ref.php +169 -0
  651. package/project/.sdk/tm/php/feature/secrets/plugin/Resolve.php +79 -0
  652. package/project/.sdk/tm/php/feature/secrets/plugin/Types.php +348 -0
  653. package/project/.sdk/tm/php/feature/secrets/plugin/Version.php +163 -0
  654. package/project/.sdk/tm/php/feature/secrets/plugin/plugin.php +40 -0
  655. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/aws.php +274 -0
  656. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/azuresecrets.php +170 -0
  657. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/boru.php +163 -0
  658. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/doppler.php +106 -0
  659. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/gcpsecrets.php +144 -0
  660. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/hashicorp.php +194 -0
  661. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/httpjson.php +113 -0
  662. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/infisical.php +131 -0
  663. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/onepassword.php +150 -0
  664. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/runcmd.php +101 -0
  665. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/secretspec.php +146 -0
  666. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/sigv4.php +161 -0
  667. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Addr.php +129 -0
  668. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Providers.php +322 -0
  669. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Sekreto.php +724 -0
  670. package/project/.sdk/tm/php/test/feature/secrets/SecretsTest.php +1165 -0
  671. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +2 -2
  672. package/project/.sdk/tm/php/test/vendor/omni/Util.php +2 -2
  673. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +1 -1
  674. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +1 -1
  675. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +1 -1
  676. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +1 -1
  677. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +1 -1
  678. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +1 -1
  679. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +1 -1
  680. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +1 -1
  681. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1 -1
  682. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +1 -1
  683. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +1 -1
  684. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +1 -1
  685. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +1 -1
  686. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +1 -1
  687. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +1 -1
  688. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +2 -2
  689. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +1 -1
  690. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +1 -1
  691. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +1 -1
  692. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +1 -1
  693. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +1 -1
  694. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +1 -1
  695. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +1 -1
  696. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +1 -1
  697. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +1 -1
  698. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +1 -1
  699. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +1 -1
  700. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +1 -1
  701. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +1 -1
  702. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +1 -1
  703. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +28 -6
  704. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +1 -1
  705. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +114 -0
  706. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +1 -1
  707. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +1 -1
  708. package/project/.sdk/tm/py/test/voxgig_omni/util.py +1 -1
  709. package/project/.sdk/tm/rb/Makefile +7 -1
  710. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/capability.rb +118 -0
  711. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/catalog.rb +55 -0
  712. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/config.rb +315 -0
  713. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/depend.rb +197 -0
  714. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/env.rb +143 -0
  715. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/export.rb +52 -0
  716. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/graph.rb +147 -0
  717. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/host.rb +1079 -0
  718. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/order.rb +169 -0
  719. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/point.rb +93 -0
  720. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/ref.rb +112 -0
  721. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/resolve.rb +56 -0
  722. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/types.rb +99 -0
  723. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/version.rb +106 -0
  724. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin.rb +24 -0
  725. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/addr.rb +111 -0
  726. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/aws.rb +200 -0
  727. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/azuresecrets.rb +130 -0
  728. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/boru.rb +121 -0
  729. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/doppler.rb +66 -0
  730. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.rb +107 -0
  731. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/hashicorp.rb +137 -0
  732. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/httpjson.rb +136 -0
  733. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/infisical.rb +97 -0
  734. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/onepassword.rb +104 -0
  735. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/secretspec.rb +113 -0
  736. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/sigv4.rb +127 -0
  737. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/providers.rb +210 -0
  738. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/sekreto.rb +465 -0
  739. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto.rb +30 -0
  740. package/project/.sdk/tm/rb/feature/secrets_feature.rb +583 -0
  741. package/project/.sdk/tm/rb/test/feature/secrets/secrets_feature_test.rb +935 -0
  742. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +2 -2
  743. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +2 -2
  744. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +2 -2
  745. package/project/.sdk/tm/rust/feature/secrets/plugin/capability.rs +130 -0
  746. package/project/.sdk/tm/rust/feature/secrets/plugin/catalog.rs +114 -0
  747. package/project/.sdk/tm/rust/feature/secrets/plugin/config.rs +416 -0
  748. package/project/.sdk/tm/rust/feature/secrets/plugin/depend.rs +245 -0
  749. package/project/.sdk/tm/rust/feature/secrets/plugin/env.rs +200 -0
  750. package/project/.sdk/tm/rust/feature/secrets/plugin/export.rs +90 -0
  751. package/project/.sdk/tm/rust/feature/secrets/plugin/graph.rs +231 -0
  752. package/project/.sdk/tm/rust/feature/secrets/plugin/host.rs +1565 -0
  753. package/project/.sdk/tm/rust/feature/secrets/plugin/mod.rs +18 -0
  754. package/project/.sdk/tm/rust/feature/secrets/plugin/order.rs +226 -0
  755. package/project/.sdk/tm/rust/feature/secrets/plugin/point.rs +137 -0
  756. package/project/.sdk/tm/rust/feature/secrets/plugin/refs.rs +148 -0
  757. package/project/.sdk/tm/rust/feature/secrets/plugin/resolve.rs +83 -0
  758. package/project/.sdk/tm/rust/feature/secrets/plugin/types.rs +132 -0
  759. package/project/.sdk/tm/rust/feature/secrets/plugin/value.rs +433 -0
  760. package/project/.sdk/tm/rust/feature/secrets/plugin/version.rs +174 -0
  761. package/project/.sdk/tm/rust/feature/secrets/plugins/aws/crypto.rs +146 -0
  762. package/project/.sdk/tm/rust/feature/secrets/plugins/aws/sigv4.rs +230 -0
  763. package/project/.sdk/tm/rust/feature/secrets/plugins/aws.rs +328 -0
  764. package/project/.sdk/tm/rust/feature/secrets/plugins/azuresecrets.rs +184 -0
  765. package/project/.sdk/tm/rust/feature/secrets/plugins/boru.rs +172 -0
  766. package/project/.sdk/tm/rust/feature/secrets/plugins/doppler.rs +102 -0
  767. package/project/.sdk/tm/rust/feature/secrets/plugins/gcpsecrets.rs +153 -0
  768. package/project/.sdk/tm/rust/feature/secrets/plugins/hashicorp.rs +228 -0
  769. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/http.rs +537 -0
  770. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/json.rs +300 -0
  771. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson.rs +137 -0
  772. package/project/.sdk/tm/rust/feature/secrets/plugins/infisical.rs +148 -0
  773. package/project/.sdk/tm/rust/feature/secrets/plugins/onepassword.rs +165 -0
  774. package/project/.sdk/tm/rust/feature/secrets/plugins/secretspec.rs +150 -0
  775. package/project/.sdk/tm/rust/feature/secrets/sekreto/addr.rs +144 -0
  776. package/project/.sdk/tm/rust/feature/secrets/sekreto/mod.rs +51 -0
  777. package/project/.sdk/tm/rust/feature/secrets/sekreto/providers.rs +637 -0
  778. package/project/.sdk/tm/rust/feature/secrets/sekreto/sekreto.rs +677 -0
  779. package/project/.sdk/tm/rust/feature/secrets.rs +984 -0
  780. package/project/.sdk/tm/rust/tests/feature/secrets/main.rs +1605 -0
  781. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +2 -2
  782. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +2 -2
  783. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +2 -2
  784. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +2 -2
  785. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +2 -2
  786. package/project/.sdk/tm/scala/Makefile +8 -3
  787. package/project/.sdk/tm/scala/feature/SecretsFeature.scala +578 -0
  788. package/project/.sdk/tm/scala/feature/secrets/plugin/Capability.scala +96 -0
  789. package/project/.sdk/tm/scala/feature/secrets/plugin/Config.scala +270 -0
  790. package/project/.sdk/tm/scala/feature/secrets/plugin/Depend.scala +216 -0
  791. package/project/.sdk/tm/scala/feature/secrets/plugin/Env.scala +144 -0
  792. package/project/.sdk/tm/scala/feature/secrets/plugin/Export.scala +59 -0
  793. package/project/.sdk/tm/scala/feature/secrets/plugin/Graph.scala +149 -0
  794. package/project/.sdk/tm/scala/feature/secrets/plugin/Host.scala +1089 -0
  795. package/project/.sdk/tm/scala/feature/secrets/plugin/Json.scala +156 -0
  796. package/project/.sdk/tm/scala/feature/secrets/plugin/Order.scala +169 -0
  797. package/project/.sdk/tm/scala/feature/secrets/plugin/Plugin.scala +47 -0
  798. package/project/.sdk/tm/scala/feature/secrets/plugin/Point.scala +107 -0
  799. package/project/.sdk/tm/scala/feature/secrets/plugin/Refs.scala +131 -0
  800. package/project/.sdk/tm/scala/feature/secrets/plugin/Resolve.scala +53 -0
  801. package/project/.sdk/tm/scala/feature/secrets/plugin/Types.scala +110 -0
  802. package/project/.sdk/tm/scala/feature/secrets/plugin/Value.scala +157 -0
  803. package/project/.sdk/tm/scala/feature/secrets/plugin/Version.scala +136 -0
  804. package/project/.sdk/tm/scala/feature/secrets/sekreto/Json.scala +302 -0
  805. package/project/.sdk/tm/scala/feature/secrets/sekreto/Provider.scala +20 -0
  806. package/project/.sdk/tm/scala/feature/secrets/sekreto/Providers.scala +281 -0
  807. package/project/.sdk/tm/scala/feature/secrets/sekreto/Sekreto.scala +473 -0
  808. package/project/.sdk/tm/scala/feature/secrets/sekreto/Spec.scala +123 -0
  809. package/project/.sdk/tm/scala/feature/secrets/sekreto/Support.scala +216 -0
  810. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Aws.scala +225 -0
  811. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Azuresecrets.scala +124 -0
  812. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Boru.scala +104 -0
  813. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Doppler.scala +68 -0
  814. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Gcpsecrets.scala +97 -0
  815. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Hashicorp.scala +131 -0
  816. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Httpjson.scala +209 -0
  817. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Infisical.scala +98 -0
  818. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Onepassword.scala +90 -0
  819. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Secretspec.scala +95 -0
  820. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Sigv4.scala +214 -0
  821. package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +1042 -0
  822. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +2 -2
  823. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +2 -2
  824. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +2 -2
  825. package/project/.sdk/tm/scala/utility/Make.scala +7 -0
  826. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/SecretsFeature.swift +669 -0
  827. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Capability.swift +98 -0
  828. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Catalog.swift +87 -0
  829. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Config.swift +298 -0
  830. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Depend.swift +209 -0
  831. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Env.swift +191 -0
  832. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Export.swift +63 -0
  833. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Graph.swift +158 -0
  834. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Host.swift +1141 -0
  835. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Json.swift +192 -0
  836. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Order.swift +183 -0
  837. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Point.swift +130 -0
  838. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Refs.swift +141 -0
  839. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Resolve.swift +59 -0
  840. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Types.swift +125 -0
  841. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Value.swift +198 -0
  842. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Version.swift +139 -0
  843. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Aws.swift +271 -0
  844. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Azuresecrets.swift +173 -0
  845. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Boru.swift +139 -0
  846. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Crypto.swift +198 -0
  847. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Doppler.swift +86 -0
  848. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Gcpsecrets.swift +129 -0
  849. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Hashicorp.swift +175 -0
  850. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Httpjson.swift +310 -0
  851. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Infisical.swift +140 -0
  852. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Onepassword.swift +118 -0
  853. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Proc.swift +105 -0
  854. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Secretspec.swift +111 -0
  855. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Sigv4.swift +297 -0
  856. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Addr.swift +120 -0
  857. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Json.swift +452 -0
  858. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Provider.swift +25 -0
  859. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Providers.swift +689 -0
  860. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Sekreto.swift +755 -0
  861. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +9 -0
  862. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +30 -0
  863. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/feature/secrets/SecretsFeatureTest.swift +1030 -0
  864. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +2 -2
  865. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +2 -2
  866. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +2 -2
  867. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +35 -12
  868. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +1 -1
  869. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +1 -1
  870. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +1 -1
  871. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +1 -1
  872. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +1 -1
  873. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +1 -1
  874. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +1 -1
  875. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +1 -1
  876. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1 -1
  877. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +1 -1
  878. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +1 -1
  879. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +1 -1
  880. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +1 -1
  881. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +1 -1
  882. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +1 -1
  883. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +1 -1
  884. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +1 -1
  885. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +1 -1
  886. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/aws.ts +1 -1
  887. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/azuresecrets.ts +1 -1
  888. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/boru.ts +1 -1
  889. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/doppler.ts +1 -1
  890. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/gcpsecrets.ts +1 -1
  891. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/hashicorp.ts +1 -1
  892. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +1 -1
  893. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/infisical.ts +1 -1
  894. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/onepassword.ts +1 -1
  895. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +1 -1
  896. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/sigv4.ts +1 -1
  897. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +1 -1
  898. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +1 -1
  899. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +1 -1
  900. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +1 -1
  901. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +1 -1
  902. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +1 -1
  903. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +1 -1
  904. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +1 -1
  905. package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +73 -0
  906. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +1 -1
  907. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +1 -1
  908. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +1 -1
  909. package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +137 -0
  910. package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +90 -0
  911. package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +346 -0
  912. package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +244 -0
  913. package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +201 -0
  914. package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +83 -0
  915. package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +212 -0
  916. package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +1224 -0
  917. package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +126 -0
  918. package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +228 -0
  919. package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +34 -0
  920. package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +166 -0
  921. package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +147 -0
  922. package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +74 -0
  923. package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +140 -0
  924. package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +662 -0
  925. package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +139 -0
  926. package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +294 -0
  927. package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +222 -0
  928. package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +188 -0
  929. package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +135 -0
  930. package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +170 -0
  931. package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +242 -0
  932. package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +535 -0
  933. package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +167 -0
  934. package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +202 -0
  935. package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +160 -0
  936. package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +336 -0
  937. package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +148 -0
  938. package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +259 -0
  939. package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +440 -0
  940. package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +944 -0
  941. package/project/.sdk/tm/zig/feature/secrets.zig +854 -0
  942. package/project/.sdk/tm/zig/test/feature/secrets/secrets_test.zig +891 -0
  943. package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +2 -2
  944. package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +2 -2
  945. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +2 -2
  946. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +2 -2
  947. package/project/sdkgen-package.json +1 -4
  948. package/src/helpers/manifest.ts +81 -1
  949. package/src/helpers/modelNames.ts +284 -0
  950. package/src/helpers/naming.ts +45 -1
  951. package/src/sdkgen.ts +11 -1
  952. package/src/testkit.ts +115 -26
  953. package/src/utility.ts +17 -7
  954. package/project/.sdk/model/target/dart.aon +0 -58
  955. package/project/.sdk/model/target/lean.aon +0 -91
  956. package/project/.sdk/model/target/seneca-provider.aon +0 -120
  957. package/project/.sdk/src/cmp/dart/Config_dart.ts +0 -176
  958. package/project/.sdk/src/cmp/dart/EntityBase_dart.ts +0 -34
  959. package/project/.sdk/src/cmp/dart/EntityOperation_dart.ts +0 -43
  960. package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +0 -207
  961. package/project/.sdk/src/cmp/dart/Entity_dart.ts +0 -87
  962. package/project/.sdk/src/cmp/dart/Gitignore_dart.ts +0 -34
  963. package/project/.sdk/src/cmp/dart/MainEntity_dart.ts +0 -33
  964. package/project/.sdk/src/cmp/dart/Main_dart.ts +0 -106
  965. package/project/.sdk/src/cmp/dart/Package_dart.ts +0 -82
  966. package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +0 -177
  967. package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +0 -238
  968. package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +0 -53
  969. package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +0 -152
  970. package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +0 -59
  971. package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +0 -65
  972. package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +0 -151
  973. package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +0 -63
  974. package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +0 -225
  975. package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +0 -397
  976. package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +0 -24
  977. package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +0 -106
  978. package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +0 -78
  979. package/project/.sdk/src/cmp/dart/SdkError_dart.ts +0 -42
  980. package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +0 -516
  981. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +0 -628
  982. package/project/.sdk/src/cmp/dart/Test_dart.ts +0 -116
  983. package/project/.sdk/src/cmp/dart/fragment/Config.data.fragment.dart +0 -79
  984. package/project/.sdk/src/cmp/dart/fragment/Config.fragment.dart +0 -51
  985. package/project/.sdk/src/cmp/dart/fragment/Direct.test.fragment.dart +0 -25
  986. package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +0 -29
  987. package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +0 -28
  988. package/project/.sdk/src/cmp/dart/fragment/EntityBase.fragment.dart +0 -302
  989. package/project/.sdk/src/cmp/dart/fragment/EntityCreateOp.fragment.dart +0 -98
  990. package/project/.sdk/src/cmp/dart/fragment/EntityListOp.fragment.dart +0 -90
  991. package/project/.sdk/src/cmp/dart/fragment/EntityLoadOp.fragment.dart +0 -102
  992. package/project/.sdk/src/cmp/dart/fragment/EntityRemoveOp.fragment.dart +0 -108
  993. package/project/.sdk/src/cmp/dart/fragment/EntityUpdateOp.fragment.dart +0 -102
  994. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +0 -338
  995. package/project/.sdk/src/cmp/dart/fragment/SdkError.fragment.dart +0 -26
  996. package/project/.sdk/src/cmp/dart/tsconfig.json +0 -15
  997. package/project/.sdk/src/cmp/dart/utility_dart.ts +0 -155
  998. package/project/.sdk/src/cmp/lean/Config_lean.ts +0 -93
  999. package/project/.sdk/src/cmp/lean/Entity_lean.ts +0 -9
  1000. package/project/.sdk/src/cmp/lean/Gitignore_lean.ts +0 -18
  1001. package/project/.sdk/src/cmp/lean/Main_lean.ts +0 -120
  1002. package/project/.sdk/src/cmp/lean/Package_lean.ts +0 -93
  1003. package/project/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +0 -29
  1004. package/project/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +0 -19
  1005. package/project/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +0 -25
  1006. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +0 -39
  1007. package/project/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +0 -25
  1008. package/project/.sdk/src/cmp/lean/ReadmeModel_lean.ts +0 -24
  1009. package/project/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +0 -22
  1010. package/project/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +0 -50
  1011. package/project/.sdk/src/cmp/lean/ReadmeRef_lean.ts +0 -40
  1012. package/project/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +0 -16
  1013. package/project/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +0 -23
  1014. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +0 -19
  1015. package/project/.sdk/src/cmp/lean/Test_lean.ts +0 -261
  1016. package/project/.sdk/src/cmp/lean/utility_lean.ts +0 -129
  1017. package/project/.sdk/src/cmp/seneca-provider/Extras_seneca-provider.ts +0 -4080
  1018. package/project/.sdk/src/cmp/seneca-provider/Gitignore_seneca-provider.ts +0 -161
  1019. package/project/.sdk/src/cmp/seneca-provider/Main_seneca-provider.ts +0 -1011
  1020. package/project/.sdk/tm/dart/LICENSE +0 -22
  1021. package/project/.sdk/tm/dart/Makefile +0 -50
  1022. package/project/.sdk/tm/dart/lib/Context.dart +0 -150
  1023. package/project/.sdk/tm/dart/lib/Control.dart +0 -15
  1024. package/project/.sdk/tm/dart/lib/Operation.dart +0 -31
  1025. package/project/.sdk/tm/dart/lib/Point.dart +0 -51
  1026. package/project/.sdk/tm/dart/lib/Response.dart +0 -32
  1027. package/project/.sdk/tm/dart/lib/Result.dart +0 -39
  1028. package/project/.sdk/tm/dart/lib/Spec.dart +0 -49
  1029. package/project/.sdk/tm/dart/lib/feature/audit/AuditFeature.dart +0 -103
  1030. package/project/.sdk/tm/dart/lib/feature/base/BaseFeature.dart +0 -76
  1031. package/project/.sdk/tm/dart/lib/feature/cache/CacheFeature.dart +0 -152
  1032. package/project/.sdk/tm/dart/lib/feature/clienttrack/ClienttrackFeature.dart +0 -104
  1033. package/project/.sdk/tm/dart/lib/feature/cost/CostFeature.dart +0 -446
  1034. package/project/.sdk/tm/dart/lib/feature/debug/DebugFeature.dart +0 -153
  1035. package/project/.sdk/tm/dart/lib/feature/idempotency/IdempotencyFeature.dart +0 -92
  1036. package/project/.sdk/tm/dart/lib/feature/log/LogFeature.dart +0 -85
  1037. package/project/.sdk/tm/dart/lib/feature/metrics/MetricsFeature.dart +0 -103
  1038. package/project/.sdk/tm/dart/lib/feature/netsim/NetsimFeature.dart +0 -186
  1039. package/project/.sdk/tm/dart/lib/feature/paging/PagingFeature.dart +0 -240
  1040. package/project/.sdk/tm/dart/lib/feature/proxy/ProxyFeature.dart +0 -118
  1041. package/project/.sdk/tm/dart/lib/feature/ratelimit/RatelimitFeature.dart +0 -103
  1042. package/project/.sdk/tm/dart/lib/feature/rbac/RbacFeature.dart +0 -121
  1043. package/project/.sdk/tm/dart/lib/feature/retry/RetryFeature.dart +0 -155
  1044. package/project/.sdk/tm/dart/lib/feature/streaming/StreamingFeature.dart +0 -97
  1045. package/project/.sdk/tm/dart/lib/feature/telemetry/TelemetryFeature.dart +0 -136
  1046. package/project/.sdk/tm/dart/lib/feature/test/TestFeature.dart +0 -328
  1047. package/project/.sdk/tm/dart/lib/feature/timeout/TimeoutFeature.dart +0 -104
  1048. package/project/.sdk/tm/dart/lib/utility/CleanUtility.dart +0 -12
  1049. package/project/.sdk/tm/dart/lib/utility/DoneUtility.dart +0 -18
  1050. package/project/.sdk/tm/dart/lib/utility/ErrUtility.dart +0 -46
  1051. package/project/.sdk/tm/dart/lib/utility/FeatureAddUtility.dart +0 -35
  1052. package/project/.sdk/tm/dart/lib/utility/FeatureHookUtility.dart +0 -20
  1053. package/project/.sdk/tm/dart/lib/utility/FeatureInitUtility.dart +0 -9
  1054. package/project/.sdk/tm/dart/lib/utility/FetcherUtility.dart +0 -104
  1055. package/project/.sdk/tm/dart/lib/utility/GraphqlUtility.dart +0 -162
  1056. package/project/.sdk/tm/dart/lib/utility/MakeContextUtility.dart +0 -6
  1057. package/project/.sdk/tm/dart/lib/utility/MakeErrorUtility.dart +0 -71
  1058. package/project/.sdk/tm/dart/lib/utility/MakeFetchDefUtility.dart +0 -42
  1059. package/project/.sdk/tm/dart/lib/utility/MakeOptionsUtility.dart +0 -233
  1060. package/project/.sdk/tm/dart/lib/utility/MakePointUtility.dart +0 -130
  1061. package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +0 -66
  1062. package/project/.sdk/tm/dart/lib/utility/MakeResponseUtility.dart +0 -59
  1063. package/project/.sdk/tm/dart/lib/utility/MakeResultUtility.dart +0 -49
  1064. package/project/.sdk/tm/dart/lib/utility/MakeSpecUtility.dart +0 -77
  1065. package/project/.sdk/tm/dart/lib/utility/MakeUrlUtility.dart +0 -51
  1066. package/project/.sdk/tm/dart/lib/utility/ParamUtility.dart +0 -56
  1067. package/project/.sdk/tm/dart/lib/utility/PrepareAuthUtility.dart +0 -46
  1068. package/project/.sdk/tm/dart/lib/utility/PrepareBodyUtility.dart +0 -19
  1069. package/project/.sdk/tm/dart/lib/utility/PrepareHeadersUtility.dart +0 -11
  1070. package/project/.sdk/tm/dart/lib/utility/PrepareMethodUtility.dart +0 -30
  1071. package/project/.sdk/tm/dart/lib/utility/PrepareParamsUtility.dart +0 -23
  1072. package/project/.sdk/tm/dart/lib/utility/PreparePathUtility.dart +0 -9
  1073. package/project/.sdk/tm/dart/lib/utility/PrepareQueryUtility.dart +0 -18
  1074. package/project/.sdk/tm/dart/lib/utility/ResultBasicUtility.dart +0 -29
  1075. package/project/.sdk/tm/dart/lib/utility/ResultBodyUtility.dart +0 -15
  1076. package/project/.sdk/tm/dart/lib/utility/ResultHeadersUtility.dart +0 -18
  1077. package/project/.sdk/tm/dart/lib/utility/StructUtility.dart +0 -127
  1078. package/project/.sdk/tm/dart/lib/utility/TransformRequestUtility.dart +0 -28
  1079. package/project/.sdk/tm/dart/lib/utility/TransformResponseUtility.dart +0 -44
  1080. package/project/.sdk/tm/dart/lib/utility/Utility.dart +0 -239
  1081. package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +0 -2462
  1082. package/project/.sdk/tm/dart/src/feature/README.md +0 -3
  1083. package/project/.sdk/tm/dart/src/feature/telemetry/.gitkeep +0 -0
  1084. package/project/.sdk/tm/dart/src/feature/test/.gitkeep +0 -0
  1085. package/project/.sdk/tm/dart/src/feature/timeout/.gitkeep +0 -0
  1086. package/project/.sdk/tm/dart/test/custom_test.dart +0 -65
  1087. package/project/.sdk/tm/dart/test/exists_test.dart +0 -12
  1088. package/project/.sdk/tm/dart/test/feature/harness.dart +0 -329
  1089. package/project/.sdk/tm/dart/test/feature_test.dart +0 -1193
  1090. package/project/.sdk/tm/dart/test/harness.dart +0 -153
  1091. package/project/.sdk/tm/dart/test/netsim_test.dart +0 -48
  1092. package/project/.sdk/tm/dart/test/omni.dart +0 -520
  1093. package/project/.sdk/tm/dart/test/omni_smoke_test.dart +0 -143
  1094. package/project/.sdk/tm/dart/test/pipeline_test.dart +0 -608
  1095. package/project/.sdk/tm/dart/test/primary_test.dart +0 -476
  1096. package/project/.sdk/tm/dart/test/sdk-test-control.json +0 -19
  1097. package/project/.sdk/tm/dart/test/struct_test.dart +0 -468
  1098. package/project/.sdk/tm/dart/test/utility.dart +0 -198
  1099. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +0 -7
  1100. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +0 -653
  1101. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +0 -232
  1102. package/project/.sdk/tm/lean/LICENSE +0 -21
  1103. package/project/.sdk/tm/lean/Makefile +0 -32
  1104. package/project/.sdk/tm/lean/VERSION +0 -1
  1105. package/project/.sdk/tm/lean/src/SdkFeature.lean +0 -171
  1106. package/project/.sdk/tm/lean/src/SdkFeatures.lean +0 -787
  1107. package/project/.sdk/tm/lean/src/SdkJson.lean +0 -134
  1108. package/project/.sdk/tm/lean/src/SdkRuntime.lean +0 -374
  1109. package/project/.sdk/tm/lean/src/SdkUtility.lean +0 -809
  1110. package/project/.sdk/tm/lean/src/VoxgigStruct.lean +0 -2880
  1111. package/project/.sdk/tm/lean/src/Vregex.lean +0 -412
  1112. package/project/.sdk/tm/lean/src/feature/README.md +0 -5
  1113. package/project/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
  1114. package/project/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
  1115. package/project/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
  1116. package/project/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
  1117. package/project/.sdk/tm/lean/src/feature/cost/.gitkeep +0 -0
  1118. package/project/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
  1119. package/project/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
  1120. package/project/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
  1121. package/project/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
  1122. package/project/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
  1123. package/project/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
  1124. package/project/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
  1125. package/project/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
  1126. package/project/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
  1127. package/project/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
  1128. package/project/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
  1129. package/project/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
  1130. package/project/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
  1131. package/project/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
  1132. package/project/.sdk/tm/lean/test/OmniResolver.lean +0 -358
  1133. package/project/.sdk/tm/lean/test/OmniSmoke.lean +0 -174
  1134. package/project/.sdk/tm/lean/test/StructCorpus.lean +0 -368
  1135. package/project/.sdk/tm/lean/test/TFeature.lean +0 -281
  1136. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +0 -227
  1137. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +0 -997
  1138. package/project/.sdk/tm/seneca-provider/CODE_OF_CONDUCT.md +0 -132
  1139. package/project/.sdk/tm/seneca-provider/LICENSE +0 -21
  1140. package/project/.sdk/tm/seneca-provider/Makefile +0 -15
  1141. package/project/.sdk/tm/seneca-provider/src/tsconfig.json +0 -18
  1142. package/project/.sdk/tm/seneca-provider/test/tsconfig.json +0 -16
  1143. package/project/.sdk/tm/seneca-provider/tsfmt.json +0 -3
  1144. /package/project/.sdk/tm/{dart/src/feature/audit → c/src/feature/secrets}/.gitkeep +0 -0
  1145. /package/project/.sdk/tm/{dart/src/feature/base → clojure/src/feature/secrets}/.gitkeep +0 -0
  1146. /package/project/.sdk/tm/{dart/src/feature/cache → cpp/src/feature/secrets}/.gitkeep +0 -0
  1147. /package/project/.sdk/tm/{dart/src/feature/clienttrack → csharp/src/feature/secrets}/.gitkeep +0 -0
  1148. /package/project/.sdk/tm/{dart/src/feature/cost → elixir/src/feature/secrets}/.gitkeep +0 -0
  1149. /package/project/.sdk/tm/{dart/src/feature/debug → java/src/feature/secrets}/.gitkeep +0 -0
  1150. /package/project/.sdk/tm/{dart/src/feature/idempotency → kotlin/src/feature/secrets}/.gitkeep +0 -0
  1151. /package/project/.sdk/tm/{dart/src/feature/log → lua/src/feature/secrets}/.gitkeep +0 -0
  1152. /package/project/.sdk/tm/{dart/src/feature/metrics → ocaml/src/feature/secrets}/.gitkeep +0 -0
  1153. /package/project/.sdk/tm/{dart/src/feature/netsim → perl/src/feature/secrets}/.gitkeep +0 -0
  1154. /package/project/.sdk/tm/{dart/src/feature/paging → php/src/feature/secrets}/.gitkeep +0 -0
  1155. /package/project/.sdk/tm/{dart/src/feature/proxy → rb/src/feature/secrets}/.gitkeep +0 -0
  1156. /package/project/.sdk/tm/{dart/src/feature/ratelimit → rust/src/feature/secrets}/.gitkeep +0 -0
  1157. /package/project/.sdk/tm/{dart/src/feature/rbac → scala/src/feature/secrets}/.gitkeep +0 -0
  1158. /package/project/.sdk/tm/{dart/src/feature/retry → swift/src/feature/secrets}/.gitkeep +0 -0
  1159. /package/project/.sdk/tm/{dart/src/feature/streaming → zig/src/feature/secrets}/.gitkeep +0 -0
@@ -0,0 +1,1042 @@
1
+ // Behavioural tests for the secrets feature (vendored @voxgig/sekreto) - the
2
+ // scala port of tm/go/test/feature/secrets/secrets_feature_test.go.
3
+ //
4
+ // The contract under test: the `apikey` OPTION keeps its exact old meaning
5
+ // and always wins, because SecretsFeature places it FIRST in the provider
6
+ // chain (a `memory` store named `options`) - explicit-beats-lookup falls out
7
+ // of sekreto's first-hit rule rather than from special-case logic. With the
8
+ // feature inactive nothing changes at all. With it active and the option
9
+ // unset, the chain supplies the credential instead.
10
+ //
11
+ // EVERY ASSERTION IS ON THE WIRE. Each case builds a LIVE client whose
12
+ // `system.fetch` is the recorder below, so the thing being counted IS the
13
+ // transport - not a harness mock that replaced it. That distinction is the
14
+ // whole difference between a fail-closed test and a test that would pass on
15
+ // an SDK with no secrets feature at all: under the test-mode harness the
16
+ // TestFeature swaps `ctx.utility.fetcher` for its own in-memory mock, so a
17
+ // counter hung off `system.fetch` is never reached and "no request went out"
18
+ // holds vacuously. So each fail-closed case carries a CONTROL leg - the same
19
+ // construction with a WORKING provider - which must reach the same recorder
20
+ // exactly once, and the refusal is matched on the PROVIDER'S OWN message so
21
+ // that an unrelated failure cannot stand in for fail-closed.
22
+ //
23
+ // The feature is CONSTRUCTED DIRECTLY and handed in through the `extend`
24
+ // option when the generated config did not already install it, so these
25
+ // tests hold in any generated tree - whether or not the project's model
26
+ // activated the feature.
27
+ //
28
+ // This file lives in the `feature/` container on purpose: it is per-feature
29
+ // source, and travels with the feature.
30
+
31
+ import java.util.{ArrayList, LinkedHashMap, List => JList, Map => JMap}
32
+ import java.util.function.{BiFunction, Supplier}
33
+
34
+ import scala.collection.mutable.ListBuffer
35
+
36
+ import SCALAPACKAGE.core._
37
+ import SCALAPACKAGE.feature._
38
+ import SCALAPACKAGE.utility.Json
39
+
40
+ object SecretsTestMain {
41
+
42
+ // ---- assertion harness --------------------------------------------------
43
+
44
+ private var npass = 0
45
+ private val failures = new ArrayList[String]()
46
+
47
+ private def pass(): Unit = { npass += 1 }
48
+ private def fail(name: String, msg: String): Unit = failures.add(name + ": " + msg)
49
+ private def check(name: String, cond: Boolean, msg: String): Unit =
50
+ if (cond) pass() else fail(name, msg)
51
+ private def eqs(name: String, exp: String, act: String): Unit =
52
+ check(name, exp == act, "expected \"" + exp + "\", got \"" + act + "\"")
53
+ private def eqs(name: String, exp: String, act: String, why: String): Unit =
54
+ check(name, exp == act,
55
+ "expected \"" + exp + "\", got \"" + act + "\" - " + why)
56
+ private def eqi(name: String, exp: Int, act: Int): Unit =
57
+ check(name, exp == act, "expected " + exp + ", got " + act)
58
+
59
+ // The Authorization header carries the SPEC's credential prefix, which a
60
+ // TEMPLATE cannot know: an OpenAPI `http`/`bearer` scheme gives `Bearer
61
+ // <token>`, an apiKey scheme the raw token. So assert on the CREDENTIAL and
62
+ // let the prefix be whatever this SDK's API declares - pinning the whole
63
+ // header value passes only for a prefix-less API, and this file ships to
64
+ // every project that selects the feature.
65
+ private def credentialIs(name: String, header: String, token: String): Unit = {
66
+ val got = if (header == null) "" else header
67
+ check(name, got == token || got.endsWith(" " + token),
68
+ "expected the authorization header to carry " + token + ", got \"" + got + "\"")
69
+ }
70
+
71
+ // ---- the recording transport --------------------------------------------
72
+ //
73
+ // system.fetch for a LIVE client: one status per API call (the last
74
+ // repeating), plus a token endpoint for the exchange cases.
75
+
76
+ final class Wire {
77
+ val calls = new ArrayList[JMap[String, Object]]()
78
+ var apistatus: List[Int] = List(200)
79
+ var tokens: List[String] = List("ACCESS01", "ACCESS02", "ACCESS03")
80
+ var tokenpath: String = "auth/token"
81
+ var respfield: String = "access_token"
82
+ var tokenstatus: List[Int] = List(200)
83
+
84
+ private var issued = 0
85
+ private var apicalls = 0
86
+ private var tokencalls = 0
87
+
88
+ val fetch: BiFunction[String, JMap[String, Object], Object] =
89
+ (url: String, fetchdef: JMap[String, Object]) => this.synchronized {
90
+ val headers = fetchdef.get("headers") match {
91
+ case m: JMap[_, _] => m.asInstanceOf[JMap[String, Object]]
92
+ case _ => new LinkedHashMap[String, Object]()
93
+ }
94
+ val call = new LinkedHashMap[String, Object]()
95
+ call.put("url", url)
96
+ call.put("has", java.lang.Boolean.valueOf(headers.containsKey("authorization")))
97
+ call.put("auth", headers.get("authorization") match {
98
+ case s: String => s
99
+ case _ => ""
100
+ })
101
+ call.put("body", fetchdef.get("body") match { case s: String => s; case _ => "" })
102
+ calls.add(call)
103
+
104
+ if (url.endsWith("/" + tokenpath)) {
105
+ val status = tokenstatus(math.min(tokencalls, tokenstatus.length - 1))
106
+ tokencalls += 1
107
+ val token = tokens(math.min(issued, tokens.length - 1))
108
+ issued += 1
109
+ val payload = new LinkedHashMap[String, Object]()
110
+ if (200 <= status && 300 > status) payload.put(respfield, token)
111
+ else payload.put("error", "nope")
112
+ response(status, payload)
113
+ } else {
114
+ val status = apistatus(math.min(apicalls, apistatus.length - 1))
115
+ apicalls += 1
116
+ val payload = new LinkedHashMap[String, Object]()
117
+ payload.put("ok", java.lang.Boolean.valueOf(400 > status))
118
+ response(status, payload)
119
+ }
120
+ }
121
+
122
+ private def response(status: Int, data: JMap[String, Object]): JMap[String, Object] = {
123
+ val js: Supplier[Object] = () => data
124
+ val out = new LinkedHashMap[String, Object]()
125
+ out.put("status", java.lang.Integer.valueOf(status))
126
+ out.put("statusText", if (400 <= status) "ERR" else "OK")
127
+ out.put("headers", new LinkedHashMap[String, Object]())
128
+ out.put("json", js)
129
+ out
130
+ }
131
+
132
+ private def matching(token: Boolean): List[JMap[String, Object]] = {
133
+ val out = ListBuffer.empty[JMap[String, Object]]
134
+ val it = calls.iterator()
135
+ while (it.hasNext) {
136
+ val c = it.next()
137
+ val url = c.get("url") match { case s: String => s; case _ => "" }
138
+ if (url.endsWith("/" + tokenpath) == token) out += c
139
+ }
140
+ out.toList
141
+ }
142
+
143
+ // Only the calls that went to the API, and only those that went to the
144
+ // token endpoint.
145
+ def api(): List[JMap[String, Object]] = matching(false)
146
+ def token(): List[JMap[String, Object]] = matching(true)
147
+
148
+ def authof(call: JMap[String, Object]): String =
149
+ call.get("auth") match { case s: String => s; case _ => "" }
150
+ def hasauth(call: JMap[String, Object]): Boolean =
151
+ java.lang.Boolean.TRUE == call.get("has")
152
+
153
+ // What went out, for a failure message that names the leak rather than
154
+ // just its count.
155
+ def report(): String =
156
+ api().map(c => String.valueOf(c.get("url")) + " auth=\"" + authof(c) + "\"")
157
+ .mkString(", ")
158
+ }
159
+
160
+ // ---- small builders ------------------------------------------------------
161
+
162
+ private val ENVPREFIX = "PROJECTENV_TEST_SECRETS_"
163
+ private val BASE = "http://secrets.test/api"
164
+
165
+ private def jmap(kv: (String, Object)*): JMap[String, Object] = {
166
+ val m = new LinkedHashMap[String, Object]()
167
+ kv.foreach { case (k, v) => m.put(k, v) }
168
+ m
169
+ }
170
+
171
+ private def jlist(xs: Object*): JList[Object] = {
172
+ val l = new ArrayList[Object]()
173
+ xs.foreach(l.add)
174
+ l
175
+ }
176
+
177
+ private def sdkopts(w: Wire, extra: (String, Object)*): JMap[String, Object] = {
178
+ val opts = jmap("base" -> BASE, "system" -> jmap("fetch" -> w.fetch))
179
+ extra.foreach { case (k, v) => opts.put(k, v) }
180
+ opts
181
+ }
182
+
183
+ // The feature options: a chain of one MEMORY store unless a case says
184
+ // otherwise. `memory` rather than `env` because a JVM cannot set its own
185
+ // environment - see the `env` case at the end, which proves the env
186
+ // built-in is live by reading a variable that is already there.
187
+ private def secretsOpts(providers: JList[Object], extra: (String, Object)*): JMap[String, Object] = {
188
+ val fopts = jmap(
189
+ "active" -> java.lang.Boolean.TRUE,
190
+ "providers" -> providers,
191
+ )
192
+ extra.foreach { case (k, v) => fopts.put(k, v) }
193
+ jmap("secrets" -> fopts)
194
+ }
195
+
196
+ private def memchain(values: (String, Object)*): JList[Object] =
197
+ jlist(jmap("kind" -> "memory", "values" -> jmap(values*)))
198
+
199
+ private def secretsFeatureOf(client: ProjectNameSDK): SecretsFeature = {
200
+ val it = client.features.iterator()
201
+ while (it.hasNext) it.next() match {
202
+ case sf: SecretsFeature => return sf
203
+ case _ =>
204
+ }
205
+ null
206
+ }
207
+
208
+ // Build the client and ADOPT the feature via `extend` ONLY when the
209
+ // generated config did not already install it - when this SDK was
210
+ // generated with `secrets` model-active the ordinary factory path builds
211
+ // the instance, and adding a second via extend would DOUBLE the feature:
212
+ // two transport wraps, two resolutions, and a token purchase the
213
+ // assertions could not account for. (go's withSecrets and py's
214
+ // _has_feature guard the same way.)
215
+ private def withSecrets(build: Boolean => ProjectNameSDK): ProjectNameSDK = {
216
+ val client = build(false)
217
+ if (null == secretsFeatureOf(client)) build(true) else client
218
+ }
219
+
220
+ private def secretsClient(w: Wire, extra: (String, Object)*): ProjectNameSDK =
221
+ withSecrets { extend =>
222
+ val opts = sdkopts(w, extra*)
223
+ if (extend) opts.put("extend", jlist(new SecretsFeature()))
224
+ new ProjectNameSDK(opts)
225
+ }
226
+
227
+ private def testModeClient(w: Wire, extra: (String, Object)*): ProjectNameSDK =
228
+ withSecrets { extend =>
229
+ val opts = sdkopts(w, extra*)
230
+ if (extend) opts.put("extend", jlist(new SecretsFeature()))
231
+ ProjectNameSDK.testSDK(null, opts)
232
+ }
233
+
234
+ // ---- driving real entity operations --------------------------------------
235
+ //
236
+ // Entity names are unknown to a TEMPLATE, so the accessors are found by
237
+ // SHAPE: a one-argument method taking a Map and returning an SdkEntity is
238
+ // what MainEntity emits for every entity. Each op's own outcome is
239
+ // irrelevant (no seeded data, a scripted response); an op the API does not
240
+ // define fails before it reaches the transport, which is why several may
241
+ // need driving.
242
+
243
+ private def entities(client: ProjectNameSDK): List[SdkEntity] = {
244
+ val out = ListBuffer.empty[SdkEntity]
245
+ for (m <- client.getClass.getMethods) {
246
+ if (1 == m.getParameterCount &&
247
+ classOf[JMap[_, _]].isAssignableFrom(m.getParameterTypes()(0)) &&
248
+ classOf[SdkEntity].isAssignableFrom(m.getReturnType)) {
249
+ try m.invoke(client, Array[Object](null)*) match {
250
+ case e: SdkEntity => out += e
251
+ case _ =>
252
+ }
253
+ catch { case _: Throwable => }
254
+ }
255
+ }
256
+ out.toList
257
+ }
258
+
259
+ // Drive entity ops until `stop` reports the state the case is waiting for.
260
+ // Returns the last error thrown by an op, which is where a fail-closed
261
+ // refusal surfaces on the entity path.
262
+ private def driveUntil(client: ProjectNameSDK, stop: () => Boolean): (Boolean, String) = {
263
+ var lasterr = ""
264
+ var done = false
265
+ // A plain while, not a for-comprehension: a `return` out of a
266
+ // for-comprehension is a NON-LOCAL return, which scala 3 has deprecated.
267
+ val ops = entities(client).flatMap(ent => List(() => ent.list(null, null), () => ent.load(null, null)))
268
+ var index = 0
269
+ while (!done && index < ops.length) {
270
+ try ops(index)()
271
+ catch { case err: Throwable => lasterr = errtext(err) }
272
+ if (stop()) done = true
273
+ index += 1
274
+ }
275
+ (done, lasterr)
276
+ }
277
+
278
+ // An op's failure, with its causes: an SdkError names the operation and
279
+ // carries the underlying refusal beneath it.
280
+ private def errtext(err: Throwable): String = {
281
+ val out = new StringBuilder()
282
+ var cur: Throwable = err
283
+ var depth = 0
284
+ while (cur != null && depth < 8) {
285
+ out.append(String.valueOf(cur.getMessage)).append(" | ")
286
+ cur = cur.getCause
287
+ depth += 1
288
+ }
289
+ out.toString
290
+ }
291
+
292
+ // Drive until ONE request reaches the recorder.
293
+ private def driveOneCall(client: ProjectNameSDK, w: Wire): Boolean = {
294
+ val before = w.api().length
295
+ driveUntil(client, () => before < w.api().length)._1
296
+ }
297
+
298
+ // ---- providers written in code -------------------------------------------
299
+
300
+ final class CodeProvider(
301
+ val answer: String => Option[String],
302
+ val label: String = "custom",
303
+ ) extends com.voxgig.sekreto.Provider {
304
+ val asked = new ArrayList[String]()
305
+ override def lookup(name: String): Option[String] = {
306
+ asked.add(name)
307
+ answer(name)
308
+ }
309
+ override def describe(): String = label + ":test"
310
+ }
311
+
312
+ private def broken(): CodeProvider =
313
+ new CodeProvider(_ => throw new com.voxgig.sekreto.SekretoError("vault unreachable"), "broken")
314
+
315
+ private def working(token: String): CodeProvider =
316
+ new CodeProvider(name => if ("apikey" == name) Some(token) else None, "working")
317
+
318
+ // =========================================================================
319
+ // The feature-inactive baseline: bit-identical behaviour.
320
+
321
+ private def testInactive(): Unit = {
322
+ val client = ProjectNameSDK.testSDK(null, jmap("apikey" -> "OPTKEY01"))
323
+ val fetchdef = client.prepare(jmap("path" -> "/"))
324
+ val headers = fetchdef.get("headers").asInstanceOf[JMap[String, Object]]
325
+ credentialIs("inactive.apikey", headers.get("authorization").asInstanceOf[String], "OPTKEY01")
326
+
327
+ check("inactive.nofeature", null == secretsFeatureOf(client),
328
+ "no model activation and no extend: the feature must not be installed")
329
+
330
+ val bare = ProjectNameSDK.testSDK(null, null)
331
+ val bareheaders = bare.prepare(jmap("path" -> "/"))
332
+ .get("headers").asInstanceOf[JMap[String, Object]]
333
+ check("inactive.noapikey", !bareheaders.containsKey("authorization"),
334
+ "unexpected authorization header: " + bareheaders.get("authorization"))
335
+ }
336
+
337
+ // =========================================================================
338
+ // The chain, driven through real entity operations.
339
+
340
+ private def testOptionWins(): Unit = {
341
+ val w = new Wire()
342
+ val client = secretsClient(w,
343
+ "apikey" -> "OPTKEY01",
344
+ "feature" -> secretsOpts(memchain("APIKEY" -> "CHAINKEY01")))
345
+
346
+ check("chain.optionwins.drive", driveOneCall(client, w), "no entity op reached the transport")
347
+ if (w.api().nonEmpty) {
348
+ credentialIs("chain.optionwins", w.authof(w.api().head), "OPTKEY01")
349
+ }
350
+
351
+ // The explicit option is a real STORE, not a special case: a directed
352
+ // read names it like any other.
353
+ val sf = secretsFeatureOf(client)
354
+ check("chain.optionwins.feature", null != sf, "the extend seam did not install the feature")
355
+ if (null != sf && null != sf.sekreto()) {
356
+ eqs("chain.optionwins.store", "OPTKEY01",
357
+ sf.sekreto().tryfrom("options", "apikey").getOrElse(""))
358
+ }
359
+ }
360
+
361
+ private def testOmittedDefers(): Unit = {
362
+ val w = new Wire()
363
+ val client = secretsClient(w,
364
+ "feature" -> secretsOpts(memchain("APIKEY" -> "CHAINKEY02")))
365
+
366
+ // Before any op, nothing has been resolved.
367
+ eqs("chain.omitted.unresolved", "", secretsFeatureOf(client).credential())
368
+
369
+ check("chain.omitted.drive", driveOneCall(client, w), "no entity op reached the transport")
370
+ if (w.api().nonEmpty) credentialIs("chain.omitted", w.authof(w.api().head), "CHAINKEY02")
371
+
372
+ // Resolution happens AT THE TRANSPORT - the one seam every wire path
373
+ // crosses - so the credential is on the wire, not merely resolved. It is
374
+ // held in FEATURE STATE; the options map is never mutated, so it stays
375
+ // safe to read from every concurrent operation.
376
+ eqs("chain.omitted.state", "CHAINKEY02", secretsFeatureOf(client).credential())
377
+ eqs("chain.omitted.optionsfrozen", "",
378
+ client.optionsMap().get("apikey") match { case s: String => s; case _ => "" })
379
+ }
380
+
381
+ private def testCustomProvider(): Unit = {
382
+ val w = new Wire()
383
+ val prov = working("CUSTOM01")
384
+ val client = secretsClient(w, "feature" -> secretsOpts(jlist(prov)))
385
+
386
+ check("chain.custom.drive", driveOneCall(client, w), "no entity op reached the transport")
387
+ if (w.api().nonEmpty) credentialIs("chain.custom", w.authof(w.api().head), "CUSTOM01")
388
+ check("chain.custom.asked", !prov.asked.isEmpty && "apikey" == prov.asked.get(0),
389
+ "the custom provider was asked " + prov.asked)
390
+ }
391
+
392
+ // A spec given as a plain MAP - what a JSON config supplies. The scala
393
+ // sekreto port has no map-taking SpecOf, so SecretsFeature converts the map
394
+ // to plugin's value model itself; a shape that converter mishandles would
395
+ // be lost in silence, which is why it is pinned here.
396
+ private def testSpecFromMap(): Unit = {
397
+ val w = new Wire()
398
+ val client = secretsClient(w,
399
+ "feature" -> secretsOpts(jlist(jmap(
400
+ "kind" -> "memory",
401
+ "name" -> "config",
402
+ "prefix" -> "CFG_",
403
+ "values" -> jmap("CFG_APIKEY" -> "MAPPED01"),
404
+ ))))
405
+
406
+ check("chain.specmap.drive", driveOneCall(client, w), "no entity op reached the transport")
407
+ if (w.api().nonEmpty) credentialIs("chain.specmap", w.authof(w.api().head), "MAPPED01")
408
+
409
+ // Every field crossed: `name` made the store addressable, `prefix`
410
+ // reached the provider (without it the value would not have been found).
411
+ val sf = secretsFeatureOf(client)
412
+ if (null != sf && null != sf.sekreto()) {
413
+ eqs("chain.specmap.store", "MAPPED01",
414
+ sf.sekreto().tryfrom("config", "apikey").getOrElse(""))
415
+ }
416
+ }
417
+
418
+ private def testMissLeavesHeaderOff(): Unit = {
419
+ val w = new Wire()
420
+ val client = secretsClient(w, "feature" -> secretsOpts(memchain("OTHER" -> "x")))
421
+
422
+ check("chain.miss.drive", driveOneCall(client, w), "no entity op reached the transport")
423
+ if (w.api().nonEmpty) {
424
+ check("chain.miss", !w.hasauth(w.api().head),
425
+ "a chain MISS must fall through to an unauthenticated request, got header \"" +
426
+ w.authof(w.api().head) + "\"")
427
+ }
428
+ }
429
+
430
+ private def testAuthNullSuppresses(): Unit = {
431
+ val w = new Wire()
432
+ val client = secretsClient(w,
433
+ "auth" -> null,
434
+ "apikey" -> "OPTKEY01",
435
+ "feature" -> secretsOpts(memchain("APIKEY" -> "CHAINKEY03")))
436
+
437
+ check("chain.authnull.drive", driveOneCall(client, w), "no entity op reached the transport")
438
+ if (w.api().nonEmpty) {
439
+ check("chain.authnull", !w.hasauth(w.api().head),
440
+ "auth null must suppress the credential, got header \"" + w.authof(w.api().head) + "\"")
441
+ }
442
+
443
+ // The suppression survives option validation rather than being replaced
444
+ // by the optspec's default auth map.
445
+ val opts = client.optionsMap()
446
+ check("chain.authnull.survives", opts.containsKey("auth") && null == opts.get("auth"),
447
+ "options.auth must stay a present null, got " + opts.get("auth"))
448
+ }
449
+
450
+ // =========================================================================
451
+ // FAIL CLOSED. A provider MISS falls through; a provider ERROR must fail
452
+ // the operation. Conflating them turns a broken vault into a silent
453
+ // unauthenticated request.
454
+
455
+ private def testFailClosedEntity(): Unit = {
456
+ val prov = broken()
457
+ val w = new Wire()
458
+ val client = secretsClient(w, "feature" -> secretsOpts(jlist(prov)))
459
+
460
+ // THE RULE, asserted first so a regression reports the leak itself.
461
+ val (_, err) = driveUntil(client, () => !prov.asked.isEmpty)
462
+ check("failclosed.entity.asked", !prov.asked.isEmpty,
463
+ "the chain was never consulted - this case proves nothing")
464
+ eqi("failclosed.entity.silent " + w.report(), 0, w.api().length)
465
+ check("failclosed.entity.message", err.contains("vault unreachable"),
466
+ "the operation must fail with the PROVIDER'S OWN error, got: " + err)
467
+
468
+ // CONTROL, which makes that zero mean REFUSED rather than UNWIRED: the
469
+ // same construction with a WORKING provider must reach the same
470
+ // transport, once, carrying the credential.
471
+ val cw = new Wire()
472
+ val control = secretsClient(cw, "feature" -> secretsOpts(jlist(working("RAWKEY01"))))
473
+ check("failclosed.entity.control.drive", driveOneCall(control, cw),
474
+ "the control request never reached system.fetch, so this case cannot " +
475
+ "observe a request going out at all")
476
+ eqi("failclosed.entity.control.count", 1, cw.api().length)
477
+ if (cw.api().nonEmpty) {
478
+ credentialIs("failclosed.entity.control.auth", cw.authof(cw.api().head), "RAWKEY01")
479
+ }
480
+ }
481
+
482
+ // THE RAW PATHS, which run NO feature hooks at all. If resolution lived in
483
+ // a PreSpec hook these would send an unauthenticated request and never
484
+ // notice; they are covered because resolution is at the TRANSPORT.
485
+ private def testFailClosedRaw(): Unit = {
486
+ val allow = jmap("op" -> "direct,graphql")
487
+
488
+ // ---- direct()
489
+ val w = new Wire()
490
+ val client = secretsClient(w,
491
+ "allow" -> allow,
492
+ "feature" -> secretsOpts(jlist(broken())))
493
+ val res = client.direct(jmap("path" -> "/thing"))
494
+
495
+ eqi("failclosed.direct.silent " + w.report(), 0, w.api().length)
496
+ check("failclosed.direct.refused", java.lang.Boolean.FALSE == res.get("ok"),
497
+ "a broken chain must refuse the raw path fail-closed, got " + res)
498
+ check("failclosed.direct.message",
499
+ errtext(res.get("err").asInstanceOf[Throwable]).contains("vault unreachable"),
500
+ "direct must report the PROVIDER'S OWN error, got: " + res.get("err"))
501
+
502
+ // ---- graphql()
503
+ val gw = new Wire()
504
+ val gclient = secretsClient(gw,
505
+ "allow" -> allow,
506
+ "feature" -> secretsOpts(jlist(broken())))
507
+ val gres = gclient.graphql("{ thing }", null, null)
508
+
509
+ eqi("failclosed.graphql.silent " + gw.report(), 0, gw.api().length)
510
+ check("failclosed.graphql.refused", java.lang.Boolean.FALSE == gres.get("ok"),
511
+ "a broken chain must refuse graphql fail-closed, got " + gres)
512
+ check("failclosed.graphql.message",
513
+ errtext(gres.get("err").asInstanceOf[Throwable]).contains("vault unreachable"),
514
+ "graphql must report the PROVIDER'S OWN error, got: " + gres.get("err"))
515
+
516
+ // ---- CONTROL: the same construction, a working provider, one call each,
517
+ // carrying the credential. Without this the two zeros above would also
518
+ // hold for an SDK that never wires system.fetch at all.
519
+ val cw = new Wire()
520
+ val control = secretsClient(cw,
521
+ "allow" -> allow,
522
+ "feature" -> secretsOpts(jlist(working("RAWKEY02"))))
523
+
524
+ val ok = control.direct(jmap("path" -> "/thing"))
525
+ check("failclosed.direct.control.ok", java.lang.Boolean.TRUE == ok.get("ok"),
526
+ "the control direct() failed: " + ok)
527
+ eqi("failclosed.direct.control.count", 1, cw.api().length)
528
+ if (cw.api().nonEmpty) {
529
+ credentialIs("failclosed.direct.control.auth", cw.authof(cw.api().head), "RAWKEY02")
530
+ }
531
+
532
+ val gcw = new Wire()
533
+ val gcontrol = secretsClient(gcw,
534
+ "allow" -> allow,
535
+ "feature" -> secretsOpts(jlist(working("RAWKEY03"))))
536
+ gcontrol.graphql("{ thing }", null, null)
537
+ eqi("failclosed.graphql.control.count", 1, gcw.api().length)
538
+ if (gcw.api().nonEmpty) {
539
+ credentialIs("failclosed.graphql.control.auth", gcw.authof(gcw.api().head), "RAWKEY03")
540
+ }
541
+ }
542
+
543
+ // A chain that will not BUILD at all - an unknown provider kind, the shape
544
+ // a typo or a plugin group the model did not select produces. Init cannot
545
+ // fail construction the way ts's throwing init can, so the refusal has to
546
+ // come from the transport gate; a feature that skipped wrapping on a failed
547
+ // init would send every request unauthenticated instead, and no other case
548
+ // here would notice.
549
+ private def testFailClosedUnbuildableChain(): Unit = {
550
+ val w = new Wire()
551
+ val client = secretsClient(w,
552
+ "allow" -> jmap("op" -> "direct"),
553
+ "feature" -> secretsOpts(jlist(jmap("kind" -> "nosuchkind"))))
554
+
555
+ val res = client.direct(jmap("path" -> "/thing"))
556
+
557
+ eqi("failclosed.unbuildable.silent " + w.report(), 0, w.api().length)
558
+ check("failclosed.unbuildable.refused", java.lang.Boolean.FALSE == res.get("ok"),
559
+ "a chain that would not build must refuse, got " + res)
560
+ check("failclosed.unbuildable.message",
561
+ errtext(res.get("err").asInstanceOf[Throwable]).contains("nosuchkind"),
562
+ "the refusal must name the unknown kind, got: " + res.get("err"))
563
+ }
564
+
565
+ // A failed resolution is NEVER kept: a transient vault outage must not
566
+ // poison the client permanently.
567
+ private def testTransientRecovery(): Unit = {
568
+ var calls = 0
569
+ val prov = new CodeProvider(_ => {
570
+ calls += 1
571
+ if (1 == calls) throw new com.voxgig.sekreto.SekretoError("vault unreachable")
572
+ Some("RECOVERED01")
573
+ }, "flaky")
574
+
575
+ val w = new Wire()
576
+ val client = secretsClient(w, "feature" -> secretsOpts(jlist(prov)))
577
+
578
+ driveUntil(client, () => 0 < calls)
579
+ eqi("recovery.firstsilent", 0, w.api().length)
580
+
581
+ check("recovery.drive", driveOneCall(client, w), "the second op never reached the transport")
582
+ if (w.api().nonEmpty) credentialIs("recovery.fresh", w.authof(w.api().head), "RECOVERED01")
583
+ }
584
+
585
+ // `cache: false` is documented as "every resolve asks the chain again", and
586
+ // an uncached MISS after an earlier hit is a REVOCATION: the resolved value
587
+ // must stop going out.
588
+ private def testUncachedMissRetracts(): Unit = {
589
+ var have = true
590
+ var calls = 0
591
+ val prov = new CodeProvider(_ => {
592
+ calls += 1
593
+ if (have) Some("REVOCABLE01") else None
594
+ }, "revocable")
595
+
596
+ val w = new Wire()
597
+ val client = secretsClient(w,
598
+ "feature" -> secretsOpts(jlist(prov), "cache" -> java.lang.Boolean.FALSE))
599
+
600
+ check("uncached.drive", driveOneCall(client, w), "no entity op reached the transport")
601
+ if (w.api().nonEmpty) credentialIs("uncached.first", w.authof(w.api().head), "REVOCABLE01")
602
+
603
+ val asked = calls
604
+ have = false
605
+ check("uncached.drive2", driveOneCall(client, w), "the second op never reached the transport")
606
+ check("uncached.reasked", asked < calls,
607
+ "the chain was asked once and cached, despite cache: false")
608
+
609
+ val last = w.api().last
610
+ check("uncached.retracted", !w.hasauth(last) || "" == w.authof(last),
611
+ "after the chain reports a miss, the retracted credential must not go " +
612
+ "out; the wire saw \"" + w.authof(last) + "\"")
613
+ }
614
+
615
+ // A MISS IS NOT A CACHEABLE ANSWER - sekreto's own rule, which this
616
+ // feature used to override from the layer above.
617
+ //
618
+ // DEFAULT caching here, which is the whole point: `cache: true` is about
619
+ // holding a HIT, and keeping the settled resolution after a miss meant the
620
+ // chain was never asked again for the life of the client. A secret
621
+ // provisioned after startup (a mounted file, a vault policy granted a
622
+ // minute late) was invisible forever, and the only workaround was giving
623
+ // up hit caching entirely.
624
+ private def testCachedMissIsReasked(): Unit = {
625
+ var present = false
626
+ var calls = 0
627
+ val prov = new CodeProvider(_ => {
628
+ calls += 1
629
+ if (present) Some("LATEKEY01") else None
630
+ }, "late")
631
+
632
+ val w = new Wire()
633
+ val client = secretsClient(w, "feature" -> secretsOpts(jlist(prov)))
634
+
635
+ check("cachedmiss.drive", driveOneCall(client, w),
636
+ "no entity op reached the transport")
637
+ if (w.api().nonEmpty) {
638
+ val first = w.api().head
639
+ check("cachedmiss.nocred", !w.hasauth(first) || "" == w.authof(first),
640
+ "the chain has nothing yet, so no credential should go out")
641
+ }
642
+
643
+ val asked = calls
644
+ check("cachedmiss.asked", 0 < asked, "the chain was never asked")
645
+
646
+ // The secret is provisioned while the client is live.
647
+ present = true
648
+ check("cachedmiss.drive2", driveOneCall(client, w),
649
+ "the second op never reached the transport")
650
+
651
+ check("cachedmiss.reasked", asked < calls,
652
+ "the MISS was cached: a secret that appears later can never be picked up")
653
+ if (w.api().nonEmpty) {
654
+ credentialIs("cachedmiss.late", w.authof(w.api().last), "LATEKEY01")
655
+ }
656
+ }
657
+
658
+ // The other half of the same rule: a HIT is still cached by default, so
659
+ // the fix above must not turn every request into a chain walk.
660
+ private def testCachedHitIsKept(): Unit = {
661
+ var calls = 0
662
+ val prov = new CodeProvider(_ => {
663
+ calls += 1
664
+ Some("STABLEKEY01")
665
+ }, "counting")
666
+
667
+ val w = new Wire()
668
+ val client = secretsClient(w, "feature" -> secretsOpts(jlist(prov)))
669
+
670
+ check("cachedhit.drive", driveOneCall(client, w),
671
+ "no entity op reached the transport")
672
+ check("cachedhit.drive2", driveOneCall(client, w),
673
+ "the second op never reached the transport")
674
+
675
+ eqi("cachedhit.once", 1, calls)
676
+ }
677
+
678
+ private def testSecretNameConfigurable(): Unit = {
679
+ val w = new Wire()
680
+ val client = secretsClient(w,
681
+ "feature" -> secretsOpts(memchain("API_TOKEN" -> "TOKKEY01"), "name" -> "api.token"))
682
+
683
+ check("name.drive", driveOneCall(client, w), "no entity op reached the transport")
684
+ if (w.api().nonEmpty) credentialIs("name.configurable", w.authof(w.api().head), "TOKKEY01")
685
+ }
686
+
687
+ // The live Sekreto: arbitrary secrets and redaction, the scala spelling of
688
+ // ts's sdk.secrets().
689
+ private def testSekretoIsLive(): Unit = {
690
+ val w = new Wire()
691
+ val client = secretsClient(w,
692
+ "feature" -> secretsOpts(memchain("APIKEY" -> "KEY01", "DB_PASSWORD" -> "dbpass01")))
693
+
694
+ val sek = secretsFeatureOf(client).sekreto()
695
+ check("sekreto.live", null != sek, "no live Sekreto instance")
696
+ if (null != sek) {
697
+ eqs("sekreto.get", "dbpass01", sek.get("db.password"))
698
+ eqs("sekreto.redact", "the password is [redacted], keep it safe",
699
+ sek.redact("the password is dbpass01, keep it safe"))
700
+ }
701
+ }
702
+
703
+ // Every vendored provider MODULE, and the kinds it defines. The pairing is
704
+ // the model's `plugin.<group>.def.scala` map read from the other side, and
705
+ // it is written out here on purpose: a test that asked Config for the
706
+ // mapping would be asking the thing under test.
707
+ //
708
+ // plugins/Httpjson.scala and plugins/Sigv4.scala are absent because they
709
+ // define no kind - they are the two UNGROUPED helper files that ship with
710
+ // the feature core whatever the model selects.
711
+ private val PLUGINMODULES: List[(String, List[String])] = List(
712
+ "Aws" -> List("awsparams", "awssecrets"),
713
+ "Azuresecrets" -> List("azuresecrets"),
714
+ "Boru" -> List("boru"),
715
+ "Doppler" -> List("doppler"),
716
+ "Gcpsecrets" -> List("gcpsecrets"),
717
+ "Hashicorp" -> List("hashicorp"),
718
+ "Infisical" -> List("infisical"),
719
+ "Onepassword" -> List("onepassword"),
720
+ "Secretspec" -> List("secretspec"),
721
+ )
722
+
723
+ // A kind no module defines and no model can select, for the negative
724
+ // control. Deliberately not a plausible provider name.
725
+ private val CONTROLKIND = "vocabulary-control-kind"
726
+
727
+ // Did this SDK compile plugins/<file>.scala? A scala 3 top-level `val`
728
+ // lives in the synthetic `<File>$package` class, so the classloader answers
729
+ // for the FILE - which is what the generate-time plugin trim adds or
730
+ // removes. Asked by name and not by reference: a direct mention of
731
+ // `com.voxgig.sekreto.plugins.hashicorp` would stop this file compiling in
732
+ // every tree the trim did its job on.
733
+ private def moduleShipped(file: String): Boolean =
734
+ try {
735
+ Class.forName("com.voxgig.sekreto.plugins." + file + "$package",
736
+ false, getClass.getClassLoader)
737
+ true
738
+ }
739
+ catch { case _: Throwable => false }
740
+
741
+ // Did the MODEL activate the feature in this SDK? Config's `feature` map is
742
+ // built from the model's active features alone, so the key is present only
743
+ // where an activation put it - which is exactly when the plugin trim ran.
744
+ private def secretsInConfig(): Boolean =
745
+ Config.sharedConfig().get("feature") match {
746
+ case m: JMap[_, _] => m.asInstanceOf[JMap[String, Object]].containsKey("secrets")
747
+ case _ => false
748
+ }
749
+
750
+ // THE PROVIDER VOCABULARY. Since sekreto retired its import-time registry a
751
+ // kind not passed in `plugins` is unknown to that Sekreto, so an SDK whose
752
+ // model selected plugin groups but whose Config failed to hand them over
753
+ // would compile, ship every plugin module, and refuse every one of their
754
+ // kinds at runtime while the built-in cases stayed green.
755
+ //
756
+ // THE EXPECTATION IS DERIVED FROM THE SHIPPED MODULES, NOT FROM CONFIG.
757
+ // The first cut of this read Config.featurePlugins for both sides and
758
+ // looped over it - so on a model selecting no plugin group the list was
759
+ // empty, the loop ran zero times, and deleting the whole emission from
760
+ // Config_scala left the suite green on the same score. Config is the thing
761
+ // under test; it cannot also be the oracle.
762
+ //
763
+ // The independent oracle is the generate-time plugin trim. It deletes an
764
+ // inactive group's FILES, so the set of provider modules compiled into
765
+ // this SDK records what the model selected, and Config's list has to name
766
+ // exactly their kinds - no more (a symbol the trim deleted is a build
767
+ // break) and no fewer (a module whose kind never reaches the feature is
768
+ // refused at runtime).
769
+ private def testPluginVocabulary(): Unit = {
770
+ // (1) The table below has to cover the whole vendored vocabulary, or a
771
+ // kind added upstream would be invisible to every check under it.
772
+ // KINDS.plugin is sekreto's own list, so it answers for upstream.
773
+ val tabled = PLUGINMODULES.flatMap(_._2).toSet
774
+ val untabled = com.voxgig.sekreto.KINDS.plugin.filterNot(tabled.contains)
775
+ check("vocabulary.table", untabled.isEmpty,
776
+ "sekreto ships provider kinds this test does not know about: " +
777
+ untabled.mkString(", ") + " - add them to PLUGINMODULES, and to a " +
778
+ "`plugin` group in model/feature/secrets.aon")
779
+
780
+ val w = new Wire()
781
+ val client = secretsClient(w, "feature" -> secretsOpts(memchain("APIKEY" -> "VOCAB01")))
782
+ val sek = secretsFeatureOf(client).sekreto()
783
+ check("vocabulary.live", null != sek, "no live Sekreto instance")
784
+ if (null == sek) return
785
+
786
+ // (2) CONTROL, both ways. Without these a green run below could mean
787
+ // "catalog.has says yes to anything" or "the `plugins` seam is dead", and
788
+ // on an SDK that selected no group there would be nothing else asserted
789
+ // at all. So: the catalog must be able to say NO to a kind nothing
790
+ // defines, and a definition handed to the SAME constructor parameter
791
+ // Config.featurePlugins feeds must make it say YES.
792
+ check("vocabulary.control.unknown", !sek.catalog.has(CONTROLKIND),
793
+ "the catalog claims to know \"" + CONTROLKIND + "\", which nothing " +
794
+ "defines - catalog.has cannot witness anything")
795
+
796
+ val probe = new com.voxgig.sekreto.Sekreto(
797
+ plugins = List(com.voxgig.sekreto.providerplugin(
798
+ CONTROLKIND, _ => new CodeProvider(_ => None, CONTROLKIND))))
799
+ check("vocabulary.control.handedin", probe.catalog.has(CONTROLKIND),
800
+ "a definition passed in `plugins` did not reach the catalog - the seam " +
801
+ "Config.featurePlugins feeds is dead, so every check here is vacuous")
802
+
803
+ // (3) What Config actually emitted.
804
+ val names = ListBuffer.empty[String]
805
+ for (one <- Config.featurePlugins("secrets")) one match {
806
+ case d: voxgig.plugin.Definition => names += d.name
807
+ case other => fail("vocabulary.type", "not a plugin definition: " + other)
808
+ }
809
+ for (name <- names) {
810
+ check("vocabulary." + name, sek.catalog.has(name),
811
+ "the model selected the " + name + " plugin, but this SDK's Sekreto " +
812
+ "does not know that kind - Config.featurePlugins is not reaching the feature")
813
+ check("vocabulary.known." + name, tabled.contains(name),
814
+ "Config declares a kind no vendored module defines: " + name)
815
+ }
816
+
817
+ // (4) THE SEAM. Both halves of the model are asserted, because the trim
818
+ // that produces the oracle has a half for each: Main_scala excludes an
819
+ // ACTIVE feature's inactive groups, and every group of a feature that is
820
+ // itself off. Each branch names its own failure - a mismatch means
821
+ // something different on either side.
822
+ val shipped = PLUGINMODULES.filter(one => moduleShipped(one._1))
823
+ val here = if (shipped.isEmpty) "(none)" else shipped.map(_._1).mkString(", ")
824
+ val got = names.toList.sorted.mkString(",")
825
+
826
+ if (secretsInConfig()) {
827
+ eqs("vocabulary.matchesmodules", shipped.flatMap(_._2).sorted.mkString(","), got,
828
+ "this SDK compiled the provider modules " + here + ", so " +
829
+ "Config.featurePlugins must name exactly their kinds - it is the " +
830
+ "model's plugin selection that put those modules here")
831
+ }
832
+ else {
833
+ // The model never activated secrets, so it selected no provider kind.
834
+ eqs("vocabulary.off.notrimmed", "", shipped.map(_._1).mkString(","),
835
+ "this SDK's model left secrets off, so no provider client should have " +
836
+ "reached it - Main_scala's inactive-feature plugin trim did not run")
837
+ eqs("vocabulary.off.nodefs", "", got,
838
+ "this SDK's model left secrets off, so Config.featurePlugins must " +
839
+ "declare nothing for it")
840
+ }
841
+ }
842
+
843
+ // The `env` built-in is LIVE. A JVM cannot set its own environment, so this
844
+ // reads a variable that is already there rather than staging one.
845
+ private def testEnvBuiltin(): Unit = {
846
+ val path = System.getenv("PATH")
847
+ if (null == path || path.isEmpty) return
848
+
849
+ val w = new Wire()
850
+ val client = secretsClient(w,
851
+ "feature" -> secretsOpts(jlist(jmap("kind" -> "env")), "name" -> "path"))
852
+ val sek = secretsFeatureOf(client).sekreto()
853
+ eqs("env.builtin", path, if (null == sek) "" else sek.tryget("path").getOrElse(""))
854
+ }
855
+
856
+ // =========================================================================
857
+ // The access-token exchange.
858
+
859
+ private def exchangeOpts(extra: (String, Object)*): JMap[String, Object] = {
860
+ val x = jmap("active" -> java.lang.Boolean.TRUE)
861
+ extra.foreach { case (k, v) => x.put(k, v) }
862
+ secretsOpts(
863
+ memchain("REFRESH_TOKEN" -> "REFRESH01"),
864
+ "name" -> "refresh_token",
865
+ "exchange" -> x)
866
+ }
867
+
868
+ private def testExchangeBuysAndRetries(): Unit = {
869
+ val w = new Wire()
870
+ // First API call is refused, the retry succeeds.
871
+ w.apistatus = List(401, 200)
872
+
873
+ val client = secretsClient(w, "allow" -> jmap("op" -> "direct"), "feature" -> exchangeOpts())
874
+ val res = client.direct(jmap("path" -> "/thing"))
875
+
876
+ eqi("exchange.purchases", 2, w.token().length)
877
+ eqi("exchange.retried", 2, w.api().length)
878
+ if (2 <= w.api().length) {
879
+ credentialIs("exchange.first", w.authof(w.api()(0)), "ACCESS01")
880
+ // The retry must carry the NEW token, not the spent one.
881
+ credentialIs("exchange.retry", w.authof(w.api()(1)), "ACCESS02")
882
+ }
883
+ check("exchange.result", java.lang.Boolean.TRUE == res.get("ok"),
884
+ "the caller sees the successful retry, got " + res)
885
+ }
886
+
887
+ private def testExchangeOnePurchaseManyRequests(): Unit = {
888
+ val w = new Wire()
889
+ val client = secretsClient(w, "allow" -> jmap("op" -> "direct"), "feature" -> exchangeOpts())
890
+
891
+ client.direct(jmap("path" -> "/one"))
892
+ client.direct(jmap("path" -> "/two"))
893
+ client.direct(jmap("path" -> "/three"))
894
+
895
+ eqi("exchange.onepurchase", 1, w.token().length)
896
+ eqi("exchange.threecalls", 3, w.api().length)
897
+ }
898
+
899
+ // The body is MARSHALLED, never concatenated: a refresh token carrying a
900
+ // quote, backslash or newline must arrive as that literal value.
901
+ private def testExchangeBodyIsJson(): Unit = {
902
+ val tricky = "re\"fresh\\to\nken"
903
+ val w = new Wire()
904
+ val client = secretsClient(w,
905
+ "allow" -> jmap("op" -> "direct"),
906
+ "feature" -> exchangeOpts("refresh" -> tricky))
907
+
908
+ client.direct(jmap("path" -> "/thing"))
909
+
910
+ check("exchange.body.purchased", 1 <= w.token().length, "no token purchase was made")
911
+ if (w.token().nonEmpty) {
912
+ val body = w.token().head.get("body") match { case s: String => s; case _ => "" }
913
+ val parsed = Json.parse(body) match {
914
+ case m: JMap[_, _] => m.asInstanceOf[JMap[String, Object]]
915
+ case _ => null
916
+ }
917
+ check("exchange.body.json", null != parsed,
918
+ "the exchange body must be valid JSON, got: " + body)
919
+ if (null != parsed) {
920
+ eqs("exchange.body.literal", tricky,
921
+ parsed.get("refresh_token") match { case s: String => s; case _ => "" })
922
+ }
923
+ }
924
+ }
925
+
926
+ // An explicit exchange.refresh takes the first seat in the chain, so it
927
+ // wins by sekreto's own first-hit rule.
928
+ private def testExchangeExplicitRefreshWins(): Unit = {
929
+ val w = new Wire()
930
+ val client = secretsClient(w,
931
+ "allow" -> jmap("op" -> "direct"),
932
+ "feature" -> exchangeOpts("refresh" -> "EXPLICIT01"))
933
+
934
+ client.direct(jmap("path" -> "/thing"))
935
+
936
+ if (w.token().nonEmpty) {
937
+ val body = w.token().head.get("body") match { case s: String => s; case _ => "" }
938
+ check("exchange.explicitrefresh", body.contains("EXPLICIT01"),
939
+ "an explicit exchange.refresh must win over the chain, body was: " + body)
940
+ } else {
941
+ fail("exchange.explicitrefresh", "no token purchase was made")
942
+ }
943
+ }
944
+
945
+ // A refusal of a deliberately unauthenticated request is not an expired
946
+ // token: buying one and retrying would transmit exactly the credential the
947
+ // caller suppressed.
948
+ private def testExchangeAuthNullNotRetried(): Unit = {
949
+ val w = new Wire()
950
+ w.apistatus = List(401)
951
+
952
+ val client = secretsClient(w,
953
+ "auth" -> null,
954
+ "allow" -> jmap("op" -> "direct"),
955
+ "feature" -> exchangeOpts())
956
+
957
+ client.direct(jmap("path" -> "/thing"))
958
+
959
+ eqi("exchange.authnull.noretry", 1, w.api().length)
960
+ if (w.api().nonEmpty) {
961
+ check("exchange.authnull.nocred", !w.hasauth(w.api().head),
962
+ "no credential may be sent when auth is suppressed, got \"" +
963
+ w.authof(w.api().head) + "\"")
964
+ }
965
+
966
+ // AND NO PURCHASE. resolve() runs before withrefresh's suppression
967
+ // check, so the refresh token used to go to the token endpoint in a
968
+ // request body even here. Stopping the retry does not unsend it, and
969
+ // only the token endpoint can see this.
970
+ eqi("exchange.authnull.nobuy", 0, w.token().length)
971
+ }
972
+
973
+ // No refresh token anywhere is an ERROR, not an unauthenticated call.
974
+ private def testExchangeNoRefresh(): Unit = {
975
+ val w = new Wire()
976
+ val client = secretsClient(w,
977
+ "allow" -> jmap("op" -> "direct"),
978
+ "feature" -> secretsOpts(
979
+ memchain("SOMETHINGELSE" -> "x"),
980
+ "name" -> "refresh_token",
981
+ "exchange" -> jmap("active" -> java.lang.Boolean.TRUE)))
982
+
983
+ val res = client.direct(jmap("path" -> "/thing"))
984
+
985
+ eqi("exchange.norefresh.silent", 0, w.api().length)
986
+ check("exchange.norefresh.refused", java.lang.Boolean.FALSE == res.get("ok"),
987
+ "an empty chain must refuse rather than send unauthenticated, got " + res)
988
+ }
989
+
990
+ // TEST MODE BUYS NOTHING and needs no token endpoint.
991
+ private def testExchangeTestMode(): Unit = {
992
+ val w = new Wire()
993
+ val client = testModeClient(w, "feature" -> exchangeOpts())
994
+
995
+ driveUntil(client, () => "" != secretsFeatureOf(client).credential())
996
+
997
+ eqi("exchange.testmode.noio", 0, w.calls.size())
998
+ eqs("exchange.testmode.token", "test-access_token", secretsFeatureOf(client).credential())
999
+ }
1000
+
1001
+ // =========================================================================
1002
+
1003
+ def main(args: Array[String]): Unit = {
1004
+ val cases: List[(String, () => Unit)] = List(
1005
+ "inactive" -> testInactive,
1006
+ "optionWins" -> testOptionWins,
1007
+ "omittedDefers" -> testOmittedDefers,
1008
+ "customProvider" -> testCustomProvider,
1009
+ "specFromMap" -> testSpecFromMap,
1010
+ "missLeavesHeaderOff" -> testMissLeavesHeaderOff,
1011
+ "authNullSuppresses" -> testAuthNullSuppresses,
1012
+ "failClosedEntity" -> testFailClosedEntity,
1013
+ "failClosedRaw" -> testFailClosedRaw,
1014
+ "failClosedUnbuildableChain" -> testFailClosedUnbuildableChain,
1015
+ "transientRecovery" -> testTransientRecovery,
1016
+ "uncachedMissRetracts" -> testUncachedMissRetracts,
1017
+ "cachedMissIsReasked" -> testCachedMissIsReasked,
1018
+ "cachedHitIsKept" -> testCachedHitIsKept,
1019
+ "secretNameConfigurable" -> testSecretNameConfigurable,
1020
+ "sekretoIsLive" -> testSekretoIsLive,
1021
+ "pluginVocabulary" -> testPluginVocabulary,
1022
+ "envBuiltin" -> testEnvBuiltin,
1023
+ "exchangeBuysAndRetries" -> testExchangeBuysAndRetries,
1024
+ "exchangeOnePurchaseManyRequests" -> testExchangeOnePurchaseManyRequests,
1025
+ "exchangeBodyIsJson" -> testExchangeBodyIsJson,
1026
+ "exchangeExplicitRefreshWins" -> testExchangeExplicitRefreshWins,
1027
+ "exchangeAuthNullNotRetried" -> testExchangeAuthNullNotRetried,
1028
+ "exchangeNoRefresh" -> testExchangeNoRefresh,
1029
+ "exchangeTestMode" -> testExchangeTestMode,
1030
+ )
1031
+
1032
+ for ((name, body) <- cases) {
1033
+ try body()
1034
+ catch { case err: Throwable => fail(name, "threw " + errtext(err)) }
1035
+ }
1036
+
1037
+ println("SECRETS PASS " + npass + " FAIL " + failures.size())
1038
+ val it = failures.iterator()
1039
+ while (it.hasNext) println(" FAIL " + it.next())
1040
+ if (!failures.isEmpty) System.exit(1)
1041
+ }
1042
+ }