@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
@@ -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
- }