@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,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-20260904-1610-0 (dart/lib/omni.dart)
2
+ // Source: https://github.com/voxgig/omni @ 8c3e1b573a8d35796f7fc45e3226b977023cabf7 [tag: sdk-20260904-1610-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';