@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,387 @@
1
+ (* VENDORED: @voxgig/plugin sdk-20260908-1556-0 (ocaml/src/value.ml) *)
2
+ (* Source: https://github.com/voxgig/plugin @ 48392f5e2b6d1434ee9b1a4a9a11f4480aaeb46a [tag: sdk-20260908-1556-0] *)
3
+ (* License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream. *)
4
+ (* The dynamic value, and the JSON reader that fills it (§16).
5
+
6
+ NO DEPENDENCIES, not even a JSON library: §16 permits exactly one
7
+ runtime dependency (voxgig/struct) and OCaml has no port of it, so
8
+ the corpus JSON is parsed here. A package graph is also a supply
9
+ chain. This port builds with `ocamlfind` absent and links only
10
+ `str.cmxa`, which ships with the compiler.
11
+
12
+ A MUTABLE VALUE, WHICH IS NOT THE OBVIOUS CHOICE IN ML. The corpus
13
+ pins behaviour that depends on aliasing: §9.4's `refill` empties an
14
+ options map and refills it *in place* precisely so a definition's
15
+ callbacks, which closed over that map at `define`, read the new
16
+ values. An immutable map would make `refill` a rebinding the
17
+ callbacks never see, and `apply/idempotent` would fail. So maps and
18
+ lists are mutable, and the persistence ML would prefer is spent
19
+ where it belongs: in `clone`.
20
+
21
+ A MAP PRESERVES INSERTION ORDER AND SORTS ON DEMAND. §4 rule 4 makes
22
+ order observable in several places (`keys` is sorted, `pos` is the
23
+ sorted-ref index), so both orders have to be available and the code
24
+ has to say which it means at each use. *)
25
+
26
+ type t =
27
+ | Null
28
+ | Bool of bool
29
+ | Num of float
30
+ | Str of string
31
+ | List of t list ref
32
+ | Map of (string * t) list ref
33
+
34
+ (* NONE means "nothing"; SOME NULL means "JSON null". They are
35
+ different answers and several places need both: a `bail` binding
36
+ declining is not one answering null, and a missing export is not an
37
+ export of null. *)
38
+ type opt = t option
39
+
40
+ let vnull = Null
41
+ let vbool b = Bool b
42
+ let vnum n = Num n
43
+ let vstr s = Str s
44
+ let vlist () = List (ref [])
45
+ let vmap () = Map (ref [])
46
+
47
+ let oflist items = List (ref items)
48
+
49
+ let is_null = function Null -> true | _ -> false
50
+ let is_bool = function Bool _ -> true | _ -> false
51
+ let is_num = function Num _ -> true | _ -> false
52
+ let is_str = function Str _ -> true | _ -> false
53
+ let is_list = function List _ -> true | _ -> false
54
+ let is_map = function Map _ -> true | _ -> false
55
+
56
+ (* `get` answers Null for a missing key AND for a key holding JSON
57
+ null; `has` distinguishes them, which is what §9.1's "an authored
58
+ null is not an absent key" needs. *)
59
+ let get v key =
60
+ match v with
61
+ | Map m -> (try List.assoc key !m with Not_found -> Null)
62
+ | _ -> Null
63
+
64
+ let has v key =
65
+ match v with Map m -> List.mem_assoc key !m | _ -> false
66
+
67
+ let set v key value =
68
+ match v with
69
+ | Map m ->
70
+ if List.mem_assoc key !m then
71
+ m := List.map (fun (k, old) -> if k = key then (k, value) else (k, old)) !m
72
+ else m := !m @ [ (key, value) ]
73
+ | _ -> ()
74
+
75
+ let del v key =
76
+ match v with Map m -> m := List.remove_assoc key !m | _ -> ()
77
+
78
+ let at v i =
79
+ match v with
80
+ | List l -> (try List.nth !l i with _ -> Null)
81
+ | _ -> Null
82
+
83
+ let push v item = match v with List l -> l := !l @ [ item ] | _ -> ()
84
+
85
+ let len = function
86
+ | List l -> List.length !l
87
+ | Map m -> List.length !m
88
+ | _ -> 0
89
+
90
+ let items = function List l -> !l | _ -> []
91
+
92
+ let as_str = function Str s -> s | _ -> ""
93
+ let as_num = function Num n -> n | _ -> 0.0
94
+ let as_bool = function Bool b -> b | _ -> false
95
+
96
+ (* Keys in INSERTION order. *)
97
+ let keys = function Map m -> List.map fst !m | _ -> []
98
+
99
+ (* Keys SORTED by byte order — §4 rule 4's deterministic walk.
100
+ `String.compare` is byte-wise, not locale-aware, which is what every
101
+ other port's sort does. *)
102
+ let sortedkeys v = List.sort compare (keys v)
103
+
104
+ (* §4 rule 4: truthiness is JSON's. *)
105
+ let truthy = function
106
+ | Null -> false
107
+ | Bool b -> b
108
+ | Num n -> 0.0 <> n
109
+ | Str s -> "" <> s
110
+ | _ -> true
111
+
112
+ (* Deep equality INCLUDING JSON type, which is the half that matters:
113
+ half the ports are written in languages whose `==` says `true == 1`,
114
+ and `capability/match` exists to catch exactly that. OCaml's
115
+ structural `=` would answer this correctly for these constructors,
116
+ but it is written out because it must not silently start comparing
117
+ the `ref` cells by identity if the representation changes. *)
118
+ let rec same a b =
119
+ match (a, b) with
120
+ | Null, Null -> true
121
+ | Bool x, Bool y -> x = y
122
+ | Num x, Num y -> x = y
123
+ | Str x, Str y -> x = y
124
+ | List x, List y ->
125
+ List.length !x = List.length !y && List.for_all2 same !x !y
126
+ | Map x, Map y ->
127
+ List.length !x = List.length !y
128
+ && List.for_all
129
+ (fun (k, v) -> List.mem_assoc k !y && same v (List.assoc k !y))
130
+ !x
131
+ | _ -> false
132
+
133
+ let rec clone = function
134
+ | List l -> List (ref (List.map clone !l))
135
+ | Map m -> Map (ref (List.map (fun (k, v) -> (k, clone v)) !m))
136
+ | v -> v
137
+
138
+ (* --- json ----------------------------------------------------------- *)
139
+
140
+ (* An integral float renders as an integer: the corpus's expected values
141
+ are written `1`, not `1.0`, and a port that emits the latter fails
142
+ every comparison for a reason that has nothing to do with the
143
+ behaviour under test. *)
144
+ let numstr n =
145
+ if Float.is_integer n && Float.abs n < 1e18 then
146
+ Printf.sprintf "%.0f" n
147
+ else
148
+ let s = Printf.sprintf "%.17g" n in
149
+ s
150
+
151
+ let escape buf s =
152
+ Buffer.add_char buf '"';
153
+ String.iter
154
+ (fun c ->
155
+ match c with
156
+ | '"' -> Buffer.add_string buf "\\\""
157
+ | '\\' -> Buffer.add_string buf "\\\\"
158
+ | '\n' -> Buffer.add_string buf "\\n"
159
+ | '\r' -> Buffer.add_string buf "\\r"
160
+ | '\t' -> Buffer.add_string buf "\\t"
161
+ | '\b' -> Buffer.add_string buf "\\b"
162
+ | '\012' -> Buffer.add_string buf "\\f"
163
+ | c when Char.code c < 0x20 ->
164
+ Buffer.add_string buf (Printf.sprintf "\\u%04x" (Char.code c))
165
+ | c -> Buffer.add_char buf c)
166
+ s;
167
+ Buffer.add_char buf '"'
168
+
169
+ let rec render buf = function
170
+ | Null -> Buffer.add_string buf "null"
171
+ | Bool true -> Buffer.add_string buf "true"
172
+ | Bool false -> Buffer.add_string buf "false"
173
+ | Num n -> Buffer.add_string buf (numstr n)
174
+ | Str s -> escape buf s
175
+ | List l ->
176
+ Buffer.add_char buf '[';
177
+ List.iteri
178
+ (fun i v ->
179
+ if 0 < i then Buffer.add_char buf ',';
180
+ render buf v)
181
+ !l;
182
+ Buffer.add_char buf ']'
183
+ | Map _ as m ->
184
+ (* SORTED, so two values that are `same` render identically. *)
185
+ Buffer.add_char buf '{';
186
+ List.iteri
187
+ (fun i k ->
188
+ if 0 < i then Buffer.add_char buf ',';
189
+ escape buf k;
190
+ Buffer.add_char buf ':';
191
+ render buf (get m k))
192
+ (sortedkeys m);
193
+ Buffer.add_char buf '}'
194
+
195
+ let json v =
196
+ let buf = Buffer.create 256 in
197
+ render buf v;
198
+ Buffer.contents buf
199
+
200
+ exception Parse_error of string
201
+
202
+ let parse text =
203
+ let n = String.length text in
204
+ let i = ref 0 in
205
+ let fail msg = raise (Parse_error msg) in
206
+ let peek () = if !i < n then Some text.[!i] else None in
207
+ let skip () =
208
+ while
209
+ !i < n
210
+ && (' ' = text.[!i] || '\t' = text.[!i] || '\n' = text.[!i]
211
+ || '\r' = text.[!i])
212
+ do
213
+ incr i
214
+ done
215
+ in
216
+ let lit word =
217
+ let l = String.length word in
218
+ if !i + l <= n && String.sub text !i l = word then (i := !i + l; true)
219
+ else false
220
+ in
221
+ let utf8 buf cp =
222
+ if cp < 0x80 then Buffer.add_char buf (Char.chr cp)
223
+ else if cp < 0x800 then begin
224
+ Buffer.add_char buf (Char.chr (0xC0 lor (cp lsr 6)));
225
+ Buffer.add_char buf (Char.chr (0x80 lor (cp land 0x3F)))
226
+ end
227
+ else if cp < 0x10000 then begin
228
+ Buffer.add_char buf (Char.chr (0xE0 lor (cp lsr 12)));
229
+ Buffer.add_char buf (Char.chr (0x80 lor ((cp lsr 6) land 0x3F)));
230
+ Buffer.add_char buf (Char.chr (0x80 lor (cp land 0x3F)))
231
+ end
232
+ else begin
233
+ Buffer.add_char buf (Char.chr (0xF0 lor (cp lsr 18)));
234
+ Buffer.add_char buf (Char.chr (0x80 lor ((cp lsr 12) land 0x3F)));
235
+ Buffer.add_char buf (Char.chr (0x80 lor ((cp lsr 6) land 0x3F)));
236
+ Buffer.add_char buf (Char.chr (0x80 lor (cp land 0x3F)))
237
+ end
238
+ in
239
+ let hex4 () =
240
+ if !i + 4 > n then fail "bad \\u escape";
241
+ let acc = ref 0 in
242
+ for _ = 1 to 4 do
243
+ let c = text.[!i] in
244
+ let d =
245
+ if '0' <= c && c <= '9' then Char.code c - Char.code '0'
246
+ else if 'a' <= c && c <= 'f' then Char.code c - Char.code 'a' + 10
247
+ else if 'A' <= c && c <= 'F' then Char.code c - Char.code 'A' + 10
248
+ else fail "bad \\u escape"
249
+ in
250
+ acc := (!acc * 16) + d;
251
+ incr i
252
+ done;
253
+ !acc
254
+ in
255
+ let pstring () =
256
+ if !i >= n || '"' <> text.[!i] then fail "expected a string";
257
+ incr i;
258
+ let buf = Buffer.create 16 in
259
+ let fin = ref false in
260
+ while not !fin do
261
+ if !i >= n then fail "unterminated string";
262
+ let c = text.[!i] in
263
+ if '"' = c then (incr i; fin := true)
264
+ else if '\\' <> c then (Buffer.add_char buf c; incr i)
265
+ else begin
266
+ incr i;
267
+ if !i >= n then fail "unterminated escape";
268
+ let e = text.[!i] in
269
+ incr i;
270
+ match e with
271
+ | '"' -> Buffer.add_char buf '"'
272
+ | '\\' -> Buffer.add_char buf '\\'
273
+ | '/' -> Buffer.add_char buf '/'
274
+ | 'n' -> Buffer.add_char buf '\n'
275
+ | 'r' -> Buffer.add_char buf '\r'
276
+ | 't' -> Buffer.add_char buf '\t'
277
+ | 'b' -> Buffer.add_char buf '\b'
278
+ | 'f' -> Buffer.add_char buf '\012'
279
+ | 'u' ->
280
+ let hi = hex4 () in
281
+ let cp =
282
+ if 0xD800 <= hi && hi <= 0xDBFF && !i + 1 < n && '\\' = text.[!i]
283
+ && 'u' = text.[!i + 1]
284
+ then begin
285
+ i := !i + 2;
286
+ let lo = hex4 () in
287
+ 0x10000 + ((hi - 0xD800) lsl 10) + (lo - 0xDC00)
288
+ end
289
+ else hi
290
+ in
291
+ utf8 buf cp
292
+ | _ -> fail "bad escape"
293
+ end
294
+ done;
295
+ Buffer.contents buf
296
+ in
297
+ let rec value () =
298
+ skip ();
299
+ match peek () with
300
+ | None -> fail "unexpected end of input"
301
+ | Some 'n' -> if lit "null" then Null else fail "bad literal"
302
+ | Some 't' -> if lit "true" then Bool true else fail "bad literal"
303
+ | Some 'f' -> if lit "false" then Bool false else fail "bad literal"
304
+ | Some '"' -> Str (pstring ())
305
+ | Some '[' ->
306
+ incr i;
307
+ let out = vlist () in
308
+ skip ();
309
+ if Some ']' = peek () then (incr i; out)
310
+ else begin
311
+ let fin = ref false in
312
+ while not !fin do
313
+ push out (value ());
314
+ skip ();
315
+ match peek () with
316
+ | Some ',' -> incr i
317
+ | Some ']' -> incr i; fin := true
318
+ | _ -> fail "expected , or ] in array"
319
+ done;
320
+ out
321
+ end
322
+ | Some '{' ->
323
+ incr i;
324
+ let out = vmap () in
325
+ skip ();
326
+ if Some '}' = peek () then (incr i; out)
327
+ else begin
328
+ let fin = ref false in
329
+ while not !fin do
330
+ skip ();
331
+ let key = pstring () in
332
+ skip ();
333
+ if Some ':' <> peek () then fail "expected : in object";
334
+ incr i;
335
+ set out key (value ());
336
+ skip ();
337
+ match peek () with
338
+ | Some ',' -> incr i
339
+ | Some '}' -> incr i; fin := true
340
+ | _ -> fail "expected , or } in object"
341
+ done;
342
+ out
343
+ end
344
+ | Some _ ->
345
+ (* JSON's number grammar is STRICT, and 9.5 makes that observable:
346
+ env values parse as JSON falling back to string, so anything
347
+ this reader accepts loosely silently becomes a number where the
348
+ canonical keeps the authored string. [1e], [1.], [01], [.5] and
349
+ a bare [-] are all errors to JSON.parse; only [-0] and [1e5]
350
+ are not.
351
+
352
+ number = [ '-' ] int [ frac ] [ exp ]
353
+ int = '0' | digit1-9 *digit
354
+ frac = '.' 1*digit
355
+ exp = ('e'|'E') [ '+' | '-' ] 1*digit *)
356
+ let start = !i in
357
+ let digit () = !i < n && '0' <= text.[!i] && text.[!i] <= '9' in
358
+ if Some '-' = peek () then incr i;
359
+ if not (digit ()) then fail "bad number";
360
+ if '0' = text.[!i] then incr i
361
+ else while digit () do incr i done;
362
+ if !i < n && '.' = text.[!i] then begin
363
+ incr i;
364
+ if not (digit ()) then fail "bad number";
365
+ while digit () do incr i done
366
+ end;
367
+ if !i < n && ('e' = text.[!i] || 'E' = text.[!i]) then begin
368
+ incr i;
369
+ if !i < n && ('+' = text.[!i] || '-' = text.[!i]) then incr i;
370
+ if not (digit ()) then fail "bad number";
371
+ while digit () do incr i done
372
+ end;
373
+ if start = !i then fail "unexpected character";
374
+ (* `float_of_string_opt`, not `float_of_string`: a bare `-` or a
375
+ truncated `1e` reaches here from `env`'s parse-or-string
376
+ fallback, and a JSON reader that RAISES on a bad number rather
377
+ than reporting one turns "this env value is a string" into a
378
+ crash. §9.5 says values parse as JSON falling back to string,
379
+ and the fallback can only catch a Parse_error. *)
380
+ match float_of_string_opt (String.sub text start (!i - start)) with
381
+ | Some f -> Num f
382
+ | None -> fail "bad number"
383
+ in
384
+ let out = value () in
385
+ skip ();
386
+ if !i <> n then fail "trailing content";
387
+ out
@@ -0,0 +1,139 @@
1
+ (* VENDORED: @voxgig/plugin sdk-20260908-1556-0 (ocaml/src/version.ml) *)
2
+ (* Source: https://github.com/voxgig/plugin @ 48392f5e2b6d1434ee9b1a4a9a11f4480aaeb46a [tag: sdk-20260908-1556-0] *)
3
+ (* License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream. *)
4
+ (* Versions and ranges (§11.2).
5
+
6
+ TWO FIELDS AND ONE PREDICATE. A capability declares `version`, a
7
+ concrete version. A requirement declares `range`. A requirement is
8
+ satisfied when the names match, the `match` passes, and the
9
+ provider's `version` falls inside the requirement's `range`. That is
10
+ the whole rule — there is no third field and no second comparison. *)
11
+
12
+ module V = Value
13
+
14
+ (* A COMPONENT IS BOUNDED, like a ref is (§4's 1024).
15
+
16
+ The grammar admits an unbounded digit sequence, and every language
17
+ then disagrees about what happens past its integer range: JavaScript
18
+ silently loses precision, Go's Atoi errors (and a port ignoring that
19
+ gets 0), C overflows, Python is exact. `satisfies("0",
20
+ "9223372036854775808")` was false in the canonical and true in go,
21
+ from the same corpus.
22
+
23
+ 2^31-1 because every port has a signed 32-bit integer, and no real
24
+ version has ever needed more. Found by review of the go port. *)
25
+ let component_max = 2147483647
26
+
27
+ (* `^(\d+)(?:\.(\d+))?(?:\.(\d+))?$`, by hand: three components, digits
28
+ only, no leading sign, no empty component. Written out rather than
29
+ handed to `Str` because the bound above has to be checked per
30
+ component anyway, and a regex that matched then needed re-scanning
31
+ would be the worse of both. Answers None for "not a version", and
32
+ Some (parts, overflow). *)
33
+ let parse3 s =
34
+ let n = String.length s in
35
+ if 0 = n then None
36
+ else begin
37
+ let out = [| 0; 0; 0 |] in
38
+ let overflow = ref false in
39
+ let i = ref 0 in
40
+ let bad = ref false in
41
+ let stopped = ref false in
42
+ let part = ref 0 in
43
+ while (not !bad) && (not !stopped) && !part < 3 do
44
+ if !i >= n then (if 0 < !part then stopped := true else bad := true)
45
+ else begin
46
+ if 0 < !part then
47
+ if '.' <> s.[!i] then bad := true else incr i;
48
+ if not !bad then begin
49
+ let start = !i in
50
+ let acc = ref 0 in
51
+ while !i < n && '0' <= s.[!i] && s.[!i] <= '9' do
52
+ if not !overflow then begin
53
+ acc := (!acc * 10) + (Char.code s.[!i] - Char.code '0');
54
+ if component_max < !acc then overflow := true
55
+ end;
56
+ incr i
57
+ done;
58
+ (* An empty component is not a number. *)
59
+ if start = !i then bad := true else out.(!part) <- !acc;
60
+ incr part
61
+ end
62
+ end
63
+ done;
64
+ if !bad then None
65
+ else if (not !stopped) && !i <> n then None
66
+ else Some (out, !overflow)
67
+ end
68
+
69
+ let triple n =
70
+ V.oflist [ V.vnum (float_of_int n.(0)); V.vnum (float_of_int n.(1));
71
+ V.vnum (float_of_int n.(2)) ]
72
+
73
+ let parserange range =
74
+ if (not (V.is_str range)) || "" = V.as_str range then
75
+ Types.fail "plugin_bad_range"
76
+ ("invalid range: " ^ if V.is_str range then V.as_str range else "")
77
+ ~details:
78
+ (Types.details1 "range" (if V.is_null range then V.vnull else range));
79
+ let s = V.as_str range in
80
+ (* Two forms and no more (§11.2):
81
+ '2.1' >= 2.1.0 and < 3.0.0
82
+ '~2.1' >= 2.1.0 and < 2.2.0 *)
83
+ let tilde = '~' = s.[0] in
84
+ let body = if tilde then String.sub s 1 (String.length s - 1) else s in
85
+ match parse3 body with
86
+ | None -> Types.fail "plugin_bad_range" ("invalid range: " ^ s)
87
+ ~details:(Types.details1 "range" range)
88
+ | Some (_, true) ->
89
+ Types.fail "plugin_bad_range"
90
+ ("version component out of range in " ^ s)
91
+ ~details:(Types.details1 "range" range)
92
+ | Some (n, false) ->
93
+ let lo = [| n.(0); n.(1); n.(2) |] in
94
+ let hi =
95
+ if tilde then [| n.(0); n.(1) + 1; 0 |] else [| n.(0) + 1; 0; 0 |]
96
+ in
97
+ let out = V.vmap () in
98
+ V.set out "lo" (triple lo);
99
+ V.set out "hi" (triple hi);
100
+ out
101
+
102
+ let parseversion version =
103
+ if not (V.is_str version) then
104
+ Types.fail "plugin_bad_range" "invalid version"
105
+ ~details:
106
+ (Types.details1 "version"
107
+ (if V.is_null version then V.vnull else version));
108
+ let s = V.as_str version in
109
+ match parse3 s with
110
+ (* `plugin_bad_range` either way — the same code the rest of the
111
+ grammar's failures use, because "this is not a version I can
112
+ compare" is one fact however it went wrong. *)
113
+ | None -> Types.fail "plugin_bad_range" ("invalid version: " ^ s)
114
+ ~details:(Types.details1 "version" version)
115
+ | Some (_, true) ->
116
+ Types.fail "plugin_bad_range"
117
+ ("version component out of range in " ^ s)
118
+ ~details:(Types.details1 "version" version)
119
+ | Some (n, false) -> triple n
120
+
121
+ let vercmp a b =
122
+ let rec go i =
123
+ if 3 <= i then 0
124
+ else
125
+ let x = V.as_num (V.at a i) and y = V.as_num (V.at b i) in
126
+ if x <> y then if x < y then -1 else 1 else go (i + 1)
127
+ in
128
+ go 0
129
+
130
+ let satisfies version range =
131
+ let v = parseversion version in
132
+ let r = parserange range in
133
+ 0 <= vercmp v (V.get r "lo") && 0 > vercmp v (V.get r "hi")
134
+
135
+ (* `satisfies` for the internal callers that treat an unparseable
136
+ version or range as "does not satisfy" — Capability and Graph, both
137
+ of which run over data the corpus has already admitted. *)
138
+ let satisfiesq version range =
139
+ try satisfies version range with Types.Plugin_error _ -> false
@@ -0,0 +1,171 @@
1
+ (* VENDORED: @voxgig/sekreto sdk-20260908-1556-0 (ocaml/plugins/aws.ml) *)
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
+ (* The `awssecrets` and `awsparams` provider kinds, as voxgig/plugin
5
+ definitions - and the SigV4 request signing they share.
6
+
7
+ THE CORE OF NO PORT IMPORTS A HASH FUNCTION, which is why `Sigv4` and
8
+ the SHA-256 under it are reached only from here. Two kinds in one
9
+ module because they are one credential story and one signer; the
10
+ catalog still sees two definitions with two names.
11
+
12
+ A port of typescript/plugins/aws.ts, which is canonical. *)
13
+
14
+ open Secret
15
+ open Provider
16
+ open Httpjson
17
+
18
+ (* The `YYYYMMDDTHHMMSSZ` timestamp SigV4 wants, for now. The only place in
19
+ this library that samples the clock for a signature; `Sigv4.sigv4` itself
20
+ never does. *)
21
+ let awsnow () : string =
22
+ let t = Unix.gmtime (Unix.gettimeofday ()) in
23
+ Printf.sprintf "%04d%02d%02dT%02d%02d%02dZ" (t.Unix.tm_year + 1900) (t.Unix.tm_mon + 1)
24
+ t.Unix.tm_mday t.Unix.tm_hour t.Unix.tm_min t.Unix.tm_sec
25
+
26
+ type awsauth = { aregion : string; akeyid : string; asecret : string; asession : string }
27
+
28
+ (* Region and credentials, from config first and the standard AWS_*
29
+ environment variables second - those are AWS's own convention, and a pod
30
+ or CI job that has them set should just work. Missing either is an error:
31
+ an AWS store with no credentials could not answer. *)
32
+ let awsauthof (region : string) (keyid : string) (secret : string) (session : string) : awsauth =
33
+ let useregion = firstof [ region; getenv "AWS_REGION"; getenv "AWS_DEFAULT_REGION" ] in
34
+ let usekeyid = firstof [ keyid; getenv "AWS_ACCESS_KEY_ID" ] in
35
+ let usesecret = firstof [ secret; getenv "AWS_SECRET_ACCESS_KEY" ] in
36
+ let usesession = firstof [ session; getenv "AWS_SESSION_TOKEN" ] in
37
+
38
+ if "" = useregion then fail "sekreto: aws: no region (set region or AWS_REGION)";
39
+
40
+ if "" = usekeyid || "" = usesecret then
41
+ fail "sekreto: aws: no credentials (set keyid/secret or AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY)";
42
+
43
+ { aregion = useregion; akeyid = usekeyid; asecret = usesecret; asession = usesession }
44
+
45
+ (* One signed call to an AWS JSON-1.1 API. *)
46
+ let awscall (region : string) (keyid : string) (secret : string) (session : string)
47
+ (addr : string) (service : string) (target : string) (payload : string) : answer =
48
+ let auth = awsauthof region keyid secret session in
49
+
50
+ (* The China partition lives under its own suffix; every other commercial
51
+ region is plain amazonaws.com. *)
52
+ let suffix =
53
+ if String.starts_with ~prefix:"cn-" auth.aregion then ".amazonaws.com.cn" else ".amazonaws.com"
54
+ in
55
+ let useaddr = firstof [ addr; "https://" ^ service ^ "." ^ auth.aregion ^ suffix ] in
56
+ checkaddr useaddr;
57
+
58
+ let url = trimslash useaddr ^ "/" in
59
+
60
+ let extras =
61
+ [ ("content-type", "application/x-amz-json-1.1"); ("x-amz-target", target) ]
62
+ in
63
+
64
+ let signed =
65
+ Sigv4.sigv4
66
+ {
67
+ Sigv4.smethod = "POST";
68
+ url;
69
+ service;
70
+ region = auth.aregion;
71
+ keyid = auth.akeyid;
72
+ secret = auth.asecret;
73
+ datetime = awsnow ();
74
+ headers = extras;
75
+ body = payload;
76
+ session = auth.asession;
77
+ }
78
+ in
79
+
80
+ fetchjson ~headers:(extras @ signed) ~body:payload "POST" url
81
+
82
+ (* Does this AWS error body name one of the not-found types? Those are a
83
+ miss; every other failure is a store that could not answer. AWS sends
84
+ `com.amazonaws...#ResourceNotFoundException`, so this contains rather
85
+ than equals. *)
86
+ let awsmiss (body : Json.t option) (types : string list) : bool =
87
+ match digstr body [ "__type" ] with
88
+ | Some errtype -> List.exists (fun want -> None <> findsub errtype want) types
89
+ | None -> false
90
+
91
+ (* AWS Secrets Manager.
92
+
93
+ `api.token` reads the secret named `api` (the vaultref path, so
94
+ `db.pass.main` reads `db/pass`) and takes the `token` field of its JSON
95
+ SecretString - the AWS idiom of one JSON map per secret. A SecretString
96
+ that is not JSON is the value itself, under the conventional field
97
+ `value`. *)
98
+ let awssecrets_provider (region : string) (keyid : string) (secret : string) (session : string)
99
+ (addr : string) : provider =
100
+ {
101
+ lookup =
102
+ (fun name ->
103
+ let ref_ = vaultref name in
104
+
105
+ let res =
106
+ awscall region keyid secret session addr "secretsmanager"
107
+ "secretsmanager.GetSecretValue"
108
+ (Json.stringify (Json.obj [ ("SecretId", Json.str ref_.path) ]))
109
+ in
110
+
111
+ if 400 = res.status && awsmiss res.jbody [ "ResourceNotFoundException" ] then None
112
+ else if 200 <> res.status then
113
+ fail ("sekreto: aws secretsmanager error: " ^ string_of_int res.status)
114
+ else
115
+ match digstr res.jbody [ "SecretString" ] with
116
+ | None -> (
117
+ (* A binary secret has no fields to address; only the
118
+ conventional `value` field can mean "the bytes themselves". *)
119
+ match digstr res.jbody [ "SecretBinary" ] with
120
+ | Some raw when "value" = ref_.field -> (
121
+ match Http.unbase64 raw with
122
+ | Some bytes -> Some bytes
123
+ | None -> fail "sekreto: aws secretsmanager: undecodable secret")
124
+ | _ -> None)
125
+ | Some text -> (
126
+ match Json.parse text with
127
+ | Some (Json.Obj fields) -> (
128
+ match List.assoc_opt ref_.field fields with
129
+ | Some value -> Json.text value
130
+ | None -> None)
131
+ (* A plain-string secret is the whole value; it has no named
132
+ fields. *)
133
+ | _ -> if "value" = ref_.field then Some text else None));
134
+ (* Config only, never the environment: `describe` feeds the spec's
135
+ sources group, which must answer the same everywhere. *)
136
+ describe = (fun () -> "awssecrets:" ^ region);
137
+ }
138
+
139
+ (* AWS SSM Parameter Store.
140
+
141
+ `db.pass.main` reads the parameter `/db/pass/main` (under an optional
142
+ prefix path), decrypted. Parameter Store carries flat strings, so there
143
+ is no field indirection. *)
144
+ let awsparams_provider (region : string) (keyid : string) (secret : string) (session : string)
145
+ (addr : string) (prefix : string) : provider =
146
+ {
147
+ lookup =
148
+ (fun name ->
149
+ let payload =
150
+ Json.obj
151
+ [ ("Name", Json.str (awsparam ~prefix name)); ("WithDecryption", Json.bool true) ]
152
+ in
153
+
154
+ let res =
155
+ awscall region keyid secret session addr "ssm" "AmazonSSM.GetParameter"
156
+ (Json.stringify payload)
157
+ in
158
+
159
+ if 400 = res.status && awsmiss res.jbody [ "ParameterNotFound" ] then None
160
+ else if 200 <> res.status then fail ("sekreto: aws ssm error: " ^ string_of_int res.status)
161
+ else digtext res.jbody [ "Parameter"; "Value" ]);
162
+ describe = (fun () -> "awsparams:" ^ region ^ prefix);
163
+ }
164
+
165
+ let secretsplugin () : Defs.definition =
166
+ providerplugin "awssecrets" (fun spec ->
167
+ awssecrets_provider spec.region spec.keyid spec.secret spec.session spec.addr)
168
+
169
+ let paramsplugin () : Defs.definition =
170
+ providerplugin "awsparams" (fun spec ->
171
+ awsparams_provider spec.region spec.keyid spec.secret spec.session spec.addr spec.prefix)