@voxgig/sdkgen 4.10.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 (304) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/package.json +1 -1
  3. package/project/.sdk/model/feature/secrets.aon +330 -0
  4. package/project/.sdk/model/target/c.aon +15 -2
  5. package/project/.sdk/model/target/cpp.aon +18 -0
  6. package/project/.sdk/model/target/lua.aon +17 -0
  7. package/project/.sdk/model/target/ocaml.aon +48 -5
  8. package/project/.sdk/model/target/zig.aon +30 -4
  9. package/project/.sdk/src/cmp/c/Config_c.ts +338 -1
  10. package/project/.sdk/src/cmp/c/Main_c.ts +57 -2
  11. package/project/.sdk/src/cmp/c/Package_c.ts +12 -2
  12. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +324 -2
  13. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +2 -0
  14. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +62 -4
  15. package/project/.sdk/src/cmp/cpp/Package_cpp.ts +10 -0
  16. package/project/.sdk/src/cmp/lua/Config_lua.ts +88 -0
  17. package/project/.sdk/src/cmp/lua/Gitignore_lua.ts +4 -0
  18. package/project/.sdk/src/cmp/lua/Main_lua.ts +93 -3
  19. package/project/.sdk/src/cmp/lua/Package_lua.ts +60 -0
  20. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +10 -0
  21. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +183 -5
  22. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +160 -3
  23. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +25 -1
  24. package/project/.sdk/src/cmp/zig/Config_zig.ts +130 -9
  25. package/project/.sdk/src/cmp/zig/Main_zig.ts +208 -4
  26. package/project/.sdk/{tm/zig/build.zig → src/cmp/zig/fragment/Build.fragment.zig} +7 -0
  27. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +25 -0
  28. package/project/.sdk/{tm/zig/root.zig → src/cmp/zig/fragment/Root.fragment.zig} +9 -0
  29. package/project/.sdk/tm/c/Makefile +58 -9
  30. package/project/.sdk/tm/c/core/sdk.h +10 -0
  31. package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +133 -0
  32. package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +39 -0
  33. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +83 -0
  34. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +48 -0
  35. package/project/.sdk/tm/c/feature/secrets/plugin/config.c +413 -0
  36. package/project/.sdk/tm/c/feature/secrets/plugin/config.h +24 -0
  37. package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +264 -0
  38. package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +29 -0
  39. package/project/.sdk/tm/c/feature/secrets/plugin/env.c +220 -0
  40. package/project/.sdk/tm/c/feature/secrets/plugin/env.h +19 -0
  41. package/project/.sdk/tm/c/feature/secrets/plugin/export.c +97 -0
  42. package/project/.sdk/tm/c/feature/secrets/plugin/export.h +19 -0
  43. package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +237 -0
  44. package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +17 -0
  45. package/project/.sdk/tm/c/feature/secrets/plugin/host.c +1494 -0
  46. package/project/.sdk/tm/c/feature/secrets/plugin/host.h +135 -0
  47. package/project/.sdk/tm/c/feature/secrets/plugin/order.c +288 -0
  48. package/project/.sdk/tm/c/feature/secrets/plugin/order.h +18 -0
  49. package/project/.sdk/tm/c/feature/secrets/plugin/point.c +141 -0
  50. package/project/.sdk/tm/c/feature/secrets/plugin/point.h +80 -0
  51. package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +170 -0
  52. package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +52 -0
  53. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +98 -0
  54. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +18 -0
  55. package/project/.sdk/tm/c/feature/secrets/plugin/types.c +150 -0
  56. package/project/.sdk/tm/c/feature/secrets/plugin/types.h +104 -0
  57. package/project/.sdk/tm/c/feature/secrets/plugin/value.c +649 -0
  58. package/project/.sdk/tm/c/feature/secrets/plugin/value.h +135 -0
  59. package/project/.sdk/tm/c/feature/secrets/plugin/version.c +151 -0
  60. package/project/.sdk/tm/c/feature/secrets/plugin/version.h +34 -0
  61. package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +281 -0
  62. package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +207 -0
  63. package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +164 -0
  64. package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +75 -0
  65. package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +141 -0
  66. package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +144 -0
  67. package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +177 -0
  68. package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +239 -0
  69. package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +599 -0
  70. package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +165 -0
  71. package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +194 -0
  72. package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +233 -0
  73. package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +125 -0
  74. package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +125 -0
  75. package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +270 -0
  76. package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +382 -0
  77. package/project/.sdk/tm/c/feature/secrets/plugins/support.h +153 -0
  78. package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +420 -0
  79. package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +86 -0
  80. package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +721 -0
  81. package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +813 -0
  82. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +944 -0
  83. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +490 -0
  84. package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +442 -0
  85. package/project/.sdk/tm/c/feature/secrets.c +797 -0
  86. package/project/.sdk/tm/c/feature/secrets.h +46 -0
  87. package/project/.sdk/tm/c/src/feature/secrets/.gitkeep +0 -0
  88. package/project/.sdk/tm/c/tests/feature/secrets/secrets_test.c +802 -0
  89. package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +38 -11
  90. package/project/.sdk/tm/clojure/test/sdk/test/feature/secrets.clj +40 -6
  91. package/project/.sdk/tm/cpp/Makefile +48 -4
  92. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +121 -0
  93. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +41 -0
  94. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +60 -0
  95. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +66 -0
  96. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +376 -0
  97. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +29 -0
  98. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +230 -0
  99. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +31 -0
  100. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +205 -0
  101. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +25 -0
  102. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +84 -0
  103. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +24 -0
  104. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +222 -0
  105. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +21 -0
  106. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +1200 -0
  107. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +250 -0
  108. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +250 -0
  109. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +22 -0
  110. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +110 -0
  111. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +79 -0
  112. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +136 -0
  113. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +60 -0
  114. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +82 -0
  115. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +25 -0
  116. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +90 -0
  117. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +65 -0
  118. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +491 -0
  119. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +120 -0
  120. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +143 -0
  121. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +36 -0
  122. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +248 -0
  123. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +30 -0
  124. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +149 -0
  125. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +23 -0
  126. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +117 -0
  127. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +27 -0
  128. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +180 -0
  129. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +52 -0
  130. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +87 -0
  131. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +23 -0
  132. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +121 -0
  133. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +23 -0
  134. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +153 -0
  135. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +23 -0
  136. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +666 -0
  137. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +160 -0
  138. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +123 -0
  139. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +23 -0
  140. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +125 -0
  141. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +23 -0
  142. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +223 -0
  143. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +47 -0
  144. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +104 -0
  145. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +27 -0
  146. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +242 -0
  147. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +58 -0
  148. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +260 -0
  149. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +47 -0
  150. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +476 -0
  151. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +89 -0
  152. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +312 -0
  153. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +263 -0
  154. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +354 -0
  155. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +111 -0
  156. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +613 -0
  157. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +227 -0
  158. package/project/.sdk/tm/cpp/feature/secrets.hpp +745 -0
  159. package/project/.sdk/tm/cpp/src/feature/secrets/.gitkeep +0 -0
  160. package/project/.sdk/tm/cpp/test/feature/secrets/secrets_test.cpp +808 -0
  161. package/project/.sdk/tm/csharp/feature/SecretsFeature.cs +34 -8
  162. package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +85 -0
  163. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets.ex +17 -2
  164. package/project/.sdk/tm/elixir/test/feature/secrets/secrets_test.exs +41 -0
  165. package/project/.sdk/tm/go/feature/secrets_feature.go +32 -10
  166. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +116 -0
  167. package/project/.sdk/tm/java/feature/SecretsFeature.java +33 -8
  168. package/project/.sdk/tm/java/test/feature/secrets/SecretsFeatureTest.java +64 -0
  169. package/project/.sdk/tm/js/src/feature/secrets/SecretsFeature.js +34 -11
  170. package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +73 -0
  171. package/project/.sdk/tm/kotlin/feature/SecretsFeature.kt +32 -7
  172. package/project/.sdk/tm/kotlin/test/feature/secrets/SecretsTest.kt +69 -0
  173. package/project/.sdk/tm/lua/Makefile +15 -4
  174. package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +806 -0
  175. package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +135 -0
  176. package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +63 -0
  177. package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +361 -0
  178. package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +232 -0
  179. package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +168 -0
  180. package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +66 -0
  181. package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +194 -0
  182. package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +1190 -0
  183. package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +169 -0
  184. package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +207 -0
  185. package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +106 -0
  186. package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +115 -0
  187. package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +78 -0
  188. package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +275 -0
  189. package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +131 -0
  190. package/project/.sdk/tm/lua/feature/secrets/plugin.lua +76 -0
  191. package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +124 -0
  192. package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +47 -0
  193. package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +315 -0
  194. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +228 -0
  195. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +137 -0
  196. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +124 -0
  197. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +212 -0
  198. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +89 -0
  199. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +129 -0
  200. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +154 -0
  201. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +248 -0
  202. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +113 -0
  203. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +449 -0
  204. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +198 -0
  205. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +126 -0
  206. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +93 -0
  207. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +269 -0
  208. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +146 -0
  209. package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +346 -0
  210. package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +479 -0
  211. package/project/.sdk/tm/lua/feature/secrets_feature.lua +690 -0
  212. package/project/.sdk/tm/lua/src/feature/secrets/.gitkeep +0 -0
  213. package/project/.sdk/tm/lua/test/extend_test.lua +105 -0
  214. package/project/.sdk/tm/lua/test/feature/secrets/secrets_feature_test.lua +862 -0
  215. package/project/.sdk/tm/ocaml/Makefile +52 -8
  216. package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +106 -0
  217. package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +43 -0
  218. package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +349 -0
  219. package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +143 -0
  220. package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +217 -0
  221. package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +197 -0
  222. package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +89 -0
  223. package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +227 -0
  224. package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +1112 -0
  225. package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +202 -0
  226. package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +138 -0
  227. package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +126 -0
  228. package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +62 -0
  229. package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +97 -0
  230. package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +387 -0
  231. package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +139 -0
  232. package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +171 -0
  233. package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +116 -0
  234. package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +95 -0
  235. package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +149 -0
  236. package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +61 -0
  237. package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +93 -0
  238. package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +120 -0
  239. package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +421 -0
  240. package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +66 -0
  241. package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +85 -0
  242. package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +112 -0
  243. package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +97 -0
  244. package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +68 -0
  245. package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +259 -0
  246. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +44 -0
  247. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +358 -0
  248. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +376 -0
  249. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +647 -0
  250. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +299 -0
  251. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +347 -0
  252. package/project/.sdk/tm/ocaml/feature/secrets_feature.ml +453 -0
  253. package/project/.sdk/tm/ocaml/src/feature/secrets/.gitkeep +0 -0
  254. package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +670 -0
  255. package/project/.sdk/tm/perl/feature/secrets_feature.pm +33 -12
  256. package/project/.sdk/tm/perl/t/feature/secrets/secrets.t +47 -0
  257. package/project/.sdk/tm/php/feature/SecretsFeature.php +30 -6
  258. package/project/.sdk/tm/php/test/feature/secrets/SecretsTest.php +98 -0
  259. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +28 -6
  260. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +114 -0
  261. package/project/.sdk/tm/rb/feature/secrets_feature.rb +28 -6
  262. package/project/.sdk/tm/rb/test/feature/secrets/secrets_feature_test.rb +93 -0
  263. package/project/.sdk/tm/rust/feature/secrets.rs +33 -10
  264. package/project/.sdk/tm/rust/tests/feature/secrets/main.rs +96 -0
  265. package/project/.sdk/tm/scala/feature/SecretsFeature.scala +29 -7
  266. package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +71 -0
  267. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +35 -12
  268. package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +73 -0
  269. package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +137 -0
  270. package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +90 -0
  271. package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +346 -0
  272. package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +244 -0
  273. package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +201 -0
  274. package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +83 -0
  275. package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +212 -0
  276. package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +1224 -0
  277. package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +126 -0
  278. package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +228 -0
  279. package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +34 -0
  280. package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +166 -0
  281. package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +147 -0
  282. package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +74 -0
  283. package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +140 -0
  284. package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +662 -0
  285. package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +139 -0
  286. package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +294 -0
  287. package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +222 -0
  288. package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +188 -0
  289. package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +135 -0
  290. package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +170 -0
  291. package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +242 -0
  292. package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +535 -0
  293. package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +167 -0
  294. package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +202 -0
  295. package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +160 -0
  296. package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +336 -0
  297. package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +148 -0
  298. package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +259 -0
  299. package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +440 -0
  300. package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +944 -0
  301. package/project/.sdk/tm/zig/feature/secrets.zig +854 -0
  302. package/project/.sdk/tm/zig/src/feature/secrets/.gitkeep +0 -0
  303. package/project/.sdk/tm/zig/test/feature/secrets/secrets_test.zig +891 -0
  304. package/project/sdkgen-package.json +1 -1
