@voxgig/sdkgen 4.8.2 → 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 +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/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
@@ -5,6 +5,7 @@
5
5
  package sdktest
6
6
 
7
7
  import (
8
+ "encoding/json"
8
9
  "fmt"
9
10
  "math"
10
11
  "reflect"
@@ -58,11 +59,11 @@ func TestStructUtility(t *testing.T) {
58
59
  "getelem": voxgigstruct.GetElem,
59
60
  "getprop": voxgigstruct.GetProp,
60
61
 
61
- "getpath": voxgigstruct.GetPath,
62
- "haskey": voxgigstruct.HasKey,
63
- "inject": voxgigstruct.Inject,
64
- "isempty": voxgigstruct.IsEmpty,
65
- "isfunc": voxgigstruct.IsFunc,
62
+ "getpath": voxgigstruct.GetPath,
63
+ "haskey": voxgigstruct.HasKey,
64
+ "inject": voxgigstruct.Inject,
65
+ "isempty": voxgigstruct.IsEmpty,
66
+ "isfunc": voxgigstruct.IsFunc,
66
67
 
67
68
  "iskey": voxgigstruct.IsKey,
68
69
  "islist": voxgigstruct.IsList,
@@ -70,18 +71,18 @@ func TestStructUtility(t *testing.T) {
70
71
  "isnode": voxgigstruct.IsNode,
71
72
  "items": voxgigstruct.Items,
72
73
 
73
- "joinurl": voxgigstruct.JoinUrl,
74
- "jsonify": voxgigstruct.Jsonify,
75
- "keysof": voxgigstruct.KeysOf,
76
- "merge": voxgigstruct.Merge,
77
- "pad": voxgigstruct.Pad,
78
- "pathify": voxgigstruct.Pathify,
74
+ "joinurl": voxgigstruct.JoinUrl,
75
+ "jsonify": voxgigstruct.Jsonify,
76
+ "keysof": voxgigstruct.KeysOf,
77
+ "merge": voxgigstruct.Merge,
78
+ "pad": voxgigstruct.Pad,
79
+ "pathify": voxgigstruct.Pathify,
79
80
 
80
- "select": voxgigstruct.Select,
81
- "setpath": voxgigstruct.SetPath,
82
- "size": voxgigstruct.Size,
83
- "slice": voxgigstruct.Slice,
84
- "setprop": voxgigstruct.SetProp,
81
+ "select": voxgigstruct.Select,
82
+ "setpath": voxgigstruct.SetPath,
83
+ "size": voxgigstruct.Size,
84
+ "slice": voxgigstruct.Slice,
85
+ "setprop": voxgigstruct.SetProp,
85
86
 
86
87
  "strkey": voxgigstruct.StrKey,
87
88
  "stringify": voxgigstruct.Stringify,
@@ -349,6 +350,53 @@ func TestStructUtility(t *testing.T) {
349
350
  structRunSet(t, minorSpec["keysof"], voxgigstruct.KeysOf)
350
351
  })
351
352
 
353
+ // The struct.nullsem section: does a PRESENT key holding a JSON null
354
+ // read as "no value"? Opt-in per target (create-sdkgen ships it; an
355
+ // older project corpus may predate it - the skip below says so OUT
356
+ // LOUD rather than passing vacuously). All lanes run {null: false}.
357
+ t.Run("nullsem", func(t *testing.T) {
358
+ nullsemRaw, has := spec["nullsem"]
359
+ if !has {
360
+ t.Skip("corpus predates struct.nullsem - refresh .sdk/test/struct from create-sdkgen")
361
+ }
362
+ nullsemSpec := nullsemRaw.(map[string]any)
363
+
364
+ structRunSetFlags(t, nullsemSpec["getprop"], map[string]bool{"null": false},
365
+ func(v any) any {
366
+ m := v.(map[string]any)
367
+ alt, hasAlt := m["alt"]
368
+ if !hasAlt {
369
+ return voxgigstruct.GetProp(m["val"], m["key"])
370
+ }
371
+ return voxgigstruct.GetProp(m["val"], m["key"], alt)
372
+ })
373
+
374
+ structRunSetFlags(t, nullsemSpec["getelem"], map[string]bool{"null": false},
375
+ func(v any) any {
376
+ m := v.(map[string]any)
377
+ alt, hasAlt := m["alt"]
378
+ if !hasAlt {
379
+ return voxgigstruct.GetElem(m["val"], m["key"])
380
+ }
381
+ return voxgigstruct.GetElem(m["val"], m["key"], alt)
382
+ })
383
+
384
+ structRunSetFlags(t, nullsemSpec["getpath"], map[string]bool{"null": false},
385
+ func(v any) any {
386
+ m := v.(map[string]any)
387
+ return voxgigstruct.GetPath(m["store"], m["path"])
388
+ })
389
+
390
+ structRunSetFlags(t, nullsemSpec["haskey"], map[string]bool{"null": false},
391
+ func(v any) any {
392
+ m := v.(map[string]any)
393
+ return voxgigstruct.HasKey(m["src"], m["key"])
394
+ })
395
+
396
+ structRunSetFlags(t, nullsemSpec["keysof"], map[string]bool{"null": false},
397
+ voxgigstruct.KeysOf)
398
+ })
399
+
352
400
  t.Run("minor-filter", func(t *testing.T) {
353
401
  checkmap := map[string]func([2]any) bool{
354
402
  "gt3": func(n [2]any) bool {
@@ -1457,3 +1505,262 @@ func IsSameFunc(target any, candidate any) bool {
1457
1505
 
1458
1506
  return reflect.ValueOf(target).Pointer() == reflect.ValueOf(candidate).Pointer()
1459
1507
  }
1508
+
1509
+ // ---------------------------------------------------------------------
1510
+ // Struct-corpus SUPPORT, retained from the retired struct_runner_test.go
1511
+ // (its engine half is superseded by the vendored omni runner driven
1512
+ // through omniresolver_test.go). The StructSDK below is the client the
1513
+ // runner wraps for the struct sections; NullModifier names struct's own
1514
+ // *voxgigstruct.Injection and so cannot live in the language-neutral
1515
+ // resolver; Fdt/ToJSONString are debug helpers, not runner API.
1516
+
1517
+ type StructUtility struct {
1518
+ IsNode func(val any) bool
1519
+ Clone func(val any) any
1520
+ CloneFlags func(val any, flags map[string]bool) any
1521
+ GetPath func(store any, path any, injdefs ...*voxgigstruct.Injection) any
1522
+ Inject func(val any, store any, injdefs ...*voxgigstruct.Injection) any
1523
+ Items func(val any) [][2]any
1524
+ Stringify func(val any, maxlen ...int) string
1525
+ Walk func(val any, apply voxgigstruct.WalkApply, opts ...any) any
1526
+
1527
+ DelProp func(parent any, key any) any
1528
+ EscRe func(s string) string
1529
+ EscUrl func(s string) string
1530
+ Filter func(val any, check func([2]any) bool) []any
1531
+ Flatten func(list any, depths ...int) any
1532
+ GetDef func(val any, alt any) any
1533
+ GetElem func(val any, key any, alts ...any) any
1534
+ GetProp func(val any, key any, alts ...any) any
1535
+ HasKey func(val any, key any) bool
1536
+ IsEmpty func(val any) bool
1537
+ IsFunc func(val any) bool
1538
+ IsKey func(val any) bool
1539
+ IsList func(val any) bool
1540
+ IsMap func(val any) bool
1541
+ Join func(arr []any, args ...any) string
1542
+ Jsonify func(val any, flags ...map[string]any) string
1543
+ KeysOf func(val any) []string
1544
+ Merge func(val any, maxdepths ...int) any
1545
+ Pad func(str any, args ...any) string
1546
+ Pathify func(val any, from ...int) string
1547
+ Select func(children any, query any) []any
1548
+ SetPath func(store any, path any, val any, injdefs ...map[string]any) any
1549
+ SetProp func(parent any, key any, newval any) any
1550
+ Size func(val any) int
1551
+ Slice func(val any, args ...any) any
1552
+ StrKey func(key any) string
1553
+ Transform func(data any, spec any, injdefs ...*voxgigstruct.Injection) (any, error)
1554
+ Typify func(value any) int
1555
+ Typename func(t int) string
1556
+ Validate func(data any, spec any, injdefs ...*voxgigstruct.Injection) (any, error)
1557
+
1558
+ SKIP any
1559
+ DELETE any
1560
+
1561
+ Jm func(kv ...any) map[string]any
1562
+ Jt func(v ...any) []any
1563
+
1564
+ CheckPlacement func(modes int, ijname string, parentTypes int, inj *voxgigstruct.Injection) bool
1565
+ InjectorArgs func(argTypes []int, args []any) []any
1566
+ InjectChild func(child any, store any, inj *voxgigstruct.Injection) *voxgigstruct.Injection
1567
+ }
1568
+
1569
+ func NullModifier(
1570
+ val any,
1571
+ key any,
1572
+ parent any,
1573
+ inj *voxgigstruct.Injection,
1574
+ store any,
1575
+ ) {
1576
+ switch v := val.(type) {
1577
+ case string:
1578
+ if NULLMARK == v {
1579
+ _ = voxgigstruct.SetProp(parent, key, nil)
1580
+ } else if UNDEFMARK == v {
1581
+ _ = voxgigstruct.SetProp(parent, key, nil)
1582
+ } else if EXISTSMARK == v {
1583
+ // For EXISTSMARK, no transform needed
1584
+ } else {
1585
+ _ = voxgigstruct.SetProp(parent, key,
1586
+ strings.ReplaceAll(v, NULLMARK, "null"))
1587
+ }
1588
+ }
1589
+ }
1590
+
1591
+ func Fdt(data any) string {
1592
+ return fdti(data, "")
1593
+ }
1594
+
1595
+ func fdti(data any, indent string) string {
1596
+ result := ""
1597
+
1598
+ switch v := data.(type) {
1599
+ case map[string]any:
1600
+ result += indent + "{\n"
1601
+ for key, value := range v {
1602
+ result += fmt.Sprintf("%s \"%s\": %s", indent, key, fdti(value, indent+" "))
1603
+ }
1604
+ result += indent + "}\n"
1605
+
1606
+ case []any:
1607
+ result += indent + "[\n"
1608
+ for _, value := range v {
1609
+ result += fmt.Sprintf("%s - %s", indent, fdti(value, indent+" "))
1610
+ }
1611
+ result += indent + "]\n"
1612
+
1613
+ default:
1614
+ result += fmt.Sprintf("%v (%s)\n", v, reflect.TypeOf(v))
1615
+ }
1616
+
1617
+ return result
1618
+ }
1619
+
1620
+ func ToJSONString(data any) string {
1621
+ jsonBytes, err := json.Marshal(data)
1622
+ if err != nil {
1623
+ return ""
1624
+ }
1625
+ return string(jsonBytes)
1626
+ }
1627
+
1628
+ // StructSDK is the test SDK client for the struct runner
1629
+ type StructSDK struct {
1630
+ opts map[string]any
1631
+ utility *StructSDKUtility
1632
+ }
1633
+
1634
+ // StructSDKUtility is the utility container the resolver reaches by
1635
+ // reflection (Struct / Contextify / Check).
1636
+ type StructSDKUtility struct {
1637
+ sdk *StructSDK
1638
+ structu *StructUtility
1639
+ }
1640
+
1641
+ // Struct returns the StructUtility
1642
+ func (u *StructSDKUtility) Struct() *StructUtility {
1643
+ return u.structu
1644
+ }
1645
+
1646
+ // Contextify implements the contextify function
1647
+ func (u *StructSDKUtility) Contextify(ctxmap map[string]any) map[string]any {
1648
+ return ctxmap
1649
+ }
1650
+
1651
+ // Check implements the check function
1652
+ func (u *StructSDKUtility) Check(ctx map[string]any) map[string]any {
1653
+ zed := "ZED"
1654
+ if u.sdk.opts != nil {
1655
+ if foo, ok := u.sdk.opts["foo"]; ok && foo != nil {
1656
+ zed += fmt.Sprint(foo)
1657
+ }
1658
+ }
1659
+ zed += "_"
1660
+
1661
+ if ctx == nil {
1662
+ zed += "0"
1663
+ } else if meta, ok := ctx["meta"].(map[string]any); ok && meta != nil {
1664
+ if bar, ok := meta["bar"]; ok && bar != nil {
1665
+ zed += fmt.Sprint(bar)
1666
+ } else {
1667
+ zed += "0"
1668
+ }
1669
+ } else {
1670
+ zed += "0"
1671
+ }
1672
+
1673
+ return map[string]any{
1674
+ "zed": zed,
1675
+ }
1676
+ }
1677
+
1678
+ // NewStructSDK creates a new StructSDK instance with the given options
1679
+ func NewStructSDK(opts map[string]any) *StructSDK {
1680
+ if opts == nil {
1681
+ opts = map[string]any{}
1682
+ }
1683
+
1684
+ sdk := &StructSDK{
1685
+ opts: opts,
1686
+ }
1687
+
1688
+ // Create the StructUtility
1689
+ structUtil := &StructUtility{
1690
+ IsNode: voxgigstruct.IsNode,
1691
+ Clone: voxgigstruct.Clone,
1692
+ CloneFlags: voxgigstruct.CloneFlags,
1693
+ GetPath: voxgigstruct.GetPath,
1694
+ Inject: voxgigstruct.Inject,
1695
+ Items: voxgigstruct.Items,
1696
+ Stringify: voxgigstruct.Stringify,
1697
+ Walk: voxgigstruct.Walk,
1698
+
1699
+ DelProp: voxgigstruct.DelProp,
1700
+ EscRe: voxgigstruct.EscRe,
1701
+ EscUrl: voxgigstruct.EscUrl,
1702
+ Filter: voxgigstruct.Filter,
1703
+ Flatten: voxgigstruct.Flatten,
1704
+ GetDef: voxgigstruct.GetDef,
1705
+ GetElem: voxgigstruct.GetElem,
1706
+ GetProp: voxgigstruct.GetProp,
1707
+ HasKey: voxgigstruct.HasKey,
1708
+ IsEmpty: voxgigstruct.IsEmpty,
1709
+ IsFunc: voxgigstruct.IsFunc,
1710
+ IsKey: voxgigstruct.IsKey,
1711
+ IsList: voxgigstruct.IsList,
1712
+ IsMap: voxgigstruct.IsMap,
1713
+ Join: voxgigstruct.Join,
1714
+ Jsonify: voxgigstruct.Jsonify,
1715
+ KeysOf: voxgigstruct.KeysOf,
1716
+ Merge: voxgigstruct.Merge,
1717
+ Pad: voxgigstruct.Pad,
1718
+ Pathify: voxgigstruct.Pathify,
1719
+ Select: voxgigstruct.Select,
1720
+ SetPath: voxgigstruct.SetPath,
1721
+ SetProp: voxgigstruct.SetProp,
1722
+ Size: voxgigstruct.Size,
1723
+ Slice: voxgigstruct.Slice,
1724
+ StrKey: voxgigstruct.StrKey,
1725
+ Transform: voxgigstruct.Transform,
1726
+ Typify: voxgigstruct.Typify,
1727
+ Typename: voxgigstruct.Typename,
1728
+ Validate: voxgigstruct.Validate,
1729
+
1730
+ SKIP: voxgigstruct.SKIP,
1731
+ DELETE: voxgigstruct.DELETE,
1732
+
1733
+ Jm: voxgigstruct.Jm,
1734
+ Jt: voxgigstruct.Jt,
1735
+
1736
+ CheckPlacement: voxgigstruct.CheckPlacement,
1737
+ InjectorArgs: voxgigstruct.InjectorArgs,
1738
+ InjectChild: voxgigstruct.InjectChild,
1739
+ }
1740
+
1741
+ // Create the utility
1742
+ sdk.utility = &StructSDKUtility{
1743
+ sdk: sdk,
1744
+ structu: structUtil,
1745
+ }
1746
+
1747
+ return sdk
1748
+ }
1749
+
1750
+ // MakeTestStructSDK creates a new StructSDK instance for testing
1751
+ func MakeTestStructSDK(opts map[string]any) (*StructSDK, error) {
1752
+ return NewStructSDK(opts), nil
1753
+ }
1754
+
1755
+ // Tester creates a new StructSDK instance with options or default options
1756
+ func (s *StructSDK) Tester(opts map[string]any) (*StructSDK, error) {
1757
+ if opts == nil {
1758
+ opts = s.opts
1759
+ }
1760
+ return NewStructSDK(opts), nil
1761
+ }
1762
+
1763
+ // Utility returns the utility object
1764
+ func (s *StructSDK) Utility() *StructSDKUtility {
1765
+ return s.utility
1766
+ }
@@ -0,0 +1,294 @@
1
+ // SDK test SUPPORT: the helpers the generated entity/direct tests and the
2
+ // corpus call sites share - env loading, the sdk-test-control.json skip and
3
+ // pacing machinery, corpus access, and entity-data conversion.
4
+ //
5
+ // Split out of the retired runner_test.go (vendor-tag rollout: the corpus
6
+ // ENGINE half of that file is superseded by the vendored omni runner driven
7
+ // through the resolver in omniresolver_test.go; this support half is
8
+ // retained). Same package, same names - the emitted call sites did not move.
9
+
10
+ package sdktest
11
+
12
+ import (
13
+ "encoding/json"
14
+ "os"
15
+ "path/filepath"
16
+ "runtime"
17
+ "strings"
18
+ "sync"
19
+ "testing"
20
+
21
+ sdk "GOMODULE"
22
+ )
23
+
24
+ var envLocalOnce sync.Once
25
+
26
+ func loadEnvLocal() {
27
+ envLocalOnce.Do(func() {
28
+ _, filename, _, _ := runtime.Caller(0)
29
+ dir := filepath.Dir(filename)
30
+ envFile := filepath.Join(dir, "..", "..", ".env.local")
31
+
32
+ data, err := os.ReadFile(envFile)
33
+ if err != nil {
34
+ return
35
+ }
36
+ for _, line := range strings.Split(string(data), "\n") {
37
+ line = strings.TrimSpace(line)
38
+ if line == "" || strings.HasPrefix(line, "#") {
39
+ continue
40
+ }
41
+ parts := strings.SplitN(line, "=", 2)
42
+ if len(parts) == 2 {
43
+ key := strings.TrimSpace(parts[0])
44
+ val := strings.TrimSpace(parts[1])
45
+ os.Setenv(key, val)
46
+ }
47
+ }
48
+ })
49
+ }
50
+
51
+ func envOverride(m map[string]any) map[string]any {
52
+ if os.Getenv("PROJECTENV_TEST_LIVE") == "TRUE" ||
53
+ os.Getenv("PROJECTENV_TEST_OVERRIDE") == "TRUE" {
54
+ for key := range m {
55
+ envval := os.Getenv(key)
56
+ if envval != "" {
57
+ envval = strings.TrimSpace(envval)
58
+ if strings.HasPrefix(envval, "{") {
59
+ var parsed any
60
+ if err := json.Unmarshal([]byte(envval), &parsed); err == nil {
61
+ m[key] = parsed
62
+ continue
63
+ }
64
+ }
65
+ m[key] = envval
66
+ }
67
+ }
68
+ }
69
+
70
+ if explain := os.Getenv("PROJECTENV_TEST_EXPLAIN"); explain != "" {
71
+ m["PROJECTENV_TEST_EXPLAIN"] = explain
72
+ }
73
+
74
+ return m
75
+ }
76
+
77
+ type entityTestSetup struct {
78
+ client *sdk.ProjectNameSDK
79
+ data map[string]any
80
+ idmap map[string]any
81
+ env map[string]any
82
+ explain bool
83
+ live bool
84
+ syntheticOnly bool
85
+ now int64
86
+ }
87
+
88
+ var (
89
+ cachedTestControl map[string]any
90
+ cachedTestControlOnce sync.Once
91
+ )
92
+
93
+ // loadTestControl reads sdk-test-control.json from this test dir; caches
94
+ // after first read. Returns an empty-skip default if the file is missing
95
+ // or invalid so tests never crash on a bad config.
96
+ func loadTestControl() map[string]any {
97
+ cachedTestControlOnce.Do(func() {
98
+ _, filename, _, _ := runtime.Caller(0)
99
+ dir := filepath.Dir(filename)
100
+ ctrlPath := filepath.Join(dir, "sdk-test-control.json")
101
+ def := map[string]any{
102
+ "version": 1,
103
+ "test": map[string]any{"skip": map[string]any{
104
+ "live": map[string]any{"direct": []any{}, "entityOp": []any{}},
105
+ "unit": map[string]any{"direct": []any{}, "entityOp": []any{}},
106
+ }},
107
+ }
108
+ data, err := os.ReadFile(ctrlPath)
109
+ if err != nil {
110
+ cachedTestControl = def
111
+ return
112
+ }
113
+ var parsed map[string]any
114
+ if err := json.Unmarshal(data, &parsed); err != nil {
115
+ cachedTestControl = def
116
+ return
117
+ }
118
+ cachedTestControl = parsed
119
+ })
120
+ return cachedTestControl
121
+ }
122
+
123
+ // isControlSkipped checks sdk-test-control.json for a skip entry.
124
+ // Returns (skip, reason).
125
+ func isControlSkipped(kind, name, mode string) (bool, string) {
126
+ ctrl := loadTestControl()
127
+ test, _ := ctrl["test"].(map[string]any)
128
+ if test == nil {
129
+ return false, ""
130
+ }
131
+ skip, _ := test["skip"].(map[string]any)
132
+ if skip == nil {
133
+ return false, ""
134
+ }
135
+ modeMap, _ := skip[mode].(map[string]any)
136
+ if modeMap == nil {
137
+ return false, ""
138
+ }
139
+ items, _ := modeMap[kind].([]any)
140
+ for _, raw := range items {
141
+ item, _ := raw.(map[string]any)
142
+ if item == nil {
143
+ continue
144
+ }
145
+ reason, _ := item["reason"].(string)
146
+ if kind == "direct" {
147
+ if t, _ := item["test"].(string); t == name {
148
+ return true, reason
149
+ }
150
+ }
151
+ if kind == "entityOp" {
152
+ ent, _ := item["entity"].(string)
153
+ op, _ := item["op"].(string)
154
+ if ent+"."+op == name {
155
+ return true, reason
156
+ }
157
+ }
158
+ }
159
+ return false, ""
160
+ }
161
+
162
+ // liveDelayMs returns the configured per-test live delay in ms; default 500.
163
+ // liveClientOptions returns the extra SDK options every LIVE client is
164
+ // constructed with, from sdk-test-control.json `test.client.options`.
165
+ //
166
+ // The generated live client knows two things: the base URL (from the spec)
167
+ // and the credential (from the environment). Everything else about how a
168
+ // particular API wants to be talked to - which features to switch on, and
169
+ // with what settings - is a property of THAT API, known to the project and
170
+ // to nothing in the toolchain.
171
+ //
172
+ // Merged UNDER the generated fields, so the suite's own base/apikey/server
173
+ // values win: this ADDS to the live client, it does not redirect it.
174
+ //
175
+ // That contract is enforced HERE rather than left to each merge site: the
176
+ // generated map only names a field when the model calls for one, so a
177
+ // "base" in this block would face no competing value and would silently
178
+ // redirect the whole suite - credential included - to another host.
179
+ var liveReserved = map[string]bool{
180
+ "base": true, "prefix": true, "suffix": true,
181
+ "server": true, "apikey": true, "secret": true,
182
+ }
183
+
184
+ func liveClientOptions() map[string]any {
185
+ ctrl := loadTestControl()
186
+ test, _ := ctrl["test"].(map[string]any)
187
+ if test == nil {
188
+ return map[string]any{}
189
+ }
190
+ client, _ := test["client"].(map[string]any)
191
+ if client == nil {
192
+ return map[string]any{}
193
+ }
194
+ opts, _ := client["options"].(map[string]any)
195
+ if opts == nil {
196
+ return map[string]any{}
197
+ }
198
+
199
+ out := map[string]any{}
200
+ for k, v := range opts {
201
+ if !liveReserved[k] {
202
+ out[k] = v
203
+ }
204
+ }
205
+ return out
206
+ }
207
+
208
+ func liveDelayMs() int {
209
+ ctrl := loadTestControl()
210
+ test, _ := ctrl["test"].(map[string]any)
211
+ if test == nil {
212
+ return 500
213
+ }
214
+ live, _ := test["live"].(map[string]any)
215
+ if live == nil {
216
+ return 500
217
+ }
218
+ switch v := live["delayMs"].(type) {
219
+ case float64:
220
+ if v >= 0 {
221
+ return int(v)
222
+ }
223
+ case int:
224
+ if v >= 0 {
225
+ return v
226
+ }
227
+ }
228
+ return 500
229
+ }
230
+
231
+ var cachedTestSpec map[string]any
232
+
233
+ func loadTestSpec(t *testing.T) map[string]any {
234
+ t.Helper()
235
+ if cachedTestSpec != nil {
236
+ return cachedTestSpec
237
+ }
238
+ data, err := os.ReadFile("../../.sdk/test/test.json")
239
+ if err != nil {
240
+ t.Fatalf("Failed to load test.json: %v", err)
241
+ }
242
+ var spec map[string]any
243
+ if err := json.Unmarshal(data, &spec); err != nil {
244
+ t.Fatalf("Failed to parse test.json: %v", err)
245
+ }
246
+ cachedTestSpec = spec
247
+ return spec
248
+ }
249
+
250
+ func getSpec(spec map[string]any, keys ...string) map[string]any {
251
+ var cur any = spec
252
+ for _, key := range keys {
253
+ if m, ok := cur.(map[string]any); ok {
254
+ cur = m[key]
255
+ } else {
256
+ return nil
257
+ }
258
+ }
259
+ if m, ok := cur.(map[string]any); ok {
260
+ return m
261
+ }
262
+ return nil
263
+ }
264
+
265
+ // entityData extracts the data map from an op result.
266
+ //
267
+ // Every entity operation resolves to the ENTITY (see AGENTS.md), so a flow
268
+ // test that wants the record takes this hop. A plain map passes through
269
+ // unchanged, so this is safe for the direct/prepare results too.
270
+ func entityData(v any) any {
271
+ if ent, ok := v.(sdk.Entity); ok {
272
+ return ent.Data()
273
+ }
274
+ return v
275
+ }
276
+
277
+ // entityListToData extracts data maps from a list of Entity objects.
278
+ func entityListToData(list []any) []any {
279
+ var out []any
280
+ for _, item := range list {
281
+ if ent, ok := item.(sdk.Entity); ok {
282
+ d := ent.Data()
283
+ if dm, ok := d.(map[string]any); ok {
284
+ out = append(out, dm)
285
+ }
286
+ } else if m, ok := item.(map[string]any); ok {
287
+ out = append(out, m)
288
+ }
289
+ }
290
+ if out == nil {
291
+ out = []any{}
292
+ }
293
+ return out
294
+ }
@@ -122,7 +122,14 @@ func makeOptionsUtil(ctx *core.Context) map[string]any {
122
122
  },
123
123
  },
124
124
  "utility": map[string]any{},
125
- "system": map[string]any{},
125
+ // Feature INSTANCES supplied at construction (the station adopt
126
+ // path): consumed by the constructor's featureAdd loop, so they
127
+ // are class instances, not data - `$ANY` accepts them verbatim.
128
+ // Without this entry the seam is dead: the constructor reads
129
+ // options.extend, but validate rejected the key (mirrors
130
+ // MakeOptionsUtility.ts).
131
+ "extend": "`$ANY`",
132
+ "system": map[string]any{},
126
133
  "test": map[string]any{
127
134
  "active": false,
128
135
  "entity": map[string]any{
@@ -30,5 +30,9 @@ func prepareMethodUtil(ctx *core.Context) string {
30
30
  if m, ok := methodMap[opname]; ok {
31
31
  return m
32
32
  }
33
- return "GET"
33
+
34
+ // An op the API does not define resolves NO method - ts answers
35
+ // undefined here, and "" is go's spelling of the same "no value"
36
+ // (the corpus pins this via primary.prepareMethod).
37
+ return ""
34
38
  }
@@ -1,5 +1,5 @@
1
- // VENDORED: @voxgig/struct 0.1.3 (go/voxgigstruct.go)
2
- // Source: https://github.com/voxgig/struct @ 94409354d0a60fda8098c83e290583b7dee76c84
1
+ // VENDORED: @voxgig/struct 0.1.0 (go/voxgigstruct.go)
2
+ // Source: https://github.com/voxgig/struct @ 2caf7f448f265144c18dd6fab6ba270a7f3bca07 [tag: sdk-20260904-1610-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd. MIT LICENSE. */
5
5