@voxgig/sdkgen 4.8.2 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/doctor.d.ts +1 -0
  3. package/dist/action/doctor.js +50 -2
  4. package/dist/action/doctor.js.map +1 -1
  5. package/dist/helpers/naming.js +4 -2
  6. package/dist/helpers/naming.js.map +1 -1
  7. package/dist/tsconfig.tsbuildinfo +1 -1
  8. package/model/sdkgen.aon +21 -0
  9. package/package.json +1 -1
  10. package/project/.sdk/model/feature/secrets.aon +120 -18
  11. package/project/.sdk/model/target/c.aon +10 -0
  12. package/project/.sdk/model/target/clojure.aon +13 -0
  13. package/project/.sdk/model/target/cpp.aon +10 -0
  14. package/project/.sdk/model/target/csharp.aon +9 -0
  15. package/project/.sdk/model/target/dart.aon +10 -0
  16. package/project/.sdk/model/target/elixir.aon +9 -0
  17. package/project/.sdk/model/target/go.aon +13 -0
  18. package/project/.sdk/model/target/java.aon +9 -0
  19. package/project/.sdk/model/target/js.aon +7 -0
  20. package/project/.sdk/model/target/kotlin.aon +9 -0
  21. package/project/.sdk/model/target/lean.aon +17 -0
  22. package/project/.sdk/model/target/lua.aon +8 -0
  23. package/project/.sdk/model/target/ocaml.aon +9 -0
  24. package/project/.sdk/model/target/perl.aon +8 -0
  25. package/project/.sdk/model/target/php.aon +8 -0
  26. package/project/.sdk/model/target/py.aon +13 -0
  27. package/project/.sdk/model/target/rb.aon +8 -0
  28. package/project/.sdk/model/target/rust.aon +10 -0
  29. package/project/.sdk/model/target/scala.aon +21 -2
  30. package/project/.sdk/model/target/swift.aon +18 -0
  31. package/project/.sdk/model/target/ts.aon +13 -0
  32. package/project/.sdk/model/target/zig.aon +9 -0
  33. package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
  34. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
  35. package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
  36. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
  37. package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
  38. package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
  39. package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
  40. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
  41. package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
  42. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
  43. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
  44. package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
  45. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
  46. package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
  47. package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
  48. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
  49. package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
  50. package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
  51. package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
  52. package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
  53. package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
  54. package/project/.sdk/src/cmp/zig/Package_zig.ts +15 -11
  55. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +3 -3
  56. package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +3 -3
  57. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +3 -3
  58. package/project/.sdk/src/cmp/zig/utility_zig.ts +50 -1
  59. package/project/.sdk/tm/c/Makefile +38 -3
  60. package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
  61. package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
  62. package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
  63. package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
  64. package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
  65. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
  66. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
  67. package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
  68. package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
  69. package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
  70. package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
  71. package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
  72. package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
  73. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
  74. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
  75. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
  76. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
  77. package/project/.sdk/tm/cpp/Makefile +5 -1
  78. package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
  79. package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
  80. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
  81. package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
  82. package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
  83. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
  84. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
  85. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
  86. package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
  87. package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
  88. package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
  89. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
  90. package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
  91. package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
  92. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
  93. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
  94. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
  95. package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
  96. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
  97. package/project/.sdk/tm/dart/test/omni.dart +520 -0
  98. package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
  99. package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
  100. package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
  101. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
  102. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
  103. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
  104. package/project/.sdk/tm/elixir/Makefile +11 -3
  105. package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
  106. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
  107. package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
  108. package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
  109. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
  110. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
  111. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
  112. package/project/.sdk/tm/go/core/context.go +32 -16
  113. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
  114. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
  115. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
  116. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
  117. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
  118. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
  119. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
  120. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
  121. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
  122. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
  123. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
  124. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
  125. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
  126. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
  127. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
  128. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
  129. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
  130. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
  131. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
  132. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
  133. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
  134. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +208 -0
  135. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
  136. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +150 -0
  137. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
  138. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
  139. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
  140. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +442 -0
  141. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +714 -0
  142. package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
  143. package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
  144. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
  145. package/project/.sdk/tm/go/test/omni/omni.go +902 -0
  146. package/project/.sdk/tm/go/test/omni/util.go +381 -0
  147. package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
  148. package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
  149. package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
  150. package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
  151. package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
  152. package/project/.sdk/tm/go/utility/make_options.go +8 -1
  153. package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
  154. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
  155. package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
  156. package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
  157. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
  158. package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
  159. package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
  160. package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
  161. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
  162. package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
  163. package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
  164. package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
  165. package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
  166. package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
  167. package/project/.sdk/tm/js/test/omni.js +251 -0
  168. package/project/.sdk/tm/js/test/omni.test.js +105 -0
  169. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
  170. package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
  171. package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
  172. package/project/.sdk/tm/js/test/vendor/omni/runner.js +628 -0
  173. package/project/.sdk/tm/js/test/vendor/omni/util.js +229 -0
  174. package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
  175. package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
  176. package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
  177. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
  178. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
  179. package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
  180. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
  181. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
  182. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
  183. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
  184. package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
  185. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
  186. package/project/.sdk/tm/lean/Makefile +12 -5
  187. package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
  188. package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
  189. package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
  190. package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
  191. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
  192. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
  193. package/project/.sdk/tm/lua/test/omni.lua +456 -0
  194. package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
  195. package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
  196. package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
  197. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
  198. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
  199. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
  200. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
  201. package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
  202. package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
  203. package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
  204. package/project/.sdk/tm/ocaml/Makefile +37 -12
  205. package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
  206. package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
  207. package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
  208. package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
  209. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
  210. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
  211. package/project/.sdk/tm/perl/t/omni.pm +647 -0
  212. package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
  213. package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
  214. package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
  215. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
  216. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
  217. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
  218. package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
  219. package/project/.sdk/tm/php/test/Omni.php +691 -0
  220. package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
  221. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
  222. package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
  223. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
  224. package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
  225. package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
  226. package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
  227. package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
  228. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
  229. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
  230. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
  231. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
  232. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
  233. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
  234. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
  235. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
  236. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
  237. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
  238. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
  239. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
  240. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
  241. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
  242. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
  243. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +76 -0
  244. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
  245. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
  246. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
  247. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
  248. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
  249. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
  250. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +151 -0
  251. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
  252. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +90 -0
  253. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
  254. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
  255. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
  256. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
  257. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +475 -0
  258. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
  259. package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
  260. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
  261. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
  262. package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
  263. package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
  264. package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
  265. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
  266. package/project/.sdk/tm/py/test/omni.py +415 -0
  267. package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
  268. package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
  269. package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
  270. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
  271. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +580 -0
  272. package/project/.sdk/tm/py/test/voxgig_omni/util.py +252 -0
  273. package/project/.sdk/tm/rb/test/omni.rb +505 -0
  274. package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
  275. package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
  276. package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
  277. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
  278. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
  279. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
  280. package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
  281. package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
  282. package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
  283. package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
  284. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
  285. package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
  286. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
  287. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
  288. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
  289. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
  290. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
  291. package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
  292. package/project/.sdk/tm/scala/Makefile +16 -6
  293. package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
  294. package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
  295. package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
  296. package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
  297. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
  298. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
  299. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
  300. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
  301. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
  302. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
  303. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
  304. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
  305. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
  306. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
  307. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
  308. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
  309. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
  310. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
  311. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
  312. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
  313. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
  314. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
  315. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
  316. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
  317. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
  318. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
  319. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
  320. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
  321. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
  322. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
  323. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
  324. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
  325. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
  326. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
  327. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
  328. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
  329. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
  330. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
  331. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
  332. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
  333. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
  334. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
  335. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
  336. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
  337. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
  338. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
  339. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
  340. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
  341. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
  342. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
  343. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
  344. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
  345. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
  346. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
  347. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
  348. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
  349. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
  350. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
  351. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
  352. package/project/.sdk/tm/ts/test/omni.ts +104 -32
  353. package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
  354. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
  355. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
  356. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
  357. package/project/.sdk/tm/zig/Makefile +15 -1
  358. package/project/.sdk/tm/zig/build.zig +23 -5
  359. package/project/.sdk/tm/zig/core/helpers.zig +52 -11
  360. package/project/.sdk/tm/zig/core/mem.zig +17 -1
  361. package/project/.sdk/tm/zig/core/utility.zig +23 -19
  362. package/project/.sdk/tm/zig/feature/audit.zig +2 -2
  363. package/project/.sdk/tm/zig/feature/cache.zig +2 -2
  364. package/project/.sdk/tm/zig/feature/debug.zig +5 -5
  365. package/project/.sdk/tm/zig/feature/netsim.zig +2 -2
  366. package/project/.sdk/tm/zig/feature/paging.zig +2 -2
  367. package/project/.sdk/tm/zig/feature/proxy.zig +15 -8
  368. package/project/.sdk/tm/zig/feature/streaming.zig +5 -5
  369. package/project/.sdk/tm/zig/feature/support.zig +3 -3
  370. package/project/.sdk/tm/zig/feature/telemetry.zig +5 -5
  371. package/project/.sdk/tm/zig/feature/test.zig +10 -5
  372. package/project/.sdk/tm/zig/test/fh.zig +10 -10
  373. package/project/.sdk/tm/zig/test/gotcha_test.zig +5 -5
  374. package/project/.sdk/tm/zig/test/omniresolver.zig +515 -0
  375. package/project/.sdk/tm/zig/test/omnismoke_test.zig +284 -0
  376. package/project/.sdk/tm/zig/test/pipeline_test.zig +8 -8
  377. package/project/.sdk/tm/zig/test/primary_utility_test.zig +145 -155
  378. package/project/.sdk/tm/zig/test/struct_corpus.zig +264 -187
  379. package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1314 -0
  380. package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +446 -0
  381. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +7 -4
  382. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +356 -157
  383. package/project/sdkgen-package.json +1 -1
  384. package/src/action/doctor.ts +66 -2
  385. package/src/helpers/naming.ts +4 -2
  386. package/project/.sdk/tm/c/tests/runner.h +0 -274
  387. package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
  388. package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
  389. package/project/.sdk/tm/dart/test/runner.dart +0 -406
  390. package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
  391. package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
  392. package/project/.sdk/tm/go/test/runner_test.go +0 -629
  393. package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
  394. package/project/.sdk/tm/java/test/StructRunner.java +0 -281
  395. package/project/.sdk/tm/js/test/runner.js +0 -387
  396. package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
  397. package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
  398. package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
  399. package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
  400. package/project/.sdk/tm/php/test/StructRunner.php +0 -275
  401. package/project/.sdk/tm/py/test/struct_runner.py +0 -411
  402. package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
  403. package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
  404. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
  405. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
  406. package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
  407. package/project/.sdk/tm/zig/test/struct_runner.zig +0 -464
