@voxgig/sdkgen 4.8.1 → 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 +2 -2
  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,491 @@
1
+ // The corpus test runner: vendored @voxgig/omni driven through its NATIVE
2
+ // API (Voxgig.Omni.Runner.MakeRunner(specref, provider)), presented to the
3
+ // corpus tests in the struct-runner shape they already use (run.Spec,
4
+ // run.RunSet, run.RunSetFlags, run.Client). No compat shim is vendored:
5
+ // the adapter below IS the whole bridge, per language, per the vendor-tag
6
+ // rollout (docs/design/vendor-tag-rollout.md, Decision 4). It supersedes
7
+ // the engine half of Runner.cs (TestRunner.RunSet/MatchDeep/MatchString)
8
+ // and the whole StructRunner engine (support lives on in Runner.cs).
9
+ //
10
+ // C#-specific decisions, each load-bearing:
11
+ //
12
+ // 1. CONTEXTS STAY MAPS ACROSS THE RUNNER. omni sets `entry.ctx` to the
13
+ // contextified args[0] and `match: {ctx: ...}` assertions read THROUGH
14
+ // it with omni's own GetPath, which walks JSON maps only. A typed
15
+ // Context there would make every ctx assertion read "absent". So the
16
+ // subjects receive the MAP, build the typed Context with
17
+ // OmniResolver.OmniCtx(args[0], ...) at the call site, run the
18
+ // utility, and write the observable ctx state back into the same map
19
+ // with OmniSyncCtx - which is what makes the live SDK reachable
20
+ // through ctx.Client for the generated utilities (the ts resolver
21
+ // gets both for free from prototype delegation; maps-plus-sync is the
22
+ // same idiom the go and java resolvers use for the same contract,
23
+ // omni#56).
24
+ //
25
+ // 2. ZERO-ARGUMENT ENTRIES. The corpus carries entries with no `in`,
26
+ // `args` or `ctx`, meaning "call the subject with NO argument". The
27
+ // vendored C# port already distinguishes that case natively - such an
28
+ // entry arrives as one `Absent.Mark` argument (C# has no `undefined`,
29
+ // so absence is a sentinel) - which is why C# needs no novalargs spec
30
+ // rewrite (go) and no compat shim (lua/php). The resolver's ONE
31
+ // conversion is the sentinel swap at the call boundary: Absent.Mark ->
32
+ // StructUtils.NONE on the way in (a whole argument only - a parsed
33
+ // corpus value never contains one), NONE -> Absent.Mark on the way
34
+ // out, walked, because a reader can leave NONE inside a partially
35
+ // resolved node. Ported from omni's own csharp/compat/Struct.cs
36
+ // (register 4.12), which this resolver replaces.
37
+ //
38
+ // 3. NUMBERS. omni's Util.Parse reads every JSON number as `double`;
39
+ // the struct port's own loader gave `long` for anything integral, and
40
+ // the library branches on that (`Typify` answers Integer or Decimal by
41
+ // it). So the resolved spec is normalised ONCE, integral double ->
42
+ // long, before any subject sees it (FixNums, the go resolver's
43
+ // fixnums). Nothing is needed on the way out: omni's DeepEqual already
44
+ // compares long against double numerically.
45
+ //
46
+ // 4. THE VENDORED C# PORT LACKS THE omni#54 JsonStr CYCLE GUARD the
47
+ // TypeScript port has at this tag (voxgig/omni#64 landed the runner
48
+ // fixes for js/go/py only). It only bites on CYCLIC values, and the
49
+ // port's Clone/FixJson/JsonStr pass non-JSON values (a typed Context,
50
+ // an SDK client) through without walking them - so decision 1 above
51
+ // (JSON-only maps in entries, typed state kept out of them) is also
52
+ // what keeps every value the runner clones or stringifies acyclic.
53
+ // The match-clone half is absent by construction (this port never
54
+ // cloned its match base), and the errify half (non-Error throwables)
55
+ // cannot arise: C# subjects fail by THROWING an Exception, and the
56
+ // Errify hook below keeps the SDK error's code for
57
+ // `match: {err: {code: ...}}` assertions.
58
+
59
+ using System.Globalization;
60
+ using System.Runtime.CompilerServices;
61
+
62
+ using Voxgig.Omni;
63
+ using Voxgig.Struct;
64
+
65
+ // `Util` alone would resolve to the SDK's ProjectNameSdk.Util namespace,
66
+ // not the vendored omni Util class - alias it explicitly.
67
+ using OmniUtil = Voxgig.Omni.Util;
68
+
69
+ using ProjectNameSdk;
70
+
71
+ namespace ProjectNameSdk.Test;
72
+
73
+ public static class OmniResolver
74
+ {
75
+ // The sentinels, under the names the corpus tests already use.
76
+ public const string NULLMARK = Runner.NULLMARK;
77
+ public const string UNDEFMARK = Runner.UNDEFMARK;
78
+ public const string EXISTSMARK = Runner.EXISTSMARK;
79
+
80
+ /// <summary>The function under test, in omni's native argument shape.</summary>
81
+ public delegate object? Subject(params object?[] args);
82
+
83
+ /// <summary>Resolves one named section of the spec.</summary>
84
+ public delegate Run NamedRunner(string name, object? store = null);
85
+
86
+ private static string SourceDir([CallerFilePath] string path = "")
87
+ => Path.GetDirectoryName(path)!;
88
+
89
+ /// <summary>
90
+ /// The struct runner's makeRunner(testfile, client) signature, backed
91
+ /// by vendored omni. `testfile` is a spec path (a relative path is
92
+ /// absolutized against THIS file's directory, not the process working
93
+ /// directory - dotnet test runs from bin/ - and omni's docs say a port
94
+ /// must resolve the path itself) or an already-parsed spec value
95
+ /// (omni's own capability), which keeps smoke tests free of fixture
96
+ /// files.
97
+ /// </summary>
98
+ public static NamedRunner MakeRunner(object testfile, object? client)
99
+ {
100
+ var provider = SdkProvider(client);
101
+
102
+ RunnerPack runner;
103
+ if (testfile is string path)
104
+ {
105
+ if (!Path.IsPathRooted(path))
106
+ {
107
+ path = Path.GetFullPath(Path.Combine(SourceDir(), path));
108
+ }
109
+ runner = Runner.MakeRunner(path, provider);
110
+ }
111
+ else
112
+ {
113
+ runner = Runner.MakeRunner(testfile, provider);
114
+ }
115
+
116
+ return (name, store) => new Run(runner.Run(name, store), client);
117
+ }
118
+
119
+ /// <summary>
120
+ /// What the runner returns for one named spec section - the
121
+ /// struct-runner shape the corpus call sites consume. A failing entry
122
+ /// throws <see cref="OmniError"/>, which fails the xUnit test with the
123
+ /// entry named.
124
+ /// </summary>
125
+ public sealed class Run
126
+ {
127
+ /// <summary>The resolved spec section (numbers normalised, decision 3).</summary>
128
+ public Dictionary<string, object?> Spec { get; }
129
+
130
+ /// <summary>
131
+ /// The SDK this runner was built with. omni's own RunPack carries
132
+ /// the PROVIDER in that slot, which has none of the SDK's members,
133
+ /// so the client is handed back instead (omni#56).
134
+ /// </summary>
135
+ public object? Client { get; }
136
+
137
+ private readonly RunPack pack;
138
+
139
+ internal Run(RunPack pack, object? client)
140
+ {
141
+ this.pack = pack;
142
+ Client = client;
143
+ Spec = FixNums(pack.Spec) as Dictionary<string, object?>
144
+ ?? new Dictionary<string, object?>();
145
+ }
146
+
147
+ /// <summary>A named group of the resolved spec.</summary>
148
+ public object? Set(string setname)
149
+ => Spec.TryGetValue(setname, out var v) ? v : null;
150
+
151
+ /// <summary>Run one set of test entries with omni's default flags.</summary>
152
+ public void RunSet(object? testspec, Subject? subject = null)
153
+ {
154
+ RunSetFlags(testspec, null, subject);
155
+ }
156
+
157
+ /// <summary>Run one set of test entries with explicit flags.</summary>
158
+ public void RunSetFlags(object? testspec, Dictionary<string, bool>? flags,
159
+ Subject? subject = null)
160
+ {
161
+ Voxgig.Omni.Subject? wrapped = null;
162
+ if (null != subject)
163
+ {
164
+ wrapped = args =>
165
+ {
166
+ var sargs = new object?[args?.Length ?? 0];
167
+ for (var i = 0; i < sargs.Length; i++)
168
+ {
169
+ // The sentinel swap at the call boundary (decision 2).
170
+ sargs[i] = OmniUtil.IsAbsent(args![i]) ? StructUtils.NONE : args[i];
171
+ }
172
+ return ToOmni(subject(sargs));
173
+ };
174
+ }
175
+
176
+ var omniflags = new Flags();
177
+ if (null != flags && flags.TryGetValue("null", out var donull))
178
+ {
179
+ omniflags.Null = donull;
180
+ }
181
+
182
+ pack.RunSetFlags(testspec, omniflags, wrapped);
183
+ }
184
+ }
185
+
186
+ // ------------------------------------------------------------------
187
+ // The two value models (decisions 2 and 3)
188
+ // ------------------------------------------------------------------
189
+
190
+ /// <summary>
191
+ /// This port's model -> omni's. Walked, because NONE CAN sit inside a
192
+ /// result - a reader leaves it in a partially resolved node - and ANY
193
+ /// list becomes a List&lt;object?&gt;: KeysOf returns a List&lt;string&gt;,
194
+ /// which omni's IsList does not recognise. (Subject ARGUMENTS are never
195
+ /// walked: containers must cross by identity so `match.args` sees
196
+ /// in-place mutation, e.g. setpath.)
197
+ /// </summary>
198
+ internal static object? ToOmni(object? val)
199
+ {
200
+ if (ReferenceEquals(val, StructUtils.NONE))
201
+ {
202
+ return Absent.Mark;
203
+ }
204
+
205
+ if (null == val || val is string || val is bool || OmniUtil.IsNum(val))
206
+ {
207
+ return val;
208
+ }
209
+
210
+ if (val is IDictionary<string, object?> map)
211
+ {
212
+ var outmap = new Dictionary<string, object?>(map.Count);
213
+ foreach (var pair in map)
214
+ {
215
+ outmap[pair.Key] = ToOmni(pair.Value);
216
+ }
217
+ return outmap;
218
+ }
219
+
220
+ // Every list shape, not just IList<object?>. A non-generic IList
221
+ // covers List<string>, List<List<object?>> and the rest.
222
+ if (val is System.Collections.IList list)
223
+ {
224
+ var outlist = new List<object?>(list.Count);
225
+ for (var index = 0; index < list.Count; index++)
226
+ {
227
+ outlist.Add(ToOmni(list[index]));
228
+ }
229
+ return outlist;
230
+ }
231
+
232
+ // A non-generic dictionary (rare, but the generic pattern does not
233
+ // catch every shape a port might hand back).
234
+ if (val is System.Collections.IDictionary raw)
235
+ {
236
+ var outmap = new Dictionary<string, object?>();
237
+ foreach (System.Collections.DictionaryEntry entry in raw)
238
+ {
239
+ outmap[Convert.ToString(entry.Key, CultureInfo.InvariantCulture) ?? ""] =
240
+ ToOmni(entry.Value);
241
+ }
242
+ return outmap;
243
+ }
244
+
245
+ return val;
246
+ }
247
+
248
+ /// <summary>
249
+ /// omni's number model -> this port's: an integral JSON double becomes
250
+ /// the long the struct port's own loader produced (decision 3). Walked
251
+ /// copies; applied once to the resolved spec.
252
+ /// </summary>
253
+ internal static object? FixNums(object? val)
254
+ {
255
+ switch (val)
256
+ {
257
+ case double number:
258
+ if (!double.IsNaN(number) && !double.IsInfinity(number) &&
259
+ Math.Floor(number) == number &&
260
+ number >= -9.2233720368547758E18 && number <= 9.2233720368547758E18)
261
+ {
262
+ return (long)number;
263
+ }
264
+ return val;
265
+
266
+ case IDictionary<string, object?> map:
267
+ {
268
+ var outmap = new Dictionary<string, object?>(map.Count);
269
+ foreach (var pair in map)
270
+ {
271
+ outmap[pair.Key] = FixNums(pair.Value);
272
+ }
273
+ return outmap;
274
+ }
275
+
276
+ case IList<object?> list:
277
+ {
278
+ var outlist = new List<object?>(list.Count);
279
+ foreach (var entry in list)
280
+ {
281
+ outlist.Add(FixNums(entry));
282
+ }
283
+ return outlist;
284
+ }
285
+
286
+ default:
287
+ return val;
288
+ }
289
+ }
290
+
291
+ // ------------------------------------------------------------------
292
+ // Provider bookkeeping
293
+ // ------------------------------------------------------------------
294
+
295
+ // DefProviders marks the providers a spec's DEF.client block built -
296
+ // the only ones OmniCtx lets override a call site's explicit client
297
+ // (the base provider rides on EVERY ctx entry, and letting it win
298
+ // would defeat sections that deliberately construct a
299
+ // differently-optioned client). Guarded: xUnit may run tests
300
+ // concurrently.
301
+ private static readonly object ProviderLock = new();
302
+ private static readonly Dictionary<Provider, object?> ProviderClients = new();
303
+ private static readonly HashSet<Provider> DefProviders = new();
304
+
305
+ private static void RegisterProvider(Provider provider, object? client)
306
+ {
307
+ lock (ProviderLock)
308
+ {
309
+ ProviderClients[provider] = client;
310
+ }
311
+ }
312
+
313
+ private static void MarkDefProvider(Provider provider)
314
+ {
315
+ lock (ProviderLock)
316
+ {
317
+ DefProviders.Add(provider);
318
+ }
319
+ }
320
+
321
+ private static object? DefProviderClient(Provider provider)
322
+ {
323
+ lock (ProviderLock)
324
+ {
325
+ return DefProviders.Contains(provider) &&
326
+ ProviderClients.TryGetValue(provider, out var client) ? client : null;
327
+ }
328
+ }
329
+
330
+ // Wrap a live client as an omni provider. No subject-by-name hook: the
331
+ // C# Utility members are TYPED delegates (a Func taking a Context), so
332
+ // a generic name lookup cannot produce omni's (object[]) subject
333
+ // without a per-name adapter - and every generated call site passes
334
+ // its subject explicitly. DEF.client entries still resolve: the Client
335
+ // hook builds another live test SDK.
336
+ private static Provider SdkProvider(object? client)
337
+ {
338
+ var provider = new Provider
339
+ {
340
+ // A DEF.client entry becomes another live test SDK, wrapped
341
+ // the same way and marked as DEF-built so OmniCtx resolves it
342
+ // back. The options arrive from omni's raw parse: normalise
343
+ // the numbers before the SDK sees them (decision 3).
344
+ Client = options =>
345
+ {
346
+ var opts = FixNums(options) as Dictionary<string, object?>
347
+ ?? new Dictionary<string, object?>();
348
+ var sub = SdkProvider(ProjectNameSDK.TestSDK(null, opts));
349
+ MarkDefProvider(sub);
350
+ return sub;
351
+ },
352
+
353
+ // Client options may reference the runner store.
354
+ Inject = (options, store) => StructUtils.Inject(options, store),
355
+
356
+ // Keep the SDK error's code beside its message, so a corpus
357
+ // `match: {err: {code: ...}}` can assert on it - the C#
358
+ // analogue of the omni#54 errify fix (decision 4).
359
+ Errify = err =>
360
+ {
361
+ if (err is ProjectNameError sdkerr)
362
+ {
363
+ var outmap = new Dictionary<string, object?>
364
+ {
365
+ ["name"] = "ProjectNameError",
366
+ ["message"] = sdkerr.Message,
367
+ };
368
+ if (!string.IsNullOrEmpty(sdkerr.Code))
369
+ {
370
+ outmap["code"] = sdkerr.Code;
371
+ }
372
+ return outmap;
373
+ }
374
+ return Runner.Errify(err);
375
+ },
376
+ };
377
+
378
+ RegisterProvider(provider, client);
379
+
380
+ return provider;
381
+ }
382
+
383
+ // ------------------------------------------------------------------
384
+ // Typed-context bridging (decision 1)
385
+ // ------------------------------------------------------------------
386
+
387
+ /// <summary>
388
+ /// Build the typed Context a generated utility takes from the ctx MAP
389
+ /// omni handed the subject (args[0]). The map's `client` entry - an
390
+ /// omni provider when a DEF entry selected one - resolves back to the
391
+ /// live SDK it wraps; otherwise the given client is used. (The engine
392
+ /// half of the retired TestRunner.RunSet call sites did this as
393
+ /// MakeCtxFromMap + FixCtx, per section, by hand.)
394
+ /// </summary>
395
+ public static Context OmniCtx(object? arg, ProjectNameSDK client, Utility utility)
396
+ {
397
+ var ctxmap = arg as Dictionary<string, object?>
398
+ ?? new Dictionary<string, object?>();
399
+
400
+ // Only a DEF-built client overrides the caller's: the base
401
+ // provider is on every ctx entry, and a call site that constructed
402
+ // a special client (a DEF.setup options set) must keep it.
403
+ if (ctxmap.TryGetValue("client", out var p) && p is Provider prov &&
404
+ DefProviderClient(prov) is ProjectNameSDK live)
405
+ {
406
+ client = live;
407
+ utility = live.GetUtility();
408
+ }
409
+
410
+ var ctx = TestRunner.MakeCtxFromMap(ctxmap, client, utility);
411
+ TestRunner.FixCtx(ctx, client);
412
+ return ctx;
413
+ }
414
+
415
+ /// <summary>
416
+ /// Write the OBSERVABLE state of a typed context back into the ctx map
417
+ /// the entry holds, which is where a `match: {ctx: ...}` assertion
418
+ /// reads. The subject mutated the typed context; the map is what the
419
+ /// runner can walk. (The retired engine call sites did this per
420
+ /// section, by hand, as "update entry ctx for match".)
421
+ /// </summary>
422
+ public static void OmniSyncCtx(object? arg, Context? ctx)
423
+ {
424
+ if (arg is not Dictionary<string, object?> ctxmap || null == ctx)
425
+ {
426
+ return;
427
+ }
428
+
429
+ if (null != ctx.Spec)
430
+ {
431
+ var spec = new Dictionary<string, object?>
432
+ {
433
+ ["base"] = ctx.Spec.Base,
434
+ ["prefix"] = ctx.Spec.Prefix,
435
+ ["suffix"] = ctx.Spec.Suffix,
436
+ ["path"] = ctx.Spec.Path,
437
+ ["method"] = ctx.Spec.Method,
438
+ ["params"] = ctx.Spec.Params,
439
+ ["query"] = ctx.Spec.Query,
440
+ ["headers"] = ctx.Spec.Headers,
441
+ ["step"] = ctx.Spec.Step,
442
+ ["alias"] = ctx.Spec.Alias,
443
+ };
444
+ if (null != ctx.Spec.Body)
445
+ {
446
+ spec["body"] = ctx.Spec.Body;
447
+ }
448
+ if (!string.IsNullOrEmpty(ctx.Spec.Url))
449
+ {
450
+ spec["url"] = ctx.Spec.Url;
451
+ }
452
+ ctxmap["spec"] = spec;
453
+ }
454
+
455
+ if (null != ctx.Result)
456
+ {
457
+ var res = new Dictionary<string, object?>
458
+ {
459
+ ["ok"] = ctx.Result.Ok,
460
+ ["status"] = ctx.Result.Status,
461
+ ["statusText"] = ctx.Result.StatusText,
462
+ ["headers"] = ctx.Result.Headers,
463
+ };
464
+ if (null != ctx.Result.Body)
465
+ {
466
+ res["body"] = ctx.Result.Body;
467
+ }
468
+ if (null != ctx.Result.Err)
469
+ {
470
+ res["err"] = new Dictionary<string, object?>
471
+ {
472
+ ["message"] = ctx.Result.Err.Message,
473
+ };
474
+ }
475
+ if (null != ctx.Result.Resdata)
476
+ {
477
+ res["resdata"] = ctx.Result.Resdata;
478
+ }
479
+ if (null != ctx.Result.Resmatch)
480
+ {
481
+ res["resmatch"] = ctx.Result.Resmatch;
482
+ }
483
+ ctxmap["result"] = res;
484
+ }
485
+
486
+ if (null != ctx.Response)
487
+ {
488
+ ctxmap["response"] = "exists";
489
+ }
490
+ }
491
+ }
@@ -0,0 +1,106 @@
1
+ // Smoke tests for the vendored omni runner itself: a runner that cannot
2
+ // FAIL a bad entry would turn every corpus suite vacuously green, so pin
3
+ // the failure paths, not just the happy one. (The C# peer of
4
+ // tm/ts/test/omni.test.ts and tm/go/test/omnismoke_test.go.)
5
+
6
+ using Xunit;
7
+
8
+ using Voxgig.Omni;
9
+
10
+ using ProjectNameSdk;
11
+
12
+ namespace ProjectNameSdk.Test;
13
+
14
+ public class OmniSmokeTest
15
+ {
16
+ // A minimal in-memory spec: no fixture file, no OMNI block (lenient
17
+ // v0, like the shared corpus).
18
+ private static Dictionary<string, object?> SmokeSpec()
19
+ {
20
+ return new Dictionary<string, object?>
21
+ {
22
+ ["primary"] = new Dictionary<string, object?>
23
+ {
24
+ ["smoke"] = new Dictionary<string, object?>
25
+ {
26
+ ["basic"] = new Dictionary<string, object?>
27
+ {
28
+ ["set"] = new List<object?>
29
+ {
30
+ new Dictionary<string, object?> { ["in"] = 1, ["out"] = 2 },
31
+ new Dictionary<string, object?> { ["in"] = 41, ["out"] = 42 },
32
+ },
33
+ },
34
+ ["bad"] = new Dictionary<string, object?>
35
+ {
36
+ ["set"] = new List<object?>
37
+ {
38
+ new Dictionary<string, object?> { ["in"] = 1, ["out"] = 999 },
39
+ },
40
+ },
41
+ ["err"] = new Dictionary<string, object?>
42
+ {
43
+ ["set"] = new List<object?>
44
+ {
45
+ new Dictionary<string, object?> { ["in"] = 0, ["err"] = "zero refused" },
46
+ },
47
+ },
48
+ },
49
+ },
50
+ };
51
+ }
52
+
53
+ private static object? SmokeInc(params object?[] args)
54
+ {
55
+ var n = Convert.ToInt64(args[0]);
56
+ if (0 == n)
57
+ {
58
+ throw new InvalidOperationException("smoke: zero refused");
59
+ }
60
+ return n + 1;
61
+ }
62
+
63
+ private static OmniResolver.Run SmokeRun()
64
+ {
65
+ var runner = OmniResolver.MakeRunner(SmokeSpec(),
66
+ ProjectNameSDK.TestSDK(null, null));
67
+ var run = runner("smoke");
68
+ Assert.NotNull(run.Spec);
69
+ return run;
70
+ }
71
+
72
+ [Fact]
73
+ public void RunsetPassesACorrectSubject()
74
+ {
75
+ var run = SmokeRun();
76
+ run.RunSet(run.Set("basic"), SmokeInc);
77
+ }
78
+
79
+ [Fact]
80
+ public void RunsetFailsAWrongResult()
81
+ {
82
+ var run = SmokeRun();
83
+
84
+ var err = Assert.Throws<OmniError>(() =>
85
+ run.RunSet(run.Set("bad"), SmokeInc));
86
+
87
+ Assert.True(err.Message.Contains("result mismatch"),
88
+ "expected a result mismatch failure, got: " + err.Message);
89
+ }
90
+
91
+ [Fact]
92
+ public void ExpectedErrorIsMatchedAndAMissingOneFails()
93
+ {
94
+ var run = SmokeRun();
95
+
96
+ // The erroring subject satisfies the expected-error entry.
97
+ run.RunSet(run.Set("err"), SmokeInc);
98
+
99
+ // A subject that does NOT raise must fail that same entry.
100
+ var err = Assert.Throws<OmniError>(() =>
101
+ run.RunSet(run.Set("err"), args => args[0]));
102
+
103
+ Assert.True(err.Message.Contains("expected error did not occur"),
104
+ "expected an expected-error failure, got: " + err.Message);
105
+ }
106
+ }