@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,20 +1,192 @@
1
1
  // VERSION: @voxgig/struct 0.0.10 (dart port)
2
- // Drives the scaffold's shared struct corpus (../.sdk/test/test.json,
3
- // group "struct") through the vendored struct port, reached via the SDK's
4
- // utility surface — mirroring ts test/utility/StructUtility.test.ts.
2
+ // Drives the scaffold's shared struct corpus (../.sdk/test/test.json, root
3
+ // key "struct") through the vendored struct port, reached via the SDK's
4
+ // utility surface — mirroring ts test/utility/StructUtility.test.ts and the
5
+ // java target's StructCorpusTest.
6
+ //
7
+ // The engine is the VENDORED @voxgig/omni runner, driven through
8
+ // test/omni.dart. It supersedes test/struct_corpus.dart, the second,
9
+ // independent runner this suite used to carry (its own fixJson, eqv,
10
+ // matchval, doMatch and record/count loop — 531 lines that could and did
11
+ // drift from the shared semantics).
12
+ //
13
+ // Two behavioural changes come with the engine swap, both deliberate:
14
+ //
15
+ // - A failing entry now THROWS, with the section, the index and the entry
16
+ // named, instead of being counted into a tally. The first failure in a
17
+ // category stops that category's case; the other categories still run.
18
+ //
19
+ // - A missing or EMPTY section FAILS. The retired runner skipped one
20
+ // silently: `sentinels.*` had not existed in the corpus for some time and
21
+ // its six drive sites were running zero assertions while reporting PASS.
22
+ // They are gone; the corpus's `nullsem` group takes their place below.
5
23
 
6
24
  import 'harness.dart';
7
- import 'runner.dart' show resolveTestFile;
8
- import 'struct_corpus.dart' as corpus;
25
+ import 'omni.dart';
9
26
 
10
27
  import '../lib/ProjectNameSDK.dart';
28
+ import '../lib/utility/voxgig_struct.dart' as s;
11
29
 
12
30
  const TEST_JSON_FILE = '../.sdk/test/test.json';
13
31
 
