@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
@@ -1,29 +1,354 @@
1
1
  # ProjectName SDK primary-utility test
2
2
  #
3
- # Drives the SHARED language-neutral corpus (.sdk/test/test.json -> "primary")
4
- # through this SDK's request-shaping utilities, so the cases cannot drift from
5
- # the reference implementation. Each section is looked up with getSpec and
6
- # executed with runset, as the ts/js reference harness does.
3
+ # The primary corpus (.sdk/test/test.json -> "primary") drives THIS SDK's
4
+ # request-shaping utilities through the VENDORED @voxgig/omni engine, via the
5
+ # resolver in test/support/omni.ex. The hand-written engine this suite used to
6
+ # call (test/support/struct_corpus.ex - its own runSet, resolveArgs,
7
+ # checkResult and doMatch, transcribed by hand) is retired: omni resolves
8
+ # arguments, applies the null rules and enforces out/err/match, so the
9
+ # subjects below only adapt each utility's calling convention. See
10
+ # docs/design/vendor-tag-rollout.md.
7
11
  #
8
- # This suite used to MIRROR the corpus by hand: it asserted a handful of
9
- # behaviours it had transcribed, so a corpus case that changed — or one that
10
- # was added went unnoticed here. Driving the corpus is what makes elixir a
11
- # FULL parity target rather than a mirrored one.
12
+ # Three conventions to know when adding a section:
13
+ #
14
+ # - A subject receives omni's RESOLVED ARGUMENT LIST in the SDK's value model.
15
+ # For a ctx-style section that is the corpus ctx MAP, not a live context:
16
+ # `livectx/2` materialises the real one from it, exactly as the retired
17
+ # engine's make_ctx_from_map did.
18
+ #
19
+ # - Utilities that answer as a `{value, err}` PAIR go through `unwrap`, which
20
+ # raises the err so omni can match it against an `err:` expectation. A
21
+ # struct node is ITSELF a 2-tuple (`{:vmap, id}`), so `unwrap` matches the
22
+ # value shapes first - destructuring one as a pair would hand the heap id
23
+ # back as an error message.
24
+ #
25
+ # - `match: {ctx: ...}` is retargeted onto `match: {args: {"0": ...}}` by the
26
+ # resolver (omni.ex decision 3), so a subject whose section asserts on
27
+ # context state calls `sync/2` to write the observable live-context fields
28
+ # back onto the ctx map it was given. That map is what omni matches.
12
29
 
13
30
  defmodule ProjectName.PrimaryUtilityTest do
14
31
  use ExUnit.Case
15
32
 
