@voxgig/sdkgen 4.8.2 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/doctor.d.ts +1 -0
  3. package/dist/action/doctor.js +50 -2
  4. package/dist/action/doctor.js.map +1 -1
  5. package/dist/helpers/naming.js +4 -2
  6. package/dist/helpers/naming.js.map +1 -1
  7. package/dist/tsconfig.tsbuildinfo +1 -1
  8. package/model/sdkgen.aon +21 -0
  9. package/package.json +1 -1
  10. package/project/.sdk/model/feature/secrets.aon +120 -18
  11. package/project/.sdk/model/target/c.aon +10 -0
  12. package/project/.sdk/model/target/clojure.aon +13 -0
  13. package/project/.sdk/model/target/cpp.aon +10 -0
  14. package/project/.sdk/model/target/csharp.aon +9 -0
  15. package/project/.sdk/model/target/dart.aon +10 -0
  16. package/project/.sdk/model/target/elixir.aon +9 -0
  17. package/project/.sdk/model/target/go.aon +13 -0
  18. package/project/.sdk/model/target/java.aon +9 -0
  19. package/project/.sdk/model/target/js.aon +7 -0
  20. package/project/.sdk/model/target/kotlin.aon +9 -0
  21. package/project/.sdk/model/target/lean.aon +17 -0
  22. package/project/.sdk/model/target/lua.aon +8 -0
  23. package/project/.sdk/model/target/ocaml.aon +9 -0
  24. package/project/.sdk/model/target/perl.aon +8 -0
  25. package/project/.sdk/model/target/php.aon +8 -0
  26. package/project/.sdk/model/target/py.aon +13 -0
  27. package/project/.sdk/model/target/rb.aon +8 -0
  28. package/project/.sdk/model/target/rust.aon +10 -0
  29. package/project/.sdk/model/target/scala.aon +21 -2
  30. package/project/.sdk/model/target/swift.aon +18 -0
  31. package/project/.sdk/model/target/ts.aon +13 -0
  32. package/project/.sdk/model/target/zig.aon +9 -0
  33. package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
  34. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
  35. package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
  36. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
  37. package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
  38. package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
  39. package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
  40. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
  41. package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
  42. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
  43. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
  44. package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
  45. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
  46. package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
  47. package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
  48. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
  49. package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
  50. package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
  51. package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
  52. package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
  53. package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
  54. package/project/.sdk/src/cmp/zig/Package_zig.ts +15 -11
  55. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +3 -3
  56. package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +3 -3
  57. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +3 -3
  58. package/project/.sdk/src/cmp/zig/utility_zig.ts +50 -1
  59. package/project/.sdk/tm/c/Makefile +38 -3
  60. package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
  61. package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
  62. package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
  63. package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
  64. package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
  65. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
  66. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
  67. package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
  68. package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
  69. package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
  70. package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
  71. package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
  72. package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
  73. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
  74. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
  75. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
  76. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
  77. package/project/.sdk/tm/cpp/Makefile +5 -1
  78. package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
  79. package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
  80. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
  81. package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
  82. package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
  83. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
  84. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
  85. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
  86. package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
  87. package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
  88. package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
  89. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
  90. package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
  91. package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
  92. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
  93. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
  94. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
  95. package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
  96. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
  97. package/project/.sdk/tm/dart/test/omni.dart +520 -0
  98. package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
  99. package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
  100. package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
  101. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
  102. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
  103. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
  104. package/project/.sdk/tm/elixir/Makefile +11 -3
  105. package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
  106. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
  107. package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
  108. package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
  109. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
  110. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
  111. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
  112. package/project/.sdk/tm/go/core/context.go +32 -16
  113. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
  114. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
  115. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
  116. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
  117. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
  118. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
  119. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
  120. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
  121. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
  122. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
  123. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
  124. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
  125. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
  126. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
  127. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
  128. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
  129. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
  130. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
  131. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
  132. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
  133. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
  134. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +208 -0
  135. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
  136. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +150 -0
  137. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
  138. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
  139. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
  140. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +442 -0
  141. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +714 -0
  142. package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
  143. package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
  144. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
  145. package/project/.sdk/tm/go/test/omni/omni.go +902 -0
  146. package/project/.sdk/tm/go/test/omni/util.go +381 -0
  147. package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
  148. package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
  149. package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
  150. package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
  151. package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
  152. package/project/.sdk/tm/go/utility/make_options.go +8 -1
  153. package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
  154. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
  155. package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
  156. package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
  157. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
  158. package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
  159. package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
  160. package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
  161. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
  162. package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
  163. package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
  164. package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
  165. package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
  166. package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
  167. package/project/.sdk/tm/js/test/omni.js +251 -0
  168. package/project/.sdk/tm/js/test/omni.test.js +105 -0
  169. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
  170. package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
  171. package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
  172. package/project/.sdk/tm/js/test/vendor/omni/runner.js +628 -0
  173. package/project/.sdk/tm/js/test/vendor/omni/util.js +229 -0
  174. package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
  175. package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
  176. package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
  177. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
  178. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
  179. package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
  180. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
  181. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
  182. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
  183. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
  184. package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
  185. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
  186. package/project/.sdk/tm/lean/Makefile +12 -5
  187. package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
  188. package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
  189. package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
  190. package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
  191. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
  192. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
  193. package/project/.sdk/tm/lua/test/omni.lua +456 -0
  194. package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
  195. package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
  196. package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
  197. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
  198. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
  199. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
  200. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
  201. package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
  202. package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
  203. package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
  204. package/project/.sdk/tm/ocaml/Makefile +37 -12
  205. package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
  206. package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
  207. package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
  208. package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
  209. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
  210. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
  211. package/project/.sdk/tm/perl/t/omni.pm +647 -0
  212. package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
  213. package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
  214. package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
  215. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
  216. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
  217. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
  218. package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
  219. package/project/.sdk/tm/php/test/Omni.php +691 -0
  220. package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
  221. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
  222. package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
  223. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
  224. package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
  225. package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
  226. package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
  227. package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
  228. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
  229. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
  230. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
  231. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
  232. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
  233. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
  234. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
  235. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
  236. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
  237. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
  238. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
  239. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
  240. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
  241. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
  242. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
  243. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +76 -0
  244. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
  245. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
  246. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
  247. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
  248. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
  249. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
  250. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +151 -0
  251. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
  252. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +90 -0
  253. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
  254. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
  255. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
  256. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
  257. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +475 -0
  258. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
  259. package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
  260. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
  261. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
  262. package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
  263. package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
  264. package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
  265. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
  266. package/project/.sdk/tm/py/test/omni.py +415 -0
  267. package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
  268. package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
  269. package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
  270. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
  271. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +580 -0
  272. package/project/.sdk/tm/py/test/voxgig_omni/util.py +252 -0
  273. package/project/.sdk/tm/rb/test/omni.rb +505 -0
  274. package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
  275. package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
  276. package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
  277. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
  278. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
  279. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
  280. package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
  281. package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
  282. package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
  283. package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
  284. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
  285. package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
  286. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
  287. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
  288. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
  289. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
  290. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
  291. package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
  292. package/project/.sdk/tm/scala/Makefile +16 -6
  293. package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
  294. package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
  295. package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
  296. package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
  297. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
  298. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
  299. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
  300. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
  301. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
  302. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
  303. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
  304. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
  305. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
  306. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
  307. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
  308. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
  309. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
  310. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
  311. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
  312. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
  313. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
  314. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
  315. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
  316. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
  317. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
  318. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
  319. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
  320. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
  321. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
  322. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
  323. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
  324. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
  325. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
  326. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
  327. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
  328. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
  329. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
  330. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
  331. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
  332. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
  333. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
  334. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
  335. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
  336. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
  337. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
  338. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
  339. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
  340. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
  341. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
  342. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
  343. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
  344. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
  345. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
  346. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
  347. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
  348. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
  349. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
  350. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
  351. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
  352. package/project/.sdk/tm/ts/test/omni.ts +104 -32
  353. package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
  354. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
  355. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
  356. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
  357. package/project/.sdk/tm/zig/Makefile +15 -1
  358. package/project/.sdk/tm/zig/build.zig +23 -5
  359. package/project/.sdk/tm/zig/core/helpers.zig +52 -11
  360. package/project/.sdk/tm/zig/core/mem.zig +17 -1
  361. package/project/.sdk/tm/zig/core/utility.zig +23 -19
  362. package/project/.sdk/tm/zig/feature/audit.zig +2 -2
  363. package/project/.sdk/tm/zig/feature/cache.zig +2 -2
  364. package/project/.sdk/tm/zig/feature/debug.zig +5 -5
  365. package/project/.sdk/tm/zig/feature/netsim.zig +2 -2
  366. package/project/.sdk/tm/zig/feature/paging.zig +2 -2
  367. package/project/.sdk/tm/zig/feature/proxy.zig +15 -8
  368. package/project/.sdk/tm/zig/feature/streaming.zig +5 -5
  369. package/project/.sdk/tm/zig/feature/support.zig +3 -3
  370. package/project/.sdk/tm/zig/feature/telemetry.zig +5 -5
  371. package/project/.sdk/tm/zig/feature/test.zig +10 -5
  372. package/project/.sdk/tm/zig/test/fh.zig +10 -10
  373. package/project/.sdk/tm/zig/test/gotcha_test.zig +5 -5
  374. package/project/.sdk/tm/zig/test/omniresolver.zig +515 -0
  375. package/project/.sdk/tm/zig/test/omnismoke_test.zig +284 -0
  376. package/project/.sdk/tm/zig/test/pipeline_test.zig +8 -8
  377. package/project/.sdk/tm/zig/test/primary_utility_test.zig +145 -155
  378. package/project/.sdk/tm/zig/test/struct_corpus.zig +264 -187
  379. package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1314 -0
  380. package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +446 -0
  381. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +7 -4
  382. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +356 -157
  383. package/project/sdkgen-package.json +1 -1
  384. package/src/action/doctor.ts +66 -2
  385. package/src/helpers/naming.ts +4 -2
  386. package/project/.sdk/tm/c/tests/runner.h +0 -274
  387. package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
  388. package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
  389. package/project/.sdk/tm/dart/test/runner.dart +0 -406
  390. package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
  391. package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
  392. package/project/.sdk/tm/go/test/runner_test.go +0 -629
  393. package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
  394. package/project/.sdk/tm/java/test/StructRunner.java +0 -281
  395. package/project/.sdk/tm/js/test/runner.js +0 -387
  396. package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
  397. package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
  398. package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
  399. package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
  400. package/project/.sdk/tm/php/test/StructRunner.php +0 -275
  401. package/project/.sdk/tm/py/test/struct_runner.py +0 -411
  402. package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
  403. package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
  404. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
  405. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
  406. package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
  407. package/project/.sdk/tm/zig/test/struct_runner.zig +0 -464
@@ -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