@voxgig/sdkgen 4.8.2 → 4.9.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 (407) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/doctor.d.ts +1 -0
  3. package/dist/action/doctor.js +50 -2
  4. package/dist/action/doctor.js.map +1 -1
  5. package/dist/helpers/naming.js +4 -2
  6. package/dist/helpers/naming.js.map +1 -1
  7. package/dist/tsconfig.tsbuildinfo +1 -1
  8. package/model/sdkgen.aon +21 -0
  9. package/package.json +1 -1
  10. package/project/.sdk/model/feature/secrets.aon +120 -18
  11. package/project/.sdk/model/target/c.aon +10 -0
  12. package/project/.sdk/model/target/clojure.aon +13 -0
  13. package/project/.sdk/model/target/cpp.aon +10 -0
  14. package/project/.sdk/model/target/csharp.aon +9 -0
  15. package/project/.sdk/model/target/dart.aon +10 -0
  16. package/project/.sdk/model/target/elixir.aon +9 -0
  17. package/project/.sdk/model/target/go.aon +13 -0
  18. package/project/.sdk/model/target/java.aon +9 -0
  19. package/project/.sdk/model/target/js.aon +7 -0
  20. package/project/.sdk/model/target/kotlin.aon +9 -0
  21. package/project/.sdk/model/target/lean.aon +17 -0
  22. package/project/.sdk/model/target/lua.aon +8 -0
  23. package/project/.sdk/model/target/ocaml.aon +9 -0
  24. package/project/.sdk/model/target/perl.aon +8 -0
  25. package/project/.sdk/model/target/php.aon +8 -0
  26. package/project/.sdk/model/target/py.aon +13 -0
  27. package/project/.sdk/model/target/rb.aon +8 -0
  28. package/project/.sdk/model/target/rust.aon +10 -0
  29. package/project/.sdk/model/target/scala.aon +21 -2
  30. package/project/.sdk/model/target/swift.aon +18 -0
  31. package/project/.sdk/model/target/ts.aon +13 -0
  32. package/project/.sdk/model/target/zig.aon +9 -0
  33. package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
  34. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
  35. package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
  36. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
  37. package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
  38. package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
  39. package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
  40. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
  41. package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
  42. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
  43. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
  44. package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
  45. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
  46. package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
  47. package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
  48. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
  49. package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
  50. package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
  51. package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
  52. package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
  53. package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
  54. package/project/.sdk/src/cmp/zig/Package_zig.ts +15 -11
  55. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +3 -3
  56. package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +3 -3
  57. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +3 -3
  58. package/project/.sdk/src/cmp/zig/utility_zig.ts +50 -1
  59. package/project/.sdk/tm/c/Makefile +38 -3
  60. package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
  61. package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
  62. package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
  63. package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
  64. package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
  65. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
  66. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
  67. package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
  68. package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
  69. package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
  70. package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
  71. package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
  72. package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
  73. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
  74. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
  75. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
  76. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
  77. package/project/.sdk/tm/cpp/Makefile +5 -1
  78. package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
  79. package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
  80. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
  81. package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
  82. package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
  83. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
  84. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
  85. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
  86. package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
  87. package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
  88. package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
  89. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
  90. package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
  91. package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
  92. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
  93. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
  94. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
  95. package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
  96. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
  97. package/project/.sdk/tm/dart/test/omni.dart +520 -0
  98. package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
  99. package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
  100. package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
  101. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
  102. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
  103. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
  104. package/project/.sdk/tm/elixir/Makefile +11 -3
  105. package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
  106. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
  107. package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
  108. package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
  109. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
  110. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
  111. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
  112. package/project/.sdk/tm/go/core/context.go +32 -16
  113. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
  114. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
  115. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
  116. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
  117. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
  118. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
  119. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
  120. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
  121. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
  122. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
  123. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
  124. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
  125. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
  126. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
  127. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
  128. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
  129. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
  130. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
  131. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
  132. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
  133. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
  134. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +208 -0
  135. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
  136. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +150 -0
  137. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
  138. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
  139. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
  140. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +442 -0
  141. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +714 -0
  142. package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
  143. package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
  144. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
  145. package/project/.sdk/tm/go/test/omni/omni.go +902 -0
  146. package/project/.sdk/tm/go/test/omni/util.go +381 -0
  147. package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
  148. package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
  149. package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
  150. package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
  151. package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
  152. package/project/.sdk/tm/go/utility/make_options.go +8 -1
  153. package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
  154. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
  155. package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
  156. package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
  157. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
  158. package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
  159. package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
  160. package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
  161. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
  162. package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
  163. package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
  164. package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
  165. package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
  166. package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
  167. package/project/.sdk/tm/js/test/omni.js +251 -0
  168. package/project/.sdk/tm/js/test/omni.test.js +105 -0
  169. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
  170. package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
  171. package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
  172. package/project/.sdk/tm/js/test/vendor/omni/runner.js +628 -0
  173. package/project/.sdk/tm/js/test/vendor/omni/util.js +229 -0
  174. package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
  175. package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
  176. package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
  177. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
  178. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
  179. package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
  180. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
  181. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
  182. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
  183. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
  184. package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
  185. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
  186. package/project/.sdk/tm/lean/Makefile +12 -5
  187. package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
  188. package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
  189. package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
  190. package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
  191. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
  192. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
  193. package/project/.sdk/tm/lua/test/omni.lua +456 -0
  194. package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
  195. package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
  196. package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
  197. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
  198. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
  199. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
  200. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
  201. package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
  202. package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
  203. package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
  204. package/project/.sdk/tm/ocaml/Makefile +37 -12
  205. package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
  206. package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
  207. package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
  208. package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
  209. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
  210. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
  211. package/project/.sdk/tm/perl/t/omni.pm +647 -0
  212. package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
  213. package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
  214. package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
  215. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
  216. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
  217. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
  218. package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
  219. package/project/.sdk/tm/php/test/Omni.php +691 -0
  220. package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
  221. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
  222. package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
  223. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
  224. package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
  225. package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
  226. package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
  227. package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
  228. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
  229. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
  230. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
  231. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
  232. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
  233. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
  234. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
  235. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
  236. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
  237. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
  238. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
  239. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
  240. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
  241. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
  242. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
  243. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +76 -0
  244. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
  245. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
  246. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
  247. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
  248. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
  249. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
  250. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +151 -0
  251. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
  252. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +90 -0
  253. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
  254. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
  255. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
  256. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
  257. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +475 -0
  258. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
  259. package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
  260. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
  261. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
  262. package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
  263. package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
  264. package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
  265. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
  266. package/project/.sdk/tm/py/test/omni.py +415 -0
  267. package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
  268. package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
  269. package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
  270. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
  271. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +580 -0
  272. package/project/.sdk/tm/py/test/voxgig_omni/util.py +252 -0
  273. package/project/.sdk/tm/rb/test/omni.rb +505 -0
  274. package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
  275. package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
  276. package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
  277. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
  278. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
  279. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
  280. package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
  281. package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
  282. package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
  283. package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
  284. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
  285. package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
  286. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
  287. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
  288. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
  289. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
  290. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
  291. package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
  292. package/project/.sdk/tm/scala/Makefile +16 -6
  293. package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
  294. package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
  295. package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
  296. package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
  297. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
  298. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
  299. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
  300. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
  301. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
  302. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
  303. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
  304. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
  305. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
  306. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
  307. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
  308. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
  309. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
  310. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
  311. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
  312. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
  313. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
  314. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
  315. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
  316. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
  317. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
  318. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
  319. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
  320. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
  321. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
  322. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
  323. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
  324. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
  325. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
  326. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
  327. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
  328. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
  329. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
  330. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
  331. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
  332. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
  333. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
  334. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
  335. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
  336. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
  337. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
  338. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
  339. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
  340. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
  341. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
  342. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
  343. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
  344. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
  345. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
  346. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
  347. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
  348. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
  349. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
  350. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
  351. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
  352. package/project/.sdk/tm/ts/test/omni.ts +104 -32
  353. package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
  354. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
  355. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
  356. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
  357. package/project/.sdk/tm/zig/Makefile +15 -1
  358. package/project/.sdk/tm/zig/build.zig +23 -5
  359. package/project/.sdk/tm/zig/core/helpers.zig +52 -11
  360. package/project/.sdk/tm/zig/core/mem.zig +17 -1
  361. package/project/.sdk/tm/zig/core/utility.zig +23 -19
  362. package/project/.sdk/tm/zig/feature/audit.zig +2 -2
  363. package/project/.sdk/tm/zig/feature/cache.zig +2 -2
  364. package/project/.sdk/tm/zig/feature/debug.zig +5 -5
  365. package/project/.sdk/tm/zig/feature/netsim.zig +2 -2
  366. package/project/.sdk/tm/zig/feature/paging.zig +2 -2
  367. package/project/.sdk/tm/zig/feature/proxy.zig +15 -8
  368. package/project/.sdk/tm/zig/feature/streaming.zig +5 -5
  369. package/project/.sdk/tm/zig/feature/support.zig +3 -3
  370. package/project/.sdk/tm/zig/feature/telemetry.zig +5 -5
  371. package/project/.sdk/tm/zig/feature/test.zig +10 -5
  372. package/project/.sdk/tm/zig/test/fh.zig +10 -10
  373. package/project/.sdk/tm/zig/test/gotcha_test.zig +5 -5
  374. package/project/.sdk/tm/zig/test/omniresolver.zig +515 -0
  375. package/project/.sdk/tm/zig/test/omnismoke_test.zig +284 -0
  376. package/project/.sdk/tm/zig/test/pipeline_test.zig +8 -8
  377. package/project/.sdk/tm/zig/test/primary_utility_test.zig +145 -155
  378. package/project/.sdk/tm/zig/test/struct_corpus.zig +264 -187
  379. package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1314 -0
  380. package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +446 -0
  381. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +7 -4
  382. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +356 -157
  383. package/project/sdkgen-package.json +1 -1
  384. package/src/action/doctor.ts +66 -2
  385. package/src/helpers/naming.ts +4 -2
  386. package/project/.sdk/tm/c/tests/runner.h +0 -274
  387. package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
  388. package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
  389. package/project/.sdk/tm/dart/test/runner.dart +0 -406
  390. package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
  391. package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
  392. package/project/.sdk/tm/go/test/runner_test.go +0 -629
  393. package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
  394. package/project/.sdk/tm/java/test/StructRunner.java +0 -281
  395. package/project/.sdk/tm/js/test/runner.js +0 -387
  396. package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
  397. package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
  398. package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
  399. package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
  400. package/project/.sdk/tm/php/test/StructRunner.php +0 -275
  401. package/project/.sdk/tm/py/test/struct_runner.py +0 -411
  402. package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
  403. package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
  404. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
  405. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
  406. package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
  407. package/project/.sdk/tm/zig/test/struct_runner.zig +0 -464