16
- test "primary utilities pass the shared corpus" do
17
- {pass, fail, failures} = ProjectName.StructCorpus.run_primary()
33
+ alias Voxgig.Struct, as: S
34
+ alias ProjectName.Omni, as: O
35
+ alias ProjectName.Utility, as: U
36
+
37
+ setup_all do
38
+ testfile = Path.join(File.cwd!(), "../.sdk/test/test.json")
39
+ sdk = ProjectName.test()
40
+ runner = O.make_runner(testfile, sdk)
41
+ {:ok, run: runner.("primary"), sdk: sdk}
42
+ end
43
+
44
+ # --- corpus plumbing -----------------------------------------------------
45
+
46
+ defp section(spec, name) do
47
+ node = Map.get(Map.get(spec, name, %{}), "basic")
48
+
49
+ assert is_map(node) and is_list(Map.get(node, "set")),
50
+ "corpus section 'primary.#{name}' has no basic.set list - check the " <>
51
+ "name against .sdk/test/primary/"
52
+
53
+ assert [] != Map.get(node, "set"),
54
+ "corpus section 'primary.#{name}' is EMPTY - zero cases would run; add " <>
55
+ "cases, or mark the fixture PENDING in .sdk/test/primary/"
56
+
57
+ node
58
+ end
59
+
60
+ # DEF.setup.a: a section's own client options (the base URL makeSpec
61
+ # asserts on, the api key prepareAuth asserts on). Read from the corpus,
62
+ # not invented here.
63
+ defp setup_opts(spec, name) do
64
+ setup = Map.get(Map.get(Map.get(spec, name, %{}), "DEF", %{}), "setup", %{})
65
+ O.tostruct(Map.get(setup, "a", %{}))
66
+ end
67
+
68
+ # --- value plumbing ------------------------------------------------------
69
+
70
+ # A struct VALUE is itself a 2-tuple - {:vmap, id}, {:vlist, id}, {:vinj,
71
+ # id} - so a bare `{res, err}` clause destructures a perfectly good map
72
+ # into res=:vmap, err=<heap id>. Match the value shapes FIRST.
73
+ defp unwrap({:vmap, _} = val), do: val
74
+ defp unwrap({:vlist, _} = val), do: val
75
+ defp unwrap({:vinj, _} = val), do: val
76
+ defp unwrap({_res, err}) when err != nil, do: raise(err)
77
+ defp unwrap({res, _err}), do: res
78
+ defp unwrap(res), do: res
79
+
80
+ defp argnode(args, index) do
81
+ val = Enum.at(args, index)
82
+ if S.ismap(val), do: val, else: S.jm([])
83
+ end
84
+
85
+ # --- the live context ----------------------------------------------------
86
+
87
+ # A LIVE context from the corpus's ctx map. The corpus carries
88
+ # spec/result/response as plain JSON; the utilities read and MUTATE them
89
+ # through Spec/Result/Response, so a bare map leaves them with nothing to
90
+ # work on - every `match: ctx.result.*` assertion would then read null and
91
+ # prepare_* would return nothing.
92
+ #
93
+ # THE CLIENT IS OPT-IN. Some utilities read their defaults off it
94
+ # (prepare_headers reads the client's options), but the client holds the
95
+ # root ctx which holds the client, so anything that WALKS a ctx carrying one
96
+ # traverses a cycle. Only the sections that need client defaults ask for it.
97
+ defp livectx(node, opts) do
98
+ sdk = Keyword.fetch!(opts, :sdk)
99
+ util = ProjectName.get_utility(sdk)
100
+ rootctx = ProjectName.get_root_ctx(sdk)
101
+
102
+ ctxmap = S.clone(node)
103
+ S.delprop(ctxmap, "client")
104
+ S.delprop(ctxmap, "utility")
105
+
106
+ ctx = ProjectName.Context.new(ctxmap, nil)
107
+ S.setprop(ctx, "utility", util)
108
+ S.setprop(ctx, "config", S.getprop(rootctx, "config"))
109
+
110
+ if Keyword.get(opts, :client, false), do: S.setprop(ctx, "client", sdk)
111
+
112
+ if S.getprop(ctx, "options") == nil do
113
+ S.setprop(ctx, "options", Keyword.get(opts, :options) || S.getprop(rootctx, "options"))
114
+ end
115
+
116
+ specmap = S.getprop(ctxmap, "spec")
117
+ if S.ismap(specmap), do: S.setprop(ctx, "spec", ProjectName.Spec.new(specmap))
118
+
119
+ resmap = S.getprop(ctxmap, "result")
120
+
121
+ if S.ismap(resmap) do
122
+ result = ProjectName.Result.new(resmap)
123
+ errmap = S.getprop(resmap, "err")
124
+
125
+ if S.ismap(errmap) do
126
+ msg = S.getprop(errmap, "message")
127
+
128
+ if is_binary(msg) and msg != "",
129
+ do: S.setprop(result, "err", ProjectName.Error.new("", msg, nil))
130
+ end
131
+
132
+ S.setprop(ctx, "result", result)
133
+ end
134
+
135
+ respmap = S.getprop(ctxmap, "response")
136
+
137
+ if S.ismap(respmap) do
138
+ response = ProjectName.Response.new(respmap)
139
+ body = S.getprop(respmap, "body")
140
+ if body != nil, do: S.setprop(response, "json_func", fn -> body end)
141
+
142
+ hdrs = S.getprop(respmap, "headers")
143
+
144
+ if S.ismap(hdrs) do
145
+ lower = S.jm([])
146
+
147
+ Enum.each(S.keysof(hdrs), fn k ->
148
+ S.setprop(lower, String.downcase(k), S.getprop(hdrs, k))
149
+ end)
150
+
151
+ S.setprop(response, "headers", lower)
152
+ end
153
+
154
+ S.setprop(ctx, "response", response)
155
+ end
156
+
157
+ ctx
158
+ end
159
+
160
+ # The corpus speaks camelCase; snake_case ports do not. This one stores
161
+ # `status_text` internally while reading `statusText` off the wire, so a
162
+ # `result.statusText` assertion reads null unless a neutral-named view is
163
+ # published back. lua and py carry the same translation.
164
+ defp neutral_result(result) do
165
+ if S.ismap(result) do
166
+ err = S.getprop(result, "err")
18
167
 
