@voxgig/sdkgen 4.8.2 → 4.8.3

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 (376) 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/src/cmp/clojure/Package_clojure.ts +9 -2
  33. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
  34. package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
  35. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
  36. package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
  37. package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
  38. package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
  39. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
  40. package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
  41. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
  42. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
  43. package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
  44. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
  45. package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
  46. package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
  47. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
  48. package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
  49. package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
  50. package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
  51. package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
  52. package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
  53. package/project/.sdk/tm/c/Makefile +38 -3
  54. package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
  55. package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
  56. package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
  57. package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
  58. package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
  59. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
  60. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
  61. package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
  62. package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
  63. package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
  64. package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
  65. package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
  66. package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
  67. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
  68. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
  69. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
  70. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
  71. package/project/.sdk/tm/cpp/Makefile +5 -1
  72. package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
  73. package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
  74. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
  75. package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
  76. package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
  77. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
  78. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
  79. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
  80. package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
  81. package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
  82. package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
  83. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
  84. package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
  85. package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
  86. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
  87. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
  88. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
  89. package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
  90. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
  91. package/project/.sdk/tm/dart/test/omni.dart +520 -0
  92. package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
  93. package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
  94. package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
  95. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
  96. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
  97. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
  98. package/project/.sdk/tm/elixir/Makefile +11 -3
  99. package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
  100. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
  101. package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
  102. package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
  103. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
  104. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
  105. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
  106. package/project/.sdk/tm/go/core/context.go +32 -16
  107. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
  108. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
  109. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
  110. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
  111. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
  112. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
  113. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
  114. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
  115. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
  116. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
  117. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
  118. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
  119. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
  120. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
  121. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
  122. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
  123. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
  124. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
  125. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
  126. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
  127. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
  128. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +209 -0
  129. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
  130. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +151 -0
  131. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
  132. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
  133. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
  134. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +439 -0
  135. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +685 -0
  136. package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
  137. package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
  138. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
  139. package/project/.sdk/tm/go/test/omni/omni.go +897 -0
  140. package/project/.sdk/tm/go/test/omni/util.go +360 -0
  141. package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
  142. package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
  143. package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
  144. package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
  145. package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
  146. package/project/.sdk/tm/go/utility/make_options.go +8 -1
  147. package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
  148. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
  149. package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
  150. package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
  151. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
  152. package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
  153. package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
  154. package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
  155. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
  156. package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
  157. package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
  158. package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
  159. package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
  160. package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
  161. package/project/.sdk/tm/js/test/omni.js +251 -0
  162. package/project/.sdk/tm/js/test/omni.test.js +105 -0
  163. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
  164. package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
  165. package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
  166. package/project/.sdk/tm/js/test/vendor/omni/runner.js +613 -0
  167. package/project/.sdk/tm/js/test/vendor/omni/util.js +212 -0
  168. package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
  169. package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
  170. package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
  171. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
  172. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
  173. package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
  174. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
  175. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
  176. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
  177. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
  178. package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
  179. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
  180. package/project/.sdk/tm/lean/Makefile +12 -5
  181. package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
  182. package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
  183. package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
  184. package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
  185. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
  186. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
  187. package/project/.sdk/tm/lua/test/omni.lua +456 -0
  188. package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
  189. package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
  190. package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
  191. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
  192. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
  193. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
  194. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
  195. package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
  196. package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
  197. package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
  198. package/project/.sdk/tm/ocaml/Makefile +37 -12
  199. package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
  200. package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
  201. package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
  202. package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
  203. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
  204. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
  205. package/project/.sdk/tm/perl/t/omni.pm +647 -0
  206. package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
  207. package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
  208. package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
  209. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
  210. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
  211. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
  212. package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
  213. package/project/.sdk/tm/php/test/Omni.php +691 -0
  214. package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
  215. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
  216. package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
  217. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
  218. package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
  219. package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
  220. package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
  221. package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
  222. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
  223. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
  224. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
  225. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
  226. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
  227. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
  228. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
  229. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
  230. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
  231. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
  232. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
  233. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
  234. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
  235. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
  236. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
  237. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +74 -0
  238. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
  239. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
  240. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
  241. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
  242. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
  243. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
  244. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +152 -0
  245. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
  246. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +92 -0
  247. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
  248. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
  249. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
  250. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
  251. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +455 -0
  252. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
  253. package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
  254. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
  255. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
  256. package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
  257. package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
  258. package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
  259. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
  260. package/project/.sdk/tm/py/test/omni.py +415 -0
  261. package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
  262. package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
  263. package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
  264. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
  265. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +566 -0
  266. package/project/.sdk/tm/py/test/voxgig_omni/util.py +237 -0
  267. package/project/.sdk/tm/rb/test/omni.rb +505 -0
  268. package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
  269. package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
  270. package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
  271. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
  272. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
  273. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
  274. package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
  275. package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
  276. package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
  277. package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
  278. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
  279. package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
  280. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
  281. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
  282. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
  283. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
  284. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
  285. package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
  286. package/project/.sdk/tm/scala/Makefile +16 -6
  287. package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
  288. package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
  289. package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
  290. package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
  291. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
  292. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
  293. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
  294. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
  295. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
  296. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
  297. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
  298. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
  299. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
  300. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
  301. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
  302. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
  303. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
  304. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
  305. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
  306. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
  307. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
  308. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
  309. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
  310. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
  311. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
  312. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
  313. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
  314. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
  315. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
  316. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
  317. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
  318. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
  319. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
  320. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
  321. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
  322. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
  323. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
  324. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
  325. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
  326. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
  327. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
  328. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
  329. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
  330. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
  331. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
  332. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
  333. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
  334. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
  335. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
  336. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
  337. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
  338. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
  339. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
  340. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
  341. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
  342. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
  343. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
  344. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
  345. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
  346. package/project/.sdk/tm/ts/test/omni.ts +104 -32
  347. package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
  348. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
  349. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
  350. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
  351. package/project/.sdk/tm/zig/test/primary_utility_test.zig +1 -1
  352. package/project/.sdk/tm/zig/test/struct_runner.zig +5 -4
  353. package/project/sdkgen-package.json +1 -1
  354. package/src/action/doctor.ts +66 -2
  355. package/src/helpers/naming.ts +4 -2
  356. package/project/.sdk/tm/c/tests/runner.h +0 -274
  357. package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
  358. package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
  359. package/project/.sdk/tm/dart/test/runner.dart +0 -406
  360. package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
  361. package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
  362. package/project/.sdk/tm/go/test/runner_test.go +0 -629
  363. package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
  364. package/project/.sdk/tm/java/test/StructRunner.java +0 -281
  365. package/project/.sdk/tm/js/test/runner.js +0 -387
  366. package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
  367. package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
  368. package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
  369. package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
  370. package/project/.sdk/tm/php/test/StructRunner.php +0 -275
  371. package/project/.sdk/tm/py/test/struct_runner.py +0 -411
  372. package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
  373. package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
  374. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
  375. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
  376. package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