@@ -1,281 +0,0 @@
1
- package JAVAPACKAGE.sdktest;
2
-
3
- // Vendored from the voxgig struct java port's test Runner (src/test/Runner.java),
4
- // adapted for this SDK: the corpus comes from ../.sdk/test/test.json (root key
5
- // "struct"), and JSON handling uses the SDK's zero-dep Json/Struct utilities
6
- // instead of Gson.
7
-
8
- import java.nio.file.Files;
9
- import java.nio.file.Path;
10
- import java.util.ArrayList;
11
- import java.util.LinkedHashMap;
12
- import java.util.List;
13
- import java.util.Map;
14
- import java.util.Objects;
15
- import java.util.TreeMap;
16
-
17
- import JAVAPACKAGE.utility.Json;
18
- import JAVAPACKAGE.utility.struct.Struct;
19
-
20
- @SuppressWarnings({"unchecked", "rawtypes"})
21
- public class StructRunner {
22
- public static final String NULLMARK = "__NULL__";
23
- public static final String UNDEFMARK = "__UNDEF__";
24
- public static final String EXISTSMARK = "__EXISTS__";
25
-
26
- private static volatile Map<String, Object> CORPUS;
27
-
28
- private StructRunner() {}
29
-
30
- public static synchronized Map<String, Object> loadCorpus() {
31
- if (CORPUS == null) {
32
- try {
33
- Path p = Path.of("..", ".sdk", "test", "test.json");
34
- String json = Files.readString(p);
35
- CORPUS = (Map<String, Object>) Json.parse(json);
36
- }
37
- catch (Exception e) {
38
- throw new AssertionError("Failed to load struct corpus: " + e.getMessage(), e);
39
- }
40
- }
41
- return CORPUS;
42
- }
43
-
44
- public static Map<String, Object> getSpec(String category, String name) {
45
- Map<String, Object> all = loadCorpus();
46
- Map<String, Object> struct = (Map<String, Object>) all.get("struct");
47
- if (struct == null) {
48
- return null;
49
- }
50
- Map<String, Object> cat = (Map<String, Object>) struct.get(category);
51
- if (cat == null) {
52
- return null;
53
- }
54
- return (Map<String, Object>) cat.get(name);
55
- }
56
-
57
- /** Drives a {@code subject} against a test set; collects per-entry pass/fail. */
58
- @FunctionalInterface
59
- public interface Subject {
60
- Object apply(Object in) throws Exception;
61
- }
62
-
63
- public static class Result {
64
- public final String name;
65
- public int passed;
66
- public int total;
67
- public final List<String> failures = new ArrayList<>();
68
-
69
- public Result(String name) {
70
- this.name = name;
71
- }
72
-
73
- @Override
74
- public String toString() {
75
- return name + ": " + passed + "/" + total;
76
- }
77
- }
78
-
79
- public static Result runset(String fullName, Map<String, Object> testspec, Subject subject) {
80
- return runsetflags(fullName, testspec, true, subject);
81
- }
82
-
83
- public static Result runsetflags(
84
- String fullName, Map<String, Object> testspec, boolean nullFlag, Subject subject) {
85
- Result res = new Result(fullName);
86
- Object setObj = testspec == null ? null : testspec.get("set");
87
- if (!(setObj instanceof List<?> set)) {
88
- return res;
89
- }
90
-
91
- for (int i = 0; i < set.size(); i++) {
92
- Object eo = set.get(i);
93
- if (!(eo instanceof Map<?, ?> em)) {
94
- continue;
95
- }
96
- Map<String, Object> entry = (Map<String, Object>) em;
97
-
98
- Object in =
99
- entry.containsKey("in")
100
- ? Struct.clone(entry.get("in"))
101
- : Struct.UNDEF;
102
- Object expected =
103
- entry.containsKey("out")
104
- ? entry.get("out")
105
- : (nullFlag ? null : Struct.UNDEF);
106
-
107
- // NULLMARK convention (mirrors js runner fixJSON): when nullFlag is set,
108
- // every JSON null in the input and expected output is encoded as the
109
- // sentinel string "__NULL__", and the function result is encoded the same
110
- // way before comparison. This preserves the null-vs-absent distinction
111
- // across the round-trip exactly as the canonical cross-port runner does.
112
- if (nullFlag) {
113
- // Only encode a *present* input; an absent `in` stays UNDEF so the
114
- // subject sees "undefined" (matches the canonical runner, which clones
115
- // the absent value rather than a null marker).
116
- if (entry.containsKey("in")) {
117
- in = fixJSON(in);
118
- }
119
- expected = fixJSON(expected);
120
- }
121
-
122
- res.total++;
123
- try {
124
- Object got = subject.apply(in);
125
- if (nullFlag) {
126
- got = fixJSON(got);
127
- }
128
-
129
- if (entry.containsKey("err")) {
130
- res.failures.add(
131
- String.format(
132
- "[%d] expected err='%s' but call returned %s",
133
- i, brief(entry.get("err")), brief(got)));
134
- continue;
135
- }
136
-
137
- if (deepEqual(got, expected)) {
138
- res.passed++;
139
- }
140
- else {
141
- res.failures.add(
142
- String.format(
143
- "[%d] in=%s expected=%s got=%s",
144
- i, brief(entry.get("in")), brief(expected), brief(got)));
145
- }
146
- }
147
- catch (Exception ex) {
148
- if (entry.containsKey("err")) {
149
- // Accept any thrown error when err is true, or substring match otherwise.
150
- Object expErr = entry.get("err");
151
- String msg = ex.getMessage() == null ? "" : ex.getMessage();
152
- if (Boolean.TRUE.equals(expErr)
153
- || (expErr instanceof String es
154
- && (es.isEmpty() || msg.contains(es)
155
- || msg.toLowerCase().contains(es.toLowerCase())))) {
156
- res.passed++;
157
- }
158
- else {
159
- res.failures.add(
160
- String.format(
161
- "[%d] err mismatch: expected '%s' got '%s'", i, brief(expErr), msg));
162
- }
163
- }
164
- else {
165
- res.failures.add(
166
- String.format(
167
- "[%d] in=%s threw=%s", i, brief(entry.get("in")), ex.getMessage()));
168
- }
169
- }
170
- }
171
- return res;
172
- }
173
-
174
- /** Normalize then deep-equal. Treats {@link Struct#UNDEF} as {@code null}. */
175
- public static boolean deepEqual(Object a, Object b) {
176
- return Objects.equals(normalize(a), normalize(b));
177
- }
178
-
179
- /**
180
- * Encode JSON null (and the {@link Struct#UNDEF} "no value" sentinel) as the
181
- * {@link #NULLMARK} string throughout a cloned structure. Mirrors
182
- * {@code fixJSON} in js/test/runner.js when {@code flags.null} is true.
183
- */
184
- public static Object fixJSON(Object v) {
185
- if (v == null || v == Struct.UNDEF) {
186
- return NULLMARK;
187
- }
188
- if (v instanceof Map<?, ?> m) {
189
- Map<String, Object> out = new LinkedHashMap<>();
190
- for (Map.Entry<?, ?> e : m.entrySet()) {
191
- out.put(Objects.toString(e.getKey()), fixJSON(e.getValue()));
192
- }
193
- return out;
194
- }
195
- if (v instanceof List<?> l) {
196
- List<Object> out = new ArrayList<>(l.size());
197
- for (Object x : l) {
198
- out.add(fixJSON(x));
199
- }
200
- return out;
201
- }
202
- return v;
203
- }
204
-
205
- /**
206
- * Modify callback mirroring {@code nullModifier} in js/test/runner.js: a bare
207
- * {@link #NULLMARK} becomes a real null, and an embedded {@link #NULLMARK}
208
- * inside a larger string is rewritten to the literal text {@code "null"}.
209
- */
210
- public static final Struct.Modify NULL_MODIFIER =
211
- (val, key, parent, inj, store) -> {
212
- if (!(val instanceof String s)) {
213
- return;
214
- }
215
- Object repl;
216
- if (NULLMARK.equals(s)) {
217
- repl = null;
218
- }
219
- else if (s.contains(NULLMARK)) {
220
- repl = s.replace(NULLMARK, "null");
221
- }
222
- else {
223
- return;
224
- }
225
- if (parent instanceof Map<?, ?> m) {
226
- ((Map<String, Object>) m).put(Objects.toString(key), repl);
227
- }
228
- else if (parent instanceof List<?> l && key instanceof Number n) {
229
- ((List<Object>) l).set(n.intValue(), repl);
230
- }
231
- };
232
-
233
- /**
234
- * Canonicalize a value for comparison:
235
- * numbers to Long/Double, maps to sorted TreeMap, lists recurse,
236
- * {@link Struct#UNDEF} treated as {@code null}.
237
- */
238
- public static Object normalize(Object v) {
239
- if (v == Struct.UNDEF || v == null) {
240
- return null;
241
- }
242
- if (v instanceof Number n) {
243
- double d = n.doubleValue();
244
- if (Double.isFinite(d) && Math.floor(d) == d) {
245
- return (long) d;
246
- }
247
- return d;
248
- }
249
- if (v instanceof Boolean || v instanceof String) {
250
- return v;
251
- }
252
- if (v instanceof Map<?, ?> m) {
253
- Map<String, Object> out = new TreeMap<>();
254
- for (Map.Entry<?, ?> e : m.entrySet()) {
255
- out.put(Objects.toString(e.getKey(), ""), normalize(e.getValue()));
256
- }
257
- return out;
258
- }
259
- if (v instanceof List<?> l) {
260
- List<Object> out = new ArrayList<>(l.size());
261
- for (Object x : l) {
262
- out.add(normalize(x));
263
- }
264
- return out;
265
- }
266
- return v.toString();
267
- }
268
-
269
- private static String brief(Object v) {
270
- if (v == Struct.UNDEF) {
271
- return UNDEFMARK;
272
- }
273
- try {
274
- String s = Struct.jsonify(v);
275
- return s.length() > 200 ? s.substring(0, 197) + "..." : s;
276
- }
277
- catch (Exception e) {
278
- return Objects.toString(v);
279
- }
280
- }
281
- }
@@ -1,387 +0,0 @@
1
- // VERSION: @voxgig/struct 0.0.10
2
- // This test utility runs the JSON-specified tests in build/test/test.json.
3
- // (or .sdk/test/test.json if used in a @voxgig/sdkgen project)
4
-
5
- const { readFileSync } = require('node:fs')
6
- const { join } = require('node:path')
7
- const { deepStrictEqual, fail, AssertionError } = require('node:assert')
8
-
9
- const NULLMARK = '__NULL__' // Value is JSON null
10
- const UNDEFMARK = '__UNDEF__' // Value is not present (thus, undefined).
11
- const EXISTSMARK = '__EXISTS__' // Value exists (not undefined).
12
-
13
-
14
- async function makeRunner(testfile, client) {
15
-
16
- return async function runner(
17
- name,
18
- store,
19
- ) {
20
- store = store || {}
21
-
22
- const utility = client.utility()
23
- const structUtils = utility.struct
24
-
25
- let spec = resolveSpec(name, testfile)
26
- let clients = await resolveClients(client, spec, store, structUtils)
27
- let subject = resolveSubject(name, utility)
28
-
29
- let runsetflags = async (
30
- testspec,
31
- flags,
32
- testsubject
33
- ) => {
34
- subject = testsubject || subject
35
- flags = resolveFlags(flags)
36
- const testspecmap = fixJSON(testspec, flags)
37
-
38
- const testset = testspecmap.set
39
- for (let entry of testset) {
40
- try {
41
- entry = resolveEntry(entry, flags)
42
-
43
- let testpack = resolveTestPack(name, entry, subject, client, clients)
44
- let args = resolveArgs(entry, testpack, utility, structUtils)
45
-
46
- let res = await testpack.subject(...args)
47
- res = fixJSON(res, flags)
48
- entry.res = res
49
-
50
- checkResult(entry, args, res, structUtils)
51
- }
52
- catch (err) {
53
- if (err instanceof AssertionError) {
54
- throw err
55
- }
56
- handleError(entry, err, structUtils)
57
- }
58
- }
59
- }
60
-
61
- let runset = async (
62
- testspec,
63
- testsubject
64
- ) => runsetflags(testspec, {}, testsubject)
65
-
66
- const runpack = {
67
- spec,
68
- runset,
69
- runsetflags,
70
- subject,
71
- client,
72
- }
73
-
74
- return runpack
75
- }
76
- }
77
-
78
- function resolveSpec(name, testfile) {
79
- const alltests =
80
- JSON.parse(readFileSync(join(__dirname, testfile), 'utf8'))
81
-
82
- let spec = alltests.primary?.[name] || alltests[name] || alltests
83
- return spec
84
- }
85
-
86
-
87
- async function resolveClients(
88
- client,
89
- spec,
90
- store,
91
- structUtils
92
- ) {
93
-
94
- const clients = {}
95
- if (spec.DEF && spec.DEF.client) {
96
- for (let cn in spec.DEF.client) {
97
- const cdef = spec.DEF.client[cn]
98
- const copts = cdef.test.options || {}
99
- if ('object' === typeof store && structUtils?.inject) {
100
- structUtils.inject(copts, store)
101
- }
102
-
103
- clients[cn] = await client.tester(copts)
104
- }
105
- }
106
- return clients
107
- }
108
-
109
-
110
- function resolveSubject(name, container) {
111
- const subject = container[name] || container.struct[name]
112
- return subject
113
- }
114
-
115
-
116
- function resolveFlags(flags) {
117
- if (null == flags) {
118
- flags = {}
119
- }
120
- flags.null = null == flags.null ? true : !!flags.null
121
- return flags
122
- }
123
-
124
-
125
- function resolveEntry(entry, flags) {
126
- entry.out = null == entry.out && flags.null ? NULLMARK : entry.out
127
- return entry
128
- }
129
-
130
-
131
- function checkResult(entry, args, res, structUtils) {
132
- let matched = false
133
-
134
- if (entry.err) {
135
- return fail('Expected error did not occur: ' + entry.err +
136
- '\n\nENTRY: ' + safeStringify(entry))
137
- }
138
-
139
- if (entry.match) {
140
- const result = { in: entry.in, args, out: entry.res, ctx: entry.ctx }
141
- match(
142
- entry.match,
143
- result,
144
- structUtils
145
- )
146
-
147
- matched = true
148
- }
149
-
150
- const out = entry.out
151
-
152
- if (out === res) {
153
- return
154
- }
155
-
156
- // NOTE: allow match with no out.
157
- if (matched && (NULLMARK === out || null == out)) {
158
- return
159
- }
160
-
161
- deepStrictEqual(null != res ? JSON.parse(safeStringify(res)) : res, entry.out)
162
- }
163
-
164
-
165
- // Handle errors from test execution
166
- function handleError(entry, err, structUtils) {
167
- entry.thrown = err
168
-
169
- const entry_err = entry.err
170
-
171
- if (null != entry_err) {
172
- if (true === entry_err || matchval(entry_err, err.message, structUtils)) {
173
- if (entry.match) {
174
- match(
175
- entry.match,
176
- { in: entry.in, out: entry.res, ctx: entry.ctx, err: fixJSON(err, { null: true }) },
177
- structUtils
178
- )
179
- }
180
- return
181
- }
182
-
183
- fail('ERROR MATCH: [' + structUtils.stringify(entry_err) +
184
- '] <=> [' + err.message + ']')
185
- }
186
-
187
- // Unexpected error (test didn't specify an error expectation)
188
- else if (err instanceof AssertionError) {
189
- fail(err.message + '\n\nENTRY: ' + safeStringify(entry))
190
- }
191
- else {
192
- fail(err.stack + '\n\nENTRY: ' + safeStringify(entry))
193
- }
194
- }
195
-
196
-
197
- function resolveArgs(
198
- entry,
199
- testpack,
200
- utility,
201
- structUtils
202
- ) {
203
- let args = []
204
-
205
- if (entry.ctx) {
206
- args = [entry.ctx]
207
- }
208
- else if (entry.args) {
209
- args = entry.args
210
- }
211
- else {
212
- args = [structUtils.clone(entry.in)]
213
- }
214
-
215
- if (entry.ctx || entry.args) {
216
- let first = args[0]
217
- if (structUtils.ismap(first)) {
218
- first = structUtils.clone(first)
219
- first = utility.makeContext(first)
220
- args[0] = first
221
- entry.ctx = first
222
-
223
- first.client = testpack.client
224
- first.utility = testpack.utility
225
- }
226
- }
227
-
228
- return args
229
- }
230
-
231
-
232
- function resolveTestPack(
233
- name,
234
- entry,
235
- subject,
236
- client,
237
- clients
238
- ) {
239
- const testpack = {
240
- name,
241
- client,
242
- subject,
243
- utility: client.utility(),
244
- }
245
-
246
- if (entry.client) {
247
- testpack.client = clients[entry.client]
248
- testpack.utility = testpack.client.utility()
249
- testpack.subject = resolveSubject(name, testpack.utility)
250
- }
251
-
252
- return testpack
253
- }
254
-
255
-
256
- function match(
257
- check,
258
- basex,
259
- structUtils
260
- ) {
261
- const cbase = structUtils.clone(basex)
262
-
263
- structUtils.walk(check, (_key, val, _parent, path) => {
264
- if (!structUtils.isnode(val)) {
265
- let baseval = structUtils.getpath(cbase, path)
266
-
267
- if (baseval === val) {
268
- return val
269
- }
270
-
271
- // Explicit undefined expected
272
- if (UNDEFMARK === val && undefined === baseval) {
273
- return val
274
- }
275
-
276
- // Explicit defined expected
277
- if (EXISTSMARK === val && null != baseval) {
278
- return val
279
- }
280
-
281
- if (!matchval(val, baseval, structUtils)) {
282
- fail('MATCH: ' + path.join('.') +
283
- ': [' + structUtils.stringify(val) +
284
- '] <=> [' + structUtils.stringify(baseval) + ']')
285
- }
286
- }
287
-
288
- return val
289
- })
290
- }
291
-
292
-
293
- function matchval(
294
- check,
295
- base,
296
- structUtils
297
- ) {
298
- let pass = check === base
299
-
300
- if (!pass) {
301
-
302
- if ('string' === typeof check) {
303
- let basestr = structUtils.stringify(base)
304
-
305
- let rem = check.match(/^\/(.+)\/$/)
306
- if (rem) {
307
- pass = new RegExp(rem[1]).test(basestr)
308
- }
309
- else {
310
- pass = basestr.toLowerCase().includes(structUtils.stringify(check).toLowerCase())
311
- }
312
- }
313
- else if ('function' === typeof check) {
314
- pass = true
315
- }
316
- }
317
-
318
- return pass
319
- }
320
-
321
-
322
- function safeStringify(val) {
323
- const seen = new WeakSet()
324
- return JSON.stringify(val, (_k, v) => {
325
- if ('object' === typeof v && null !== v) {
326
- if (seen.has(v)) return '[Circular]'
327
- seen.add(v)
328
- }
329
- if (v instanceof Error) {
330
- return { name: v.name, message: v.message }
331
- }
332
- return v
333
- }, 2)
334
- }
335
-
336
-
337
- function fixJSON(val, flags) {
338
- if (null == val) {
339
- return flags?.null ? NULLMARK : val
340
- }
341
-
342
- const seen = new WeakSet()
343
- const replacer = (_k, v) => {
344
- if (null == v && flags?.null) {
345
- return NULLMARK
346
- }
347
-
348
- if (v instanceof Error) {
349
- return {
350
- ...v,
351
- name: v.name,
352
- message: v.message,
353
- }
354
- }
355
-
356
- if ('object' === typeof v && null !== v) {
357
- if (seen.has(v)) return '[Circular]'
358
- seen.add(v)
359
- }
360
-
361
- return v
362
- }
363
-
364
- return JSON.parse(JSON.stringify(val, replacer))
365
- }
366
-
367
-
368
- function nullModifier(
369
- val,
370
- key,
371
- parent
372
- ) {
373
- if ("__NULL__" === val) {
374
- parent[key] = null
375
- }
376
- else if ('string' === typeof val) {
377
- parent[key] = val.replaceAll('__NULL__', 'null')
378
- }
379
- }
380
-
381
-
382
- module.exports = {
383
- NULLMARK,
384
- EXISTSMARK,
385
- nullModifier,
386
- makeRunner,
387
- }