@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,1113 @@
1
+ # Behavioural tests for the secrets feature (vendored @voxgig/sekreto).
2
+ #
3
+ # The contract under test: the `apikey` OPTION keeps its exact old meaning
4
+ # and always wins, because ProjectName.Feature.Secrets places it FIRST in the
5
+ # provider chain (a `memory` store named `options`) - explicit-beats-lookup
6
+ # falls out of sekreto's first-hit rule rather than from special-case logic.
7
+ # With the feature inactive nothing changes at all. With it active and the
8
+ # option unset, the chain (env, dotenv, a custom provider, a vault) supplies
9
+ # the credential instead.
10
+ #
11
+ # EVERY CASE BUILDS A LIVE CLIENT WITH A RECORDING `system.fetch`, and asserts
12
+ # on what that recorder saw. That is not incidental - it is the whole point.
13
+ # This feature resolves at the TRANSPORT SEAM (see the header of
14
+ # feature/secrets.ex), so `prepare/2` returns before any lookup has happened
15
+ # and a header assertion taken there would pass for an SDK with no secrets
16
+ # feature at all. And ProjectName.test/2 REPLACES the fetcher with the test
17
+ # feature's in-memory mock, so a counter hung off `system.fetch` is never
18
+ # reached under it: "no request was sent" and "the request failed" would both
19
+ # hold for a healthy SDK, and the pair would assert nothing. An assertion that
20
+ # cannot fail pins no rule.
21
+ #
22
+ # So each fail-closed case proves its own counter FIRST, with the same
23
+ # construction and a WORKING provider: one request must reach `system.fetch`
24
+ # carrying the resolved credential. Only then does a zero from the broken
25
+ # provider mean REFUSED rather than UNWIRED. And the failure is matched on the
26
+ # PROVIDER'S OWN message, so an unrelated failure (a missing route, a blocked
27
+ # op) cannot stand in for fail-closed.
28
+ #
29
+ # This file lives in the `feature/` container on purpose: `target add` trims
30
+ # it, along with the feature source and the vendored library, for a project
31
+ # whose model does not select `secrets`.
32
+
33
+ defmodule ProjectName.SecretsTest do
34
+ use ExUnit.Case
35
+
36
+ alias Voxgig.Struct, as: S
37
+ alias ProjectName.Feature.Secrets
38
+
39
+ @envprefix "PROJECTENV_TEST_SECRETS_"
40
+ @base "http://raw.test/api"
41
+
42
+ # ---- the recorder --------------------------------------------------------
43
+
44
+ # A transport that records every call it is handed, so "sent" is a fact
45
+ # about the wire rather than about a mock. ETS rather than an Agent: this
46
+ # is the thing the fail-closed assertions count, and it must outlive
47
+ # anything the SDK does to its own processes.
48
+ defp recorder(opts \\ %{}) do
49
+ t = :ets.new(:secrets_recorder, [:public, :set])
50
+ :ets.insert(t, {:calls, []})
51
+ :ets.insert(t, {:issued, 0})
52
+ :ets.insert(t, {:apicall, -1})
53
+
54
+ path = Map.get(opts, :path, "auth/token")
55
+ tokens = Map.get(opts, :tokens, ["ACCESS01", "ACCESS02", "ACCESS03"])
56
+ apistatus = Map.get(opts, :api, [200])
57
+ resfield = Map.get(opts, :response, "access_token")
58
+ tokenfail = Map.get(opts, :tokenfail, nil)
59
+
60
+ fetch = fn url, fetchdef ->
61
+ headers = S.getprop(fetchdef, "headers")
62
+
63
+ auth =
64
+ if S.ismap(headers),
65
+ do: ProjectName.Feature.header_get(headers, "authorization"),
66
+ else: nil
67
+
68
+ [{:calls, cs}] = :ets.lookup(t, :calls)
69
+
70
+ :ets.insert(t,
71
+ {:calls, cs ++ [%{url: url, auth: auth, body: S.getprop(fetchdef, "body")}]})
72
+
73
+ if String.ends_with?(url, "/" <> path) do
74
+ [{:issued, i}] = :ets.lookup(t, :issued)
75
+ :ets.insert(t, {:issued, i + 1})
76
+
77
+ if tokenfail != nil and i + 1 >= tokenfail do
78
+ {S.jm(["status", 500, "json", fn -> S.jm([]) end, "headers", S.jm([])]), nil}
79
+ else
80
+ token = Enum.at(tokens, min(i, length(tokens) - 1))
81
+ {S.jm(["status", 200, "json", fn -> S.jm([resfield, token]) end, "headers", S.jm([])]), nil}
82
+ end
83
+ else
84
+ [{:apicall, a}] = :ets.lookup(t, :apicall)
85
+ a = a + 1
86
+ :ets.insert(t, {:apicall, a})
87
+ status = Enum.at(apistatus, min(a, length(apistatus) - 1))
88
+
89
+ {S.jm([
90
+ "status", status,
91
+ "statusText", if(status < 400, do: "OK", else: "ERR"),
92
+ "json", fn -> S.jm(["ok", status < 400]) end,
93
+ "headers", S.jm([])
94
+ ]), nil}
95
+ end
96
+ end
97
+
98
+ %{table: t, fetch: fetch, path: path}
99
+ end
100
+
101
+ defp calls(r), do: :ets.lookup(r.table, :calls) |> hd() |> elem(1)
102
+
103
+ # Only the calls that went to the API, in order - a token purchase is not
104
+ # an API call and must never be counted as one.
105
+ defp api(r), do: calls(r) |> Enum.reject(&String.ends_with?(&1.url, "/" <> r.path))
106
+ defp token(r), do: calls(r) |> Enum.filter(&String.ends_with?(&1.url, "/" <> r.path))
107
+
108
+ # What went out, for a failure message that names the leak rather than just
109
+ # its count.
110
+ defp wire(r) do
111
+ calls(r) |> Enum.map_join(", ", fn c -> c.url <> " auth=" <> inspect(c.auth) end)
112
+ end
113
+
114
+ # ---- construction --------------------------------------------------------
115
+
116
+ # `allow.op` is named explicitly: a project that narrows the default set
117
+ # would otherwise turn the raw-path cases into a false RED (the control leg
118
+ # refused before it reached the transport), and the rule under test lives
119
+ # at the transport, downstream of the allow gate either way.
120
+ defp sdk(r, extra) do
121
+ opts =
122
+ S.jm([
123
+ "base", @base,
124
+ "allow", S.jm(["op", "direct,graphql,list,load"]),
125
+ "system", S.jm(["fetch", r.fetch])
126
+ ])
127
+
128
+ Enum.each(extra, fn {k, v} -> S.setprop(opts, k, v) end)
129
+ ProjectName.new(opts)
130
+ end
131
+
132
+ defp secrets(fopts) do
133
+ node = S.jm(["active", true])
134
+ Enum.each(fopts, fn {k, v} -> S.setprop(node, k, v) end)
135
+ S.jm(["secrets", node])
136
+ end
137
+
138
+ defp providers(list), do: S.jt(list)
139
+
140
+ defp envchain(extra \\ []) do
141
+ secrets([{"providers", providers([S.jm(["kind", "env", "prefix", @envprefix])])} | extra])
142
+ end
143
+
144
+ defp spec(pairs), do: S.jm(pairs)
145
+
146
+ # ---- providers -----------------------------------------------------------
147
+
148
+ # Live provider maps, duck-typed on `lookup/1` exactly as
149
+ # Sekreto.Provider.provider?/1 is.
150
+ defp working(value \\ "RAWKEY01", name \\ "apikey") do
151
+ %{
152
+ lookup: fn n -> if n == name, do: value, else: nil end,
153
+ describe: fn -> "working:test" end
154
+ }
155
+ end
156
+
157
+ defp broken do
158
+ %{
159
+ lookup: fn _n -> raise Sekreto.Error, message: "vault unreachable" end,
160
+ describe: fn -> "broken:test" end
161
+ }
162
+ end
163
+
164
+ # ---- assertions ----------------------------------------------------------
165
+
166
+ # The authorization header carries the SPEC's credential prefix, which a
167
+ # TEMPLATE cannot know: an OpenAPI `http`/`bearer` scheme gives
168
+ # `Bearer <token>`, an apiKey scheme the raw token. So assert on the
169
+ # CREDENTIAL and let the prefix be whatever this SDK's API declares -
170
+ # pinning the whole header value passes only for a prefix-less API, and
171
+ # this file ships to every project that selects the feature.
172
+ defp credential_is(header, token) do
173
+ got = if is_binary(header), do: header, else: ""
174
+
175
+ assert got == token or String.ends_with?(got, " " <> token),
176
+ "expected the Authorization header to carry " <> token <> ", got: " <> inspect(header)
177
+ end
178
+
179
+ defp auth_is(call, token), do: credential_is(if(call == nil, do: nil, else: call.auth), token)
180
+
181
+ # Does this options value CARRY the token - bare, or under the spec's
182
+ # prefix? The negative half of credential_is, for the assertions that pin
183
+ # where a credential must NOT be.
184
+ defp credential?(value, token) do
185
+ is_binary(value) and (value == token or String.ends_with?(value, " " <> token))
186
+ end
187
+
188
+ defp err_message(res) do
189
+ e = S.getprop(res, "err")
190
+
191
+ cond do
192
+ is_exception(e) -> Exception.message(e)
193
+ is_binary(e) -> e
194
+ true -> inspect(e)
195
+ end
196
+ end
197
+
198
+ setup do
199
+ System.delete_env(@envprefix <> "APIKEY")
200
+ System.delete_env(@envprefix <> "REFRESH_TOKEN")
201
+ System.delete_env(@envprefix <> "API_TOKEN")
202
+
203
+ on_exit(fn ->
204
+ System.delete_env(@envprefix <> "APIKEY")
205
+ System.delete_env(@envprefix <> "REFRESH_TOKEN")
206
+ System.delete_env(@envprefix <> "API_TOKEN")
207
+ end)
208
+
209
+ :ok
210
+ end
211
+
212
+ describe "secrets" do
213
+ test "inactive: the apikey option behaves exactly as before" do
214
+ r = recorder()
215
+ client = sdk(r, [{"apikey", "OPTKEY01"}])
216
+
217
+ assert S.getprop(ProjectName.direct(client, S.jm(["path", "/thing"])), "ok") == true
218
+ assert length(api(r)) == 1
219
+ auth_is(hd(api(r)), "OPTKEY01")
220
+
221
+ # No feature, no instance: the accessor is the only way in.
222
+ assert Secrets.feature(client) == nil
223
+ assert Secrets.sekreto(client) == nil
224
+ end
225
+
226
+ test "inactive: no apikey means no authorization header" do
227
+ r = recorder()
228
+ client = sdk(r, [])
229
+ ProjectName.direct(client, S.jm(["path", "/thing"]))
230
+
231
+ assert hd(api(r)).auth == nil
232
+ end
233
+
234
+ test "active: the apikey option still wins over the chain" do
235
+ System.put_env(@envprefix <> "APIKEY", "ENVKEY01")
236
+
237
+ r = recorder()
238
+ client = sdk(r, [{"apikey", "OPTKEY01"}, {"feature", envchain()}])
239
+ ProjectName.direct(client, S.jm(["path", "/thing"]))
240
+
241
+ auth_is(hd(api(r)), "OPTKEY01")
242
+
243
+ # The explicit option is a real store, not a special case: a directed
244
+ # read names it like any other.
245
+ assert Sekreto.getfrom(Secrets.sekreto(client), "options", "apikey") == "OPTKEY01"
246
+ end
247
+
248
+ # The three ways an apikey can be "not given", pinned together because
249
+ # they are easy to conflate and only one of them is a suppression.
250
+ #
251
+ # make_options normalises an omitted apikey to "" before features
252
+ # initialise, so by init time omitted and explicit-empty are
253
+ # indistinguishable - both defer to the chain, deliberately.
254
+
255
+ test "active: an OMITTED apikey defers to the chain" do
256
+ System.put_env(@envprefix <> "APIKEY", "ENVKEY01")
257
+
258
+ r = recorder()
259
+ ProjectName.direct(sdk(r, [{"feature", envchain()}]), S.jm(["path", "/thing"]))
260
+
261
+ auth_is(hd(api(r)), "ENVKEY01")
262
+ end
263
+
264
+ test "active: an explicitly EMPTY apikey also defers to the chain" do
265
+ System.put_env(@envprefix <> "APIKEY", "ENVKEY01")
266
+
267
+ r = recorder()
268
+ ProjectName.direct(sdk(r, [{"apikey", ""}, {"feature", envchain()}]), S.jm(["path", "/thing"]))
269
+
270
+ auth_is(hd(api(r)), "ENVKEY01")
271
+ end
272
+
273
+ # `auth: nil` - the documented way to disable auth outright, which
274
+ # prepare_auth honours before it ever reads the apikey.
275
+ #
276
+ # This needs an explicit guard because struct 0.3.2 nearly removed it in
277
+ # silence: a stored null began reading as "no value", so the optspec's
278
+ # default auth map fired instead and the suppression became "use default
279
+ # auth" - transmitting a credential the caller explicitly asked not to
280
+ # send. make_options now captures suppliedness BEFORE validate and
281
+ # restores the nil after it.
282
+ test "active: auth nil suppresses the credential, chain or no chain" do
283
+ System.put_env(@envprefix <> "APIKEY", "ENVKEY01")
284
+
285
+ r = recorder()
286
+ client = sdk(r, [{"auth", nil}, {"feature", envchain()}])
287
+ ProjectName.direct(client, S.jm(["path", "/thing"]))
288
+
289
+ # Nothing on the wire, even though the chain would have resolved.
290
+ assert length(api(r)) == 1
291
+ assert hd(api(r)).auth == nil
292
+
293
+ # The suppression survives option validation rather than being replaced
294
+ # by the optspec's default auth map.
295
+ assert S.getprop(ProjectName.options_map(client), "auth") == nil
296
+ end
297
+
298
+ test "active: auth nil suppresses an EXPLICIT apikey too" do
299
+ r = recorder()
300
+
301
+ client =
302
+ sdk(r, [{"apikey", "OPTKEY01"}, {"auth", nil}, {"feature", envchain()}])
303
+
304
+ ProjectName.direct(client, S.jm(["path", "/thing"]))
305
+
306
+ assert hd(api(r)).auth == nil
307
+ end
308
+
309
+ test "active: custom provider maps are accepted verbatim" do
310
+ asked = :ets.new(:asked, [:public, :set])
311
+ :ets.insert(asked, {:names, []})
312
+
313
+ custom = %{
314
+ lookup: fn n ->
315
+ [{:names, ns}] = :ets.lookup(asked, :names)
316
+ :ets.insert(asked, {:names, ns ++ [n]})
317
+ "CUSTOM01"
318
+ end,
319
+ describe: fn -> "custom:test" end
320
+ }
321
+
322
+ r = recorder()
323
+
324
+ ProjectName.direct(
325
+ sdk(r, [{"feature", secrets([{"providers", providers([custom])}])}]),
326
+ S.jm(["path", "/thing"])
327
+ )
328
+
329
+ auth_is(hd(api(r)), "CUSTOM01")
330
+ assert (:ets.lookup(asked, :names) |> hd() |> elem(1)) == ["apikey"]
331
+ end
332
+
333
+ test "active: a miss everywhere leaves the header off and the request still goes" do
334
+ r = recorder()
335
+ client = sdk(r, [{"feature", envchain()}])
336
+
337
+ assert S.getprop(ProjectName.direct(client, S.jm(["path", "/thing"])), "ok") == true
338
+ assert length(api(r)) == 1
339
+ assert hd(api(r)).auth == nil
340
+ assert Secrets.credential(client) == ""
341
+ end
342
+
343
+ # WHERE THE CREDENTIAL LIVES: in feature state, NEVER in the shared
344
+ # options map. That is the structural choice the header of
345
+ # feature/secrets.ex spends two paragraphs on - the options node is the
346
+ # client's single live struct node, read raw by every concurrent
347
+ # operation, so a feature that wrote into it would race them - and
348
+ # nothing else here would notice it being undone: publish the resolved
349
+ # token into `_liveopts` before `reauth` and every case above stays
350
+ # green, because the wire sees the same header either way.
351
+ #
352
+ # So this pins the map itself, on BOTH sides of a resolution, and the
353
+ # control leg comes first: the request must reach the transport exactly
354
+ # once carrying the credential, or an unchanged map proves nothing (an
355
+ # unwired feature leaves it unchanged too).
356
+ test "active: a resolved credential lives in feature state, never in the options map" do
357
+ r = recorder()
358
+ client = sdk(r, [{"feature", secrets([{"providers", providers([working()])}])}])
359
+
360
+ # What the map holds BEFORE anything is resolved. make_options
361
+ # normalises an omitted apikey to "", and that is what must survive.
362
+ before = S.getprop(ProjectName.options_map(client), "apikey")
363
+ refute credential?(before, "RAWKEY01")
364
+
365
+ assert S.getprop(ProjectName.direct(client, S.jm(["path", "/thing"])), "ok") == true
366
+
367
+ # CONTROL: resolved, injected, sent - exactly once.
368
+ assert length(api(r)) == 1,
369
+ "the control request never reached system.fetch, so this test cannot" <>
370
+ " observe whether the credential was resolved at all"
371
+
372
+ auth_is(hd(api(r)), "RAWKEY01")
373
+ assert Secrets.credential(client) == "RAWKEY01", "the feature state holds the credential"
374
+
375
+ # THE RULE. The public clone, and the live node behind it - the one
376
+ # prepare_auth clones on every request and the feature keeps as
377
+ # `_liveopts` - both unchanged, and neither carrying the token.
378
+ after_ = S.getprop(ProjectName.options_map(client), "apikey")
379
+
380
+ assert after_ == before,
381
+ "resolving the credential changed options.apikey from " <>
382
+ inspect(before) <> " to " <> inspect(after_) <>
383
+ " - the credential must live in feature state, not in the shared options map"
384
+
385
+ refute credential?(after_, "RAWKEY01"),
386
+ "the resolved credential was published into the options map"
387
+
388
+ live = S.getprop(S.getprop(client, "options"), "apikey")
389
+
390
+ assert live == before,
391
+ "the LIVE options node was written: " <> inspect(live)
392
+
393
+ # And a second request, which must be answered from feature state
394
+ # rather than from a map the first one populated.
395
+ ProjectName.direct(client, S.jm(["path", "/again"]))
396
+ assert length(api(r)) == 2
397
+ auth_is(Enum.at(api(r), 1), "RAWKEY01")
398
+ assert S.getprop(ProjectName.options_map(client), "apikey") == before
399
+ end
400
+
401
+ # sekreto's miss-vs-error invariant: a MISS falls through to the next
402
+ # provider, an ERROR does not. A broken vault must never degrade into an
403
+ # unauthenticated request.
404
+ #
405
+ # THE RAW PATHS RUN NO FEATURE HOOKS AT ALL. If resolution lived only in
406
+ # a hook these would send unauthenticated and never notice; they are
407
+ # covered because the wrapper sits on the fetcher slot, which
408
+ # raw_request/2 reaches through the same late-bound Utility.fetcher/3.
409
+
410
+ test "active: a provider ERROR fails direct() rather than sending" do
411
+ # THE RULE, asserted first so a regression reports the leak itself.
412
+ r = recorder()
413
+ res = ProjectName.direct(
414
+ sdk(r, [{"feature", secrets([{"providers", providers([broken()])}])}]),
415
+ S.jm(["path", "/thing"]))
416
+
417
+ assert api(r) == [],
418
+ "a request must not go out unauthenticated because a provider broke," <>
419
+ " but one reached the transport: " <> wire(r)
420
+
421
+ assert S.getprop(res, "ok") == false
422
+ assert err_message(res) =~ "vault unreachable"
423
+
424
+ # CONTROL, which makes that empty list mean REFUSED rather than
425
+ # UNWIRED: the same construction with a WORKING provider must reach the
426
+ # same transport, once, carrying the credential.
427
+ c = recorder()
428
+ ok = ProjectName.direct(
429
+ sdk(c, [{"feature", secrets([{"providers", providers([working()])}])}]),
430
+ S.jm(["path", "/thing"]))
431
+
432
+ assert S.getprop(ok, "ok") == true, "the control request failed: " <> inspect(ok)
433
+
434
+ assert length(api(c)) == 1,
435
+ "the control request never reached system.fetch, so this test cannot" <>
436
+ " observe a request going out at all"
437
+
438
+ auth_is(hd(api(c)), "RAWKEY01")
439
+ end
440
+
441
+ test "active: a provider ERROR fails graphql() rather than sending" do
442
+ r = recorder()
443
+ res = ProjectName.graphql(
444
+ sdk(r, [{"feature", secrets([{"providers", providers([broken()])}])}]),
445
+ "{ thing }", S.jm([]))
446
+
447
+ assert api(r) == [],
448
+ "a graphql request must not go out unauthenticated," <>
449
+ " but one reached the transport: " <> wire(r)
450
+
451
+ assert S.getprop(res, "ok") == false
452
+ assert err_message(res) =~ "vault unreachable"
453
+
454
+ c = recorder()
455
+ ok = ProjectName.graphql(
456
+ sdk(c, [{"feature", secrets([{"providers", providers([working()])}])}]),
457
+ "{ thing }", S.jm([]))
458
+
459
+ assert S.getprop(ok, "ok") == true, "the control request failed: " <> inspect(ok)
460
+
461
+ assert length(api(c)) == 1,
462
+ "the control request never reached system.fetch, so this test cannot" <>
463
+ " observe a request going out at all"
464
+
465
+ auth_is(hd(api(c)), "RAWKEY01")
466
+ end
467
+
468
+ # THE ENTITY PATH, which DOES run the hook pipeline - the other half of
469
+ # the seam. Resolution is at the transport for both, so one rule covers
470
+ # them; this proves it rather than assuming it.
471
+ #
472
+ # The entity is discovered from the SDK's own config rather than named,
473
+ # because this file is a TEMPLATE: it ships to every project, and no
474
+ # project's entity names are known here.
475
+ test "active: a provider ERROR fails an ENTITY op rather than sending" do
476
+ r = recorder()
477
+ client = sdk(r, [{"feature", secrets([{"providers", providers([broken()])}])}])
478
+
479
+ case list_op(client) do
480
+ nil ->
481
+ # An SDK with no listable entity has no entity path to exercise.
482
+ :ok
483
+
484
+ op ->
485
+ # The op FAILS - that is the point - and by default an entity op
486
+ # raises rather than returning its error, so the refusal is caught
487
+ # here and matched on the PROVIDER'S OWN message. An unrelated
488
+ # failure (a blocked op, a missing route) must not stand in for
489
+ # fail-closed.
490
+ assert opfail(op) =~ "vault unreachable",
491
+ "the entity op did not fail with the provider's own error: " <> opfail(op)
492
+
493
+ assert api(r) == [],
494
+ "an entity op must not go out unauthenticated because a provider" <>
495
+ " broke, but one reached the transport: " <> wire(r)
496
+
497
+ c = recorder()
498
+ control = sdk(c, [{"feature", secrets([{"providers", providers([working()])}])}])
499
+
500
+ # The control op itself may fail on the stub's response shape -
501
+ # irrelevant here. What matters is that the request reached the
502
+ # transport carrying the resolved credential.
503
+ opfail(list_op(control))
504
+
505
+ assert length(api(c)) == 1,
506
+ "the control entity op never reached system.fetch, so this test" <>
507
+ " cannot observe a request going out at all"
508
+
509
+ auth_is(hd(api(c)), "RAWKEY01")
510
+ end
511
+ end
512
+
513
+ # A MALFORMED chain entry is a refusal, not a shorter chain. `providers:
514
+ # ["hashicorp"]` - the bare kind where a spec map was meant - is neither
515
+ # a provider nor a spec, and the feature used to DROP it silently: the
516
+ # chain was then empty, every provider "missed", and the request went
517
+ # out unauthenticated. Fail-open from a typo. Now the entry raises with
518
+ # sekreto's own wording at init, that error is held as the init failure,
519
+ # and the transport gate refuses every path on it - entity, direct AND
520
+ # graphql - because the gate sits on the fetcher slot the raw paths
521
+ # (which run no feature hooks at all) reach through Utility.fetcher/3.
522
+ #
523
+ # The control leg comes FIRST, with the same construction and a WORKING
524
+ # provider, so that an empty recorder means REFUSED rather than UNWIRED.
525
+ test "active: a malformed providers entry refuses every path rather than being dropped" do
526
+ # CONTROL: a well-formed chain reaches the transport once, credentialed.
527
+ c = recorder()
528
+ control = sdk(c, [{"feature", secrets([{"providers", providers([working()])}])}])
529
+ assert S.getprop(ProjectName.direct(control, S.jm(["path", "/thing"])), "ok") == true
530
+
531
+ assert length(api(c)) == 1,
532
+ "the control request never reached system.fetch, so this test cannot" <>
533
+ " observe a request going out at all"
534
+
535
+ auth_is(hd(api(c)), "RAWKEY01")
536
+
537
+ # THE RULE, on all three wire paths, with NO apikey so a dropped entry
538
+ # would leave nothing to send and the leak would be an unauthenticated
539
+ # request rather than a wrong credential.
540
+ r = recorder()
541
+ client = sdk(r, [{"feature", secrets([{"providers", providers(["hashicorp"])}])}])
542
+
543
+ direct = ProjectName.direct(client, S.jm(["path", "/thing"]))
544
+ assert S.getprop(direct, "ok") == false, "direct() went out on a malformed chain"
545
+
546
+ assert err_message(direct) =~ "not a provider or a provider spec",
547
+ "direct() did not fail with sekreto's own refusal: " <> err_message(direct)
548
+
549
+ assert err_message(direct) =~ "hashicorp",
550
+ "the refusal does not name the offending entry: " <> err_message(direct)
551
+
552
+ gql = ProjectName.graphql(client, "{ thing }", S.jm([]))
553
+ assert S.getprop(gql, "ok") == false, "graphql() went out on a malformed chain"
554
+ assert err_message(gql) =~ "not a provider or a provider spec"
555
+
556
+ case list_op(client) do
557
+ nil ->
558
+ # An SDK with no listable entity has no entity path to exercise;
559
+ # the two raw paths above still hold the rule.
560
+ :ok
561
+
562
+ op ->
563
+ assert opfail(op) =~ "not a provider or a provider spec",
564
+ "the entity op did not fail with sekreto's own refusal: " <> opfail(op)
565
+ end
566
+
567
+ assert api(r) == [],
568
+ "a request must not go out because a malformed entry was dropped from" <>
569
+ " the chain, but one reached the transport: " <> wire(r)
570
+
571
+ assert token(r) == []
572
+ end
573
+
574
+ # A settled failure must not be held. Holding one meant a transient vault
575
+ # outage poisoned the client permanently: every later operation kept
576
+ # failing with the original error long after the vault recovered.
577
+ test "active: a provider recovers after a transient failure" do
578
+ n = :counters.new(1, [])
579
+
580
+ flaky = %{
581
+ lookup: fn _ ->
582
+ :counters.add(n, 1, 1)
583
+
584
+ if :counters.get(n, 1) == 1 do
585
+ raise Sekreto.Error, message: "vault unreachable"
586
+ else
587
+ "RECOVERED01"
588
+ end
589
+ end,
590
+ describe: fn -> "flaky:test" end
591
+ }
592
+
593
+ r = recorder()
594
+ client = sdk(r, [{"feature", secrets([{"providers", providers([flaky])}])}])
595
+
596
+ first = ProjectName.direct(client, S.jm(["path", "/one"]))
597
+ assert S.getprop(first, "ok") == false, "the first attempt should surface the outage"
598
+ assert api(r) == []
599
+
600
+ second = ProjectName.direct(client, S.jm(["path", "/two"]))
601
+ assert S.getprop(second, "ok") == true, "the second attempt should recover"
602
+ assert length(api(r)) == 1
603
+ auth_is(hd(api(r)), "RECOVERED01")
604
+ end
605
+
606
+ # `cache: false` is documented as "every resolve asks the chain again".
607
+ # Keeping the settled result made that a lie.
608
+ test "active: cache false asks the chain on every request" do
609
+ n = :counters.new(1, [])
610
+
611
+ counting = %{
612
+ lookup: fn _ ->
613
+ :counters.add(n, 1, 1)
614
+ "KEY" <> Integer.to_string(:counters.get(n, 1))
615
+ end,
616
+ describe: fn -> "counting:test" end
617
+ }
618
+
619
+ r = recorder()
620
+
621
+ client =
622
+ sdk(r, [{"feature", secrets([{"cache", false}, {"providers", providers([counting])}])}])
623
+
624
+ ProjectName.direct(client, S.jm(["path", "/one"]))
625
+ ProjectName.direct(client, S.jm(["path", "/two"]))
626
+
627
+ assert :counters.get(n, 1) > 1,
628
+ "the chain was asked once and cached, despite cache: false"
629
+
630
+ auth_is(Enum.at(api(r), 0), "KEY1")
631
+ auth_is(Enum.at(api(r), 1), "KEY2")
632
+ end
633
+
634
+ # A MISS IS NOT A CACHEABLE ANSWER - sekreto's own rule, which this
635
+ # feature used to override from the layer above.
636
+ #
637
+ # DEFAULT caching here, which is the whole point: `cache: true` is about
638
+ # holding a HIT (the test below pins that half), and keeping the settled
639
+ # resolution after a miss meant the chain was never asked again for the
640
+ # life of the client. A secret provisioned after startup (a mounted
641
+ # file, a vault policy granted a minute late) was invisible forever.
642
+ test "active: a cached MISS is re-asked, so a late secret is picked up" do
643
+ n = :counters.new(1, [])
644
+ present = :counters.new(1, [])
645
+
646
+ late = %{
647
+ lookup: fn _ ->
648
+ :counters.add(n, 1, 1)
649
+ if :counters.get(present, 1) > 0, do: "LATEKEY01", else: nil
650
+ end,
651
+ describe: fn -> "late:test" end
652
+ }
653
+
654
+ r = recorder()
655
+ client = sdk(r, [{"feature", secrets([{"providers", providers([late])}])}])
656
+
657
+ ProjectName.direct(client, S.jm(["path", "/one"]))
658
+ assert Enum.at(api(r), 0).auth == nil,
659
+ "the chain has nothing yet, so no credential should go out"
660
+
661
+ asked = :counters.get(n, 1)
662
+ assert asked > 0
663
+
664
+ # The secret is provisioned while the client is live.
665
+ :counters.add(present, 1, 1)
666
+
667
+ ProjectName.direct(client, S.jm(["path", "/two"]))
668
+
669
+ assert :counters.get(n, 1) > asked,
670
+ "the MISS was cached: a secret that appears later can never be picked up"
671
+
672
+ auth_is(Enum.at(api(r), 1), "LATEKEY01")
673
+ end
674
+
675
+ test "active: caching on asks the chain once" do
676
+ n = :counters.new(1, [])
677
+ counting = %{
678
+ lookup: fn _ -> :counters.add(n, 1, 1); "CACHED01" end,
679
+ describe: fn -> "counting:test" end
680
+ }
681
+
682
+ r = recorder()
683
+ client = sdk(r, [{"feature", secrets([{"providers", providers([counting])}])}])
684
+
685
+ ProjectName.direct(client, S.jm(["path", "/one"]))
686
+ ProjectName.direct(client, S.jm(["path", "/two"]))
687
+
688
+ assert :counters.get(n, 1) == 1
689
+ assert length(api(r)) == 2
690
+ auth_is(Enum.at(api(r), 1), "CACHED01")
691
+ end
692
+
693
+ test "active: the secret name is configurable" do
694
+ System.put_env(@envprefix <> "API_TOKEN", "TOKKEY01")
695
+
696
+ r = recorder()
697
+ ProjectName.direct(sdk(r, [{"feature", envchain([{"name", "api.token"}])}]),
698
+ S.jm(["path", "/thing"]))
699
+
700
+ auth_is(hd(api(r)), "TOKKEY01")
701
+ end
702
+
703
+ test "active: sekreto is live for arbitrary secrets and redaction" do
704
+ r = recorder()
705
+
706
+ client =
707
+ sdk(r, [{"feature",
708
+ secrets([{"providers",
709
+ providers([spec(["kind", "memory", "values", S.jm(["DB_PASSWORD", "dbpass01"])])])}])}])
710
+
711
+ sek = Secrets.sekreto(client)
712
+ assert Sekreto.get(sek, "db.password") == "dbpass01"
713
+
714
+ assert Sekreto.redactall(sek, "the password is dbpass01, keep it safe") ==
715
+ "the password is [redacted], keep it safe"
716
+ end
717
+
718
+ # THE PROVIDER VOCABULARY IS NON-EMPTY.
719
+ #
720
+ # Upstream sekreto retired its self-registration registry: a kind that
721
+ # was not passed in `plugins:` is unknown to that Sekreto. The generated
722
+ # Config.feature_plugins/1 is what passes them, so an SDK whose model
723
+ # selects a plugin group but whose config emitted no definitions would
724
+ # carry the plugin MODULES and refuse every one of their kinds at
725
+ # runtime - while every test that used only built-in kinds stayed green.
726
+ #
727
+ # Conditional on the module being present, because this file ships to
728
+ # projects that select the feature without the `vault` plugin group.
729
+ test "active: a selected plugin kind is in the SDK vocabulary" do
730
+ if Code.ensure_loaded?(Sekreto.Plugins.Hashicorp) do
731
+ # Construction is where an unknown kind is refused, so the chain
732
+ # building at all IS the regression check. The memory store comes
733
+ # FIRST so sekreto's first-hit rule answers from it and the vault is
734
+ # never contacted - the kind has to be declarable, not reachable.
735
+ r = recorder()
736
+
737
+ client =
738
+ sdk(r, [{"feature",
739
+ secrets([{"providers", providers([
740
+ spec(["kind", "memory", "values", S.jm(["APIKEY", "VOCAB01"])]),
741
+ spec(["kind", "hashicorp", "addr", "https://vault.test", "token", "x"])
742
+ ])}])}])
743
+
744
+ assert S.getprop(ProjectName.direct(client, S.jm(["path", "/thing"])), "ok") == true
745
+ auth_is(hd(api(r)), "VOCAB01")
746
+ end
747
+ end
748
+
749
+ # ELIXIR-ONLY. sekreto keeps per-chain state in an Agent started with
750
+ # `Agent.start_link`, so it is LINKED to whichever process built the
751
+ # client. A client constructed in a process that later exits ABNORMALLY
752
+ # leaves a dead Agent, and the next lookup EXITS with `:noproc` rather
753
+ # than raising - which is neither a miss nor a provider error, and would
754
+ # crash the calling process instead of failing the operation. The feature
755
+ # catches that exit and rebuilds the chain once.
756
+ test "active: a dead provider cell is rebuilt rather than crashing the op" do
757
+ r = recorder()
758
+ parent = self()
759
+
760
+ spawn(fn ->
761
+ client =
762
+ sdk(r, [{"feature",
763
+ secrets([{"providers",
764
+ providers([spec(["kind", "memory", "values", S.jm(["APIKEY", "CELLKEY01"])])])}])}])
765
+
766
+ send(parent, {:client, client})
767
+ Process.sleep(20)
768
+ exit(:boom)
769
+ end)
770
+
771
+ client = receive do
772
+ {:client, c} -> c
773
+ after
774
+ 2000 -> flunk("the builder process never handed the client back")
775
+ end
776
+
777
+ # Wait for the owner's exit to take the Agent with it, and prove it
778
+ # did: without a dead cell this test asserts nothing.
779
+ cell = S.getprop(Secrets.feature(client), "_sekreto").state
780
+ wait_dead(cell, 100)
781
+ refute Process.alive?(cell), "the provider cell did not die, so this test is inert"
782
+
783
+ res = ProjectName.direct(client, S.jm(["path", "/thing"]))
784
+
785
+ assert S.getprop(res, "ok") == true,
786
+ "a dead provider cell must not fail the operation: " <> inspect(res)
787
+
788
+ assert length(api(r)) == 1
789
+ auth_is(hd(api(r)), "CELLKEY01")
790
+ end
791
+ end
792
+
793
+ # ACCESS-TOKEN EXCHANGE.
794
+ #
795
+ # The shape these tests pin: what the chain resolves is a REFRESH token,
796
+ # which is POSTed to a token endpoint for a short-lived ACCESS token; the
797
+ # access token is what the Authorization header carries; and when the API
798
+ # answers 401 the client buys another and tries the same request again,
799
+ # once.
800
+ #
801
+ # A LIVE client throughout. Test mode is deliberately excluded here - it
802
+ # buys nothing, which is the subject of its own test at the end.
803
+ describe "secrets exchange" do
804
+ @refresh "REFRESH01"
805
+
806
+ defp exchange_sdk(r, xextra \\ [], extra \\ []) do
807
+ x = S.jm(["active", true])
808
+ Enum.each(xextra, fn {k, v} -> S.setprop(x, k, v) end)
809
+
810
+ fopts =
811
+ secrets([
812
+ {"name", "refresh_token"},
813
+ {"providers", providers([S.jm(["kind", "env", "prefix", @envprefix])])},
814
+ {"exchange", x}
815
+ ])
816
+
817
+ sdk(r, [{"feature", fopts} | extra])
818
+ end
819
+
820
+ test "the refresh token buys an access token, and the request carries it" do
821
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
822
+
823
+ r = recorder()
824
+ ProjectName.direct(exchange_sdk(r), S.jm(["path", "/thing"]))
825
+
826
+ assert length(token(r)) == 1, "expected exactly one token purchase"
827
+
828
+ assert S.getprop(ProjectName.Json.parse(hd(token(r)).body), "refresh_token") == @refresh,
829
+ "the refresh token is sent in the request field"
830
+
831
+ assert length(api(r)) == 1
832
+ auth_is(hd(api(r)), "ACCESS01")
833
+ end
834
+
835
+ test "an explicit exchange.refresh wins over the chain" do
836
+ System.put_env(@envprefix <> "REFRESH_TOKEN", "FROMCHAIN")
837
+
838
+ r = recorder()
839
+ ProjectName.direct(exchange_sdk(r, [{"refresh", "EXPLICIT01"}]), S.jm(["path", "/thing"]))
840
+
841
+ assert S.getprop(ProjectName.Json.parse(hd(token(r)).body), "refresh_token") == "EXPLICIT01"
842
+ end
843
+
844
+ # The exchange side of the same invariant: the ACCESS token the purchase
845
+ # buys is held in feature state too. `buy/2` is a second writer of the
846
+ # credential, so the rule is pinned at this seam as well as at the plain
847
+ # resolution above.
848
+ test "a bought access token lives in feature state, never in the options map" do
849
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
850
+
851
+ r = recorder()
852
+ client = exchange_sdk(r)
853
+ before = S.getprop(ProjectName.options_map(client), "apikey")
854
+
855
+ ProjectName.direct(client, S.jm(["path", "/thing"]))
856
+
857
+ # CONTROL: bought once, sent once, carrying what was bought.
858
+ assert length(token(r)) == 1, "expected exactly one token purchase"
859
+ assert length(api(r)) == 1
860
+ auth_is(hd(api(r)), "ACCESS01")
861
+ assert Secrets.credential(client) == "ACCESS01"
862
+
863
+ after_ = S.getprop(ProjectName.options_map(client), "apikey")
864
+
865
+ assert after_ == before,
866
+ "the token purchase changed options.apikey from " <> inspect(before) <>
867
+ " to " <> inspect(after_)
868
+
869
+ refute credential?(after_, "ACCESS01"),
870
+ "the bought access token was published into the options map"
871
+
872
+ refute credential?(after_, @refresh),
873
+ "the refresh token was published into the options map"
874
+ end
875
+
876
+ test "one purchase serves many requests" do
877
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
878
+
879
+ r = recorder()
880
+ client = exchange_sdk(r)
881
+ ProjectName.direct(client, S.jm(["path", "/one"]))
882
+ ProjectName.direct(client, S.jm(["path", "/two"]))
883
+ ProjectName.direct(client, S.jm(["path", "/three"]))
884
+
885
+ assert length(token(r)) == 1, "a token still working must not be re-bought"
886
+ assert length(api(r)) == 3
887
+ end
888
+
889
+ test "a 401 buys another token and retries the SAME request" do
890
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
891
+
892
+ r = recorder(%{api: [401, 200]})
893
+ res = ProjectName.direct(exchange_sdk(r), S.jm(["path", "/thing"]))
894
+
895
+ assert length(token(r)) == 2, "expected a second token purchase"
896
+ assert length(api(r)) == 2, "expected the request to be retried"
897
+
898
+ auth_is(Enum.at(api(r), 0), "ACCESS01")
899
+ # The retry must carry the NEW token, not the spent one.
900
+ auth_is(Enum.at(api(r), 1), "ACCESS02")
901
+
902
+ assert S.getprop(res, "ok") == true, "the caller sees the successful retry"
903
+ end
904
+
905
+ test "the retry happens once, not in a loop" do
906
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
907
+
908
+ # Every API call is refused: a second 401 on a token bought moments ago
909
+ # is a real failure, and spinning on it would hang instead of failing.
910
+ r = recorder(%{api: [401]})
911
+ ProjectName.direct(exchange_sdk(r), S.jm(["path", "/thing"]))
912
+
913
+ assert length(api(r)) == 2, "exactly one retry"
914
+ assert length(token(r)) == 2
915
+ end
916
+
917
+ test "a status outside exchange.statuses is not an expiry" do
918
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
919
+
920
+ r = recorder(%{api: [403]})
921
+ ProjectName.direct(exchange_sdk(r), S.jm(["path", "/thing"]))
922
+
923
+ assert length(api(r)) == 1, "403 is not in the default statuses"
924
+ assert length(token(r)) == 1
925
+ end
926
+
927
+ test "exchange.statuses is configurable" do
928
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
929
+
930
+ r = recorder(%{api: [403, 200]})
931
+ ProjectName.direct(exchange_sdk(r, [{"statuses", S.jt([403])}]), S.jm(["path", "/thing"]))
932
+
933
+ assert length(api(r)) == 2, "403 was declared an expiry"
934
+ end
935
+
936
+ test "the endpoint and the request and response field names are configurable" do
937
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
938
+
939
+ r = recorder(%{response: "token", path: "oauth/grant"})
940
+
941
+ client =
942
+ exchange_sdk(r, [
943
+ {"path", "oauth/grant"},
944
+ {"request", "grant"},
945
+ {"response", "token"}
946
+ ])
947
+
948
+ ProjectName.direct(client, S.jm(["path", "/thing"]))
949
+
950
+ assert length(token(r)) == 1
951
+
952
+ assert String.ends_with?(hd(token(r)).url, "/oauth/grant"),
953
+ "the token endpoint is relative to base: " <> hd(token(r)).url
954
+
955
+ assert S.getprop(ProjectName.Json.parse(hd(token(r)).body), "grant") == @refresh
956
+ auth_is(hd(api(r)), "ACCESS01")
957
+ end
958
+
959
+ test "an explicit apikey is spent before anything is bought" do
960
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
961
+
962
+ # A caller who already holds an access token should use it; expiry is
963
+ # what moves them onto the exchange, and the API is what says so.
964
+ r = recorder()
965
+ ProjectName.direct(exchange_sdk(r, [], [{"apikey", "HELDTOKEN01"}]), S.jm(["path", "/thing"]))
966
+
967
+ assert token(r) == [], "nothing needed buying"
968
+ auth_is(hd(api(r)), "HELDTOKEN01")
969
+ end
970
+
971
+ test "a held apikey that has expired falls through to the exchange" do
972
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
973
+
974
+ r = recorder(%{api: [401, 200]})
975
+ ProjectName.direct(exchange_sdk(r, [], [{"apikey", "STALETOKEN01"}]), S.jm(["path", "/thing"]))
976
+
977
+ auth_is(Enum.at(api(r), 0), "STALETOKEN01")
978
+ auth_is(Enum.at(api(r), 1), "ACCESS01")
979
+ end
980
+
981
+ test "no refresh token anywhere is an error, not an unauthenticated call" do
982
+ r = recorder()
983
+ res = ProjectName.direct(exchange_sdk(r), S.jm(["path", "/thing"]))
984
+
985
+ assert S.getprop(res, "ok") == false, "expected a failure, got: " <> inspect(res)
986
+ assert err_message(res) =~ "no refresh token"
987
+
988
+ assert api(r) == [],
989
+ "a request must not go out unauthenticated because the chain was empty: " <> wire(r)
990
+ end
991
+
992
+ test "a failing token endpoint surfaces the API refusal, not a spin" do
993
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
994
+
995
+ # The first purchase succeeds; the second (after the 401) does not.
996
+ r = recorder(%{api: [401], tokenfail: 2})
997
+ res = ProjectName.direct(exchange_sdk(r), S.jm(["path", "/thing"]))
998
+
999
+ assert res != nil, "the caller got an answer rather than a hang"
1000
+ assert length(api(r)) == 1, "no retry after a failed purchase"
1001
+ end
1002
+
1003
+ test "auth nil suppresses the credential and buys nothing" do
1004
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
1005
+
1006
+ # `auth: nil` is the documented way to send no credential at all. A
1007
+ # refusal of a deliberately unauthenticated request is not an expired
1008
+ # token: buying one and retrying would transmit exactly the credential
1009
+ # the caller suppressed.
1010
+ r = recorder(%{api: [401]})
1011
+ ProjectName.direct(exchange_sdk(r, [], [{"auth", nil}]), S.jm(["path", "/thing"]))
1012
+
1013
+ assert length(api(r)) == 1, "a suppressed request must not be retried"
1014
+ assert hd(api(r)).auth == nil, "no credential may be sent when auth is suppressed"
1015
+ assert token(r) == [], "a suppressed request must not buy a token either"
1016
+ end
1017
+
1018
+ test "exchange off leaves the feature exactly as it was" do
1019
+ System.put_env(@envprefix <> "APIKEY", "PLAINKEY01")
1020
+
1021
+ r = recorder()
1022
+ ProjectName.direct(sdk(r, [{"feature", envchain()}]), S.jm(["path", "/thing"]))
1023
+
1024
+ assert token(r) == []
1025
+ auth_is(hd(api(r)), "PLAINKEY01")
1026
+ end
1027
+
1028
+ test "test mode buys nothing and needs no token endpoint" do
1029
+ System.put_env(@envprefix <> "REFRESH_TOKEN", @refresh)
1030
+
1031
+ r = recorder()
1032
+
1033
+ client =
1034
+ ProjectName.test(S.jm([]), S.jm([
1035
+ "base", @base,
1036
+ "allow", S.jm(["op", "direct,graphql,list,load"]),
1037
+ "system", S.jm(["fetch", r.fetch]),
1038
+ "feature",
1039
+ secrets([
1040
+ {"name", "refresh_token"},
1041
+ {"providers", providers([S.jm(["kind", "env", "prefix", @envprefix])])},
1042
+ {"exchange", S.jm(["active", true])}
1043
+ ])
1044
+ ]))
1045
+
1046
+ ProjectName.direct(client, S.jm(["path", "/thing"]))
1047
+
1048
+ assert calls(r) == [], "test mode must not do IO"
1049
+
1050
+ # A deterministic placeholder, so offline suites need no configuration.
1051
+ assert Secrets.credential(client) == "test-access_token"
1052
+ end
1053
+ end
1054
+
1055
+ # ---- template helpers ----------------------------------------------------
1056
+
1057
+ # A callable `list` op for SOME entity this SDK generates, or nil.
1058
+ #
1059
+ # SEARCH for a usable op rather than taking the first entity and hoping: an
1060
+ # API's first entity by name need not have a `list`, and a template cannot
1061
+ # know which does.
1062
+ defp list_op(client) do
1063
+ ents = S.getprop(ProjectName.Config.make_config(), "entity")
1064
+
1065
+ if not S.ismap(ents) do
1066
+ nil
1067
+ else
1068
+ Enum.find_value(S.keysof(ents), fn name ->
1069
+ if S.ismap(S.getpath(ents, name <> ".op.list")) do
1070
+ factory = existing_atom(name)
1071
+
1072
+ if factory != nil and
1073
+ Enum.member?(ProjectName.__info__(:functions), {factory, 2}) do
1074
+ ent = apply(ProjectName, factory, [client, nil])
1075
+ mod = S.getprop(ent, "_module")
1076
+
1077
+ if mod != nil and Code.ensure_loaded?(mod) and function_exported?(mod, :list, 3) do
1078
+ fn -> apply(mod, :list, [ent, nil, nil]) end
1079
+ end
1080
+ end
1081
+ end
1082
+ end)
1083
+ end
1084
+ end
1085
+
1086
+ # Run an entity op and answer with its failure MESSAGE ("" when it
1087
+ # succeeded). An entity op raises by default rather than returning its
1088
+ # error, so a fail-closed assertion has to reach the message through the
1089
+ # raise.
1090
+ defp opfail(op) do
1091
+ out = op.()
1092
+ if is_exception(out), do: Exception.message(out), else: ""
1093
+ rescue
1094
+ e -> Exception.message(e)
1095
+ end
1096
+
1097
+ defp existing_atom(name) do
1098
+ String.to_existing_atom(name)
1099
+ rescue
1100
+ ArgumentError -> nil
1101
+ end
1102
+
1103
+ defp wait_dead(_pid, 0), do: :ok
1104
+
1105
+ defp wait_dead(pid, n) do
1106
+ if Process.alive?(pid) do
1107
+ Process.sleep(10)
1108
+ wait_dead(pid, n - 1)
1109
+ else
1110
+ :ok
1111
+ end
1112
+ end
1113
+ end