@@ -0,0 +1,241 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260904-1610-0 (go/plugins/httpjson/httpjson.go)
2
+ // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-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 := json.Marshal(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,151 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260904-1610-0 (go/plugins/infisical/infisical.go)
2
+ // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-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
+ "encoding/json"
10
+ "net/http"
11
+ "strconv"
12
+ "strings"
13
+ "sync"
14
+ "time"
15
+
16
+ "GOMODULE/feature/secrets/plugins/httpjson"
17
+ "GOMODULE/feature/secrets/sekreto"
18
+ )
19
+
20
+ // Provider reads Infisical.
21
+ //
22
+ // api.token reads the secret keyed API_TOKEN (Infisical's own convention
23
+ // is environment-style keys) at a secret path in one environment of a
24
+ // project. Auth is a token, or a universal-auth (machine identity) login
25
+ // with clientid/clientsecret.
26
+ type Provider struct {
27
+ Addr string
28
+ Token string
29
+ ClientID string
30
+ ClientSecret string
31
+ Project string
32
+ Environment string
33
+ Path string
34
+ // A configured token is kept forever; a universal-auth token carries
35
+ // expiresIn and is renewed shortly before it runs out.
36
+ livetoken string
37
+ havetoken bool
38
+ renewat time.Time
39
+ mu sync.Mutex
40
+ }
41
+
42
+ func (provider *Provider) login(addr string) (string, error) {
43
+ if "" != provider.Token {
44
+ return provider.Token, nil
45
+ }
46
+
47
+ if "" == provider.ClientID || "" == provider.ClientSecret {
48
+ return "", sekreto.Fail("sekreto: infisical: no token and no client credentials")
49
+ }
50
+
51
+ payload, _ := json.Marshal(struct {
52
+ ClientID string `json:"clientId"`
53
+ ClientSecret string `json:"clientSecret"`
54
+ }{ClientID: provider.ClientID, ClientSecret: provider.ClientSecret})
55
+
56
+ status, body, err := httpjson.Call(http.MethodPost, addr+"/api/v1/auth/universal-auth/login",
57
+ map[string]string{"content-type": "application/json"}, string(payload))
58
+ if nil != err {
59
+ return "", err
60
+ }
61
+
62
+ got := httpjson.DigText(body, "accessToken")
63
+ if http.StatusOK != status || "" == got {
64
+ return "", sekreto.Fail("sekreto: infisical login failed: " + strconv.Itoa(status))
65
+ }
66
+
67
+ provider.renewat = httpjson.Expiry(httpjson.Dig(body, "expiresIn"))
68
+
69
+ return got, nil
70
+ }
71
+
72
+ func (provider *Provider) Lookup(name string) (string, bool, error) {
73
+ // Serialize per-provider access: Lookup reads and refreshes the cached
74
+ // login token, and a secrets client may resolve from several goroutines.
75
+ provider.mu.Lock()
76
+ defer provider.mu.Unlock()
77
+
78
+ addr := provider.Addr
79
+ if "" == addr {
80
+ addr = "https://app.infisical.com"
81
+ }
82
+ addr = strings.TrimSuffix(addr, "/")
83
+ if err := sekreto.CheckAddr(addr); nil != err {
84
+ return "", false, err
85
+ }
86
+
87
+ if "" == provider.Project || "" == provider.Environment {
88
+ return "", false, sekreto.Fail("sekreto: infisical: no project/environment")
89
+ }
90
+
91
+ if !provider.havetoken || httpjson.Due(provider.renewat) {
92
+ token, err := provider.login(addr)
93
+ if nil != err {
94
+ return "", false, err
95
+ }
96
+ provider.livetoken = token
97
+ provider.havetoken = true
98
+ }
99
+
100
+ key, err := sekreto.EnvKey(name, "")
101
+ if nil != err {
102
+ return "", false, err
103
+ }
104
+
105
+ path := provider.Path
106
+ if "" == path {
107
+ path = "/"
108
+ }
109
+ target := addr + "/api/v3/secrets/raw/" + key +
110
+ "?workspaceId=" + httpjson.Escape(provider.Project) +
111
+ "&environment=" + httpjson.Escape(provider.Environment) +
112
+ "&secretPath=" + httpjson.Escape(path)
113
+
114
+ status, body, err := httpjson.Get(target,
115
+ map[string]string{"authorization": "Bearer " + provider.livetoken})
116
+ if nil != err {
117
+ return "", false, err
118
+ }
119
+
120
+ if http.StatusNotFound == status {
121
+ return "", false, nil
122
+ }
123
+
124
+ if http.StatusOK != status {
125
+ return "", false, sekreto.Fail("sekreto: infisical error: " + strconv.Itoa(status))
126
+ }
127
+
128
+ value := httpjson.Dig(body, "secret", "secretValue")
129
+ if nil == value {
130
+ return "", false, nil
131
+ }
132
+
133
+ return httpjson.ToString(value), true, nil
134
+ }
135
+
136
+ func (provider *Provider) Describe() string {
137
+ return "infisical:" + provider.Project + "/" + provider.Environment
138
+ }
139
+
140
+ // Plugin is the `infisical` provider kind, as a voxgig/plugin definition.
141
+ var Plugin = sekreto.ProviderPlugin("infisical", func(spec *sekreto.ProviderSpec) (sekreto.Provider, error) {
142
+ return &Provider{
143
+ Addr: spec.Addr,
144
+ Token: spec.Token,
145
+ ClientID: spec.ClientID,
146
+ ClientSecret: spec.ClientSecret,
147
+ Project: spec.Project,
148
+ Environment: spec.Environment,
149
+ Path: spec.Path,
150
+ }, nil
151
+ })
@@ -0,0 +1,152 @@
1
+ // VENDORED: @voxgig/sekreto sdk-20260904-1610-0 (go/plugins/onepassword/onepassword.go)
2
+ // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-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-20260904-1610-0 (go/plugins/secretspec/secretspec.go)
2
+ // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-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
+ })