32
+ Run? _runner;
33
+
34
+ Run _run() {
35
+ if (null == _runner) {
36
+ final make = makeRunner(TEST_JSON_FILE, ProjectNameSDK.test());
37
+ final run = make('struct');
38
+ ok(null != run.spec, 'struct section not found in ' + TEST_JSON_FILE);
39
+ _runner = run;
40
+ }
41
+ return _runner!;
42
+ }
43
+
44
+ // A getter, not a field: every read must go through _run(), or the first
45
+ // section driven in a case reads a spec the lazy setup has not built yet.
46
+ dynamic get _spec => _run().spec;
47
+
48
+ // ---------------------------------------------------------------------------
49
+ // Drive helpers
50
+ // ---------------------------------------------------------------------------
51
+
52
+ dynamic _vget(dynamic vin, String key) =>
53
+ (vin is Map && vin.containsKey(key)) ? vin[key] : null;
54
+
55
+ bool _vhas(dynamic vin, String key) => vin is Map && vin.containsKey(key);
56
+
57
+ // omni.dart hands a zero-argument entry the struct port's own no-value
58
+ // sentinel (test/omni.dart, decision 4). Only typify/stringify/pathify know
59
+ // what to do with it; every other section wants the port's single `null`,
60
+ // which is exactly what the retired runner passed.
61
+ dynamic _plain(dynamic val) => identical(val, s.pathifyNoArg) ? null : val;
62
+
63
+ // Drive one corpus section. A missing, non-set or EMPTY section fails here,
64
+ // before any subject runs: a renamed fixture must not report PASS over zero
65
+ // assertions.
66
+ Future<void> _sec(String cat, String name, bool nulls,
67
+ dynamic Function(dynamic) subject,
68
+ {bool noarg = false}) async {
69
+ final catspec = s.getprop(_spec, cat);
70
+ ok(null != catspec,
71
+ 'struct corpus category missing: ' + cat + ' - check .sdk/test/struct/');
72
+
73
+ final secspec = s.getprop(catspec, name);
74
+ ok(null != secspec,
75
+ 'struct corpus section missing: ' + cat + '.' + name +
76
+ ' - check .sdk/test/struct/');
77
+
78
+ final testset = s.getprop(secspec, 'set');
79
+ ok(testset is List && testset.isNotEmpty,
80
+ 'struct corpus section is EMPTY: ' + cat + '.' + name +
81
+ ' - zero cases would run');
82
+
83
+ await _run().runsetflags(secspec, Flags(nulls: nulls, name: cat + '.' + name),
84
+ (dynamic val) => subject(noarg ? val : _plain(val)));
85
+ }
86
+
87
+ // A section that is ONE case rather than a set (merge.basic, inject.basic,
88
+ // transform.basic): wrapped into a one-entry set so the same engine, the
89
+ // same normalisation and the same failure text apply.
90
+ Future<void> _one(String cat, String name,
91
+ dynamic Function(dynamic) subject) async {
92
+ final catspec = s.getprop(_spec, cat);
93
+ ok(null != catspec,
94
+ 'struct corpus category missing: ' + cat + ' - check .sdk/test/struct/');
95
+
96
+ final node = s.getprop(catspec, name);
97
+ ok(node is Map && node.containsKey('in'),
98
+ 'struct corpus single-case section missing: ' + cat + '.' + name);
99
+
100
+ await _run().runsetflags({
101
+ 'set': [node]
102
+ }, Flags(name: cat + '.' + name), (dynamic val) => subject(_plain(val)));
103
+ }
104
+
105
+ // ---------------------------------------------------------------------------
106
+ // Subjects that need more than one expression
107
+ // ---------------------------------------------------------------------------
108
+
109
+ dynamic _walkCopySubject(dynamic vin) {
110
+ var cur = <dynamic>[null];
111
+ walkcopy(key, v, parent, path) {
112
+ if (key == null) {
113
+ cur[0] = [
114
+ s.ismap(v) ? <String, dynamic>{} : (s.islist(v) ? <dynamic>[] : v)
115
+ ];
116
+ return v;
117
+ }
118
+ var i = s.size(path);
119
+ dynamic nv;
120
+ if (s.isnode(v)) {
121
+ var c = cur[0] as List;
122
+ while (c.length <= i) {
123
+ c.add(null);
124
+ }
125
+ nv = s.ismap(v) ? <String, dynamic>{} : <dynamic>[];
126
+ c[i] = nv;
127
+ } else {
128
+ nv = v;
129
+ }
130
+ s.setprop(s.getelem(cur[0], i - 1), key, nv);
131
+ return v;
132
+ }
133
+
134
+ s.walk(vin, before: walkcopy);
135
+ return s.getelem(cur[0], 0);
136
+ }
137
+
138
+ dynamic _walkDepthSubject(dynamic vin) {
139
+ var state = <String, dynamic>{'top': null, 'cur': null};
140
+ copy(key, v, parent, path) {
141
+ if (key == null || s.isnode(v)) {
142
+ var child = s.islist(v) ? <dynamic>[] : <String, dynamic>{};
143
+ if (key == null) {
144
+ state['top'] = child;
145
+ state['cur'] = child;
146
+ } else {
147
+ s.setprop(state['cur'], key, child);
148
+ state['cur'] = child;
149
+ }
150
+ } else {
151
+ s.setprop(state['cur'], key, v);
152
+ }
153
+ return v;
154
+ }
155
+
156
+ s.walk(_vget(vin, 'src'), before: copy, maxdepth: _vget(vin, 'maxdepth'));
157
+ return state['top'];
158
+ }
159
+
160
+ dynamic _walkLogSubject(dynamic vin) {
161
+ var log = <dynamic>[];
162
+ walklog(key, v, parent, path) {
163
+ s.setprop(
164
+ log,
165
+ s.size(log),
166
+ 'k=' +
167
+ (key == null ? s.stringify() : s.stringify(key)) +
168
+ ', v=' +
169
+ s.stringify(v) +
170
+ ', p=' +
171
+ (parent == null ? s.stringify() : s.stringify(parent)) +
172
+ ', t=' +
173
+ s.pathify(path));
174
+ return v;
175
+ }
176
+
177
+ s.walk(vin, after: walklog);
178
+ return log;
179
+ }
180
+
181
+ // ---------------------------------------------------------------------------
182
+ // The suite
183
+ // ---------------------------------------------------------------------------
184
+
14
185
  void tests() {
15
186
  describe('struct', () {
187
+
16
188
  test('exists', (t) {
17
- final s = ProjectNameSDK.test().utility().struct;
189
+ final u = ProjectNameSDK.test().utility().struct;
18
190
 
19
191
  const fns = [
20
192
  'clone', 'delprop', 'escre', 'escurl', 'filter',
@@ -28,14 +200,269 @@ void tests() {
28
200
  ];
29
201
 
30
202
  for (final fn in fns) {
31
- ok(null != s.byName(fn), fn + ' should be a function');
203
+ ok(null != u.byName(fn), fn + ' should be a function');
204
+ }
205
+ });
206
+
207
+ test('minor', (t) async {
208
+ await _sec('minor', 'isnode', true, (v) => s.isnode(v));
209
+ await _sec('minor', 'ismap', true, (v) => s.ismap(v));
210
+ await _sec('minor', 'islist', true, (v) => s.islist(v));
211
+ await _sec('minor', 'iskey', false, (v) => s.iskey(v));
212
+ await _sec('minor', 'strkey', false, (v) => s.strkey(v));
213
+ await _sec('minor', 'isempty', false, (v) => s.isempty(v));
214
+ await _sec('minor', 'isfunc', true, (v) => s.isfunc(v));
215
+ await _sec('minor', 'clone', false, (v) => s.clone(v));
216
+ await _sec('minor', 'escre', true, (v) => s.escre(v));
217
+ await _sec('minor', 'escurl', true, (v) => s.escurl(v));
218
+
219
+ await _sec('minor', 'stringify', false, (vin) => _vhas(vin, 'val')
220
+ ? s.stringify(_vget(vin, 'val'), _vget(vin, 'max'))
221
+ : s.stringify());
222
+
223
+ await _sec('minor', 'jsonify', false,
224
+ (vin) => s.jsonify(_vget(vin, 'val'), _vget(vin, 'flags')));
225
+
226
+ await _sec('minor', 'getelem', false, (vin) {
227
+ var alt = _vget(vin, 'alt');
228
+ return alt == null
229
+ ? s.getelem(_vget(vin, 'val'), _vget(vin, 'key'))
230
+ : s.getelem(_vget(vin, 'val'), _vget(vin, 'key'), alt);
231
+ });
232
+
233
+ await _sec('minor', 'delprop', true,
234
+ (vin) => s.delprop(_vget(vin, 'parent'), _vget(vin, 'key')));
235
+
236
+ await _sec('minor', 'size', false, (v) => s.size(v));
237
+
238
+ await _sec('minor', 'slice', false,
239
+ (vin) => s.slice(_vget(vin, 'val'), _vget(vin, 'start'),
240
+ _vget(vin, 'end')));
241
+
242
+ await _sec('minor', 'pad', false,
243
+ (vin) => s.pad(_vget(vin, 'val'), _vget(vin, 'pad'),
244
+ _vget(vin, 'char')));
245
+
246
+ await _sec('minor', 'pathify', false, (vin) => _vhas(vin, 'path')
247
+ ? s.pathify(_vget(vin, 'path'), _vget(vin, 'from'))
248
+ : s.pathify(s.pathifyNoArg, _vget(vin, 'from')));
249
+
250
+ await _sec('minor', 'items', true, (v) => s.items(v));
251
+
252
+ await _sec('minor', 'getprop', false, (vin) {
253
+ var alt = _vget(vin, 'alt');
254
+ return alt == null
255
+ ? s.getprop(_vget(vin, 'val'), _vget(vin, 'key'))
256
+ : s.getprop(_vget(vin, 'val'), _vget(vin, 'key'), alt);
257
+ });
258
+
259
+ await _sec('minor', 'setprop', true,
260
+ (vin) => s.setprop(_vget(vin, 'parent'), _vget(vin, 'key'),
261
+ _vget(vin, 'val')));
262
+
263
+ await _sec('minor', 'haskey', false,
264
+ (vin) => s.haskey(_vget(vin, 'src'), _vget(vin, 'key')));
265
+
266
+ await _sec('minor', 'keysof', true, (v) => s.keysof(v));
267
+
268
+ await _sec('minor', 'join', false,
269
+ (vin) => s.join(_vget(vin, 'val'), _vget(vin, 'sep'),
270
+ _vget(vin, 'url')));
271
+
272
+ // The one section that must see a zero-argument entry AS one: the
273
+ // corpus distinguishes `typify()` (T_noval) from `typify(null)`
274
+ // (T_null), so the port's no-value sentinel goes through unmapped.
275
+ await _sec('minor', 'typify', false, (v) => s.typify(v), noarg: true);
276
+
277
+ await _sec('minor', 'setpath', false,
278
+ (vin) => s.setpath(_vget(vin, 'store'), _vget(vin, 'path'),
279
+ _vget(vin, 'val')));
280
+
281
+ await _sec('minor', 'filter', true, (vin) {
282
+ bool Function(List<dynamic>) check;
283
+ var c = _vget(vin, 'check');
284
+ if (c == 'gt3') {
285
+ check = (n) => n[1] is num && n[1] > 3;
286
+ } else if (c == 'lt3') {
287
+ check = (n) => n[1] is num && n[1] < 3;
288
+ } else {
289
+ check = (n) => false;
290
+ }
291
+ return s.filter(_vget(vin, 'val'), check);
292
+ });
293
+
294
+ await _sec('minor', 'typename', true,
295
+ (v) => s.typename(v is num ? v.toInt() : 0));
296
+
297
+ await _sec('minor', 'flatten', true, (vin) {
298
+ var d = _vget(vin, 'depth');
299
+ return s.flatten(_vget(vin, 'val'), d is num ? d.toInt() : 1);
300
+ });
301
+ });
302
+
303
+ test('walk', (t) async {
304
+ // walk.log is one case whose `out` carries three logs; the corpus has
305
+ // always been driven on the `after` walk alone (before/both remain an
306
+ // open coverage gap, as they were under the retired runner).
307
+ final walks = s.getprop(_spec, 'walk');
308
+ ok(null != walks, 'struct corpus category missing: walk');
309
+ final log = s.getprop(walks, 'log');
310
+ ok(null != s.getpath(log, ['out', 'after']),
311
+ 'struct corpus section missing: walk.log.out.after');
312
+ await _run().runsetflags({
313
+ 'set': [
314
+ {'in': s.getprop(log, 'in'), 'out': s.getpath(log, ['out', 'after'])}
315
+ ]
316
+ }, Flags(name: 'walk.log'), (dynamic vin) => _walkLogSubject(vin));
317
+
318
+ await _sec('walk', 'basic', true, (vin) => s.walk(vin,
319
+ after: (k, v, p, path) {
320
+ if (v is String) {
321
+ return v + '~' + (path as List).map((e) => s.jsString(e)).join('.');
322
+ }
323
+ return v;
324
+ }));
325
+
326
+ await _sec('walk', 'copy', true, _walkCopySubject);
327
+ await _sec('walk', 'depth', false, _walkDepthSubject);
328
+ });
329
+
330
+ test('merge', (t) async {
331
+ await _one('merge', 'basic', (vin) => s.merge(s.clone(vin)));
332
+ await _sec('merge', 'cases', true, (v) => s.merge(v));
333
+ await _sec('merge', 'array', true, (v) => s.merge(v));
334
+ await _sec('merge', 'integrity', true, (v) => s.merge(v));
335
+ await _sec('merge', 'depth', true,
336
+ (vin) => s.merge(_vget(vin, 'val'), _vget(vin, 'depth')));
337
+ });
338
+
339
+ test('getpath', (t) async {
340
+ await _sec('getpath', 'basic', true,
341
+ (vin) => s.getpath(_vget(vin, 'store'), _vget(vin, 'path')));
342
+
343
+ await _sec('getpath', 'relative', true, (vin) {
344
+ var dp = _vget(vin, 'dpath');
345
+ var dpath = dp is String ? dp.split('.') : null;
346
+ var injdef = {'dparent': _vget(vin, 'dparent'), 'dpath': dpath};
347
+ return s.getpath(_vget(vin, 'store'), _vget(vin, 'path'), injdef);
348
+ });
349
+
350
+ await _sec('getpath', 'special', true,
351
+ (vin) => s.getpath(_vget(vin, 'store'), _vget(vin, 'path'),
352
+ _vget(vin, 'inj')));
353
+
354
+ await _sec('getpath', 'handler', true, (vin) {
355
+ var store = {'\$TOP': _vget(vin, 'store'), '\$FOO': () => 'foo'};
356
+ handler(inj, val, ref, st) => s.isfunc(val) ? val() : val;
357
+ return s.getpath(store, _vget(vin, 'path'), {'handler': handler});
358
+ });
359
+ });
360
+
361
+ test('inject', (t) async {
362
+ await _one(
363
+ 'inject',
364
+ 'basic',
365
+ (vin) => s.inject(s.clone(s.getprop(vin, 'val')),
366
+ s.clone(s.getprop(vin, 'store'))));
367
+
368
+ await _sec('inject', 'string', true,
369
+ (vin) => s.inject(_vget(vin, 'val'), _vget(vin, 'store'),
370
+ {'modify': nullModifier, 'extra': _vget(vin, 'current')}));
371
+
372
+ await _sec('inject', 'deep', true,
373
+ (vin) => s.inject(_vget(vin, 'val'), _vget(vin, 'store')));
374
+ });
375
+
376
+ test('transform', (t) async {
377
+ await _one('transform', 'basic',
378
+ (vin) => s.transform(s.getprop(vin, 'data'), s.getprop(vin, 'spec')));
379
+
380
+ for (var gn in ['paths', 'cmds', 'each', 'pack', 'ref']) {
381
+ await _sec('transform', gn, true,
382
+ (vin) => s.transform(_vget(vin, 'data'), _vget(vin, 'spec')));
383
+ }
384
+
385
+ await _sec('transform', 'modify', true, (vin) {
386
+ modifier(v, key, parent, inj) {
387
+ if (v is String && key != null && parent != null) {
388
+ s.setprop(parent, key, '@' + v);
389
+ }
390
+ }
391
+
392
+ return s.transform(_vget(vin, 'data'), _vget(vin, 'spec'),
393
+ {'modify': modifier, 'extra': _vget(vin, 'store')});
394
+ });
395
+
396
+ await _sec('transform', 'format', false,
397
+ (vin) => s.transform(_vget(vin, 'data'), _vget(vin, 'spec')));
398
+
399
+ await _sec('transform', 'apply', true,
400
+ (vin) => s.transform(_vget(vin, 'data'), _vget(vin, 'spec')));
401
+ });
402
+
403
+ test('validate', (t) async {
404
+ await _sec('validate', 'basic', false,
405
+ (vin) => s.validate(_vget(vin, 'data'), _vget(vin, 'spec')));
406
+
407
+ for (var gn in ['child', 'one', 'exact']) {
408
+ await _sec('validate', gn, true,
409
+ (vin) => s.validate(_vget(vin, 'data'), _vget(vin, 'spec')));
32
410
  }
411
+
412
+ await _sec('validate', 'invalid', false,
413
+ (vin) => s.validate(_vget(vin, 'data'), _vget(vin, 'spec')));
414
+
415
+ await _sec('validate', 'special', true,
416
+ (vin) => s.validate(_vget(vin, 'data'), _vget(vin, 'spec'),
417
+ _vget(vin, 'inj')));
33
418
  });
34
419
 
35
- test('corpus', (t) {
36
- final nfail = corpus.structCorpus(resolveTestFile(TEST_JSON_FILE));
37
- equal(0, nfail, 'struct corpus failures');
38
- ok(0 < corpus.structCorpusPassCount(), 'struct corpus must actually run');
420
+ test('select', (t) async {
421
+ for (var gn in ['basic', 'operators', 'edge', 'alts']) {
422
+ await _sec('select', gn, true,
423
+ (vin) => s.select(_vget(vin, 'obj'), _vget(vin, 'query')));
424
+ }
39
425
  });
426
+
427
+ // Does a PRESENT key holding a JSON null read as "no value"? Opt-in per
428
+ // project: create-sdkgen ships the section, an older project corpus may
429
+ // predate it — say so OUT LOUD as a skip rather than passing vacuously.
430
+ // Every lane runs {null: false}: without the flag the runner rewrites
431
+ // every null to '__NULL__' and the section asserts nothing about null.
432
+ test('nullsem', (t) async {
433
+ final nullsem = s.getprop(_spec, 'nullsem');
434
+ if (null == nullsem) {
435
+ t.skip('corpus predates struct.nullsem - refresh .sdk/test/struct '
436
+ 'from create-sdkgen');
437
+ return;
438
+ }
439
+
440
+ await _sec('nullsem', 'getprop', false, (vin) => _vhas(vin, 'alt')
441
+ ? s.getprop(_vget(vin, 'val'), _vget(vin, 'key'), _vget(vin, 'alt'))
442
+ : s.getprop(_vget(vin, 'val'), _vget(vin, 'key')));
443
+
444
+ await _sec('nullsem', 'getelem', false, (vin) => _vhas(vin, 'alt')
445
+ ? s.getelem(_vget(vin, 'val'), _vget(vin, 'key'), _vget(vin, 'alt'))
446
+ : s.getelem(_vget(vin, 'val'), _vget(vin, 'key')));
447
+
448
+ await _sec('nullsem', 'getpath', false,
449
+ (vin) => s.getpath(_vget(vin, 'store'), _vget(vin, 'path')));
450
+
451
+ await _sec('nullsem', 'haskey', false,
452
+ (vin) => s.haskey(_vget(vin, 'src'), _vget(vin, 'key')));
453
+
454
+ await _sec('nullsem', 'keysof', false, (v) => s.keysof(v));
455
+ });
456
+
457
+ // The vacuity guard the retired runner spelled as `0 < passCount`: a
458
+ // suite that stopped executing the corpus would otherwise stay green.
459
+ test('corpus-cases', (t) {
460
+ final cases = _run().caseCount;
461
+ print('struct corpus: cases ' + cases.toString());
462
+ ok(1000 < cases,
463
+ 'struct corpus drove only ' + cases.toString() +
464
+ ' cases - the corpus stopped running');
465
+ });
466
+
40
467
  });
41
468
  }
@@ -0,0 +1,7 @@
1
+ // VENDORED: @voxgig/omni sdk-20260907-0029-0 (dart/lib/omni.dart)
2
+ // Source: https://github.com/voxgig/omni @ 274708cc2d12b21707d975543953f845f8444be0 [tag: sdk-20260907-0029-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ // voxgig_omni - shared multi-language test runner.
5
+
6
+ export 'runner.dart';
7
+ export 'util.dart';