@@ -0,0 +1,440 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (zig/src/provider.zig)
2
+ // Source: https://github.com/voxgig/sekreto @ 1267ee2e5f49566bc92695bc9eb3a60ef4924998 [tag: sdk-20260908-1556-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ //! What a provider is, what its declarative form looks like, and how a
5
+ //! provider kind becomes a voxgig/plugin definition.
6
+ //!
7
+ //! A provider answers one question: "do you have this secret?" It returns
8
+ //! the value, or null to mean "ask the next one". Nothing else about a
9
+ //! provider is visible to the caller - which is the point: an app reads
10
+ //! `api.token` and never learns whether it came from the environment, a
11
+ //! .env file, HashiCorp Vault, AWS, GCP, Azure or a boru vault.
12
+ //!
13
+ //! Two failure shapes, and they are never interchangeable. A store that
14
+ //! does not hold the secret is a MISS (`.ok = null`) - the chain carries
15
+ //! on. A store that could not answer - bad credentials, unreachable host,
16
+ //! missing configuration - is an ERROR (`.err`): falling through there
17
+ //! would quietly reach for a weaker store.
18
+ //!
19
+ //! `Provider` is a VTABLE, not the tagged union it used to be. The union
20
+ //! named all fourteen kinds, and a core that names every kind links
21
+ //! every kind; the set is open now - four built in here, ten under
22
+ //! `../plugins/`, and any number a calling project makes with
23
+ //! `providerplugin` - so the core holds a pointer and three function
24
+ //! pointers and knows nothing else.
25
+ //!
26
+ //! A port of typescript/src/provider/support.ts, which is canonical.
27
+
28
+ const std = @import("std");
29
+
30
+ const plugin = @import("plugin");
31
+ const sekreto = @import("sekreto.zig");
32
+
33
+ const Allocator = std.mem.Allocator;
34
+ const Answer = sekreto.Answer;
35
+ const Found = sekreto.Found;
36
+ const pv = plugin.value;
37
+ const pt = plugin.types;
38
+
39
+ /// A voxgig/plugin definition: what `Sekreto` builds a provider from.
40
+ pub const Definition = plugin.host.Definition;
41
+ pub const Inst = plugin.host.Inst;
42
+
43
+ /// What the library needs from the process it runs in.
44
+ ///
45
+ /// Passed in rather than reached for, because Zig 0.16 hands both to `main`
46
+ /// and because a library that samples global state cannot be tested. The
47
+ /// environment is read by the `env` provider and by every store that
48
+ /// follows its own ecosystem's convention (AWS_*, GCE_METADATA_HOST); `io`
49
+ /// is what opens sockets, reads files and runs the boru binary.
50
+ pub const Config = struct {
51
+ io: std.Io,
52
+ env: *const std.process.Environ.Map,
53
+ };
54
+
55
+ /// One literal secret, for the `memory` provider. A list rather than a map
56
+ /// because the spec pins the whole map and randomised iteration would make
57
+ /// that comparison depend on the run.
58
+ pub const KeyValue = struct {
59
+ key: []const u8,
60
+ value: []const u8,
61
+ };
62
+
63
+ /// Logging in for a token instead of being handed one.
64
+ pub const Auth = struct {
65
+ /// `kubernetes` or `approle`.
66
+ method: []const u8 = "",
67
+ /// The auth mount, defaulting to the method name.
68
+ mount: []const u8 = "",
69
+ /// kubernetes: the Vault role to log in as.
70
+ role: []const u8 = "",
71
+ /// kubernetes: the service-account JWT itself (tests).
72
+ jwt: ?[]const u8 = null,
73
+ /// kubernetes: where the JWT lives; the conventional pod path by default.
74
+ jwtfile: []const u8 = "",
75
+ /// approle: the role and secret ids.
76
+ roleid: []const u8 = "",
77
+ secretid: []const u8 = "",
78
+ };
79
+
80
+ /// The declarative form of a provider, as used in config and in the shared
81
+ /// spec: a `kind` naming a built-in or a plugin, plus that kind's own
82
+ /// configuration.
83
+ ///
84
+ /// Every string defaults to empty rather than being optional: "not
85
+ /// configured" and "configured empty" mean the same thing for every field
86
+ /// here, and one representation is one fewer thing to get wrong.
87
+ ///
88
+ /// A spec reaches its plugin as the instance's OPTIONS, the voxgig/plugin
89
+ /// dynamic value: `Sekreto.init` encodes it with `optionsof` (the field
90
+ /// names are the keys, as they are in every port's spec) and the
91
+ /// definition's `define` reads it back with `specof`. Every string is
92
+ /// COPIED into the plugin arena on the way in, so the caller's strings
93
+ /// need not outlive the chain.
94
+ pub const ProviderSpec = struct {
95
+ kind: []const u8,
96
+ /// The store name `Sekreto.getfrom` addresses. Defaults to `kind`.
97
+ name: []const u8 = "",
98
+ prefix: []const u8 = "",
99
+ /// dotenv: the file to read. secretspec: the declaration file.
100
+ file: []const u8 = "",
101
+ /// memory: literal values, keyed like environment variables.
102
+ values: []const KeyValue = &.{},
103
+ /// file: the directory of one-secret-per-file entries.
104
+ dir: []const u8 = "",
105
+ /// hashicorp / boru (wire) / gcp / 1password / doppler / infisical: the
106
+ /// base URL.
107
+ addr: []const u8 = "",
108
+ /// hashicorp / boru (wire) / gcp / azure / 1password / doppler /
109
+ /// infisical: the access token.
110
+ token: []const u8 = "",
111
+ /// hashicorp / boru (wire): the KV mount (default `secret`).
112
+ mount: []const u8 = "",
113
+ /// hashicorp: KV engine version, 1 or 2 (default 2). Zero means unset.
114
+ kv: i64 = 0,
115
+ /// hashicorp: Vault Enterprise namespace (X-Vault-Namespace).
116
+ vaultnamespace: []const u8 = "",
117
+ /// hashicorp: log in for a token instead of being handed one.
118
+ auth: ?Auth = null,
119
+ /// boru / secretspec: the executable to run (default: the kind's own
120
+ /// name).
121
+ command: []const u8 = "",
122
+ /// secretspec: the profile to read (`--profile`).
123
+ profile: []const u8 = "",
124
+ /// secretspec: which of ITS backends to read from (`--provider`), e.g.
125
+ /// `keyring` or `dotenv://.env`. Named `backend` here because
126
+ /// `provider` already means a sekreto provider.
127
+ backend: []const u8 = "",
128
+ /// secretspec: the audit reason recorded for the read (`--reason`).
129
+ /// SecretSpec refuses to read without one.
130
+ reason: []const u8 = "",
131
+ /// boru: the namespace qualifying the alias.
132
+ namespace: []const u8 = "",
133
+ /// boru: the vault home, passed as BORU_HOME.
134
+ home: []const u8 = "",
135
+ /// aws: region and credentials; the standard AWS_* environment
136
+ /// variables fill whichever are not given.
137
+ region: []const u8 = "",
138
+ keyid: []const u8 = "",
139
+ secret: []const u8 = "",
140
+ session: []const u8 = "",
141
+ /// gcp / doppler / infisical: the project (GCP project id, Doppler
142
+ /// project slug, Infisical workspace id).
143
+ project: []const u8 = "",
144
+ /// azure: the Key Vault name or full URL. 1password: the vault name or id.
145
+ vault: []const u8 = "",
146
+ /// azure: client-credential login. infisical: universal-auth login
147
+ /// (tenant is Azure-only).
148
+ tenant: []const u8 = "",
149
+ clientid: []const u8 = "",
150
+ clientsecret: []const u8 = "",
151
+ /// azure: where to log in / where IMDS answers. gcp: where the metadata
152
+ /// server answers.
153
+ loginaddr: []const u8 = "",
154
+ imdsaddr: []const u8 = "",
155
+ metadataaddr: []const u8 = "",
156
+ /// azure: the Key Vault API version (default 7.4).
157
+ apiversion: []const u8 = "",
158
+ /// doppler: the config slug (with `project`).
159
+ config: []const u8 = "",
160
+ /// infisical: the environment slug and secret path.
161
+ environment: []const u8 = "",
162
+ path: []const u8 = "",
163
+ };
164
+
165
+ // ---- the provider ----------------------------------------------------
166
+
167
+ /// A source of secrets: a pointer and three function pointers.
168
+ ///
169
+ /// `lookup`'s `alloc` is scratch for one lookup; what a provider keeps
170
+ /// between lookups it allocates from its own allocator instead. `describe`
171
+ /// ALWAYS allocates, even for a kind whose description is a constant: a
172
+ /// caller that sometimes gets a literal and sometimes an allocation cannot
173
+ /// free either one safely. `deinit` releases what the provider holds AND
174
+ /// the provider itself.
175
+ pub const Provider = struct {
176
+ ptr: *anyopaque,
177
+ vtable: *const VTable,
178
+
179
+ pub const VTable = struct {
180
+ lookup: *const fn (*anyopaque, Allocator, []const u8) Allocator.Error!Found,
181
+ describe: *const fn (*anyopaque, Allocator) Allocator.Error![]const u8,
182
+ deinit: *const fn (*anyopaque, Allocator) void,
183
+ };
184
+
185
+ /// The value, null if this provider does not have it, or the message of
186
+ /// a failure.
187
+ pub fn lookup(self: Provider, alloc: Allocator, name: []const u8) Allocator.Error!Found {
188
+ return self.vtable.lookup(self.ptr, alloc, name);
189
+ }
190
+
191
+ /// A short description, shown by `Sekreto.sources()`. It must lead with
192
+ /// the kind: everything before the first `:` is the default store name.
193
+ pub fn describe(self: Provider, alloc: Allocator) Allocator.Error![]const u8 {
194
+ return self.vtable.describe(self.ptr, alloc);
195
+ }
196
+
197
+ pub fn deinit(self: Provider, alloc: Allocator) void {
198
+ self.vtable.deinit(self.ptr, alloc);
199
+ }
200
+ };
201
+
202
+ /// A concrete provider - any struct with `lookup`, `describe` and `deinit`
203
+ /// methods of the shapes above - behind the vtable. The struct is expected
204
+ /// to have been allocated with the allocator its `deinit` will be handed,
205
+ /// which is what `provide` guarantees.
206
+ pub fn adapt(comptime T: type, ptr: *T) Provider {
207
+ const Gen = struct {
208
+ fn lookup(p: *anyopaque, alloc: Allocator, name: []const u8) Allocator.Error!Found {
209
+ const self: *T = @ptrCast(@alignCast(p));
210
+ return self.lookup(alloc, name);
211
+ }
212
+
213
+ fn describe(p: *anyopaque, alloc: Allocator) Allocator.Error![]const u8 {
214
+ const self: *T = @ptrCast(@alignCast(p));
215
+ return self.describe(alloc);
216
+ }
217
+
218
+ fn deinit(p: *anyopaque, alloc: Allocator) void {
219
+ const self: *T = @ptrCast(@alignCast(p));
220
+ self.deinit(alloc);
221
+ alloc.destroy(self);
222
+ }
223
+
224
+ const vtable = Provider.VTable{
225
+ .lookup = lookup,
226
+ .describe = describe,
227
+ .deinit = deinit,
228
+ };
229
+ };
230
+
231
+ return .{ .ptr = ptr, .vtable = &Gen.vtable };
232
+ }
233
+
234
+ /// Allocate a concrete provider and present it as a `Provider`. Every
235
+ /// built-in and every shipped plugin builds its provider this way.
236
+ pub fn provide(alloc: Allocator, comptime T: type, value: T) Allocator.Error!Provider {
237
+ const ptr = try alloc.create(T);
238
+ ptr.* = value;
239
+ return adapt(T, ptr);
240
+ }
241
+
242
+ // ---- the spec as plugin options --------------------------------------
243
+
244
+ /// The export key under which a provider definition publishes the
245
+ /// provider it built. `Sekreto` reads `<ref>/provider` off the host.
246
+ pub const PROVIDER_EXPORT = "provider";
247
+
248
+ /// The voxgig/plugin error code a sekreto failure travels under when it is
249
+ /// raised inside a definition's `define`.
250
+ ///
251
+ /// plugin wraps a code-less error raised by a callback as
252
+ /// `plugin_define_failed`, and keeps an error that already carries a
253
+ /// code. A provider that refuses its own configuration - `kv: 3`, a
254
+ /// missing project - answers with a message, and that message is pinned
255
+ /// by the spec byte for byte, so it must come back out of the host
256
+ /// exactly as it went in. `providerplugin` gives it this code on the way
257
+ /// in; `Sekreto` turns it back into the same message on the way out.
258
+ pub const ERROR_CODE = "sekreto_error";
259
+
260
+ fn setstr(m: *pv.Value, key: []const u8, text: []const u8) void {
261
+ if (0 != text.len) {
262
+ pv.set(m, key, pv.vstr(pv.dupe(text)));
263
+ }
264
+ }
265
+
266
+ /// A spec as the options map a plugin instance carries: one key per
267
+ /// field that is set, named as the field is - the spec's own key names in
268
+ /// every port. Strings are copied into the plugin arena.
269
+ pub fn optionsof(spec: ProviderSpec) *pv.Value {
270
+ const out = pv.vmap();
271
+
272
+ inline for (std.meta.fields(ProviderSpec)) |f| {
273
+ const value = @field(spec, f.name);
274
+
275
+ if ([]const u8 == f.type) {
276
+ setstr(out, f.name, value);
277
+ } else if (i64 == f.type) {
278
+ if (0 != value) {
279
+ pv.set(out, f.name, pv.vnum(@floatFromInt(value)));
280
+ }
281
+ } else if (?Auth == f.type) {
282
+ if (value) |auth| {
283
+ const m = pv.vmap();
284
+ setstr(m, "method", auth.method);
285
+ setstr(m, "mount", auth.mount);
286
+ setstr(m, "role", auth.role);
287
+ if (auth.jwt) |jwt| {
288
+ pv.set(m, "jwt", pv.vstr(pv.dupe(jwt)));
289
+ }
290
+ setstr(m, "jwtfile", auth.jwtfile);
291
+ setstr(m, "roleid", auth.roleid);
292
+ setstr(m, "secretid", auth.secretid);
293
+ pv.set(out, f.name, m);
294
+ }
295
+ } else if ([]const KeyValue == f.type) {
296
+ if (0 != value.len) {
297
+ const m = pv.vmap();
298
+ for (value) |pair| {
299
+ pv.set(m, pair.key, pv.vstr(pv.dupe(pair.value)));
300
+ }
301
+ pv.set(out, f.name, m);
302
+ }
303
+ } else {
304
+ @compileError("ProviderSpec field with no options encoding: " ++ f.name);
305
+ }
306
+ }
307
+
308
+ return out;
309
+ }
310
+
311
+ /// The spec a plugin instance's options describe: the inverse of
312
+ /// `optionsof`. The strings are the options' own, which live in the
313
+ /// plugin arena for the life of the process.
314
+ pub fn specof(options: ?*const pv.Value) ProviderSpec {
315
+ var spec = ProviderSpec{ .kind = "" };
316
+
317
+ inline for (std.meta.fields(ProviderSpec)) |f| {
318
+ const given = pv.get(options, f.name);
319
+
320
+ if ([]const u8 == f.type) {
321
+ @field(spec, f.name) = pv.asStr(given);
322
+ } else if (i64 == f.type) {
323
+ if (pv.isNum(given)) {
324
+ @field(spec, f.name) = @intFromFloat(pv.asNum(given));
325
+ }
326
+ } else if (?Auth == f.type) {
327
+ if (pv.isMap(given)) {
328
+ const jwt = pv.get(given, "jwt");
329
+ @field(spec, f.name) = .{
330
+ .method = pv.asStr(pv.get(given, "method")),
331
+ .mount = pv.asStr(pv.get(given, "mount")),
332
+ .role = pv.asStr(pv.get(given, "role")),
333
+ .jwt = if (pv.isStr(jwt)) pv.asStr(jwt) else null,
334
+ .jwtfile = pv.asStr(pv.get(given, "jwtfile")),
335
+ .roleid = pv.asStr(pv.get(given, "roleid")),
336
+ .secretid = pv.asStr(pv.get(given, "secretid")),
337
+ };
338
+ }
339
+ } else if ([]const KeyValue == f.type) {
340
+ if (pv.isMap(given)) {
341
+ const keys = pv.keys(given);
342
+ const pairs = pv.arena().alloc(KeyValue, keys.len) catch @panic("sekreto: out of memory");
343
+ for (keys, 0..) |key, at| {
344
+ pairs[at] = .{ .key = key, .value = pv.asStr(pv.get(given, key)) };
345
+ }
346
+ @field(spec, f.name) = pairs;
347
+ }
348
+ } else {
349
+ @compileError("ProviderSpec field with no options encoding: " ++ f.name);
350
+ }
351
+ }
352
+
353
+ return spec;
354
+ }
355
+
356
+ // ---- providers as voxgig/plugin definitions --------------------------
357
+
358
+ /// What a definition's `define` needs that the plugin host cannot carry:
359
+ /// the allocator, the process config, and somewhere to put the provider
360
+ /// it built. voxgig/plugin's values are numbers and strings, not
361
+ /// pointers, so `define` exports the INDEX of its provider in `made` and
362
+ /// `Sekreto.init` reads it back through the host's exports.
363
+ ///
364
+ /// MODULE-GLOBAL, for the reason voxgig/plugin's own zig port keeps its
365
+ /// error slot global: a lifecycle callback is a bare function pointer
366
+ /// with no context, so what it needs travels beside the call. It is set
367
+ /// for the duration of `Sekreto.init` and null otherwise; two threads
368
+ /// constructing chains at once would race it, and this port - like the
369
+ /// plugin port under it - does not claim to support that.
370
+ pub const Building = struct {
371
+ alloc: Allocator,
372
+ config: Config,
373
+ made: std.ArrayList(Provider) = .empty,
374
+ /// Allocation failure inside a callback, which cannot cross the
375
+ /// plugin boundary as a zig error and is raised again on the far side.
376
+ oom: bool = false,
377
+ };
378
+
379
+ pub var building: ?*Building = null;
380
+
381
+ /// How a kind builds its provider: from the allocator, the process config
382
+ /// and the spec. A refusal is a returned message, never a zig error.
383
+ pub const MakeFn = *const fn (Allocator, Config, ProviderSpec) Allocator.Error!Answer(Provider);
384
+
385
+ /// A provider kind, as a voxgig/plugin definition.
386
+ ///
387
+ /// This is the whole bridge between the two libraries. The definition's
388
+ /// `name` is the `kind` a ProviderSpec names; its `define` reads the spec
389
+ /// off the instance's options, builds the provider with `make`, and
390
+ /// exports it. Nothing runs at `activate`: a provider opens nothing until
391
+ /// its first lookup, so there is nothing to capture - a provider that does
392
+ /// hold a resource acquires it there and lets the instance scope unwind
393
+ /// it.
394
+ ///
395
+ /// Every built-in and every plugin is made this way, so a custom provider
396
+ /// kind is one call, at comptime:
397
+ ///
398
+ /// pub const mystore = sekreto.providerplugin("mystore", make);
399
+ ///
400
+ /// where `make` returns `sekreto.provide(alloc, MyStore, .{ ... })` or the
401
+ /// message of its refusal.
402
+ pub fn providerplugin(comptime kind: []const u8, comptime makefn: MakeFn) Definition {
403
+ const Gen = struct {
404
+ fn define(inst: *Inst) pt.Err!void {
405
+ const b = building orelse {
406
+ return pt.fail("plugin_bad_state", "sekreto: a provider was built outside Sekreto.init", null);
407
+ };
408
+
409
+ const spec = specof(inst.options);
410
+
411
+ const made = makefn(b.alloc, b.config, spec) catch {
412
+ b.oom = true;
413
+ return pt.fail(ERROR_CODE, "sekreto: out of memory", null);
414
+ };
415
+
416
+ switch (made) {
417
+ .err => |message| {
418
+ // The message is the caller's allocation; the host keeps
419
+ // its own copy, and so does the `cause` that comes back
420
+ // out byte for byte.
421
+ defer b.alloc.free(message);
422
+ const details = pv.vmap();
423
+ pv.set(details, "ref", pv.vstr(inst.ref));
424
+ pv.set(details, "cause", pv.vstr(pv.dupe(message)));
425
+ return pt.fail(ERROR_CODE, message, details);
426
+ },
427
+ .ok => |provider| {
428
+ b.made.append(b.alloc, provider) catch {
429
+ provider.deinit(b.alloc);
430
+ b.oom = true;
431
+ return pt.fail(ERROR_CODE, "sekreto: out of memory", null);
432
+ };
433
+ plugin.host.exportvalue(inst, PROVIDER_EXPORT, pv.vnum(@floatFromInt(b.made.items.len - 1)));
434
+ },
435
+ }
436
+ }
437
+ };
438
+
439
+ return .{ .name = kind, .define = Gen.define };
440
+ }