19
- if fail > 0 do
20
- IO.puts("\n" <> Enum.join(Enum.take(failures, 40), "\n"))
168
+ S.jm([
169
+ "ok", S.getprop(result, "ok"),
170
+ "status", S.getprop(result, "status"),
171
+ "statusText", S.getprop(result, "status_text"),
172
+ "headers", S.getprop(result, "headers"),
173
+ "body", S.getprop(result, "body"),
174
+ "err", if(err == nil, do: nil, else: S.jm(["message", errmsg(err)]))
175
+ ])
21
176
  end
177
+ end
178
+
179
+ defp neutral_response(response) do
180
+ if S.ismap(response) do
181
+ S.jm([
182
+ "status", S.getprop(response, "status"),
183
+ "statusText", S.getprop(response, "status_text"),
184
+ "headers", S.getprop(response, "headers"),
185
+ "body", S.getprop(response, "body")
186
+ ])
187
+ end
188
+ end
189
+
190
+ defp errmsg(err) do
191
+ cond do
192
+ is_binary(err) -> err
193
+ is_exception(err) -> Exception.message(err)
194
+ S.ismap(err) -> S.getprop(err, "message") || S.stringify(err)
195
+ true -> inspect(err)
196
+ end
197
+ end
198
+
199
+ # Write the OBSERVABLE state of the live context back onto the ctx MAP omni
200
+ # holds, which is where a retargeted `match: {ctx: ...}` assertion reads
201
+ # (omni.ex decision 3). The live client and utility are dropped on the way
202
+ # out: both reach back to this ctx, and the corpus never asserts on either.
203
+ defp sync(node, ctx) do
204
+ spec = S.getprop(ctx, "spec")
205
+ if S.ismap(spec), do: S.setprop(node, "spec", spec)
206
+
207
+ result = S.getprop(ctx, "result")
208
+ if S.ismap(result), do: S.setprop(node, "result", neutral_result(result))
209
+
210
+ response = S.getprop(ctx, "response")
211
+ if S.ismap(response), do: S.setprop(node, "response", neutral_response(response))
212
+
213
+ S.delprop(node, "client")
214
+ S.delprop(node, "utility")
215
+ node
216
+ end
217
+
218
+ # A result that IS a result node answers in the corpus's own spelling.
219
+ defp neutralise(out) do
220
+ if S.ismap(out) and S.getprop(out, "status_text") != nil, do: neutral_result(out), else: out
221
+ end
222
+
223
+ # --- the corpus ----------------------------------------------------------
224
+
225
+ test "the primary corpus runs through the vendored omni engine", %{run: run, sdk: sdk} do
226
+ O.reset_cases()
227
+
228
+ spec = run.spec
229
+
230
+ base = [sdk: sdk]
231
+
232
+ # A ctx-style subject: materialise, run, publish the observable state.
233
+ ctxrun = fn args, opts, fun ->
234
+ node = argnode(args, 0)
235
+ ctx = livectx(node, opts)
236
+ out = unwrap(fun.(ctx))
237
+ sync(node, ctx)
238
+ out
239
+ end
240
+
241
+ # Look up one corpus section and drive it. The section name rides along as
242
+ # omni's failure LABEL, so a failing entry names the section it came from
243
+ # rather than the run.
244
+ runsection = fn name, subject ->
245
+ run.runsetflags.(section(spec, name), %{name: "primary.#{name}"}, subject)
246
+ end
247
+
248
+ runsection.("done", fn args -> ctxrun.(args, base, &U.done/1) end)
249
+
250
+ # makeContext takes a PLAIN map and returns a context; it needs no client
251
+ # and no utility dispatch. Handing it a live ctx would copy the client
252
+ # through, and the walk back out would then follow client -> rootctx ->
253
+ # client.
254
+ runsection.("makeContext", fn args ->
255
+ ctxmap = argnode(args, 0)
256
+ out = ProjectName.Context.new(ctxmap, nil)
257
+ S.delprop(out, "client")
258
+ S.delprop(out, "utility")
259
+ S.delprop(out, "config")
260
+ S.delprop(out, "opmap")
261
+ out
262
+ end)
263
+
264
+ runsection.("makeError", fn args ->
265
+ node = argnode(args, 0)
266
+ ctx = livectx(node, base)
267
+ out = unwrap(U.make_error(ctx, Enum.at(args, 1)))
268
+ sync(node, ctx)
269
+ out
270
+ end)
271
+
272
+ runsection.("makeOptions", fn args ->
273
+ vin = argnode(args, 0)
274
+ ctx = livectx(S.jm([]), base)
275
+ S.setprop(ctx, "config", S.getprop(vin, "config"))
276
+ S.setprop(ctx, "options", S.getprop(vin, "options"))
277
+ unwrap(U.make_options(ctx))
278
+ end)
279
+
280
+ runsection.("makeRequest", fn args -> ctxrun.(args, base, &U.make_request/1) end)
281
+ runsection.("makeResponse", fn args -> ctxrun.(args, base, &U.make_response/1) end)
282
+
283
+ # makeSpec and prepareAuth are configured by their OWN DEF.setup.a block,
284
+ # not by the client's default options - the corpus supplies the base URL
285
+ # and the api key the cases assert on. prepare_auth reads its options off
286
+ # the CLIENT (as the reference does, via client.options()), so the section
287
+ # gets a client built from the same block.
288
+ specsdk = ProjectName.test(nil, setup_opts(spec, "makeSpec"))
289
+ specopts = [sdk: specsdk, client: true]
290
+
291
+ runsection.("makeSpec", fn args -> ctxrun.(args, specopts, &U.make_spec/1) end)
292
+
293
+ runsection.("makeUrl", fn args -> ctxrun.(args, base, &U.make_url/1) end)
294
+
295
+ runsection.("operator", fn args ->
296
+ op = ProjectName.Operation.new(argnode(args, 0))
297
+
298
+ S.jm([
299
+ "entity", S.getprop(op, "entity"),
300
+ "input", S.getprop(op, "input"),
301
+ "name", S.getprop(op, "name"),
302
+ "points", S.getprop(op, "points")
303
+ ])
304
+ end)
305
+
306
+ runsection.("param", fn args ->
307
+ node = argnode(args, 0)
308
+ ctx = livectx(node, base)
309
+ out = unwrap(U.param(ctx, Enum.at(args, 1)))
310
+ sync(node, ctx)
311
+ out
312
+ end)
313
+
314
+ authsdk = ProjectName.test(nil, setup_opts(spec, "prepareAuth"))
315
+ authopts = [sdk: authsdk, client: true]
316
+
317
+ runsection.("prepareAuth", fn args -> ctxrun.(args, authopts, &U.prepare_auth/1) end)
318
+ runsection.("prepareBody", fn args -> ctxrun.(args, base, &U.prepare_body/1) end)
319
+
320
+ runsection.("prepareHeaders", fn args ->
321
+ ctxrun.(args, [sdk: sdk, client: true], &U.prepare_headers/1)
322
+ end)
323
+
324
+ runsection.("prepareMethod", fn args -> ctxrun.(args, base, &U.prepare_method/1) end)
325
+ runsection.("prepareParams", fn args -> ctxrun.(args, base, &U.prepare_params/1) end)
326
+ runsection.("preparePath", fn args -> ctxrun.(args, base, &U.prepare_path/1) end)
327
+ runsection.("prepareQuery", fn args -> ctxrun.(args, base, &U.prepare_query/1) end)
328
+
329
+ # A result-shaping section: the utility answers WITH the result node, which
330
+ # is published in the corpus's own spelling on both the result and the ctx.
331
+ resultrun = fn args, fun ->
332
+ node = argnode(args, 0)
333
+ ctx = livectx(node, base)
334
+ out = unwrap(fun.(ctx))
335
+ sync(node, ctx)
336
+ neutralise(out)
337
+ end
338
+
339
+ runsection.("resultBasic", fn args -> resultrun.(args, &U.result_basic/1) end)
340
+ runsection.("resultBody", fn args -> resultrun.(args, &U.result_body/1) end)
341
+ runsection.("resultHeaders", fn args -> resultrun.(args, &U.result_headers/1) end)
342
+
343
+ runsection.("transformRequest", fn args -> ctxrun.(args, base, &U.transform_request/1) end)
344
+ runsection.("transformResponse", fn args -> ctxrun.(args, base, &U.transform_response/1) end)
22
345
 
23
- IO.puts("\nPRIMARY CORPUS: PASS #{pass} FAIL #{fail}")
346
+ ran = O.cases()
347
+ IO.puts("\nPRIMARY CORPUS: CASES #{ran} (vendored omni)")
24
348
 
25
- # A run that executes nothing is not a pass. The corpus is the point.
26
- assert pass > 0, "the primary corpus executed no cases"
27
- assert fail == 0
349
+ # A run that executes nothing is not a pass. A FLOOR, so the corpus can
350
+ # grow without editing this line, and a section that stopped running
351
+ # trips it.
352
+ assert ran >= 67, "the primary corpus executed only #{ran} cases"
28
353
  end
29
354
  end