@@ -0,0 +1,241 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260907-0029-0 (go/plugins/httpjson/httpjson.go)
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // The HTTP half of every plugin that speaks to a store over the wire, in
5
+ // one place and OUTSIDE the core: a chain of built-ins never links this
6
+ // package, which is what keeps `net/http` out of a binary whose secrets
7
+ // come from the environment and a .env file.
8
+ //
9
+ // One JSON round-trip, bounded in time and in size, refusing redirects and
10
+ // ignoring proxies; and the small helpers every store client needs to read
11
+ // a decoded body. A port of typescript/plugins/httpjson.ts.
12
+ package httpjson
13
+
14
+ import (
15
+ "encoding/json"
16
+ "io"
17
+ "net/http"
18
+ "strconv"
19
+ "strings"
20
+ "time"
21
+
22
+ "GOMODULE/feature/secrets/sekreto"
23
+ )
24
+
25
+ // A vault API never legitimately redirects, and a followed redirect would
26
+ // carry X-Vault-Token to the redirect's host (and could downgrade https to
27
+ // http) - checkaddr only validates the configured address, so it cannot
28
+ // see the target. Refuse to follow one.
29
+ var client = &http.Client{
30
+ Timeout: 10 * time.Second,
31
+ CheckRedirect: func(_ *http.Request, _ []*http.Request) error {
32
+ return http.ErrUseLastResponse
33
+ },
34
+ // A secrets client dials the address it was configured with and nowhere
35
+ // else. http.DefaultTransport reads HTTP_PROXY; its resolver exempts
36
+ // loopback, so the local dev vault was never exposed - but the GCP and
37
+ // Azure metadata endpoints are not loopback, and the access tokens they
38
+ // return would have gone through whatever the variable named, which can
39
+ // read them and substitute its own.
40
+ Transport: &http.Transport{Proxy: nil},
41
+ }
42
+
43
+ // maxbody is how much of a response body will be read before the store is
44
+ // treated as having answered incoherently. Ports carry the same bound.
45
+ //
46
+ // Far above anything real - the largest legitimate payload this library
47
+ // fetches is Doppler's whole-config download, measured in kilobytes. A bound
48
+ // is needed because the TIMEOUT is not one: ten seconds on a loopback or
49
+ // datacentre link is gigabytes, and the body is accumulated in memory before
50
+ // it is parsed. This runs on an application's startup path, so the failure is
51
+ // the application never starting.
52
+ const maxbody = 8 * 1024 * 1024
53
+
54
+ // SafeURL is a url with its query string removed, for messages.
55
+ //
56
+ // A query here carries the vault path, the secret name or a filter -
57
+ // `secretPath=/prod/payments/stripe` - which does not belong in a log or a
58
+ // stack trace. Every message in this file goes through it.
59
+ //
60
+ // It exists because the obvious spelling was silently defeated: the messages
61
+ // used to strip the query themselves and then append err.Error(), and a
62
+ // *url.Error prints as `Get "<full url>": <reason>` - putting the query
63
+ // straight back. Stripping in one place, and using it on the wrapped error
64
+ // too, is what makes the intent hold.
65
+ func SafeURL(target string) string {
66
+ return strings.SplitN(target, "?", 2)[0]
67
+ }
68
+
69
+ // Call makes one JSON round-trip, returning the status and decoded
70
+ // body. Network failure is always an error - an unreachable store is a
71
+ // store that could not answer.
72
+ func Call(method string, target string, headers map[string]string, payload string) (int, any, error) {
73
+ var reader io.Reader
74
+ if "" != payload {
75
+ reader = strings.NewReader(payload)
76
+ }
77
+
78
+ request, err := http.NewRequest(method, target, reader)
79
+ if nil != err {
80
+ return 0, nil, sekreto.Fail("sekreto: bad url: " + SafeURL(target))
81
+ }
82
+
83
+ for key, value := range headers {
84
+ request.Header.Set(key, value)
85
+ }
86
+
87
+ response, err := client.Do(request)
88
+ if nil != err {
89
+ // The error is scrubbed too, not just the prefix: *url.Error prints
90
+ // as `Get "<full url>": <reason>`, so appending it verbatim undid
91
+ // the stripping on the line above.
92
+ return 0, nil, sekreto.Fail("sekreto: cannot reach " + SafeURL(target) + ": " +
93
+ strings.ReplaceAll(err.Error(), target, SafeURL(target)))
94
+ }
95
+ defer response.Body.Close()
96
+
97
+ // LimitReader, not ReadAll: an endless body would otherwise be
98
+ // accumulated in memory until the deadline, which on a loopback or
99
+ // datacentre link is gigabytes. One byte over the bound is enough to
100
+ // know it was exceeded.
101
+ text, err := io.ReadAll(io.LimitReader(response.Body, maxbody+1))
102
+ if nil != err {
103
+ return response.StatusCode, nil, sekreto.Fail("sekreto: cannot read " + SafeURL(target))
104
+ }
105
+ if maxbody < int64(len(text)) {
106
+ return response.StatusCode, nil, sekreto.Fail("sekreto: oversized response from " + SafeURL(target))
107
+ }
108
+
109
+ var body any
110
+ if err := json.Unmarshal(text, &body); nil != err {
111
+ // A success status promised JSON; a body that does not parse means
112
+ // the store could not answer coherently, and treating it as a miss
113
+ // would fall through to a weaker store. Error statuses may carry
114
+ // any body - they are decided on status alone.
115
+ if http.StatusOK == response.StatusCode {
116
+ return response.StatusCode, nil, sekreto.Fail("sekreto: malformed response from " +
117
+ SafeURL(target))
118
+ }
119
+ body = nil
120
+ }
121
+
122
+ return response.StatusCode, body, nil
123
+ }
124
+
125
+ // Get GETs a URL, returning the status and decoded body. A 404 is a
126
+ // normal answer here, not a failure: it means the vault has no such secret.
127
+ func Get(target string, headers map[string]string) (int, any, error) {
128
+ return Call(http.MethodGet, target, headers, "")
129
+ }
130
+
131
+ // Dig walks a decoded JSON body by key, answering nil as soon as a step is
132
+ // not an object or the key is absent.
133
+ func Dig(body any, keys ...string) any {
134
+ node := body
135
+
136
+ for _, key := range keys {
137
+ object, is := node.(map[string]any)
138
+ if !is {
139
+ return nil
140
+ }
141
+ node = object[key]
142
+ }
143
+
144
+ return node
145
+ }
146
+
147
+ // DigText is Dig rendered as text, with nil (and so any missing step)
148
+ // answering the empty string.
149
+ func DigText(body any, keys ...string) string {
150
+ value := Dig(body, keys...)
151
+ if nil == value {
152
+ return ""
153
+ }
154
+ return ToString(value)
155
+ }
156
+
157
+ // ToNumber reads a decoded JSON value as a number the way the canonical
158
+ // port's Number() does: numbers pass through, numeric strings parse
159
+ // (Azure's IMDS hands expires_in back as a string), and anything else -
160
+ // missing, malformed - is zero.
161
+ func ToNumber(value any) float64 {
162
+ switch typed := value.(type) {
163
+ case float64:
164
+ return typed
165
+ case string:
166
+ number, err := strconv.ParseFloat(typed, 64)
167
+ if nil != err {
168
+ return 0
169
+ }
170
+ return number
171
+ default:
172
+ return 0
173
+ }
174
+ }
175
+
176
+ // Expiry is the moment a login token should be renewed: shortly before
177
+ // its lifetime (in seconds, from the login response) runs out. A missing
178
+ // or zero lifetime answers the zero time, which means never renew.
179
+ func Expiry(lifetime any) time.Time {
180
+ seconds := ToNumber(lifetime)
181
+ if 0 >= seconds {
182
+ return time.Time{}
183
+ }
184
+
185
+ wait := seconds - 60
186
+ if 1 > wait {
187
+ wait = 1
188
+ }
189
+
190
+ return time.Now().Add(time.Duration(wait * float64(time.Second)))
191
+ }
192
+
193
+ // Due reports whether a renewal moment has arrived; the zero time never
194
+ // arrives.
195
+ func Due(renewat time.Time) bool {
196
+ return !renewat.IsZero() && !time.Now().Before(renewat)
197
+ }
198
+
199
+ // ToString renders a decoded JSON scalar the way the canonical port's
200
+ // String() does.
201
+ func ToString(value any) string {
202
+ switch typed := value.(type) {
203
+ case string:
204
+ return typed
205
+ case bool:
206
+ return strconv.FormatBool(typed)
207
+ case float64:
208
+ return strconv.FormatFloat(typed, 'f', -1, 64)
209
+ default:
210
+ text, err := sekreto.WriteJSON(typed)
211
+ if nil != err {
212
+ return ""
213
+ }
214
+ return string(text)
215
+ }
216
+ }
217
+
218
+ // Escape is RFC 3986 escaping, which is stricter than most standard
219
+ // escapers: everything but the unreserved characters is escaped, with
220
+ // uppercase hex - `!`, `'`, `(`, `)` and `*` included. It is what AWS
221
+ // signing wants, and what the canonical port's encodeURIComponent-built
222
+ // query strings decode identically from.
223
+ func Escape(text string) string {
224
+ const hexdigit = "0123456789ABCDEF"
225
+
226
+ var out strings.Builder
227
+
228
+ for _, char := range []byte(text) {
229
+ if 'A' <= char && 'Z' >= char || 'a' <= char && 'z' >= char ||
230
+ '0' <= char && '9' >= char ||
231
+ '-' == char || '_' == char || '.' == char || '~' == char {
232
+ out.WriteByte(char)
233
+ } else {
234
+ out.WriteByte('%')
235
+ out.WriteByte(hexdigit[char>>4])
236
+ out.WriteByte(hexdigit[char&0xf])
237
+ }
238
+ }
239
+
240
+ return out.String()
241
+ }
@@ -0,0 +1,150 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260907-0029-0 (go/plugins/infisical/infisical.go)
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // The infisical plugin: Infisical. Needs HTTPS. A port of
5
+ // typescript/plugins/infisical.ts.
6
+ package infisical
7
+
8
+ import (
9
+ "net/http"
10
+ "strconv"
11
+ "strings"
12
+ "sync"
13
+ "time"
14
+
15
+ "GOMODULE/feature/secrets/plugins/httpjson"
16
+ "GOMODULE/feature/secrets/sekreto"
17
+ )
18
+
19
+ // Provider reads Infisical.
20
+ //
21
+ // api.token reads the secret keyed API_TOKEN (Infisical's own convention
22
+ // is environment-style keys) at a secret path in one environment of a
23
+ // project. Auth is a token, or a universal-auth (machine identity) login
24
+ // with clientid/clientsecret.
25
+ type Provider struct {
26
+ Addr string
27
+ Token string
28
+ ClientID string
29
+ ClientSecret string
30
+ Project string
31
+ Environment string
32
+ Path string
33
+ // A configured token is kept forever; a universal-auth token carries
34
+ // expiresIn and is renewed shortly before it runs out.
35
+ livetoken string
36
+ havetoken bool
37
+ renewat time.Time
38
+ mu sync.Mutex
39
+ }
40
+
41
+ func (provider *Provider) login(addr string) (string, error) {
42
+ if "" != provider.Token {
43
+ return provider.Token, nil
44
+ }
45
+
46
+ if "" == provider.ClientID || "" == provider.ClientSecret {
47
+ return "", sekreto.Fail("sekreto: infisical: no token and no client credentials")
48
+ }
49
+
50
+ payload, _ := sekreto.WriteJSON(struct {
51
+ ClientID string `json:"clientId"`
52
+ ClientSecret string `json:"clientSecret"`
53
+ }{ClientID: provider.ClientID, ClientSecret: provider.ClientSecret})
54
+
55
+ status, body, err := httpjson.Call(http.MethodPost, addr+"/api/v1/auth/universal-auth/login",
56
+ map[string]string{"content-type": "application/json"}, string(payload))
57
+ if nil != err {
58
+ return "", err
59
+ }
60
+
61
+ got := httpjson.DigText(body, "accessToken")
62
+ if http.StatusOK != status || "" == got {
63
+ return "", sekreto.Fail("sekreto: infisical login failed: " + strconv.Itoa(status))
64
+ }
65
+
66
+ provider.renewat = httpjson.Expiry(httpjson.Dig(body, "expiresIn"))
67
+
68
+ return got, nil
69
+ }
70
+
71
+ func (provider *Provider) Lookup(name string) (string, bool, error) {
72
+ // Serialize per-provider access: Lookup reads and refreshes the cached
73
+ // login token, and a secrets client may resolve from several goroutines.
74
+ provider.mu.Lock()
75
+ defer provider.mu.Unlock()
76
+
77
+ addr := provider.Addr
78
+ if "" == addr {
79
+ addr = "https://app.infisical.com"
80
+ }
81
+ addr = strings.TrimSuffix(addr, "/")
82
+ if err := sekreto.CheckAddr(addr); nil != err {
83
+ return "", false, err
84
+ }
85
+
86
+ if "" == provider.Project || "" == provider.Environment {
87
+ return "", false, sekreto.Fail("sekreto: infisical: no project/environment")
88
+ }
89
+
90
+ if !provider.havetoken || httpjson.Due(provider.renewat) {
91
+ token, err := provider.login(addr)
92
+ if nil != err {
93
+ return "", false, err
94
+ }
95
+ provider.livetoken = token
96
+ provider.havetoken = true
97
+ }
98
+
99
+ key, err := sekreto.EnvKey(name, "")
100
+ if nil != err {
101
+ return "", false, err
102
+ }
103
+
104
+ path := provider.Path
105
+ if "" == path {
106
+ path = "/"
107
+ }
108
+ target := addr + "/api/v3/secrets/raw/" + key +
109
+ "?workspaceId=" + httpjson.Escape(provider.Project) +
110
+ "&environment=" + httpjson.Escape(provider.Environment) +
111
+ "&secretPath=" + httpjson.Escape(path)
112
+
113
+ status, body, err := httpjson.Get(target,
114
+ map[string]string{"authorization": "Bearer " + provider.livetoken})
115
+ if nil != err {
116
+ return "", false, err
117
+ }
118
+
119
+ if http.StatusNotFound == status {
120
+ return "", false, nil
121
+ }
122
+
123
+ if http.StatusOK != status {
124
+ return "", false, sekreto.Fail("sekreto: infisical error: " + strconv.Itoa(status))
125
+ }
126
+
127
+ value := httpjson.Dig(body, "secret", "secretValue")
128
+ if nil == value {
129
+ return "", false, nil
130
+ }
131
+
132
+ return httpjson.ToString(value), true, nil
133
+ }
134
+
135
+ func (provider *Provider) Describe() string {
136
+ return "infisical:" + provider.Project + "/" + provider.Environment
137
+ }
138
+
139
+ // Plugin is the `infisical` provider kind, as a voxgig/plugin definition.
140
+ var Plugin = sekreto.ProviderPlugin("infisical", func(spec *sekreto.ProviderSpec) (sekreto.Provider, error) {
141
+ return &Provider{
142
+ Addr: spec.Addr,
143
+ Token: spec.Token,
144
+ ClientID: spec.ClientID,
145
+ ClientSecret: spec.ClientSecret,
146
+ Project: spec.Project,
147
+ Environment: spec.Environment,
148
+ Path: spec.Path,
149
+ }, nil
150
+ })
@@ -0,0 +1,152 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260907-0029-0 (go/plugins/onepassword/onepassword.go)
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // The onepassword plugin: 1Password, through a Connect server. Needs
5
+ // HTTPS. A port of typescript/plugins/onepassword.ts.
6
+ package onepassword
7
+
8
+ import (
9
+ "net/http"
10
+ "strconv"
11
+ "strings"
12
+ "sync"
13
+
14
+ "GOMODULE/feature/secrets/plugins/httpjson"
15
+ "GOMODULE/feature/secrets/sekreto"
16
+ )
17
+
18
+ // Provider reads 1Password, through a Connect server.
19
+ //
20
+ // The item titled api.token (titles keep their dots), in the named vault.
21
+ // The value is the field with purpose PASSWORD, or the field labelled
22
+ // `value`. A vault that cannot be found is an error - config names it, so
23
+ // its absence is a broken store, not a missing secret.
24
+ type Provider struct {
25
+ Addr string
26
+ Token string
27
+ Vault string
28
+ // Guards the memoised state below: a Sekreto may resolve from several
29
+ // goroutines, and a racy map read is either a crash or a zero value - a
30
+ // MISS where the store does hold the secret, which falls through to a
31
+ // weaker store.
32
+ mu sync.Mutex
33
+ vaultid string
34
+ havevault bool
35
+ }
36
+
37
+ func (provider *Provider) auth() map[string]string {
38
+ return map[string]string{"authorization": "Bearer " + provider.Token}
39
+ }
40
+
41
+ func (provider *Provider) resolvevault(addr string) (string, error) {
42
+ want := provider.Vault
43
+ if "" == want {
44
+ return "", sekreto.Fail("sekreto: onepassword: no vault")
45
+ }
46
+
47
+ status, body, err := httpjson.Get(addr+"/v1/vaults", provider.auth())
48
+ if nil != err {
49
+ return "", err
50
+ }
51
+
52
+ list, is := body.([]any)
53
+ if http.StatusOK != status || !is {
54
+ return "", sekreto.Fail("sekreto: onepassword error: " + strconv.Itoa(status) + ": listing vaults")
55
+ }
56
+
57
+ for _, entry := range list {
58
+ if want == httpjson.DigText(entry, "id") || want == httpjson.DigText(entry, "name") {
59
+ return httpjson.DigText(entry, "id"), nil
60
+ }
61
+ }
62
+
63
+ return "", sekreto.Fail("sekreto: onepassword: no vault named " + want)
64
+ }
65
+
66
+ func (provider *Provider) Lookup(name string) (string, bool, error) {
67
+ if err := sekreto.CheckName(name); nil != err {
68
+ return "", false, err
69
+ }
70
+
71
+ addr := strings.TrimSuffix(provider.Addr, "/")
72
+ if "" == addr {
73
+ return "", false, sekreto.Fail("sekreto: onepassword: no addr")
74
+ }
75
+ if err := sekreto.CheckAddr(addr); nil != err {
76
+ return "", false, err
77
+ }
78
+
79
+ provider.mu.Lock()
80
+ if !provider.havevault {
81
+ vaultid, err := provider.resolvevault(addr)
82
+ if nil != err {
83
+ provider.mu.Unlock()
84
+ return "", false, err
85
+ }
86
+ provider.vaultid = vaultid
87
+ provider.havevault = true
88
+ }
89
+ vaultid := provider.vaultid
90
+ provider.mu.Unlock()
91
+
92
+ filter := httpjson.Escape(`title eq "` + name + `"`)
93
+ status, body, err := httpjson.Get(
94
+ addr+"/v1/vaults/"+vaultid+"/items?filter="+filter, provider.auth())
95
+ if nil != err {
96
+ return "", false, err
97
+ }
98
+
99
+ found, is := body.([]any)
100
+ if http.StatusOK != status || !is {
101
+ return "", false, sekreto.Fail("sekreto: onepassword error: " + strconv.Itoa(status) +
102
+ ": finding " + name)
103
+ }
104
+
105
+ if 0 == len(found) {
106
+ return "", false, nil
107
+ }
108
+
109
+ itemid := httpjson.DigText(found[0], "id")
110
+ status, body, err = httpjson.Get(
111
+ addr+"/v1/vaults/"+vaultid+"/items/"+itemid, provider.auth())
112
+ if nil != err {
113
+ return "", false, err
114
+ }
115
+
116
+ if http.StatusOK != status {
117
+ return "", false, sekreto.Fail("sekreto: onepassword error: " + strconv.Itoa(status) +
118
+ ": reading " + name)
119
+ }
120
+
121
+ fields, _ := httpjson.Dig(body, "fields").([]any)
122
+
123
+ for _, field := range fields {
124
+ if "PASSWORD" == httpjson.DigText(field, "purpose") {
125
+ value := httpjson.Dig(field, "value")
126
+ if nil == value {
127
+ return "", false, nil
128
+ }
129
+ return httpjson.ToString(value), true, nil
130
+ }
131
+ }
132
+ for _, field := range fields {
133
+ if "value" == httpjson.DigText(field, "label") {
134
+ value := httpjson.Dig(field, "value")
135
+ if nil == value {
136
+ return "", false, nil
137
+ }
138
+ return httpjson.ToString(value), true, nil
139
+ }
140
+ }
141
+
142
+ return "", false, nil
143
+ }
144
+
145
+ func (provider *Provider) Describe() string {
146
+ return "onepassword:" + provider.Vault
147
+ }
148
+
149
+ // Plugin is the `onepassword` provider kind, as a voxgig/plugin definition.
150
+ var Plugin = sekreto.ProviderPlugin("onepassword", func(spec *sekreto.ProviderSpec) (sekreto.Provider, error) {
151
+ return &Provider{Addr: spec.Addr, Token: spec.Token, Vault: spec.Vault}, nil
152
+ })
@@ -0,0 +1,143 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260907-0029-0 (go/plugins/secretspec/secretspec.go)
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // The secretspec plugin: SecretSpec, through its CLI. Needs a child
5
+ // process. A port of typescript/plugins/secretspec.ts.
6
+ package secretspec
7
+
8
+ import (
9
+ "bytes"
10
+ "errors"
11
+ "os/exec"
12
+ "strconv"
13
+ "strings"
14
+
15
+ "GOMODULE/feature/secrets/sekreto"
16
+ )
17
+
18
+ // Provider reads SecretSpec (https://secretspec.dev).
19
+ //
20
+ // SecretSpec is a declaration - a secretspec.toml naming the secrets a
21
+ // project needs - plus a chain of its own backends to satisfy them from.
22
+ // That makes it the same shape as sekreto one level down, and the reason to
23
+ // support it is the same reason sekreto exists: a project that has already
24
+ // declared its secrets there should not have to declare them again here.
25
+ //
26
+ // Read through its CLI, as boru is, because that is the interface it offers
27
+ // a program in another language: `secretspec get API_TOKEN` prints the value
28
+ // on stdout and nothing else. A sekreto name maps to a SecretSpec key
29
+ // exactly as it maps to an environment variable - api.token is API_TOKEN -
30
+ // which is the convention SecretSpec's own examples use.
31
+ //
32
+ // Backend selects one of SecretSpec's backends (--provider, e.g. `keyring`
33
+ // or `dotenv://.env`) and is called Backend here only because Provider
34
+ // already means something else in this library.
35
+ //
36
+ // A reason is required, not optional: SecretSpec records every read in an
37
+ // audit log and refuses to read at all without one. sekreto sends `sekreto`
38
+ // unless told otherwise, so the audit trail says which tool asked.
39
+ type Provider struct {
40
+ Command string
41
+ File string
42
+ Profile string
43
+ Backend string
44
+ Reason string
45
+ Prefix string
46
+ }
47
+
48
+ func (provider *Provider) command() string {
49
+ if "" == provider.Command {
50
+ return "secretspec"
51
+ }
52
+ return provider.Command
53
+ }
54
+
55
+ func (provider *Provider) Lookup(name string) (string, bool, error) {
56
+ key, err := sekreto.EnvKey(name, provider.Prefix)
57
+ if nil != err {
58
+ return "", false, err
59
+ }
60
+
61
+ args := []string{}
62
+ if "" != provider.File {
63
+ args = append(args, "--file", provider.File)
64
+ }
65
+ args = append(args, "get", key)
66
+ if "" != provider.Backend {
67
+ args = append(args, "--provider", provider.Backend)
68
+ }
69
+ if "" != provider.Profile {
70
+ args = append(args, "--profile", provider.Profile)
71
+ }
72
+ reason := provider.Reason
73
+ if "" == reason {
74
+ reason = "sekreto"
75
+ }
76
+ args = append(args, "--reason", reason)
77
+
78
+ run := exec.Command(provider.command(), args...)
79
+
80
+ var out, errout bytes.Buffer
81
+ run.Stdout = &out
82
+ run.Stderr = &errout
83
+
84
+ runerr := run.Run()
85
+
86
+ if nil == runerr {
87
+ // The value and one newline, and nothing else.
88
+ return strings.TrimSuffix(out.String(), "\n"), true, nil
89
+ }
90
+
91
+ var exiterr *exec.ExitError
92
+ if !errors.As(runerr, &exiterr) {
93
+ return "", false, sekreto.Fail("sekreto: cannot run " + provider.command() + ": " + runerr.Error())
94
+ }
95
+
96
+ why := strings.TrimSpace(errout.String())
97
+
98
+ if secretspecmiss(why, key) {
99
+ return "", false, nil
100
+ }
101
+
102
+ if "" == why {
103
+ why = "exit " + strconv.Itoa(exiterr.ExitCode())
104
+ }
105
+
106
+ return "", false, sekreto.Fail("sekreto: secretspec error: " + why)
107
+ }
108
+
109
+ func (provider *Provider) Describe() string {
110
+ if "" != provider.Backend {
111
+ return "secretspec:" + provider.Backend
112
+ }
113
+ return "secretspec"
114
+ }
115
+
116
+ // secretspecmiss reports whether a SecretSpec failure means "no such secret"
117
+ // rather than "I could not answer".
118
+ //
119
+ // SecretSpec says `Secret 'API_TOKEN' not found` for both a name it does not
120
+ // declare and one declared with no value, and both are misses: this store
121
+ // does not hold it, so the chain carries on.
122
+ //
123
+ // MATCHED ON THE WHOLE PHRASE, NOT ON "not found". SecretSpec also says
124
+ // `Provider backend 'keyring' not found`, which is a store that could not
125
+ // answer at all - and reading that as a miss is the worst failure this
126
+ // library has, because the chain then falls through to a weaker store
127
+ // without saying so. The key is required to appear, so the two cannot be
128
+ // confused.
129
+ func secretspecmiss(why string, key string) bool {
130
+ return strings.Contains(why, "Secret '"+key+"' not found")
131
+ }
132
+
133
+ // Plugin is the `secretspec` provider kind, as a voxgig/plugin definition.
134
+ var Plugin = sekreto.ProviderPlugin("secretspec", func(spec *sekreto.ProviderSpec) (sekreto.Provider, error) {
135
+ return &Provider{
136
+ Command: spec.Command,
137
+ File: spec.File,
138
+ Profile: spec.Profile,
139
+ Backend: spec.Backend,
140
+ Reason: spec.Reason,
141
+ Prefix: spec.Prefix,
142
+ }, nil
143
+ })