@voxgig/sdkgen 1.3.7 → 1.3.9

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 (1758) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/cmp/AgentGuide.d.ts +2 -0
  3. package/dist/cmp/AgentGuide.js +124 -0
  4. package/dist/cmp/AgentGuide.js.map +1 -0
  5. package/dist/cmp/AgentGuideContent.d.ts +25 -0
  6. package/dist/cmp/AgentGuideContent.js +248 -0
  7. package/dist/cmp/AgentGuideContent.js.map +1 -0
  8. package/dist/cmp/AgentGuideFeature.d.ts +2 -0
  9. package/dist/cmp/AgentGuideFeature.js +92 -0
  10. package/dist/cmp/AgentGuideFeature.js.map +1 -0
  11. package/dist/cmp/AgentGuideTop.d.ts +2 -0
  12. package/dist/cmp/AgentGuideTop.js +97 -0
  13. package/dist/cmp/AgentGuideTop.js.map +1 -0
  14. package/dist/cmp/ReadmeTop.js +16 -3
  15. package/dist/cmp/ReadmeTop.js.map +1 -1
  16. package/dist/sdkgen.d.ts +4 -1
  17. package/dist/sdkgen.js +8 -2
  18. package/dist/sdkgen.js.map +1 -1
  19. package/dist/tsconfig.tsbuildinfo +1 -1
  20. package/package.json +1 -1
  21. package/project/.sdk/model/feature/audit.aontu +22 -0
  22. package/project/.sdk/model/feature/cache.aontu +23 -0
  23. package/project/.sdk/model/feature/clienttrack.aontu +20 -0
  24. package/project/.sdk/model/feature/debug.aontu +25 -0
  25. package/project/.sdk/model/feature/feature-index.aontu +20 -1
  26. package/project/.sdk/model/feature/idempotency.aontu +21 -0
  27. package/project/.sdk/model/feature/metrics.aontu +20 -0
  28. package/project/.sdk/model/feature/netsim.aontu +36 -0
  29. package/project/.sdk/model/feature/paging.aontu +23 -0
  30. package/project/.sdk/model/feature/proxy.aontu +23 -0
  31. package/project/.sdk/model/feature/ratelimit.aontu +21 -0
  32. package/project/.sdk/model/feature/rbac.aontu +24 -0
  33. package/project/.sdk/model/feature/retry.aontu +23 -0
  34. package/project/.sdk/model/feature/streaming.aontu +22 -0
  35. package/project/.sdk/model/feature/telemetry.aontu +21 -0
  36. package/project/.sdk/model/feature/timeout.aontu +18 -0
  37. package/project/.sdk/model/target/c.aontu +37 -0
  38. package/project/.sdk/model/target/clojure.aontu +36 -0
  39. package/project/.sdk/model/target/cpp.aontu +35 -0
  40. package/project/.sdk/model/target/csharp.aontu +35 -0
  41. package/project/.sdk/model/target/dart.aontu +34 -0
  42. package/project/.sdk/model/target/elixir.aontu +33 -0
  43. package/project/.sdk/model/target/go-cli.aontu +5 -4
  44. package/project/.sdk/model/target/go-mcp.aontu +5 -4
  45. package/project/.sdk/model/target/haskell.aontu +47 -0
  46. package/project/.sdk/model/target/java.aontu +37 -0
  47. package/project/.sdk/model/target/kotlin.aontu +37 -0
  48. package/project/.sdk/model/target/ocaml.aontu +36 -0
  49. package/project/.sdk/model/target/perl.aontu +37 -0
  50. package/project/.sdk/model/target/rust.aontu +37 -0
  51. package/project/.sdk/model/target/scala.aontu +37 -0
  52. package/project/.sdk/model/target/swift.aontu +35 -0
  53. package/project/.sdk/model/target/zig.aontu +27 -0
  54. package/project/.sdk/src/cmp/c/Config_c.ts +109 -0
  55. package/project/.sdk/src/cmp/c/EntityBase_c.ts +61 -0
  56. package/project/.sdk/src/cmp/c/EntityOperation_c.ts +41 -0
  57. package/project/.sdk/src/cmp/c/Entity_c.ts +85 -0
  58. package/project/.sdk/src/cmp/c/Gitignore_c.ts +29 -0
  59. package/project/.sdk/src/cmp/c/MainEntity_c.ts +31 -0
  60. package/project/.sdk/src/cmp/c/Main_c.ts +83 -0
  61. package/project/.sdk/src/cmp/c/Package_c.ts +17 -0
  62. package/project/.sdk/src/cmp/c/TestDirect_c.ts +227 -0
  63. package/project/.sdk/src/cmp/c/TestEntity_c.ts +82 -0
  64. package/project/.sdk/src/cmp/c/Test_c.ts +51 -0
  65. package/project/.sdk/src/cmp/c/fragment/Entity.fragment.c +265 -0
  66. package/project/.sdk/src/cmp/c/fragment/EntityCreateOp.fragment.c +27 -0
  67. package/project/.sdk/src/cmp/c/fragment/EntityListOp.fragment.c +24 -0
  68. package/project/.sdk/src/cmp/c/fragment/EntityLoadOp.fragment.c +29 -0
  69. package/project/.sdk/src/cmp/c/fragment/EntityRemoveOp.fragment.c +29 -0
  70. package/project/.sdk/src/cmp/c/fragment/EntityUpdateOp.fragment.c +29 -0
  71. package/project/.sdk/src/cmp/c/fragment/Main.fragment.c +220 -0
  72. package/project/.sdk/src/cmp/c/tsconfig.json +15 -0
  73. package/project/.sdk/src/cmp/c/utility_c.ts +102 -0
  74. package/project/.sdk/src/cmp/clojure/Config_clojure.ts +94 -0
  75. package/project/.sdk/src/cmp/clojure/EntityOperation_clojure.ts +35 -0
  76. package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +77 -0
  77. package/project/.sdk/src/cmp/clojure/Gitignore_clojure.ts +28 -0
  78. package/project/.sdk/src/cmp/clojure/MainEntity_clojure.ts +21 -0
  79. package/project/.sdk/src/cmp/clojure/Main_clojure.ts +88 -0
  80. package/project/.sdk/src/cmp/clojure/Package_clojure.ts +41 -0
  81. package/project/.sdk/src/cmp/clojure/Test_clojure.ts +120 -0
  82. package/project/.sdk/src/cmp/clojure/fragment/Entity.fragment.clj +158 -0
  83. package/project/.sdk/src/cmp/clojure/fragment/EntityCreateOp.fragment.clj +14 -0
  84. package/project/.sdk/src/cmp/clojure/fragment/EntityListOp.fragment.clj +17 -0
  85. package/project/.sdk/src/cmp/clojure/fragment/EntityLoadOp.fragment.clj +15 -0
  86. package/project/.sdk/src/cmp/clojure/fragment/EntityRemoveOp.fragment.clj +15 -0
  87. package/project/.sdk/src/cmp/clojure/fragment/EntityUpdateOp.fragment.clj +15 -0
  88. package/project/.sdk/src/cmp/clojure/tsconfig.json +15 -0
  89. package/project/.sdk/src/cmp/clojure/utility_clojure.ts +82 -0
  90. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +136 -0
  91. package/project/.sdk/src/cmp/cpp/EntityBase_cpp.ts +51 -0
  92. package/project/.sdk/src/cmp/cpp/EntityOperation_cpp.ts +37 -0
  93. package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +78 -0
  94. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +27 -0
  95. package/project/.sdk/src/cmp/cpp/MainEntity_cpp.ts +35 -0
  96. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +84 -0
  97. package/project/.sdk/src/cmp/cpp/Package_cpp.ts +17 -0
  98. package/project/.sdk/src/cmp/cpp/TestDirect_cpp.ts +258 -0
  99. package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +454 -0
  100. package/project/.sdk/src/cmp/cpp/Test_cpp.ts +36 -0
  101. package/project/.sdk/src/cmp/cpp/fragment/Entity.fragment.cpp +40 -0
  102. package/project/.sdk/src/cmp/cpp/fragment/EntityCreateOp.fragment.cpp +22 -0
  103. package/project/.sdk/src/cmp/cpp/fragment/EntityListOp.fragment.cpp +21 -0
  104. package/project/.sdk/src/cmp/cpp/fragment/EntityLoadOp.fragment.cpp +25 -0
  105. package/project/.sdk/src/cmp/cpp/fragment/EntityRemoveOp.fragment.cpp +21 -0
  106. package/project/.sdk/src/cmp/cpp/fragment/EntityUpdateOp.fragment.cpp +22 -0
  107. package/project/.sdk/src/cmp/cpp/fragment/Main.fragment.cpp +43 -0
  108. package/project/.sdk/src/cmp/cpp/tsconfig.json +15 -0
  109. package/project/.sdk/src/cmp/cpp/utility_cpp.ts +83 -0
  110. package/project/.sdk/src/cmp/csharp/Config_csharp.ts +134 -0
  111. package/project/.sdk/src/cmp/csharp/EntityBase_csharp.ts +39 -0
  112. package/project/.sdk/src/cmp/csharp/EntityOperation_csharp.ts +41 -0
  113. package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +85 -0
  114. package/project/.sdk/src/cmp/csharp/Gitignore_csharp.ts +38 -0
  115. package/project/.sdk/src/cmp/csharp/MainEntity_csharp.ts +36 -0
  116. package/project/.sdk/src/cmp/csharp/Main_csharp.ts +91 -0
  117. package/project/.sdk/src/cmp/csharp/Package_csharp.ts +101 -0
  118. package/project/.sdk/src/cmp/csharp/SdkError_csharp.ts +42 -0
  119. package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +560 -0
  120. package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +618 -0
  121. package/project/.sdk/src/cmp/csharp/Test_csharp.ts +38 -0
  122. package/project/.sdk/src/cmp/csharp/fragment/Entity.fragment.cs +28 -0
  123. package/project/.sdk/src/cmp/csharp/fragment/EntityBase.fragment.cs +268 -0
  124. package/project/.sdk/src/cmp/csharp/fragment/EntityCreateOp.fragment.cs +37 -0
  125. package/project/.sdk/src/cmp/csharp/fragment/EntityListOp.fragment.cs +35 -0
  126. package/project/.sdk/src/cmp/csharp/fragment/EntityLoadOp.fragment.cs +41 -0
  127. package/project/.sdk/src/cmp/csharp/fragment/EntityRemoveOp.fragment.cs +41 -0
  128. package/project/.sdk/src/cmp/csharp/fragment/EntityUpdateOp.fragment.cs +41 -0
  129. package/project/.sdk/src/cmp/csharp/fragment/Main.fragment.cs +278 -0
  130. package/project/.sdk/src/cmp/csharp/fragment/SdkError.fragment.cs +21 -0
  131. package/project/.sdk/src/cmp/csharp/tsconfig.json +15 -0
  132. package/project/.sdk/src/cmp/csharp/utility_csharp.ts +143 -0
  133. package/project/.sdk/src/cmp/dart/Config_dart.ts +99 -0
  134. package/project/.sdk/src/cmp/dart/EntityBase_dart.ts +34 -0
  135. package/project/.sdk/src/cmp/dart/EntityOperation_dart.ts +43 -0
  136. package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +190 -0
  137. package/project/.sdk/src/cmp/dart/Entity_dart.ts +79 -0
  138. package/project/.sdk/src/cmp/dart/Gitignore_dart.ts +34 -0
  139. package/project/.sdk/src/cmp/dart/MainEntity_dart.ts +33 -0
  140. package/project/.sdk/src/cmp/dart/Main_dart.ts +105 -0
  141. package/project/.sdk/src/cmp/dart/Package_dart.ts +81 -0
  142. package/project/.sdk/src/cmp/dart/SdkError_dart.ts +42 -0
  143. package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +498 -0
  144. package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +552 -0
  145. package/project/.sdk/src/cmp/dart/Test_dart.ts +105 -0
  146. package/project/.sdk/src/cmp/dart/fragment/Config.fragment.dart +48 -0
  147. package/project/.sdk/src/cmp/dart/fragment/Direct.test.fragment.dart +25 -0
  148. package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +31 -0
  149. package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +67 -0
  150. package/project/.sdk/src/cmp/dart/fragment/EntityBase.fragment.dart +285 -0
  151. package/project/.sdk/src/cmp/dart/fragment/EntityCreateOp.fragment.dart +90 -0
  152. package/project/.sdk/src/cmp/dart/fragment/EntityListOp.fragment.dart +90 -0
  153. package/project/.sdk/src/cmp/dart/fragment/EntityLoadOp.fragment.dart +94 -0
  154. package/project/.sdk/src/cmp/dart/fragment/EntityRemoveOp.fragment.dart +94 -0
  155. package/project/.sdk/src/cmp/dart/fragment/EntityUpdateOp.fragment.dart +94 -0
  156. package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +240 -0
  157. package/project/.sdk/src/cmp/dart/fragment/SdkError.fragment.dart +18 -0
  158. package/project/.sdk/src/cmp/dart/tsconfig.json +15 -0
  159. package/project/.sdk/src/cmp/dart/utility_dart.ts +86 -0
  160. package/project/.sdk/src/cmp/elixir/Config_elixir.ts +101 -0
  161. package/project/.sdk/src/cmp/elixir/EntityOperation_elixir.ts +27 -0
  162. package/project/.sdk/src/cmp/elixir/Entity_elixir.ts +54 -0
  163. package/project/.sdk/src/cmp/elixir/Gitignore_elixir.ts +28 -0
  164. package/project/.sdk/src/cmp/elixir/MainEntity_elixir.ts +26 -0
  165. package/project/.sdk/src/cmp/elixir/Main_elixir.ts +124 -0
  166. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +64 -0
  167. package/project/.sdk/src/cmp/elixir/TestDirect_elixir.ts +95 -0
  168. package/project/.sdk/src/cmp/elixir/TestEntity_elixir.ts +115 -0
  169. package/project/.sdk/src/cmp/elixir/Test_elixir.ts +47 -0
  170. package/project/.sdk/src/cmp/elixir/fragment/Entity.fragment.ex +37 -0
  171. package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +28 -0
  172. package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +30 -0
  173. package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +32 -0
  174. package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +32 -0
  175. package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +30 -0
  176. package/project/.sdk/src/cmp/elixir/fragment/Main.fragment.ex +218 -0
  177. package/project/.sdk/src/cmp/elixir/fragment/Pipeline.fragment.ex +62 -0
  178. package/project/.sdk/src/cmp/elixir/tsconfig.json +15 -0
  179. package/project/.sdk/src/cmp/elixir/utility_elixir.ts +85 -0
  180. package/project/.sdk/src/cmp/go/TestEntity_go.ts +54 -0
  181. package/project/.sdk/src/cmp/go/fragment/Entity.fragment.go +133 -0
  182. package/project/.sdk/src/cmp/go/fragment/Main.fragment.go +14 -8
  183. package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +20 -2
  184. package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +42 -2
  185. package/project/.sdk/src/cmp/haskell/Config_haskell.ts +115 -0
  186. package/project/.sdk/src/cmp/haskell/Entity_haskell.ts +13 -0
  187. package/project/.sdk/src/cmp/haskell/Gitignore_haskell.ts +27 -0
  188. package/project/.sdk/src/cmp/haskell/Main_haskell.ts +123 -0
  189. package/project/.sdk/src/cmp/haskell/Package_haskell.ts +58 -0
  190. package/project/.sdk/src/cmp/haskell/Test_haskell.ts +263 -0
  191. package/project/.sdk/src/cmp/haskell/tsconfig.json +15 -0
  192. package/project/.sdk/src/cmp/haskell/utility_haskell.ts +105 -0
  193. package/project/.sdk/src/cmp/java/Config_java.ts +138 -0
  194. package/project/.sdk/src/cmp/java/EntityBase_java.ts +50 -0
  195. package/project/.sdk/src/cmp/java/EntityOperation_java.ts +48 -0
  196. package/project/.sdk/src/cmp/java/Entity_java.ts +95 -0
  197. package/project/.sdk/src/cmp/java/Gitignore_java.ts +37 -0
  198. package/project/.sdk/src/cmp/java/MainEntity_java.ts +41 -0
  199. package/project/.sdk/src/cmp/java/Main_java.ts +100 -0
  200. package/project/.sdk/src/cmp/java/Package_java.ts +126 -0
  201. package/project/.sdk/src/cmp/java/SdkError_java.ts +49 -0
  202. package/project/.sdk/src/cmp/java/TestDirect_java.ts +509 -0
  203. package/project/.sdk/src/cmp/java/TestEntity_java.ts +599 -0
  204. package/project/.sdk/src/cmp/java/Test_java.ts +42 -0
  205. package/project/.sdk/src/cmp/java/fragment/Entity.fragment.java +35 -0
  206. package/project/.sdk/src/cmp/java/fragment/EntityBase.fragment.java +235 -0
  207. package/project/.sdk/src/cmp/java/fragment/EntityCreateOp.fragment.java +42 -0
  208. package/project/.sdk/src/cmp/java/fragment/EntityListOp.fragment.java +39 -0
  209. package/project/.sdk/src/cmp/java/fragment/EntityLoadOp.fragment.java +45 -0
  210. package/project/.sdk/src/cmp/java/fragment/EntityRemoveOp.fragment.java +45 -0
  211. package/project/.sdk/src/cmp/java/fragment/EntityUpdateOp.fragment.java +45 -0
  212. package/project/.sdk/src/cmp/java/fragment/Main.fragment.java +34 -0
  213. package/project/.sdk/src/cmp/java/fragment/SdkError.fragment.java +27 -0
  214. package/project/.sdk/src/cmp/java/tsconfig.json +15 -0
  215. package/project/.sdk/src/cmp/java/utility_java.ts +102 -0
  216. package/project/.sdk/src/cmp/js/Config_js.ts +4 -2
  217. package/project/.sdk/src/cmp/js/TestEntity_js.ts +1 -0
  218. package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +32 -1
  219. package/project/.sdk/src/cmp/js/fragment/EntityBase.fragment.js +81 -0
  220. package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +10 -5
  221. package/project/.sdk/src/cmp/kotlin/Config_kotlin.ts +128 -0
  222. package/project/.sdk/src/cmp/kotlin/EntityBase_kotlin.ts +50 -0
  223. package/project/.sdk/src/cmp/kotlin/EntityOperation_kotlin.ts +48 -0
  224. package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +93 -0
  225. package/project/.sdk/src/cmp/kotlin/Gitignore_kotlin.ts +41 -0
  226. package/project/.sdk/src/cmp/kotlin/MainEntity_kotlin.ts +40 -0
  227. package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +94 -0
  228. package/project/.sdk/src/cmp/kotlin/Package_kotlin.ts +110 -0
  229. package/project/.sdk/src/cmp/kotlin/SdkError_kotlin.ts +48 -0
  230. package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +479 -0
  231. package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +567 -0
  232. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +42 -0
  233. package/project/.sdk/src/cmp/kotlin/fragment/Entity.fragment.kt +28 -0
  234. package/project/.sdk/src/cmp/kotlin/fragment/EntityBase.fragment.kt +195 -0
  235. package/project/.sdk/src/cmp/kotlin/fragment/EntityCreateOp.fragment.kt +37 -0
  236. package/project/.sdk/src/cmp/kotlin/fragment/EntityListOp.fragment.kt +34 -0
  237. package/project/.sdk/src/cmp/kotlin/fragment/EntityLoadOp.fragment.kt +40 -0
  238. package/project/.sdk/src/cmp/kotlin/fragment/EntityRemoveOp.fragment.kt +40 -0
  239. package/project/.sdk/src/cmp/kotlin/fragment/EntityUpdateOp.fragment.kt +40 -0
  240. package/project/.sdk/src/cmp/kotlin/fragment/Main.fragment.kt +28 -0
  241. package/project/.sdk/src/cmp/kotlin/fragment/SdkError.fragment.kt +24 -0
  242. package/project/.sdk/src/cmp/kotlin/tsconfig.json +15 -0
  243. package/project/.sdk/src/cmp/kotlin/utility_kotlin.ts +101 -0
  244. package/project/.sdk/src/cmp/lua/Entity_lua.ts +7 -2
  245. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +47 -0
  246. package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +137 -0
  247. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +9 -6
  248. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +114 -0
  249. package/project/.sdk/src/cmp/ocaml/EntityOperation_ocaml.ts +63 -0
  250. package/project/.sdk/src/cmp/ocaml/Entity_ocaml.ts +152 -0
  251. package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +37 -0
  252. package/project/.sdk/src/cmp/ocaml/MainEntity_ocaml.ts +28 -0
  253. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +111 -0
  254. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +47 -0
  255. package/project/.sdk/src/cmp/ocaml/SdkError_ocaml.ts +42 -0
  256. package/project/.sdk/src/cmp/ocaml/TestDirect_ocaml.ts +47 -0
  257. package/project/.sdk/src/cmp/ocaml/TestEntity_ocaml.ts +130 -0
  258. package/project/.sdk/src/cmp/ocaml/Test_ocaml.ts +35 -0
  259. package/project/.sdk/src/cmp/ocaml/fragment/RunOp.fragment.ml +32 -0
  260. package/project/.sdk/src/cmp/ocaml/tsconfig.json +15 -0
  261. package/project/.sdk/src/cmp/ocaml/utility_ocaml.ts +129 -0
  262. package/project/.sdk/src/cmp/perl/Config_perl.ts +127 -0
  263. package/project/.sdk/src/cmp/perl/EntityOperation_perl.ts +42 -0
  264. package/project/.sdk/src/cmp/perl/Entity_perl.ts +84 -0
  265. package/project/.sdk/src/cmp/perl/Gitignore_perl.ts +32 -0
  266. package/project/.sdk/src/cmp/perl/MainEntity_perl.ts +34 -0
  267. package/project/.sdk/src/cmp/perl/Main_perl.ts +140 -0
  268. package/project/.sdk/src/cmp/perl/Package_perl.ts +63 -0
  269. package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +433 -0
  270. package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +515 -0
  271. package/project/.sdk/src/cmp/perl/Test_perl.ts +54 -0
  272. package/project/.sdk/src/cmp/perl/fragment/Entity.fragment.pm +235 -0
  273. package/project/.sdk/src/cmp/perl/fragment/EntityCreateOp.fragment.pm +31 -0
  274. package/project/.sdk/src/cmp/perl/fragment/EntityListOp.fragment.pm +43 -0
  275. package/project/.sdk/src/cmp/perl/fragment/EntityLoadOp.fragment.pm +34 -0
  276. package/project/.sdk/src/cmp/perl/fragment/EntityRemoveOp.fragment.pm +32 -0
  277. package/project/.sdk/src/cmp/perl/fragment/EntityUpdateOp.fragment.pm +32 -0
  278. package/project/.sdk/src/cmp/perl/fragment/Main.fragment.pm +263 -0
  279. package/project/.sdk/src/cmp/perl/fragment/SdkError.fragment.pm +27 -0
  280. package/project/.sdk/src/cmp/perl/tsconfig.json +15 -0
  281. package/project/.sdk/src/cmp/perl/utility_perl.ts +30 -0
  282. package/project/.sdk/src/cmp/php/TestEntity_php.ts +45 -0
  283. package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +124 -0
  284. package/project/.sdk/src/cmp/php/fragment/Main.fragment.php +13 -6
  285. package/project/.sdk/src/cmp/py/Entity_py.ts +8 -2
  286. package/project/.sdk/src/cmp/py/TestEntity_py.ts +40 -0
  287. package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +135 -28
  288. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +9 -6
  289. package/project/.sdk/src/cmp/rb/Entity_rb.ts +8 -2
  290. package/project/.sdk/src/cmp/rb/ReadmeExamplesTest_rb.ts +4 -1
  291. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +42 -0
  292. package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +122 -23
  293. package/project/.sdk/src/cmp/rb/fragment/Main.fragment.rb +9 -6
  294. package/project/.sdk/src/cmp/rust/Config_rust.ts +118 -0
  295. package/project/.sdk/src/cmp/rust/EntityBase_rust.ts +59 -0
  296. package/project/.sdk/src/cmp/rust/EntityOperation_rust.ts +44 -0
  297. package/project/.sdk/src/cmp/rust/Entity_rust.ts +94 -0
  298. package/project/.sdk/src/cmp/rust/Gitignore_rust.ts +29 -0
  299. package/project/.sdk/src/cmp/rust/MainEntity_rust.ts +37 -0
  300. package/project/.sdk/src/cmp/rust/Main_rust.ts +146 -0
  301. package/project/.sdk/src/cmp/rust/Package_rust.ts +80 -0
  302. package/project/.sdk/src/cmp/rust/SdkError_rust.ts +42 -0
  303. package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +448 -0
  304. package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +635 -0
  305. package/project/.sdk/src/cmp/rust/Test_rust.ts +51 -0
  306. package/project/.sdk/src/cmp/rust/fragment/Entity.fragment.rs +288 -0
  307. package/project/.sdk/src/cmp/rust/fragment/EntityCreateOp.fragment.rs +29 -0
  308. package/project/.sdk/src/cmp/rust/fragment/EntityListOp.fragment.rs +26 -0
  309. package/project/.sdk/src/cmp/rust/fragment/EntityLoadOp.fragment.rs +35 -0
  310. package/project/.sdk/src/cmp/rust/fragment/EntityRemoveOp.fragment.rs +35 -0
  311. package/project/.sdk/src/cmp/rust/fragment/EntityUpdateOp.fragment.rs +35 -0
  312. package/project/.sdk/src/cmp/rust/fragment/Main.fragment.rs +296 -0
  313. package/project/.sdk/src/cmp/rust/fragment/SdkError.fragment.rs +34 -0
  314. package/project/.sdk/src/cmp/rust/tsconfig.json +15 -0
  315. package/project/.sdk/src/cmp/rust/utility_rust.ts +104 -0
  316. package/project/.sdk/src/cmp/scala/Config_scala.ts +126 -0
  317. package/project/.sdk/src/cmp/scala/EntityBase_scala.ts +50 -0
  318. package/project/.sdk/src/cmp/scala/EntityOperation_scala.ts +46 -0
  319. package/project/.sdk/src/cmp/scala/Entity_scala.ts +87 -0
  320. package/project/.sdk/src/cmp/scala/Gitignore_scala.ts +31 -0
  321. package/project/.sdk/src/cmp/scala/MainEntity_scala.ts +40 -0
  322. package/project/.sdk/src/cmp/scala/Main_scala.ts +93 -0
  323. package/project/.sdk/src/cmp/scala/Package_scala.ts +22 -0
  324. package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +233 -0
  325. package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +397 -0
  326. package/project/.sdk/src/cmp/scala/Test_scala.ts +93 -0
  327. package/project/.sdk/src/cmp/scala/fragment/Entity.fragment.scala +24 -0
  328. package/project/.sdk/src/cmp/scala/fragment/EntityBase.fragment.scala +169 -0
  329. package/project/.sdk/src/cmp/scala/fragment/EntityCreateOp.fragment.scala +32 -0
  330. package/project/.sdk/src/cmp/scala/fragment/EntityListOp.fragment.scala +28 -0
  331. package/project/.sdk/src/cmp/scala/fragment/EntityLoadOp.fragment.scala +33 -0
  332. package/project/.sdk/src/cmp/scala/fragment/EntityRemoveOp.fragment.scala +33 -0
  333. package/project/.sdk/src/cmp/scala/fragment/EntityUpdateOp.fragment.scala +33 -0
  334. package/project/.sdk/src/cmp/scala/fragment/Main.fragment.scala +27 -0
  335. package/project/.sdk/src/cmp/scala/tsconfig.json +15 -0
  336. package/project/.sdk/src/cmp/scala/utility_scala.ts +99 -0
  337. package/project/.sdk/src/cmp/swift/Config_swift.ts +127 -0
  338. package/project/.sdk/src/cmp/swift/EntityBase_swift.ts +38 -0
  339. package/project/.sdk/src/cmp/swift/EntityOperation_swift.ts +39 -0
  340. package/project/.sdk/src/cmp/swift/Entity_swift.ts +86 -0
  341. package/project/.sdk/src/cmp/swift/Gitignore_swift.ts +32 -0
  342. package/project/.sdk/src/cmp/swift/MainEntity_swift.ts +35 -0
  343. package/project/.sdk/src/cmp/swift/Main_swift.ts +94 -0
  344. package/project/.sdk/src/cmp/swift/Package_swift.ts +66 -0
  345. package/project/.sdk/src/cmp/swift/SdkError_swift.ts +41 -0
  346. package/project/.sdk/src/cmp/swift/TestDirect_swift.ts +84 -0
  347. package/project/.sdk/src/cmp/swift/TestEntity_swift.ts +84 -0
  348. package/project/.sdk/src/cmp/swift/Test_swift.ts +39 -0
  349. package/project/.sdk/src/cmp/swift/fragment/Entity.fragment.swift +23 -0
  350. package/project/.sdk/src/cmp/swift/fragment/EntityBase.fragment.swift +202 -0
  351. package/project/.sdk/src/cmp/swift/fragment/EntityCreateOp.fragment.swift +23 -0
  352. package/project/.sdk/src/cmp/swift/fragment/EntityListOp.fragment.swift +21 -0
  353. package/project/.sdk/src/cmp/swift/fragment/EntityLoadOp.fragment.swift +24 -0
  354. package/project/.sdk/src/cmp/swift/fragment/EntityRemoveOp.fragment.swift +24 -0
  355. package/project/.sdk/src/cmp/swift/fragment/EntityUpdateOp.fragment.swift +24 -0
  356. package/project/.sdk/src/cmp/swift/fragment/Main.fragment.swift +211 -0
  357. package/project/.sdk/src/cmp/swift/fragment/SdkError.fragment.swift +22 -0
  358. package/project/.sdk/src/cmp/swift/tsconfig.json +15 -0
  359. package/project/.sdk/src/cmp/swift/utility_swift.ts +76 -0
  360. package/project/.sdk/src/cmp/ts/Config_ts.ts +4 -2
  361. package/project/.sdk/src/cmp/ts/Package_ts.ts +17 -2
  362. package/project/.sdk/src/cmp/ts/fragment/EntityBase.fragment.ts +81 -0
  363. package/project/.sdk/src/cmp/ts/fragment/Main.fragment.ts +10 -5
  364. package/project/.sdk/src/cmp/zig/Config_zig.ts +113 -0
  365. package/project/.sdk/src/cmp/zig/EntityOperation_zig.ts +39 -0
  366. package/project/.sdk/src/cmp/zig/Entity_zig.ts +89 -0
  367. package/project/.sdk/src/cmp/zig/Gitignore_zig.ts +27 -0
  368. package/project/.sdk/src/cmp/zig/MainEntity_zig.ts +38 -0
  369. package/project/.sdk/src/cmp/zig/Main_zig.ts +78 -0
  370. package/project/.sdk/src/cmp/zig/Test_zig.ts +114 -0
  371. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +278 -0
  372. package/project/.sdk/src/cmp/zig/fragment/EntityCreateOp.fragment.zig +24 -0
  373. package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +21 -0
  374. package/project/.sdk/src/cmp/zig/fragment/EntityLoadOp.fragment.zig +26 -0
  375. package/project/.sdk/src/cmp/zig/fragment/EntityRemoveOp.fragment.zig +26 -0
  376. package/project/.sdk/src/cmp/zig/fragment/EntityUpdateOp.fragment.zig +26 -0
  377. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +258 -0
  378. package/project/.sdk/src/cmp/zig/tsconfig.json +15 -0
  379. package/project/.sdk/src/cmp/zig/utility_zig.ts +95 -0
  380. package/project/.sdk/tm/c/LICENSE +22 -0
  381. package/project/.sdk/tm/c/Makefile +50 -0
  382. package/project/.sdk/tm/c/VERSION +1 -0
  383. package/project/.sdk/tm/c/core/context.c +145 -0
  384. package/project/.sdk/tm/c/core/control.c +19 -0
  385. package/project/.sdk/tm/c/core/error.c +24 -0
  386. package/project/.sdk/tm/c/core/helpers.c +228 -0
  387. package/project/.sdk/tm/c/core/operation.c +34 -0
  388. package/project/.sdk/tm/c/core/point.c +49 -0
  389. package/project/.sdk/tm/c/core/response.c +29 -0
  390. package/project/.sdk/tm/c/core/result.c +60 -0
  391. package/project/.sdk/tm/c/core/sdk.h +514 -0
  392. package/project/.sdk/tm/c/core/spec.c +94 -0
  393. package/project/.sdk/tm/c/core/utility.c +74 -0
  394. package/project/.sdk/tm/c/feature/audit.c +134 -0
  395. package/project/.sdk/tm/c/feature/base.c +40 -0
  396. package/project/.sdk/tm/c/feature/cache.c +262 -0
  397. package/project/.sdk/tm/c/feature/clienttrack.c +144 -0
  398. package/project/.sdk/tm/c/feature/debug.c +230 -0
  399. package/project/.sdk/tm/c/feature/idempotency.c +164 -0
  400. package/project/.sdk/tm/c/feature/log.c +79 -0
  401. package/project/.sdk/tm/c/feature/metrics.c +177 -0
  402. package/project/.sdk/tm/c/feature/netsim.c +211 -0
  403. package/project/.sdk/tm/c/feature/paging.c +223 -0
  404. package/project/.sdk/tm/c/feature/proxy.c +249 -0
  405. package/project/.sdk/tm/c/feature/ratelimit.c +124 -0
  406. package/project/.sdk/tm/c/feature/rbac.c +167 -0
  407. package/project/.sdk/tm/c/feature/retry.c +164 -0
  408. package/project/.sdk/tm/c/feature/streaming.c +147 -0
  409. package/project/.sdk/tm/c/feature/support.c +115 -0
  410. package/project/.sdk/tm/c/feature/telemetry.c +205 -0
  411. package/project/.sdk/tm/c/feature/test.c +385 -0
  412. package/project/.sdk/tm/c/feature/timeout.c +106 -0
  413. package/project/.sdk/tm/c/src/feature/README.md +1 -0
  414. package/project/.sdk/tm/c/src/feature/audit/.gitkeep +0 -0
  415. package/project/.sdk/tm/c/src/feature/base/.gitkeep +0 -0
  416. package/project/.sdk/tm/c/src/feature/cache/.gitkeep +0 -0
  417. package/project/.sdk/tm/c/src/feature/clienttrack/.gitkeep +0 -0
  418. package/project/.sdk/tm/c/src/feature/debug/.gitkeep +0 -0
  419. package/project/.sdk/tm/c/src/feature/idempotency/.gitkeep +0 -0
  420. package/project/.sdk/tm/c/src/feature/log/.gitkeep +0 -0
  421. package/project/.sdk/tm/c/src/feature/metrics/.gitkeep +0 -0
  422. package/project/.sdk/tm/c/src/feature/netsim/.gitkeep +0 -0
  423. package/project/.sdk/tm/c/src/feature/paging/.gitkeep +0 -0
  424. package/project/.sdk/tm/c/src/feature/proxy/.gitkeep +0 -0
  425. package/project/.sdk/tm/c/src/feature/ratelimit/.gitkeep +0 -0
  426. package/project/.sdk/tm/c/src/feature/rbac/.gitkeep +0 -0
  427. package/project/.sdk/tm/c/src/feature/retry/.gitkeep +0 -0
  428. package/project/.sdk/tm/c/src/feature/streaming/.gitkeep +0 -0
  429. package/project/.sdk/tm/c/src/feature/telemetry/.gitkeep +0 -0
  430. package/project/.sdk/tm/c/src/feature/test/.gitkeep +0 -0
  431. package/project/.sdk/tm/c/src/feature/timeout/.gitkeep +0 -0
  432. package/project/.sdk/tm/c/tests/ctest.h +58 -0
  433. package/project/.sdk/tm/c/tests/feature_harness.h +441 -0
  434. package/project/.sdk/tm/c/tests/feature_test.c +1210 -0
  435. package/project/.sdk/tm/c/tests/pipeline_test.c +561 -0
  436. package/project/.sdk/tm/c/tests/primary_utility_test.c +573 -0
  437. package/project/.sdk/tm/c/tests/runner.h +274 -0
  438. package/project/.sdk/tm/c/tests/sdk_pipeline_test.c +89 -0
  439. package/project/.sdk/tm/c/tests/struct_corpus_test.c +939 -0
  440. package/project/.sdk/tm/c/utility/clean.c +20 -0
  441. package/project/.sdk/tm/c/utility/done.c +26 -0
  442. package/project/.sdk/tm/c/utility/feature_add.c +42 -0
  443. package/project/.sdk/tm/c/utility/feature_hook.c +22 -0
  444. package/project/.sdk/tm/c/utility/feature_init.c +22 -0
  445. package/project/.sdk/tm/c/utility/fetcher.c +78 -0
  446. package/project/.sdk/tm/c/utility/jsonparse.c +11 -0
  447. package/project/.sdk/tm/c/utility/make_context.c +7 -0
  448. package/project/.sdk/tm/c/utility/make_error.c +66 -0
  449. package/project/.sdk/tm/c/utility/make_fetch_def.c +43 -0
  450. package/project/.sdk/tm/c/utility/make_options.c +179 -0
  451. package/project/.sdk/tm/c/utility/make_point.c +109 -0
  452. package/project/.sdk/tm/c/utility/make_request.c +62 -0
  453. package/project/.sdk/tm/c/utility/make_response.c +45 -0
  454. package/project/.sdk/tm/c/utility/make_result.c +61 -0
  455. package/project/.sdk/tm/c/utility/make_spec.c +60 -0
  456. package/project/.sdk/tm/c/utility/make_url.c +88 -0
  457. package/project/.sdk/tm/c/utility/param.c +58 -0
  458. package/project/.sdk/tm/c/utility/prepare_auth.c +65 -0
  459. package/project/.sdk/tm/c/utility/prepare_body.c +12 -0
  460. package/project/.sdk/tm/c/utility/prepare_headers.c +13 -0
  461. package/project/.sdk/tm/c/utility/prepare_method.c +16 -0
  462. package/project/.sdk/tm/c/utility/prepare_params.c +30 -0
  463. package/project/.sdk/tm/c/utility/prepare_path.c +17 -0
  464. package/project/.sdk/tm/c/utility/prepare_query.c +37 -0
  465. package/project/.sdk/tm/c/utility/result_basic.c +43 -0
  466. package/project/.sdk/tm/c/utility/result_body.c +17 -0
  467. package/project/.sdk/tm/c/utility/result_headers.c +17 -0
  468. package/project/.sdk/tm/c/utility/struct/inject.c +703 -0
  469. package/project/.sdk/tm/c/utility/struct/re_util.c +221 -0
  470. package/project/.sdk/tm/c/utility/struct/regex.c +1103 -0
  471. package/project/.sdk/tm/c/utility/struct/regex.h +84 -0
  472. package/project/.sdk/tm/c/utility/struct/transform.c +2224 -0
  473. package/project/.sdk/tm/c/utility/struct/utility.c +1971 -0
  474. package/project/.sdk/tm/c/utility/struct/value.c +640 -0
  475. package/project/.sdk/tm/c/utility/struct/value.h +273 -0
  476. package/project/.sdk/tm/c/utility/struct/value_io.c +366 -0
  477. package/project/.sdk/tm/c/utility/struct/value_io.h +31 -0
  478. package/project/.sdk/tm/c/utility/struct/voxgig_struct.h +216 -0
  479. package/project/.sdk/tm/c/utility/transform_request.c +21 -0
  480. package/project/.sdk/tm/c/utility/transform_response.c +36 -0
  481. package/project/.sdk/tm/clojure/LICENSE +22 -0
  482. package/project/.sdk/tm/clojure/Makefile +15 -0
  483. package/project/.sdk/tm/clojure/VERSION +1 -0
  484. package/project/.sdk/tm/clojure/src/feature/README.md +1 -0
  485. package/project/.sdk/tm/clojure/src/feature/audit/.gitkeep +0 -0
  486. package/project/.sdk/tm/clojure/src/feature/base/.gitkeep +0 -0
  487. package/project/.sdk/tm/clojure/src/feature/cache/.gitkeep +0 -0
  488. package/project/.sdk/tm/clojure/src/feature/clienttrack/.gitkeep +0 -0
  489. package/project/.sdk/tm/clojure/src/feature/debug/.gitkeep +0 -0
  490. package/project/.sdk/tm/clojure/src/feature/idempotency/.gitkeep +0 -0
  491. package/project/.sdk/tm/clojure/src/feature/log/.gitkeep +0 -0
  492. package/project/.sdk/tm/clojure/src/feature/metrics/.gitkeep +0 -0
  493. package/project/.sdk/tm/clojure/src/feature/netsim/.gitkeep +0 -0
  494. package/project/.sdk/tm/clojure/src/feature/paging/.gitkeep +0 -0
  495. package/project/.sdk/tm/clojure/src/feature/proxy/.gitkeep +0 -0
  496. package/project/.sdk/tm/clojure/src/feature/ratelimit/.gitkeep +0 -0
  497. package/project/.sdk/tm/clojure/src/feature/rbac/.gitkeep +0 -0
  498. package/project/.sdk/tm/clojure/src/feature/retry/.gitkeep +0 -0
  499. package/project/.sdk/tm/clojure/src/feature/streaming/.gitkeep +0 -0
  500. package/project/.sdk/tm/clojure/src/feature/telemetry/.gitkeep +0 -0
  501. package/project/.sdk/tm/clojure/src/feature/test/.gitkeep +0 -0
  502. package/project/.sdk/tm/clojure/src/feature/timeout/.gitkeep +0 -0
  503. package/project/.sdk/tm/clojure/src/sdk/client.clj +119 -0
  504. package/project/.sdk/tm/clojure/src/sdk/core.clj +901 -0
  505. package/project/.sdk/tm/clojure/src/sdk/features.clj +1027 -0
  506. package/project/.sdk/tm/clojure/src/voxgig/struct.clj +1734 -0
  507. package/project/.sdk/tm/clojure/test/sdk/test/feature.clj +596 -0
  508. package/project/.sdk/tm/clojure/test/sdk/test/netsim.clj +42 -0
  509. package/project/.sdk/tm/clojure/test/sdk/test/pipeline.clj +314 -0
  510. package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +52 -0
  511. package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +337 -0
  512. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +39 -0
  513. package/project/.sdk/tm/clojure/test/sdk/testutil.clj +35 -0
  514. package/project/.sdk/tm/cpp/LICENSE +22 -0
  515. package/project/.sdk/tm/cpp/Makefile +36 -0
  516. package/project/.sdk/tm/cpp/VERSION +1 -0
  517. package/project/.sdk/tm/cpp/core/sdk.hpp +16 -0
  518. package/project/.sdk/tm/cpp/core/struct.hpp +225 -0
  519. package/project/.sdk/tm/cpp/core/types.hpp +1105 -0
  520. package/project/.sdk/tm/cpp/feature/audit.hpp +107 -0
  521. package/project/.sdk/tm/cpp/feature/base.hpp +34 -0
  522. package/project/.sdk/tm/cpp/feature/cache.hpp +189 -0
  523. package/project/.sdk/tm/cpp/feature/clienttrack.hpp +105 -0
  524. package/project/.sdk/tm/cpp/feature/debug.hpp +157 -0
  525. package/project/.sdk/tm/cpp/feature/idempotency.hpp +119 -0
  526. package/project/.sdk/tm/cpp/feature/log.hpp +90 -0
  527. package/project/.sdk/tm/cpp/feature/metrics.hpp +103 -0
  528. package/project/.sdk/tm/cpp/feature/netsim.hpp +152 -0
  529. package/project/.sdk/tm/cpp/feature/options.hpp +156 -0
  530. package/project/.sdk/tm/cpp/feature/paging.hpp +156 -0
  531. package/project/.sdk/tm/cpp/feature/proxy.hpp +145 -0
  532. package/project/.sdk/tm/cpp/feature/ratelimit.hpp +87 -0
  533. package/project/.sdk/tm/cpp/feature/rbac.hpp +108 -0
  534. package/project/.sdk/tm/cpp/feature/retry.hpp +130 -0
  535. package/project/.sdk/tm/cpp/feature/streaming.hpp +98 -0
  536. package/project/.sdk/tm/cpp/feature/telemetry.hpp +139 -0
  537. package/project/.sdk/tm/cpp/feature/test.hpp +289 -0
  538. package/project/.sdk/tm/cpp/feature/timeout.hpp +88 -0
  539. package/project/.sdk/tm/cpp/src/feature/README.md +1 -0
  540. package/project/.sdk/tm/cpp/src/feature/audit/.gitkeep +0 -0
  541. package/project/.sdk/tm/cpp/src/feature/base/.gitkeep +0 -0
  542. package/project/.sdk/tm/cpp/src/feature/cache/.gitkeep +0 -0
  543. package/project/.sdk/tm/cpp/src/feature/clienttrack/.gitkeep +0 -0
  544. package/project/.sdk/tm/cpp/src/feature/debug/.gitkeep +0 -0
  545. package/project/.sdk/tm/cpp/src/feature/idempotency/.gitkeep +0 -0
  546. package/project/.sdk/tm/cpp/src/feature/log/.gitkeep +0 -0
  547. package/project/.sdk/tm/cpp/src/feature/metrics/.gitkeep +0 -0
  548. package/project/.sdk/tm/cpp/src/feature/netsim/.gitkeep +0 -0
  549. package/project/.sdk/tm/cpp/src/feature/paging/.gitkeep +0 -0
  550. package/project/.sdk/tm/cpp/src/feature/proxy/.gitkeep +0 -0
  551. package/project/.sdk/tm/cpp/src/feature/ratelimit/.gitkeep +0 -0
  552. package/project/.sdk/tm/cpp/src/feature/rbac/.gitkeep +0 -0
  553. package/project/.sdk/tm/cpp/src/feature/retry/.gitkeep +0 -0
  554. package/project/.sdk/tm/cpp/src/feature/streaming/.gitkeep +0 -0
  555. package/project/.sdk/tm/cpp/src/feature/telemetry/.gitkeep +0 -0
  556. package/project/.sdk/tm/cpp/src/feature/test/.gitkeep +0 -0
  557. package/project/.sdk/tm/cpp/src/feature/timeout/.gitkeep +0 -0
  558. package/project/.sdk/tm/cpp/test/custom_utility_test.cpp +57 -0
  559. package/project/.sdk/tm/cpp/test/exists_test.cpp +16 -0
  560. package/project/.sdk/tm/cpp/test/feature_test.cpp +911 -0
  561. package/project/.sdk/tm/cpp/test/harness.hpp +344 -0
  562. package/project/.sdk/tm/cpp/test/netsim_test.cpp +48 -0
  563. package/project/.sdk/tm/cpp/test/pipeline_test.cpp +526 -0
  564. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +841 -0
  565. package/project/.sdk/tm/cpp/test/runner_support.hpp +437 -0
  566. package/project/.sdk/tm/cpp/test/sdk-test-control.json +19 -0
  567. package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +494 -0
  568. package/project/.sdk/tm/cpp/test/struct_runner.hpp +314 -0
  569. package/project/.sdk/tm/cpp/test/testlib.hpp +82 -0
  570. package/project/.sdk/tm/cpp/utility/pipeline.hpp +1054 -0
  571. package/project/.sdk/tm/cpp/utility/voxgigstruct/value.hpp +525 -0
  572. package/project/.sdk/tm/cpp/utility/voxgigstruct/value_io.hpp +315 -0
  573. package/project/.sdk/tm/cpp/utility/voxgigstruct/voxgig_struct.hpp +3379 -0
  574. package/project/.sdk/tm/csharp/LICENSE +22 -0
  575. package/project/.sdk/tm/csharp/Makefile +43 -0
  576. package/project/.sdk/tm/csharp/VERSION +1 -0
  577. package/project/.sdk/tm/csharp/core/Context.cs +257 -0
  578. package/project/.sdk/tm/csharp/core/Control.cs +17 -0
  579. package/project/.sdk/tm/csharp/core/Helpers.cs +61 -0
  580. package/project/.sdk/tm/csharp/core/Operation.cs +51 -0
  581. package/project/.sdk/tm/csharp/core/Point.cs +68 -0
  582. package/project/.sdk/tm/csharp/core/Response.cs +45 -0
  583. package/project/.sdk/tm/csharp/core/Result.cs +63 -0
  584. package/project/.sdk/tm/csharp/core/Spec.cs +81 -0
  585. package/project/.sdk/tm/csharp/core/Types.cs +21 -0
  586. package/project/.sdk/tm/csharp/core/Utility.cs +88 -0
  587. package/project/.sdk/tm/csharp/feature/AuditFeature.cs +116 -0
  588. package/project/.sdk/tm/csharp/feature/BaseFeature.cs +39 -0
  589. package/project/.sdk/tm/csharp/feature/CacheFeature.cs +186 -0
  590. package/project/.sdk/tm/csharp/feature/ClienttrackFeature.cs +103 -0
  591. package/project/.sdk/tm/csharp/feature/DebugFeature.cs +157 -0
  592. package/project/.sdk/tm/csharp/feature/FeatureOptions.cs +197 -0
  593. package/project/.sdk/tm/csharp/feature/IdempotencyFeature.cs +97 -0
  594. package/project/.sdk/tm/csharp/feature/LogFeature.cs +109 -0
  595. package/project/.sdk/tm/csharp/feature/MetricsFeature.cs +117 -0
  596. package/project/.sdk/tm/csharp/feature/NetsimFeature.cs +200 -0
  597. package/project/.sdk/tm/csharp/feature/PagingFeature.cs +187 -0
  598. package/project/.sdk/tm/csharp/feature/ProxyFeature.cs +138 -0
  599. package/project/.sdk/tm/csharp/feature/RatelimitFeature.cs +89 -0
  600. package/project/.sdk/tm/csharp/feature/RbacFeature.cs +124 -0
  601. package/project/.sdk/tm/csharp/feature/RetryFeature.cs +174 -0
  602. package/project/.sdk/tm/csharp/feature/StreamingFeature.cs +93 -0
  603. package/project/.sdk/tm/csharp/feature/TelemetryFeature.cs +145 -0
  604. package/project/.sdk/tm/csharp/feature/TestFeature.cs +368 -0
  605. package/project/.sdk/tm/csharp/feature/TimeoutFeature.cs +69 -0
  606. package/project/.sdk/tm/csharp/src/feature/README.md +1 -0
  607. package/project/.sdk/tm/csharp/src/feature/audit/.gitkeep +0 -0
  608. package/project/.sdk/tm/csharp/src/feature/base/.gitkeep +0 -0
  609. package/project/.sdk/tm/csharp/src/feature/cache/.gitkeep +0 -0
  610. package/project/.sdk/tm/csharp/src/feature/clienttrack/.gitkeep +0 -0
  611. package/project/.sdk/tm/csharp/src/feature/debug/.gitkeep +0 -0
  612. package/project/.sdk/tm/csharp/src/feature/idempotency/.gitkeep +0 -0
  613. package/project/.sdk/tm/csharp/src/feature/log/.gitkeep +0 -0
  614. package/project/.sdk/tm/csharp/src/feature/metrics/.gitkeep +0 -0
  615. package/project/.sdk/tm/csharp/src/feature/netsim/.gitkeep +0 -0
  616. package/project/.sdk/tm/csharp/src/feature/paging/.gitkeep +0 -0
  617. package/project/.sdk/tm/csharp/src/feature/proxy/.gitkeep +0 -0
  618. package/project/.sdk/tm/csharp/src/feature/ratelimit/.gitkeep +0 -0
  619. package/project/.sdk/tm/csharp/src/feature/rbac/.gitkeep +0 -0
  620. package/project/.sdk/tm/csharp/src/feature/retry/.gitkeep +0 -0
  621. package/project/.sdk/tm/csharp/src/feature/streaming/.gitkeep +0 -0
  622. package/project/.sdk/tm/csharp/src/feature/telemetry/.gitkeep +0 -0
  623. package/project/.sdk/tm/csharp/src/feature/test/.gitkeep +0 -0
  624. package/project/.sdk/tm/csharp/src/feature/timeout/.gitkeep +0 -0
  625. package/project/.sdk/tm/csharp/test/CustomUtilityTest.cs +51 -0
  626. package/project/.sdk/tm/csharp/test/ExistsTest.cs +17 -0
  627. package/project/.sdk/tm/csharp/test/FeatureTest.cs +1653 -0
  628. package/project/.sdk/tm/csharp/test/NetsimTest.cs +67 -0
  629. package/project/.sdk/tm/csharp/test/PipelineTest.cs +605 -0
  630. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +957 -0
  631. package/project/.sdk/tm/csharp/test/Runner.cs +626 -0
  632. package/project/.sdk/tm/csharp/test/StructRunner.cs +276 -0
  633. package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +1273 -0
  634. package/project/.sdk/tm/csharp/test/sdk-test-control.json +19 -0
  635. package/project/.sdk/tm/csharp/utility/Clean.cs +11 -0
  636. package/project/.sdk/tm/csharp/utility/Done.cs +28 -0
  637. package/project/.sdk/tm/csharp/utility/FeatureAdd.cs +54 -0
  638. package/project/.sdk/tm/csharp/utility/FeatureHook.cs +35 -0
  639. package/project/.sdk/tm/csharp/utility/FeatureInit.cs +28 -0
  640. package/project/.sdk/tm/csharp/utility/Fetcher.cs +181 -0
  641. package/project/.sdk/tm/csharp/utility/MakeContext.cs +11 -0
  642. package/project/.sdk/tm/csharp/utility/MakeError.cs +69 -0
  643. package/project/.sdk/tm/csharp/utility/MakeFetchDef.cs +38 -0
  644. package/project/.sdk/tm/csharp/utility/MakeOptions.cs +203 -0
  645. package/project/.sdk/tm/csharp/utility/MakePoint.cs +127 -0
  646. package/project/.sdk/tm/csharp/utility/MakeRequest.cs +87 -0
  647. package/project/.sdk/tm/csharp/utility/MakeResponse.cs +55 -0
  648. package/project/.sdk/tm/csharp/utility/MakeResult.cs +64 -0
  649. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +64 -0
  650. package/project/.sdk/tm/csharp/utility/MakeUrl.cs +54 -0
  651. package/project/.sdk/tm/csharp/utility/Param.cs +67 -0
  652. package/project/.sdk/tm/csharp/utility/PrepareAuth.cs +54 -0
  653. package/project/.sdk/tm/csharp/utility/PrepareBody.cs +19 -0
  654. package/project/.sdk/tm/csharp/utility/PrepareHeaders.cs +22 -0
  655. package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +22 -0
  656. package/project/.sdk/tm/csharp/utility/PrepareParams.cs +38 -0
  657. package/project/.sdk/tm/csharp/utility/PreparePath.cs +18 -0
  658. package/project/.sdk/tm/csharp/utility/PrepareQuery.cs +40 -0
  659. package/project/.sdk/tm/csharp/utility/Register.cs +41 -0
  660. package/project/.sdk/tm/csharp/utility/ResultBasic.cs +39 -0
  661. package/project/.sdk/tm/csharp/utility/ResultBody.cs +22 -0
  662. package/project/.sdk/tm/csharp/utility/ResultHeaders.cs +26 -0
  663. package/project/.sdk/tm/csharp/utility/TransformRequest.cs +39 -0
  664. package/project/.sdk/tm/csharp/utility/TransformResponse.cs +53 -0
  665. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +3582 -0
  666. package/project/.sdk/tm/dart/LICENSE +22 -0
  667. package/project/.sdk/tm/dart/Makefile +50 -0
  668. package/project/.sdk/tm/dart/lib/Context.dart +150 -0
  669. package/project/.sdk/tm/dart/lib/Control.dart +15 -0
  670. package/project/.sdk/tm/dart/lib/Operation.dart +31 -0
  671. package/project/.sdk/tm/dart/lib/Point.dart +43 -0
  672. package/project/.sdk/tm/dart/lib/Response.dart +32 -0
  673. package/project/.sdk/tm/dart/lib/Result.dart +39 -0
  674. package/project/.sdk/tm/dart/lib/Spec.dart +49 -0
  675. package/project/.sdk/tm/dart/lib/feature/audit/AuditFeature.dart +103 -0
  676. package/project/.sdk/tm/dart/lib/feature/base/BaseFeature.dart +76 -0
  677. package/project/.sdk/tm/dart/lib/feature/cache/CacheFeature.dart +152 -0
  678. package/project/.sdk/tm/dart/lib/feature/clienttrack/ClienttrackFeature.dart +104 -0
  679. package/project/.sdk/tm/dart/lib/feature/debug/DebugFeature.dart +153 -0
  680. package/project/.sdk/tm/dart/lib/feature/idempotency/IdempotencyFeature.dart +92 -0
  681. package/project/.sdk/tm/dart/lib/feature/log/LogFeature.dart +85 -0
  682. package/project/.sdk/tm/dart/lib/feature/metrics/MetricsFeature.dart +103 -0
  683. package/project/.sdk/tm/dart/lib/feature/netsim/NetsimFeature.dart +186 -0
  684. package/project/.sdk/tm/dart/lib/feature/paging/PagingFeature.dart +145 -0
  685. package/project/.sdk/tm/dart/lib/feature/proxy/ProxyFeature.dart +118 -0
  686. package/project/.sdk/tm/dart/lib/feature/ratelimit/RatelimitFeature.dart +103 -0
  687. package/project/.sdk/tm/dart/lib/feature/rbac/RbacFeature.dart +121 -0
  688. package/project/.sdk/tm/dart/lib/feature/retry/RetryFeature.dart +155 -0
  689. package/project/.sdk/tm/dart/lib/feature/streaming/StreamingFeature.dart +97 -0
  690. package/project/.sdk/tm/dart/lib/feature/telemetry/TelemetryFeature.dart +136 -0
  691. package/project/.sdk/tm/dart/lib/feature/test/TestFeature.dart +270 -0
  692. package/project/.sdk/tm/dart/lib/feature/timeout/TimeoutFeature.dart +104 -0
  693. package/project/.sdk/tm/dart/lib/utility/CleanUtility.dart +12 -0
  694. package/project/.sdk/tm/dart/lib/utility/DoneUtility.dart +18 -0
  695. package/project/.sdk/tm/dart/lib/utility/ErrUtility.dart +46 -0
  696. package/project/.sdk/tm/dart/lib/utility/FeatureAddUtility.dart +35 -0
  697. package/project/.sdk/tm/dart/lib/utility/FeatureHookUtility.dart +20 -0
  698. package/project/.sdk/tm/dart/lib/utility/FeatureInitUtility.dart +9 -0
  699. package/project/.sdk/tm/dart/lib/utility/FetcherUtility.dart +95 -0
  700. package/project/.sdk/tm/dart/lib/utility/MakeContextUtility.dart +6 -0
  701. package/project/.sdk/tm/dart/lib/utility/MakeErrorUtility.dart +67 -0
  702. package/project/.sdk/tm/dart/lib/utility/MakeFetchDefUtility.dart +42 -0
  703. package/project/.sdk/tm/dart/lib/utility/MakeOptionsUtility.dart +147 -0
  704. package/project/.sdk/tm/dart/lib/utility/MakePointUtility.dart +84 -0
  705. package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +63 -0
  706. package/project/.sdk/tm/dart/lib/utility/MakeResponseUtility.dart +54 -0
  707. package/project/.sdk/tm/dart/lib/utility/MakeResultUtility.dart +49 -0
  708. package/project/.sdk/tm/dart/lib/utility/MakeSpecUtility.dart +61 -0
  709. package/project/.sdk/tm/dart/lib/utility/MakeUrlUtility.dart +51 -0
  710. package/project/.sdk/tm/dart/lib/utility/ParamUtility.dart +56 -0
  711. package/project/.sdk/tm/dart/lib/utility/PrepareAuthUtility.dart +46 -0
  712. package/project/.sdk/tm/dart/lib/utility/PrepareBodyUtility.dart +19 -0
  713. package/project/.sdk/tm/dart/lib/utility/PrepareHeadersUtility.dart +11 -0
  714. package/project/.sdk/tm/dart/lib/utility/PrepareMethodUtility.dart +15 -0
  715. package/project/.sdk/tm/dart/lib/utility/PrepareParamsUtility.dart +23 -0
  716. package/project/.sdk/tm/dart/lib/utility/PreparePathUtility.dart +9 -0
  717. package/project/.sdk/tm/dart/lib/utility/PrepareQueryUtility.dart +18 -0
  718. package/project/.sdk/tm/dart/lib/utility/ResultBasicUtility.dart +29 -0
  719. package/project/.sdk/tm/dart/lib/utility/ResultBodyUtility.dart +15 -0
  720. package/project/.sdk/tm/dart/lib/utility/ResultHeadersUtility.dart +18 -0
  721. package/project/.sdk/tm/dart/lib/utility/StructUtility.dart +127 -0
  722. package/project/.sdk/tm/dart/lib/utility/TransformRequestUtility.dart +28 -0
  723. package/project/.sdk/tm/dart/lib/utility/TransformResponseUtility.dart +44 -0
  724. package/project/.sdk/tm/dart/lib/utility/Utility.dart +230 -0
  725. package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +2456 -0
  726. package/project/.sdk/tm/dart/src/feature/README.md +3 -0
  727. package/project/.sdk/tm/dart/src/feature/audit/.gitkeep +0 -0
  728. package/project/.sdk/tm/dart/src/feature/base/.gitkeep +0 -0
  729. package/project/.sdk/tm/dart/src/feature/cache/.gitkeep +0 -0
  730. package/project/.sdk/tm/dart/src/feature/clienttrack/.gitkeep +0 -0
  731. package/project/.sdk/tm/dart/src/feature/debug/.gitkeep +0 -0
  732. package/project/.sdk/tm/dart/src/feature/idempotency/.gitkeep +0 -0
  733. package/project/.sdk/tm/dart/src/feature/log/.gitkeep +0 -0
  734. package/project/.sdk/tm/dart/src/feature/metrics/.gitkeep +0 -0
  735. package/project/.sdk/tm/dart/src/feature/netsim/.gitkeep +0 -0
  736. package/project/.sdk/tm/dart/src/feature/paging/.gitkeep +0 -0
  737. package/project/.sdk/tm/dart/src/feature/proxy/.gitkeep +0 -0
  738. package/project/.sdk/tm/dart/src/feature/ratelimit/.gitkeep +0 -0
  739. package/project/.sdk/tm/dart/src/feature/rbac/.gitkeep +0 -0
  740. package/project/.sdk/tm/dart/src/feature/retry/.gitkeep +0 -0
  741. package/project/.sdk/tm/dart/src/feature/streaming/.gitkeep +0 -0
  742. package/project/.sdk/tm/dart/src/feature/telemetry/.gitkeep +0 -0
  743. package/project/.sdk/tm/dart/src/feature/test/.gitkeep +0 -0
  744. package/project/.sdk/tm/dart/src/feature/timeout/.gitkeep +0 -0
  745. package/project/.sdk/tm/dart/test/custom_test.dart +65 -0
  746. package/project/.sdk/tm/dart/test/exists_test.dart +12 -0
  747. package/project/.sdk/tm/dart/test/feature/harness.dart +329 -0
  748. package/project/.sdk/tm/dart/test/feature_test.dart +1139 -0
  749. package/project/.sdk/tm/dart/test/harness.dart +153 -0
  750. package/project/.sdk/tm/dart/test/netsim_test.dart +48 -0
  751. package/project/.sdk/tm/dart/test/pipeline_test.dart +608 -0
  752. package/project/.sdk/tm/dart/test/primary_test.dart +411 -0
  753. package/project/.sdk/tm/dart/test/runner.dart +406 -0
  754. package/project/.sdk/tm/dart/test/sdk-test-control.json +19 -0
  755. package/project/.sdk/tm/dart/test/struct_corpus.dart +531 -0
  756. package/project/.sdk/tm/dart/test/struct_test.dart +41 -0
  757. package/project/.sdk/tm/dart/test/utility.dart +159 -0
  758. package/project/.sdk/tm/elixir/LICENSE +21 -0
  759. package/project/.sdk/tm/elixir/Makefile +15 -0
  760. package/project/.sdk/tm/elixir/VERSION +1 -0
  761. package/project/.sdk/tm/elixir/lib/projectname/context.ex +138 -0
  762. package/project/.sdk/tm/elixir/lib/projectname/core.ex +125 -0
  763. package/project/.sdk/tm/elixir/lib/projectname/entity_base.ex +155 -0
  764. package/project/.sdk/tm/elixir/lib/projectname/error.ex +16 -0
  765. package/project/.sdk/tm/elixir/lib/projectname/feature/audit.ex +125 -0
  766. package/project/.sdk/tm/elixir/lib/projectname/feature/cache.ex +170 -0
  767. package/project/.sdk/tm/elixir/lib/projectname/feature/clienttrack.ex +136 -0
  768. package/project/.sdk/tm/elixir/lib/projectname/feature/debug.ex +232 -0
  769. package/project/.sdk/tm/elixir/lib/projectname/feature/idempotency.ex +107 -0
  770. package/project/.sdk/tm/elixir/lib/projectname/feature/log.ex +62 -0
  771. package/project/.sdk/tm/elixir/lib/projectname/feature/metrics.ex +130 -0
  772. package/project/.sdk/tm/elixir/lib/projectname/feature/netsim.ex +213 -0
  773. package/project/.sdk/tm/elixir/lib/projectname/feature/paging.ex +191 -0
  774. package/project/.sdk/tm/elixir/lib/projectname/feature/proxy.ex +142 -0
  775. package/project/.sdk/tm/elixir/lib/projectname/feature/ratelimit.ex +81 -0
  776. package/project/.sdk/tm/elixir/lib/projectname/feature/rbac.ex +139 -0
  777. package/project/.sdk/tm/elixir/lib/projectname/feature/retry.ex +150 -0
  778. package/project/.sdk/tm/elixir/lib/projectname/feature/streaming.ex +107 -0
  779. package/project/.sdk/tm/elixir/lib/projectname/feature/telemetry.ex +172 -0
  780. package/project/.sdk/tm/elixir/lib/projectname/feature/test.ex +285 -0
  781. package/project/.sdk/tm/elixir/lib/projectname/feature/timeout.ex +64 -0
  782. package/project/.sdk/tm/elixir/lib/projectname/feature.ex +90 -0
  783. package/project/.sdk/tm/elixir/lib/projectname/helpers.ex +66 -0
  784. package/project/.sdk/tm/elixir/lib/projectname/json.ex +115 -0
  785. package/project/.sdk/tm/elixir/lib/projectname/utility.ex +1257 -0
  786. package/project/.sdk/tm/elixir/lib/utility/struct/voxgig_struct.ex +2615 -0
  787. package/project/.sdk/tm/elixir/src/feature/README.md +3 -0
  788. package/project/.sdk/tm/elixir/src/feature/audit/.gitkeep +0 -0
  789. package/project/.sdk/tm/elixir/src/feature/base/.gitkeep +0 -0
  790. package/project/.sdk/tm/elixir/src/feature/cache/.gitkeep +0 -0
  791. package/project/.sdk/tm/elixir/src/feature/clienttrack/.gitkeep +0 -0
  792. package/project/.sdk/tm/elixir/src/feature/debug/.gitkeep +0 -0
  793. package/project/.sdk/tm/elixir/src/feature/idempotency/.gitkeep +0 -0
  794. package/project/.sdk/tm/elixir/src/feature/log/.gitkeep +0 -0
  795. package/project/.sdk/tm/elixir/src/feature/metrics/.gitkeep +0 -0
  796. package/project/.sdk/tm/elixir/src/feature/netsim/.gitkeep +0 -0
  797. package/project/.sdk/tm/elixir/src/feature/paging/.gitkeep +0 -0
  798. package/project/.sdk/tm/elixir/src/feature/proxy/.gitkeep +0 -0
  799. package/project/.sdk/tm/elixir/src/feature/ratelimit/.gitkeep +0 -0
  800. package/project/.sdk/tm/elixir/src/feature/rbac/.gitkeep +0 -0
  801. package/project/.sdk/tm/elixir/src/feature/retry/.gitkeep +0 -0
  802. package/project/.sdk/tm/elixir/src/feature/streaming/.gitkeep +0 -0
  803. package/project/.sdk/tm/elixir/src/feature/telemetry/.gitkeep +0 -0
  804. package/project/.sdk/tm/elixir/src/feature/test/.gitkeep +0 -0
  805. package/project/.sdk/tm/elixir/src/feature/timeout/.gitkeep +0 -0
  806. package/project/.sdk/tm/elixir/test/feature_test.exs +879 -0
  807. package/project/.sdk/tm/elixir/test/netsim_test.exs +58 -0
  808. package/project/.sdk/tm/elixir/test/pipeline_test.exs +558 -0
  809. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +133 -0
  810. package/project/.sdk/tm/elixir/test/stream_test.exs +119 -0
  811. package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +18 -0
  812. package/project/.sdk/tm/elixir/test/support/feature_harness.ex +346 -0
  813. package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +677 -0
  814. package/project/.sdk/tm/elixir/test/test_helper.exs +1 -0
  815. package/project/.sdk/tm/go/core/context.go +10 -0
  816. package/project/.sdk/tm/go/core/control.go +2 -0
  817. package/project/.sdk/tm/go/core/result.go +6 -0
  818. package/project/.sdk/tm/go/core/types.go +1 -0
  819. package/project/.sdk/tm/go/feature/audit_feature.go +110 -0
  820. package/project/.sdk/tm/go/feature/base_feature.go +8 -0
  821. package/project/.sdk/tm/go/feature/cache_feature.go +171 -0
  822. package/project/.sdk/tm/go/feature/clienttrack_feature.go +100 -0
  823. package/project/.sdk/tm/go/feature/debug_feature.go +159 -0
  824. package/project/.sdk/tm/go/feature/feature_options.go +204 -0
  825. package/project/.sdk/tm/go/feature/idempotency_feature.go +115 -0
  826. package/project/.sdk/tm/go/feature/metrics_feature.go +112 -0
  827. package/project/.sdk/tm/go/feature/netsim_feature.go +184 -0
  828. package/project/.sdk/tm/go/feature/paging_feature.go +173 -0
  829. package/project/.sdk/tm/go/feature/proxy_feature.go +121 -0
  830. package/project/.sdk/tm/go/feature/ratelimit_feature.go +88 -0
  831. package/project/.sdk/tm/go/feature/rbac_feature.go +126 -0
  832. package/project/.sdk/tm/go/feature/retry_feature.go +165 -0
  833. package/project/.sdk/tm/go/feature/streaming_feature.go +119 -0
  834. package/project/.sdk/tm/go/feature/telemetry_feature.go +142 -0
  835. package/project/.sdk/tm/go/feature/test_feature.go +78 -3
  836. package/project/.sdk/tm/go/feature/timeout_feature.go +88 -0
  837. package/project/.sdk/tm/go/src/feature/audit/.gitkeep +0 -0
  838. package/project/.sdk/tm/go/src/feature/cache/.gitkeep +0 -0
  839. package/project/.sdk/tm/go/src/feature/clienttrack/.gitkeep +0 -0
  840. package/project/.sdk/tm/go/src/feature/debug/.gitkeep +0 -0
  841. package/project/.sdk/tm/go/src/feature/idempotency/.gitkeep +0 -0
  842. package/project/.sdk/tm/go/src/feature/metrics/.gitkeep +0 -0
  843. package/project/.sdk/tm/go/src/feature/netsim/.gitkeep +0 -0
  844. package/project/.sdk/tm/go/src/feature/paging/.gitkeep +0 -0
  845. package/project/.sdk/tm/go/src/feature/proxy/.gitkeep +0 -0
  846. package/project/.sdk/tm/go/src/feature/ratelimit/.gitkeep +0 -0
  847. package/project/.sdk/tm/go/src/feature/rbac/.gitkeep +0 -0
  848. package/project/.sdk/tm/go/src/feature/retry/.gitkeep +0 -0
  849. package/project/.sdk/tm/go/src/feature/streaming/.gitkeep +0 -0
  850. package/project/.sdk/tm/go/src/feature/telemetry/.gitkeep +0 -0
  851. package/project/.sdk/tm/go/src/feature/timeout/.gitkeep +0 -0
  852. package/project/.sdk/tm/go/test/feature_test.go +1465 -0
  853. package/project/.sdk/tm/go/test/netsim_test.go +70 -0
  854. package/project/.sdk/tm/go/test/pipeline_test.go +571 -0
  855. package/project/.sdk/tm/go/utility/feature_add.go +38 -0
  856. package/project/.sdk/tm/go/utility/fetcher.go +13 -1
  857. package/project/.sdk/tm/go/utility/make_error.go +8 -0
  858. package/project/.sdk/tm/go/utility/make_options.go +62 -0
  859. package/project/.sdk/tm/go/utility/make_point.go +6 -0
  860. package/project/.sdk/tm/go-cli/src/feature/audit/.gitkeep +0 -0
  861. package/project/.sdk/tm/go-cli/src/feature/cache/.gitkeep +0 -0
  862. package/project/.sdk/tm/go-cli/src/feature/clienttrack/.gitkeep +0 -0
  863. package/project/.sdk/tm/go-cli/src/feature/debug/.gitkeep +0 -0
  864. package/project/.sdk/tm/go-cli/src/feature/idempotency/.gitkeep +0 -0
  865. package/project/.sdk/tm/go-cli/src/feature/metrics/.gitkeep +0 -0
  866. package/project/.sdk/tm/go-cli/src/feature/netsim/.gitkeep +0 -0
  867. package/project/.sdk/tm/go-cli/src/feature/paging/.gitkeep +0 -0
  868. package/project/.sdk/tm/go-cli/src/feature/proxy/.gitkeep +0 -0
  869. package/project/.sdk/tm/go-cli/src/feature/ratelimit/.gitkeep +0 -0
  870. package/project/.sdk/tm/go-cli/src/feature/rbac/.gitkeep +0 -0
  871. package/project/.sdk/tm/go-cli/src/feature/retry/.gitkeep +0 -0
  872. package/project/.sdk/tm/go-cli/src/feature/streaming/.gitkeep +0 -0
  873. package/project/.sdk/tm/go-cli/src/feature/telemetry/.gitkeep +0 -0
  874. package/project/.sdk/tm/go-cli/src/feature/timeout/.gitkeep +0 -0
  875. package/project/.sdk/tm/go-mcp/src/feature/audit/.gitkeep +0 -0
  876. package/project/.sdk/tm/go-mcp/src/feature/cache/.gitkeep +0 -0
  877. package/project/.sdk/tm/go-mcp/src/feature/clienttrack/.gitkeep +0 -0
  878. package/project/.sdk/tm/go-mcp/src/feature/debug/.gitkeep +0 -0
  879. package/project/.sdk/tm/go-mcp/src/feature/idempotency/.gitkeep +0 -0
  880. package/project/.sdk/tm/go-mcp/src/feature/metrics/.gitkeep +0 -0
  881. package/project/.sdk/tm/go-mcp/src/feature/netsim/.gitkeep +0 -0
  882. package/project/.sdk/tm/go-mcp/src/feature/paging/.gitkeep +0 -0
  883. package/project/.sdk/tm/go-mcp/src/feature/proxy/.gitkeep +0 -0
  884. package/project/.sdk/tm/go-mcp/src/feature/ratelimit/.gitkeep +0 -0
  885. package/project/.sdk/tm/go-mcp/src/feature/rbac/.gitkeep +0 -0
  886. package/project/.sdk/tm/go-mcp/src/feature/retry/.gitkeep +0 -0
  887. package/project/.sdk/tm/go-mcp/src/feature/streaming/.gitkeep +0 -0
  888. package/project/.sdk/tm/go-mcp/src/feature/telemetry/.gitkeep +0 -0
  889. package/project/.sdk/tm/go-mcp/src/feature/timeout/.gitkeep +0 -0
  890. package/project/.sdk/tm/haskell/LICENSE +21 -0
  891. package/project/.sdk/tm/haskell/Makefile +22 -0
  892. package/project/.sdk/tm/haskell/VERSION +1 -0
  893. package/project/.sdk/tm/haskell/src/SdkFeatures.hs +1278 -0
  894. package/project/.sdk/tm/haskell/src/SdkHelpers.hs +337 -0
  895. package/project/.sdk/tm/haskell/src/SdkRuntime.hs +1007 -0
  896. package/project/.sdk/tm/haskell/src/SdkTypes.hs +186 -0
  897. package/project/.sdk/tm/haskell/src/VoxgigStruct.hs +2299 -0
  898. package/project/.sdk/tm/haskell/src/Vregex.hs +237 -0
  899. package/project/.sdk/tm/haskell/src/feature/README.md +5 -0
  900. package/project/.sdk/tm/haskell/src/feature/audit/.gitkeep +0 -0
  901. package/project/.sdk/tm/haskell/src/feature/base/.gitkeep +0 -0
  902. package/project/.sdk/tm/haskell/src/feature/cache/.gitkeep +0 -0
  903. package/project/.sdk/tm/haskell/src/feature/clienttrack/.gitkeep +0 -0
  904. package/project/.sdk/tm/haskell/src/feature/debug/.gitkeep +0 -0
  905. package/project/.sdk/tm/haskell/src/feature/idempotency/.gitkeep +0 -0
  906. package/project/.sdk/tm/haskell/src/feature/log/.gitkeep +0 -0
  907. package/project/.sdk/tm/haskell/src/feature/metrics/.gitkeep +0 -0
  908. package/project/.sdk/tm/haskell/src/feature/netsim/.gitkeep +0 -0
  909. package/project/.sdk/tm/haskell/src/feature/paging/.gitkeep +0 -0
  910. package/project/.sdk/tm/haskell/src/feature/proxy/.gitkeep +0 -0
  911. package/project/.sdk/tm/haskell/src/feature/ratelimit/.gitkeep +0 -0
  912. package/project/.sdk/tm/haskell/src/feature/rbac/.gitkeep +0 -0
  913. package/project/.sdk/tm/haskell/src/feature/retry/.gitkeep +0 -0
  914. package/project/.sdk/tm/haskell/src/feature/streaming/.gitkeep +0 -0
  915. package/project/.sdk/tm/haskell/src/feature/telemetry/.gitkeep +0 -0
  916. package/project/.sdk/tm/haskell/src/feature/test/.gitkeep +0 -0
  917. package/project/.sdk/tm/haskell/src/feature/timeout/.gitkeep +0 -0
  918. package/project/.sdk/tm/haskell/test/Harness.hs +276 -0
  919. package/project/.sdk/tm/haskell/test/Runner.hs +47 -0
  920. package/project/.sdk/tm/haskell/test/StructCorpus.hs +449 -0
  921. package/project/.sdk/tm/haskell/test/TCustomUtility.hs +38 -0
  922. package/project/.sdk/tm/haskell/test/TFeature.hs +794 -0
  923. package/project/.sdk/tm/haskell/test/TNetsim.hs +50 -0
  924. package/project/.sdk/tm/haskell/test/TPipeline.hs +334 -0
  925. package/project/.sdk/tm/haskell/test/TPrimaryUtility.hs +386 -0
  926. package/project/.sdk/tm/haskell/test/TestJson.hs +107 -0
  927. package/project/.sdk/tm/haskell/test/Testutil.hs +59 -0
  928. package/project/.sdk/tm/java/LICENSE +22 -0
  929. package/project/.sdk/tm/java/Makefile +44 -0
  930. package/project/.sdk/tm/java/VERSION +1 -0
  931. package/project/.sdk/tm/java/core/Context.java +269 -0
  932. package/project/.sdk/tm/java/core/Control.java +23 -0
  933. package/project/.sdk/tm/java/core/Entity.java +13 -0
  934. package/project/.sdk/tm/java/core/Feature.java +45 -0
  935. package/project/.sdk/tm/java/core/FeaturePlacement.java +13 -0
  936. package/project/.sdk/tm/java/core/Helpers.java +50 -0
  937. package/project/.sdk/tm/java/core/Operation.java +47 -0
  938. package/project/.sdk/tm/java/core/Point.java +90 -0
  939. package/project/.sdk/tm/java/core/Response.java +48 -0
  940. package/project/.sdk/tm/java/core/Result.java +64 -0
  941. package/project/.sdk/tm/java/core/SdkClient.java +280 -0
  942. package/project/.sdk/tm/java/core/SdkEntity.java +28 -0
  943. package/project/.sdk/tm/java/core/Spec.java +84 -0
  944. package/project/.sdk/tm/java/core/Utility.java +128 -0
  945. package/project/.sdk/tm/java/feature/AuditFeature.java +113 -0
  946. package/project/.sdk/tm/java/feature/BaseFeature.java +91 -0
  947. package/project/.sdk/tm/java/feature/CacheFeature.java +184 -0
  948. package/project/.sdk/tm/java/feature/ClienttrackFeature.java +103 -0
  949. package/project/.sdk/tm/java/feature/DebugFeature.java +163 -0
  950. package/project/.sdk/tm/java/feature/FeatureOptions.java +204 -0
  951. package/project/.sdk/tm/java/feature/IdempotencyFeature.java +115 -0
  952. package/project/.sdk/tm/java/feature/LogFeature.java +143 -0
  953. package/project/.sdk/tm/java/feature/MetricsFeature.java +115 -0
  954. package/project/.sdk/tm/java/feature/NetsimFeature.java +181 -0
  955. package/project/.sdk/tm/java/feature/PagingFeature.java +178 -0
  956. package/project/.sdk/tm/java/feature/ProxyFeature.java +122 -0
  957. package/project/.sdk/tm/java/feature/RatelimitFeature.java +83 -0
  958. package/project/.sdk/tm/java/feature/RbacFeature.java +132 -0
  959. package/project/.sdk/tm/java/feature/RetryFeature.java +156 -0
  960. package/project/.sdk/tm/java/feature/StreamingFeature.java +110 -0
  961. package/project/.sdk/tm/java/feature/TelemetryFeature.java +146 -0
  962. package/project/.sdk/tm/java/feature/TestFeature.java +333 -0
  963. package/project/.sdk/tm/java/feature/TimeoutFeature.java +89 -0
  964. package/project/.sdk/tm/java/src/feature/README.md +1 -0
  965. package/project/.sdk/tm/java/src/feature/audit/.gitkeep +0 -0
  966. package/project/.sdk/tm/java/src/feature/base/.gitkeep +0 -0
  967. package/project/.sdk/tm/java/src/feature/cache/.gitkeep +0 -0
  968. package/project/.sdk/tm/java/src/feature/clienttrack/.gitkeep +0 -0
  969. package/project/.sdk/tm/java/src/feature/debug/.gitkeep +0 -0
  970. package/project/.sdk/tm/java/src/feature/idempotency/.gitkeep +0 -0
  971. package/project/.sdk/tm/java/src/feature/log/.gitkeep +0 -0
  972. package/project/.sdk/tm/java/src/feature/metrics/.gitkeep +0 -0
  973. package/project/.sdk/tm/java/src/feature/netsim/.gitkeep +0 -0
  974. package/project/.sdk/tm/java/src/feature/paging/.gitkeep +0 -0
  975. package/project/.sdk/tm/java/src/feature/proxy/.gitkeep +0 -0
  976. package/project/.sdk/tm/java/src/feature/ratelimit/.gitkeep +0 -0
  977. package/project/.sdk/tm/java/src/feature/rbac/.gitkeep +0 -0
  978. package/project/.sdk/tm/java/src/feature/retry/.gitkeep +0 -0
  979. package/project/.sdk/tm/java/src/feature/streaming/.gitkeep +0 -0
  980. package/project/.sdk/tm/java/src/feature/telemetry/.gitkeep +0 -0
  981. package/project/.sdk/tm/java/src/feature/test/.gitkeep +0 -0
  982. package/project/.sdk/tm/java/src/feature/timeout/.gitkeep +0 -0
  983. package/project/.sdk/tm/java/test/CustomUtilityTest.java +59 -0
  984. package/project/.sdk/tm/java/test/ExistsTest.java +16 -0
  985. package/project/.sdk/tm/java/test/FeatureHarness.java +448 -0
  986. package/project/.sdk/tm/java/test/FeatureTest.java +1018 -0
  987. package/project/.sdk/tm/java/test/NetsimTest.java +59 -0
  988. package/project/.sdk/tm/java/test/PipelineTest.java +618 -0
  989. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +864 -0
  990. package/project/.sdk/tm/java/test/RunnerSupport.java +545 -0
  991. package/project/.sdk/tm/java/test/StructCorpusTest.java +351 -0
  992. package/project/.sdk/tm/java/test/StructRunner.java +281 -0
  993. package/project/.sdk/tm/java/test/sdk-test-control.json +19 -0
  994. package/project/.sdk/tm/java/utility/Clean.java +12 -0
  995. package/project/.sdk/tm/java/utility/Done.java +29 -0
  996. package/project/.sdk/tm/java/utility/FeatureAdd.java +59 -0
  997. package/project/.sdk/tm/java/utility/FeatureHookUtil.java +72 -0
  998. package/project/.sdk/tm/java/utility/FeatureInit.java +35 -0
  999. package/project/.sdk/tm/java/utility/Fetcher.java +170 -0
  1000. package/project/.sdk/tm/java/utility/Json.java +268 -0
  1001. package/project/.sdk/tm/java/utility/MakeContext.java +14 -0
  1002. package/project/.sdk/tm/java/utility/MakeError.java +81 -0
  1003. package/project/.sdk/tm/java/utility/MakeFetchDef.java +48 -0
  1004. package/project/.sdk/tm/java/utility/MakeOptions.java +168 -0
  1005. package/project/.sdk/tm/java/utility/MakePoint.java +118 -0
  1006. package/project/.sdk/tm/java/utility/MakeRequest.java +83 -0
  1007. package/project/.sdk/tm/java/utility/MakeResponse.java +54 -0
  1008. package/project/.sdk/tm/java/utility/MakeResult.java +68 -0
  1009. package/project/.sdk/tm/java/utility/MakeSpec.java +69 -0
  1010. package/project/.sdk/tm/java/utility/MakeUrl.java +67 -0
  1011. package/project/.sdk/tm/java/utility/Param.java +74 -0
  1012. package/project/.sdk/tm/java/utility/PrepareAuth.java +66 -0
  1013. package/project/.sdk/tm/java/utility/PrepareBody.java +16 -0
  1014. package/project/.sdk/tm/java/utility/PrepareHeaders.java +28 -0
  1015. package/project/.sdk/tm/java/utility/PrepareMethod.java +28 -0
  1016. package/project/.sdk/tm/java/utility/PrepareParams.java +50 -0
  1017. package/project/.sdk/tm/java/utility/PreparePath.java +26 -0
  1018. package/project/.sdk/tm/java/utility/PrepareQuery.java +54 -0
  1019. package/project/.sdk/tm/java/utility/Register.java +41 -0
  1020. package/project/.sdk/tm/java/utility/ResultBasic.java +36 -0
  1021. package/project/.sdk/tm/java/utility/ResultBody.java +23 -0
  1022. package/project/.sdk/tm/java/utility/ResultHeaders.java +36 -0
  1023. package/project/.sdk/tm/java/utility/TransformRequest.java +35 -0
  1024. package/project/.sdk/tm/java/utility/TransformResponse.java +52 -0
  1025. package/project/.sdk/tm/java/utility/struct/Struct.java +3550 -0
  1026. package/project/.sdk/tm/js/src/feature/audit/AuditFeature.js +96 -0
  1027. package/project/.sdk/tm/js/src/feature/cache/CacheFeature.js +150 -0
  1028. package/project/.sdk/tm/js/src/feature/clienttrack/ClienttrackFeature.js +104 -0
  1029. package/project/.sdk/tm/js/src/feature/debug/DebugFeature.js +132 -0
  1030. package/project/.sdk/tm/js/src/feature/idempotency/IdempotencyFeature.js +95 -0
  1031. package/project/.sdk/tm/js/src/feature/metrics/MetricsFeature.js +102 -0
  1032. package/project/.sdk/tm/js/src/feature/netsim/NetsimFeature.js +187 -0
  1033. package/project/.sdk/tm/js/src/feature/paging/PagingFeature.js +139 -0
  1034. package/project/.sdk/tm/js/src/feature/proxy/ProxyFeature.js +110 -0
  1035. package/project/.sdk/tm/js/src/feature/ratelimit/RatelimitFeature.js +106 -0
  1036. package/project/.sdk/tm/js/src/feature/rbac/RbacFeature.js +102 -0
  1037. package/project/.sdk/tm/js/src/feature/retry/RetryFeature.js +158 -0
  1038. package/project/.sdk/tm/js/src/feature/streaming/StreamingFeature.js +96 -0
  1039. package/project/.sdk/tm/js/src/feature/telemetry/TelemetryFeature.js +128 -0
  1040. package/project/.sdk/tm/js/src/feature/test/TestFeature.js +58 -1
  1041. package/project/.sdk/tm/js/src/feature/timeout/TimeoutFeature.js +101 -0
  1042. package/project/.sdk/tm/js/src/utility/FeatureHookUtility.js +4 -1
  1043. package/project/.sdk/tm/js/src/utility/MakeErrorUtility.js +9 -0
  1044. package/project/.sdk/tm/js/src/utility/MakeOptionsUtility.js +31 -1
  1045. package/project/.sdk/tm/js/test/feature/harness.js +275 -0
  1046. package/project/.sdk/tm/js/test/feature.test.js +772 -0
  1047. package/project/.sdk/tm/js/test/netsim.test.js +43 -0
  1048. package/project/.sdk/tm/js/test/pipeline.test.js +382 -0
  1049. package/project/.sdk/tm/kotlin/LICENSE +22 -0
  1050. package/project/.sdk/tm/kotlin/Makefile +43 -0
  1051. package/project/.sdk/tm/kotlin/VERSION +1 -0
  1052. package/project/.sdk/tm/kotlin/core/Context.kt +247 -0
  1053. package/project/.sdk/tm/kotlin/core/Control.kt +21 -0
  1054. package/project/.sdk/tm/kotlin/core/Helpers.kt +49 -0
  1055. package/project/.sdk/tm/kotlin/core/Interfaces.kt +88 -0
  1056. package/project/.sdk/tm/kotlin/core/Operation.kt +43 -0
  1057. package/project/.sdk/tm/kotlin/core/Point.kt +83 -0
  1058. package/project/.sdk/tm/kotlin/core/Response.kt +43 -0
  1059. package/project/.sdk/tm/kotlin/core/Result.kt +61 -0
  1060. package/project/.sdk/tm/kotlin/core/SdkClient.kt +266 -0
  1061. package/project/.sdk/tm/kotlin/core/Spec.kt +76 -0
  1062. package/project/.sdk/tm/kotlin/core/Utility.kt +93 -0
  1063. package/project/.sdk/tm/kotlin/feature/AuditFeature.kt +96 -0
  1064. package/project/.sdk/tm/kotlin/feature/BaseFeature.kt +57 -0
  1065. package/project/.sdk/tm/kotlin/feature/CacheFeature.kt +167 -0
  1066. package/project/.sdk/tm/kotlin/feature/ClienttrackFeature.kt +84 -0
  1067. package/project/.sdk/tm/kotlin/feature/DebugFeature.kt +141 -0
  1068. package/project/.sdk/tm/kotlin/feature/FeatureOptions.kt +191 -0
  1069. package/project/.sdk/tm/kotlin/feature/IdempotencyFeature.kt +98 -0
  1070. package/project/.sdk/tm/kotlin/feature/LogFeature.kt +92 -0
  1071. package/project/.sdk/tm/kotlin/feature/MetricsFeature.kt +96 -0
  1072. package/project/.sdk/tm/kotlin/feature/NetsimFeature.kt +162 -0
  1073. package/project/.sdk/tm/kotlin/feature/PagingFeature.kt +143 -0
  1074. package/project/.sdk/tm/kotlin/feature/ProxyFeature.kt +109 -0
  1075. package/project/.sdk/tm/kotlin/feature/RatelimitFeature.kt +77 -0
  1076. package/project/.sdk/tm/kotlin/feature/RbacFeature.kt +100 -0
  1077. package/project/.sdk/tm/kotlin/feature/RetryFeature.kt +140 -0
  1078. package/project/.sdk/tm/kotlin/feature/StreamingFeature.kt +90 -0
  1079. package/project/.sdk/tm/kotlin/feature/TelemetryFeature.kt +118 -0
  1080. package/project/.sdk/tm/kotlin/feature/TestFeature.kt +306 -0
  1081. package/project/.sdk/tm/kotlin/feature/TimeoutFeature.kt +74 -0
  1082. package/project/.sdk/tm/kotlin/src/feature/README.md +1 -0
  1083. package/project/.sdk/tm/kotlin/src/feature/audit/.gitkeep +0 -0
  1084. package/project/.sdk/tm/kotlin/src/feature/base/.gitkeep +0 -0
  1085. package/project/.sdk/tm/kotlin/src/feature/cache/.gitkeep +0 -0
  1086. package/project/.sdk/tm/kotlin/src/feature/clienttrack/.gitkeep +0 -0
  1087. package/project/.sdk/tm/kotlin/src/feature/debug/.gitkeep +0 -0
  1088. package/project/.sdk/tm/kotlin/src/feature/idempotency/.gitkeep +0 -0
  1089. package/project/.sdk/tm/kotlin/src/feature/log/.gitkeep +0 -0
  1090. package/project/.sdk/tm/kotlin/src/feature/metrics/.gitkeep +0 -0
  1091. package/project/.sdk/tm/kotlin/src/feature/netsim/.gitkeep +0 -0
  1092. package/project/.sdk/tm/kotlin/src/feature/paging/.gitkeep +0 -0
  1093. package/project/.sdk/tm/kotlin/src/feature/proxy/.gitkeep +0 -0
  1094. package/project/.sdk/tm/kotlin/src/feature/ratelimit/.gitkeep +0 -0
  1095. package/project/.sdk/tm/kotlin/src/feature/rbac/.gitkeep +0 -0
  1096. package/project/.sdk/tm/kotlin/src/feature/retry/.gitkeep +0 -0
  1097. package/project/.sdk/tm/kotlin/src/feature/streaming/.gitkeep +0 -0
  1098. package/project/.sdk/tm/kotlin/src/feature/telemetry/.gitkeep +0 -0
  1099. package/project/.sdk/tm/kotlin/src/feature/test/.gitkeep +0 -0
  1100. package/project/.sdk/tm/kotlin/src/feature/timeout/.gitkeep +0 -0
  1101. package/project/.sdk/tm/kotlin/test/CustomUtilityTest.kt +51 -0
  1102. package/project/.sdk/tm/kotlin/test/ExistsTest.kt +15 -0
  1103. package/project/.sdk/tm/kotlin/test/FeatureHarness.kt +380 -0
  1104. package/project/.sdk/tm/kotlin/test/FeatureTest.kt +924 -0
  1105. package/project/.sdk/tm/kotlin/test/NetsimTest.kt +50 -0
  1106. package/project/.sdk/tm/kotlin/test/PipelineTest.kt +556 -0
  1107. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +829 -0
  1108. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +477 -0
  1109. package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +297 -0
  1110. package/project/.sdk/tm/kotlin/test/StructRunner.kt +177 -0
  1111. package/project/.sdk/tm/kotlin/test/sdk-test-control.json +19 -0
  1112. package/project/.sdk/tm/kotlin/utility/CoreUtil.kt +96 -0
  1113. package/project/.sdk/tm/kotlin/utility/FeatureUtil.kt +121 -0
  1114. package/project/.sdk/tm/kotlin/utility/Fetcher.kt +156 -0
  1115. package/project/.sdk/tm/kotlin/utility/Json.kt +237 -0
  1116. package/project/.sdk/tm/kotlin/utility/MakeOptions.kt +152 -0
  1117. package/project/.sdk/tm/kotlin/utility/MakePoint.kt +108 -0
  1118. package/project/.sdk/tm/kotlin/utility/MakeReqRes.kt +152 -0
  1119. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +142 -0
  1120. package/project/.sdk/tm/kotlin/utility/Prepare.kt +236 -0
  1121. package/project/.sdk/tm/kotlin/utility/Register.kt +39 -0
  1122. package/project/.sdk/tm/kotlin/utility/ResultTransform.kt +109 -0
  1123. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +2697 -0
  1124. package/project/.sdk/tm/lua/feature/audit_feature.lua +132 -0
  1125. package/project/.sdk/tm/lua/feature/cache_feature.lua +188 -0
  1126. package/project/.sdk/tm/lua/feature/clienttrack_feature.lua +127 -0
  1127. package/project/.sdk/tm/lua/feature/debug_feature.lua +194 -0
  1128. package/project/.sdk/tm/lua/feature/idempotency_feature.lua +127 -0
  1129. package/project/.sdk/tm/lua/feature/metrics_feature.lua +135 -0
  1130. package/project/.sdk/tm/lua/feature/netsim_feature.lua +205 -0
  1131. package/project/.sdk/tm/lua/feature/paging_feature.lua +180 -0
  1132. package/project/.sdk/tm/lua/feature/proxy_feature.lua +147 -0
  1133. package/project/.sdk/tm/lua/feature/ratelimit_feature.lua +120 -0
  1134. package/project/.sdk/tm/lua/feature/rbac_feature.lua +141 -0
  1135. package/project/.sdk/tm/lua/feature/retry_feature.lua +188 -0
  1136. package/project/.sdk/tm/lua/feature/streaming_feature.lua +143 -0
  1137. package/project/.sdk/tm/lua/feature/telemetry_feature.lua +159 -0
  1138. package/project/.sdk/tm/lua/feature/test_feature.lua +85 -1
  1139. package/project/.sdk/tm/lua/feature/timeout_feature.lua +94 -0
  1140. package/project/.sdk/tm/lua/src/feature/audit/.gitkeep +0 -0
  1141. package/project/.sdk/tm/lua/src/feature/cache/.gitkeep +0 -0
  1142. package/project/.sdk/tm/lua/src/feature/clienttrack/.gitkeep +0 -0
  1143. package/project/.sdk/tm/lua/src/feature/debug/.gitkeep +0 -0
  1144. package/project/.sdk/tm/lua/src/feature/idempotency/.gitkeep +0 -0
  1145. package/project/.sdk/tm/lua/src/feature/metrics/.gitkeep +0 -0
  1146. package/project/.sdk/tm/lua/src/feature/netsim/.gitkeep +0 -0
  1147. package/project/.sdk/tm/lua/src/feature/paging/.gitkeep +0 -0
  1148. package/project/.sdk/tm/lua/src/feature/proxy/.gitkeep +0 -0
  1149. package/project/.sdk/tm/lua/src/feature/ratelimit/.gitkeep +0 -0
  1150. package/project/.sdk/tm/lua/src/feature/rbac/.gitkeep +0 -0
  1151. package/project/.sdk/tm/lua/src/feature/retry/.gitkeep +0 -0
  1152. package/project/.sdk/tm/lua/src/feature/streaming/.gitkeep +0 -0
  1153. package/project/.sdk/tm/lua/src/feature/telemetry/.gitkeep +0 -0
  1154. package/project/.sdk/tm/lua/src/feature/timeout/.gitkeep +0 -0
  1155. package/project/.sdk/tm/lua/test/feature_test.lua +1244 -0
  1156. package/project/.sdk/tm/lua/test/netsim_test.lua +61 -0
  1157. package/project/.sdk/tm/lua/test/pipeline_test.lua +613 -0
  1158. package/project/.sdk/tm/lua/utility/feature_add.lua +28 -1
  1159. package/project/.sdk/tm/lua/utility/make_error.lua +9 -0
  1160. package/project/.sdk/tm/lua/utility/make_options.lua +58 -0
  1161. package/project/.sdk/tm/lua/utility/make_point.lua +8 -1
  1162. package/project/.sdk/tm/ocaml/LICENSE +21 -0
  1163. package/project/.sdk/tm/ocaml/Makefile +58 -0
  1164. package/project/.sdk/tm/ocaml/VERSION +1 -0
  1165. package/project/.sdk/tm/ocaml/sdk_features.ml +1127 -0
  1166. package/project/.sdk/tm/ocaml/sdk_helpers.ml +110 -0
  1167. package/project/.sdk/tm/ocaml/sdk_runtime.ml +942 -0
  1168. package/project/.sdk/tm/ocaml/sdk_types.ml +259 -0
  1169. package/project/.sdk/tm/ocaml/src/feature/README.md +1 -0
  1170. package/project/.sdk/tm/ocaml/src/feature/audit/.gitkeep +0 -0
  1171. package/project/.sdk/tm/ocaml/src/feature/base/.gitkeep +0 -0
  1172. package/project/.sdk/tm/ocaml/src/feature/cache/.gitkeep +0 -0
  1173. package/project/.sdk/tm/ocaml/src/feature/clienttrack/.gitkeep +0 -0
  1174. package/project/.sdk/tm/ocaml/src/feature/debug/.gitkeep +0 -0
  1175. package/project/.sdk/tm/ocaml/src/feature/idempotency/.gitkeep +0 -0
  1176. package/project/.sdk/tm/ocaml/src/feature/log/.gitkeep +0 -0
  1177. package/project/.sdk/tm/ocaml/src/feature/metrics/.gitkeep +0 -0
  1178. package/project/.sdk/tm/ocaml/src/feature/netsim/.gitkeep +0 -0
  1179. package/project/.sdk/tm/ocaml/src/feature/paging/.gitkeep +0 -0
  1180. package/project/.sdk/tm/ocaml/src/feature/proxy/.gitkeep +0 -0
  1181. package/project/.sdk/tm/ocaml/src/feature/ratelimit/.gitkeep +0 -0
  1182. package/project/.sdk/tm/ocaml/src/feature/rbac/.gitkeep +0 -0
  1183. package/project/.sdk/tm/ocaml/src/feature/retry/.gitkeep +0 -0
  1184. package/project/.sdk/tm/ocaml/src/feature/streaming/.gitkeep +0 -0
  1185. package/project/.sdk/tm/ocaml/src/feature/telemetry/.gitkeep +0 -0
  1186. package/project/.sdk/tm/ocaml/src/feature/test/.gitkeep +0 -0
  1187. package/project/.sdk/tm/ocaml/src/feature/timeout/.gitkeep +0 -0
  1188. package/project/.sdk/tm/ocaml/test/custom_utility.ml +30 -0
  1189. package/project/.sdk/tm/ocaml/test/harness.ml +198 -0
  1190. package/project/.sdk/tm/ocaml/test/struct_corpus.ml +487 -0
  1191. package/project/.sdk/tm/ocaml/test/t_feature.ml +533 -0
  1192. package/project/.sdk/tm/ocaml/test/t_main.ml +5 -0
  1193. package/project/.sdk/tm/ocaml/test/t_pipeline.ml +354 -0
  1194. package/project/.sdk/tm/ocaml/test/testutil.ml +57 -0
  1195. package/project/.sdk/tm/ocaml/utility/voxgig_struct.ml +1858 -0
  1196. package/project/.sdk/tm/ocaml/utility/vregex.ml +254 -0
  1197. package/project/.sdk/tm/perl/LICENSE +22 -0
  1198. package/project/.sdk/tm/perl/Makefile +57 -0
  1199. package/project/.sdk/tm/perl/core/context.pm +138 -0
  1200. package/project/.sdk/tm/perl/core/control.pm +22 -0
  1201. package/project/.sdk/tm/perl/core/error.pm +30 -0
  1202. package/project/.sdk/tm/perl/core/helpers.pm +142 -0
  1203. package/project/.sdk/tm/perl/core/operation.pm +47 -0
  1204. package/project/.sdk/tm/perl/core/response.pm +40 -0
  1205. package/project/.sdk/tm/perl/core/result.pm +45 -0
  1206. package/project/.sdk/tm/perl/core/spec.pm +33 -0
  1207. package/project/.sdk/tm/perl/core/utility_type.pm +32 -0
  1208. package/project/.sdk/tm/perl/feature/audit_feature.pm +128 -0
  1209. package/project/.sdk/tm/perl/feature/base_feature.pm +41 -0
  1210. package/project/.sdk/tm/perl/feature/cache_feature.pm +168 -0
  1211. package/project/.sdk/tm/perl/feature/clienttrack_feature.pm +126 -0
  1212. package/project/.sdk/tm/perl/feature/debug_feature.pm +168 -0
  1213. package/project/.sdk/tm/perl/feature/idempotency_feature.pm +104 -0
  1214. package/project/.sdk/tm/perl/feature/log_feature.pm +77 -0
  1215. package/project/.sdk/tm/perl/feature/metrics_feature.pm +124 -0
  1216. package/project/.sdk/tm/perl/feature/netsim_feature.pm +215 -0
  1217. package/project/.sdk/tm/perl/feature/paging_feature.pm +158 -0
  1218. package/project/.sdk/tm/perl/feature/proxy_feature.pm +128 -0
  1219. package/project/.sdk/tm/perl/feature/ratelimit_feature.pm +126 -0
  1220. package/project/.sdk/tm/perl/feature/rbac_feature.pm +124 -0
  1221. package/project/.sdk/tm/perl/feature/retry_feature.pm +153 -0
  1222. package/project/.sdk/tm/perl/feature/streaming_feature.pm +112 -0
  1223. package/project/.sdk/tm/perl/feature/telemetry_feature.pm +155 -0
  1224. package/project/.sdk/tm/perl/feature/test_feature.pm +314 -0
  1225. package/project/.sdk/tm/perl/feature/timeout_feature.pm +110 -0
  1226. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +2897 -0
  1227. package/project/.sdk/tm/perl/src/feature/README.md +3 -0
  1228. package/project/.sdk/tm/perl/src/feature/audit/.gitkeep +0 -0
  1229. package/project/.sdk/tm/perl/src/feature/base/.gitkeep +0 -0
  1230. package/project/.sdk/tm/perl/src/feature/cache/.gitkeep +0 -0
  1231. package/project/.sdk/tm/perl/src/feature/clienttrack/.gitkeep +0 -0
  1232. package/project/.sdk/tm/perl/src/feature/debug/.gitkeep +0 -0
  1233. package/project/.sdk/tm/perl/src/feature/idempotency/.gitkeep +0 -0
  1234. package/project/.sdk/tm/perl/src/feature/log/.gitkeep +0 -0
  1235. package/project/.sdk/tm/perl/src/feature/metrics/.gitkeep +0 -0
  1236. package/project/.sdk/tm/perl/src/feature/netsim/.gitkeep +0 -0
  1237. package/project/.sdk/tm/perl/src/feature/paging/.gitkeep +0 -0
  1238. package/project/.sdk/tm/perl/src/feature/proxy/.gitkeep +0 -0
  1239. package/project/.sdk/tm/perl/src/feature/ratelimit/.gitkeep +0 -0
  1240. package/project/.sdk/tm/perl/src/feature/rbac/.gitkeep +0 -0
  1241. package/project/.sdk/tm/perl/src/feature/retry/.gitkeep +0 -0
  1242. package/project/.sdk/tm/perl/src/feature/streaming/.gitkeep +0 -0
  1243. package/project/.sdk/tm/perl/src/feature/telemetry/.gitkeep +0 -0
  1244. package/project/.sdk/tm/perl/src/feature/test/.gitkeep +0 -0
  1245. package/project/.sdk/tm/perl/src/feature/timeout/.gitkeep +0 -0
  1246. package/project/.sdk/tm/perl/t/feature.t +1054 -0
  1247. package/project/.sdk/tm/perl/t/netsim.t +55 -0
  1248. package/project/.sdk/tm/perl/t/pipeline.t +632 -0
  1249. package/project/.sdk/tm/perl/t/primary_utility.t +1023 -0
  1250. package/project/.sdk/tm/perl/t/runner.pm +140 -0
  1251. package/project/.sdk/tm/perl/t/sdk-test-control.json +19 -0
  1252. package/project/.sdk/tm/perl/t/stream.t +132 -0
  1253. package/project/.sdk/tm/perl/t/struct_runner.pm +275 -0
  1254. package/project/.sdk/tm/perl/t/struct_utility.t +438 -0
  1255. package/project/.sdk/tm/perl/utility/clean.pm +15 -0
  1256. package/project/.sdk/tm/perl/utility/done.pm +34 -0
  1257. package/project/.sdk/tm/perl/utility/feature_add.pm +47 -0
  1258. package/project/.sdk/tm/perl/utility/feature_hook.pm +25 -0
  1259. package/project/.sdk/tm/perl/utility/feature_init.pm +33 -0
  1260. package/project/.sdk/tm/perl/utility/fetcher.pm +112 -0
  1261. package/project/.sdk/tm/perl/utility/make_context.pm +22 -0
  1262. package/project/.sdk/tm/perl/utility/make_error.pm +74 -0
  1263. package/project/.sdk/tm/perl/utility/make_fetch_def.pm +46 -0
  1264. package/project/.sdk/tm/perl/utility/make_options.pm +123 -0
  1265. package/project/.sdk/tm/perl/utility/make_point.pm +104 -0
  1266. package/project/.sdk/tm/perl/utility/make_request.pm +66 -0
  1267. package/project/.sdk/tm/perl/utility/make_response.pm +38 -0
  1268. package/project/.sdk/tm/perl/utility/make_result.pm +53 -0
  1269. package/project/.sdk/tm/perl/utility/make_spec.pm +71 -0
  1270. package/project/.sdk/tm/perl/utility/make_url.pm +63 -0
  1271. package/project/.sdk/tm/perl/utility/param.pm +65 -0
  1272. package/project/.sdk/tm/perl/utility/prepare_auth.pm +56 -0
  1273. package/project/.sdk/tm/perl/utility/prepare_body.pm +17 -0
  1274. package/project/.sdk/tm/perl/utility/prepare_headers.pm +27 -0
  1275. package/project/.sdk/tm/perl/utility/prepare_method.pm +25 -0
  1276. package/project/.sdk/tm/perl/utility/prepare_params.pm +41 -0
  1277. package/project/.sdk/tm/perl/utility/prepare_path.pm +29 -0
  1278. package/project/.sdk/tm/perl/utility/prepare_query.pm +40 -0
  1279. package/project/.sdk/tm/perl/utility/register.pm +53 -0
  1280. package/project/.sdk/tm/perl/utility/result_basic.pm +38 -0
  1281. package/project/.sdk/tm/perl/utility/result_body.pm +28 -0
  1282. package/project/.sdk/tm/perl/utility/result_headers.pm +32 -0
  1283. package/project/.sdk/tm/perl/utility/transform_request.pm +30 -0
  1284. package/project/.sdk/tm/perl/utility/transform_response.pm +43 -0
  1285. package/project/.sdk/tm/php/core/Result.php +10 -0
  1286. package/project/.sdk/tm/php/feature/AuditFeature.php +125 -0
  1287. package/project/.sdk/tm/php/feature/BaseFeature.php +6 -0
  1288. package/project/.sdk/tm/php/feature/CacheFeature.php +158 -0
  1289. package/project/.sdk/tm/php/feature/ClienttrackFeature.php +126 -0
  1290. package/project/.sdk/tm/php/feature/DebugFeature.php +167 -0
  1291. package/project/.sdk/tm/php/feature/IdempotencyFeature.php +102 -0
  1292. package/project/.sdk/tm/php/feature/MetricsFeature.php +122 -0
  1293. package/project/.sdk/tm/php/feature/NetsimFeature.php +190 -0
  1294. package/project/.sdk/tm/php/feature/PagingFeature.php +153 -0
  1295. package/project/.sdk/tm/php/feature/ProxyFeature.php +136 -0
  1296. package/project/.sdk/tm/php/feature/RatelimitFeature.php +116 -0
  1297. package/project/.sdk/tm/php/feature/RbacFeature.php +133 -0
  1298. package/project/.sdk/tm/php/feature/RetryFeature.php +159 -0
  1299. package/project/.sdk/tm/php/feature/StreamingFeature.php +107 -0
  1300. package/project/.sdk/tm/php/feature/TelemetryFeature.php +156 -0
  1301. package/project/.sdk/tm/php/feature/TestFeature.php +80 -1
  1302. package/project/.sdk/tm/php/feature/TimeoutFeature.php +95 -0
  1303. package/project/.sdk/tm/php/src/feature/audit/.gitkeep +0 -0
  1304. package/project/.sdk/tm/php/src/feature/cache/.gitkeep +0 -0
  1305. package/project/.sdk/tm/php/src/feature/clienttrack/.gitkeep +0 -0
  1306. package/project/.sdk/tm/php/src/feature/debug/.gitkeep +0 -0
  1307. package/project/.sdk/tm/php/src/feature/idempotency/.gitkeep +0 -0
  1308. package/project/.sdk/tm/php/src/feature/metrics/.gitkeep +0 -0
  1309. package/project/.sdk/tm/php/src/feature/netsim/.gitkeep +0 -0
  1310. package/project/.sdk/tm/php/src/feature/paging/.gitkeep +0 -0
  1311. package/project/.sdk/tm/php/src/feature/proxy/.gitkeep +0 -0
  1312. package/project/.sdk/tm/php/src/feature/ratelimit/.gitkeep +0 -0
  1313. package/project/.sdk/tm/php/src/feature/rbac/.gitkeep +0 -0
  1314. package/project/.sdk/tm/php/src/feature/retry/.gitkeep +0 -0
  1315. package/project/.sdk/tm/php/src/feature/streaming/.gitkeep +0 -0
  1316. package/project/.sdk/tm/php/src/feature/telemetry/.gitkeep +0 -0
  1317. package/project/.sdk/tm/php/src/feature/timeout/.gitkeep +0 -0
  1318. package/project/.sdk/tm/php/test/FeatureTest.php +1259 -0
  1319. package/project/.sdk/tm/php/test/NetsimTest.php +53 -0
  1320. package/project/.sdk/tm/php/test/PipelineTest.php +674 -0
  1321. package/project/.sdk/tm/php/utility/FeatureAdd.php +32 -1
  1322. package/project/.sdk/tm/php/utility/MakeError.php +9 -0
  1323. package/project/.sdk/tm/php/utility/MakeOptions.php +46 -0
  1324. package/project/.sdk/tm/php/utility/MakePoint.php +7 -0
  1325. package/project/.sdk/tm/py/core/context.py +4 -0
  1326. package/project/.sdk/tm/py/core/control.py +3 -0
  1327. package/project/.sdk/tm/py/feature/audit_feature.py +98 -0
  1328. package/project/.sdk/tm/py/feature/cache_feature.py +138 -0
  1329. package/project/.sdk/tm/py/feature/clienttrack_feature.py +97 -0
  1330. package/project/.sdk/tm/py/feature/debug_feature.py +134 -0
  1331. package/project/.sdk/tm/py/feature/idempotency_feature.py +89 -0
  1332. package/project/.sdk/tm/py/feature/metrics_feature.py +93 -0
  1333. package/project/.sdk/tm/py/feature/netsim_feature.py +170 -0
  1334. package/project/.sdk/tm/py/feature/paging_feature.py +134 -0
  1335. package/project/.sdk/tm/py/feature/proxy_feature.py +104 -0
  1336. package/project/.sdk/tm/py/feature/ratelimit_feature.py +98 -0
  1337. package/project/.sdk/tm/py/feature/rbac_feature.py +102 -0
  1338. package/project/.sdk/tm/py/feature/retry_feature.py +142 -0
  1339. package/project/.sdk/tm/py/feature/streaming_feature.py +84 -0
  1340. package/project/.sdk/tm/py/feature/telemetry_feature.py +128 -0
  1341. package/project/.sdk/tm/py/feature/test_feature.py +70 -1
  1342. package/project/.sdk/tm/py/feature/timeout_feature.py +78 -0
  1343. package/project/.sdk/tm/py/src/feature/audit/.gitkeep +0 -0
  1344. package/project/.sdk/tm/py/src/feature/cache/.gitkeep +0 -0
  1345. package/project/.sdk/tm/py/src/feature/clienttrack/.gitkeep +0 -0
  1346. package/project/.sdk/tm/py/src/feature/debug/.gitkeep +0 -0
  1347. package/project/.sdk/tm/py/src/feature/idempotency/.gitkeep +0 -0
  1348. package/project/.sdk/tm/py/src/feature/metrics/.gitkeep +0 -0
  1349. package/project/.sdk/tm/py/src/feature/netsim/.gitkeep +0 -0
  1350. package/project/.sdk/tm/py/src/feature/paging/.gitkeep +0 -0
  1351. package/project/.sdk/tm/py/src/feature/proxy/.gitkeep +0 -0
  1352. package/project/.sdk/tm/py/src/feature/ratelimit/.gitkeep +0 -0
  1353. package/project/.sdk/tm/py/src/feature/rbac/.gitkeep +0 -0
  1354. package/project/.sdk/tm/py/src/feature/retry/.gitkeep +0 -0
  1355. package/project/.sdk/tm/py/src/feature/streaming/.gitkeep +0 -0
  1356. package/project/.sdk/tm/py/src/feature/telemetry/.gitkeep +0 -0
  1357. package/project/.sdk/tm/py/src/feature/timeout/.gitkeep +0 -0
  1358. package/project/.sdk/tm/py/test/feature_harness.py +336 -0
  1359. package/project/.sdk/tm/py/test/test_feature.py +807 -0
  1360. package/project/.sdk/tm/py/test/test_netsim.py +52 -0
  1361. package/project/.sdk/tm/py/test/test_pipeline.py +606 -0
  1362. package/project/.sdk/tm/py/utility/feature_add.py +25 -1
  1363. package/project/.sdk/tm/py/utility/make_error.py +8 -0
  1364. package/project/.sdk/tm/py/utility/make_options.py +32 -0
  1365. package/project/.sdk/tm/py/utility/make_point.py +8 -2
  1366. package/project/.sdk/tm/py/utility/make_request.py +6 -2
  1367. package/project/.sdk/tm/py/utility/make_response.py +6 -2
  1368. package/project/.sdk/tm/py/utility/make_result.py +6 -2
  1369. package/project/.sdk/tm/py/utility/make_spec.py +6 -2
  1370. package/project/.sdk/tm/rb/core/context.rb +2 -0
  1371. package/project/.sdk/tm/rb/core/control.rb +5 -1
  1372. package/project/.sdk/tm/rb/core/result.rb +2 -1
  1373. package/project/.sdk/tm/rb/feature/audit_feature.rb +103 -0
  1374. package/project/.sdk/tm/rb/feature/base_feature.rb +5 -0
  1375. package/project/.sdk/tm/rb/feature/cache_feature.rb +133 -0
  1376. package/project/.sdk/tm/rb/feature/clienttrack_feature.rb +91 -0
  1377. package/project/.sdk/tm/rb/feature/debug_feature.rb +138 -0
  1378. package/project/.sdk/tm/rb/feature/idempotency_feature.rb +78 -0
  1379. package/project/.sdk/tm/rb/feature/metrics_feature.rb +91 -0
  1380. package/project/.sdk/tm/rb/feature/netsim_feature.rb +167 -0
  1381. package/project/.sdk/tm/rb/feature/paging_feature.rb +120 -0
  1382. package/project/.sdk/tm/rb/feature/proxy_feature.rb +93 -0
  1383. package/project/.sdk/tm/rb/feature/ratelimit_feature.rb +95 -0
  1384. package/project/.sdk/tm/rb/feature/rbac_feature.rb +96 -0
  1385. package/project/.sdk/tm/rb/feature/retry_feature.rb +116 -0
  1386. package/project/.sdk/tm/rb/feature/streaming_feature.rb +85 -0
  1387. package/project/.sdk/tm/rb/feature/telemetry_feature.rb +122 -0
  1388. package/project/.sdk/tm/rb/feature/test_feature.rb +65 -1
  1389. package/project/.sdk/tm/rb/feature/timeout_feature.rb +74 -0
  1390. package/project/.sdk/tm/rb/src/feature/audit/.gitkeep +0 -0
  1391. package/project/.sdk/tm/rb/src/feature/cache/.gitkeep +0 -0
  1392. package/project/.sdk/tm/rb/src/feature/clienttrack/.gitkeep +0 -0
  1393. package/project/.sdk/tm/rb/src/feature/debug/.gitkeep +0 -0
  1394. package/project/.sdk/tm/rb/src/feature/idempotency/.gitkeep +0 -0
  1395. package/project/.sdk/tm/rb/src/feature/metrics/.gitkeep +0 -0
  1396. package/project/.sdk/tm/rb/src/feature/netsim/.gitkeep +0 -0
  1397. package/project/.sdk/tm/rb/src/feature/paging/.gitkeep +0 -0
  1398. package/project/.sdk/tm/rb/src/feature/proxy/.gitkeep +0 -0
  1399. package/project/.sdk/tm/rb/src/feature/ratelimit/.gitkeep +0 -0
  1400. package/project/.sdk/tm/rb/src/feature/rbac/.gitkeep +0 -0
  1401. package/project/.sdk/tm/rb/src/feature/retry/.gitkeep +0 -0
  1402. package/project/.sdk/tm/rb/src/feature/streaming/.gitkeep +0 -0
  1403. package/project/.sdk/tm/rb/src/feature/telemetry/.gitkeep +0 -0
  1404. package/project/.sdk/tm/rb/src/feature/timeout/.gitkeep +0 -0
  1405. package/project/.sdk/tm/rb/test/feature_test.rb +1031 -0
  1406. package/project/.sdk/tm/rb/test/netsim_test.rb +48 -0
  1407. package/project/.sdk/tm/rb/test/pipeline_test.rb +584 -0
  1408. package/project/.sdk/tm/rb/utility/feature_add.rb +28 -1
  1409. package/project/.sdk/tm/rb/utility/make_error.rb +8 -0
  1410. package/project/.sdk/tm/rb/utility/make_options.rb +35 -0
  1411. package/project/.sdk/tm/rb/utility/make_point.rb +7 -1
  1412. package/project/.sdk/tm/rust/LICENSE +22 -0
  1413. package/project/.sdk/tm/rust/Makefile +41 -0
  1414. package/project/.sdk/tm/rust/VERSION +1 -0
  1415. package/project/.sdk/tm/rust/core/context.rs +320 -0
  1416. package/project/.sdk/tm/rust/core/control.rs +37 -0
  1417. package/project/.sdk/tm/rust/core/helpers.rs +168 -0
  1418. package/project/.sdk/tm/rust/core/mod.rs +18 -0
  1419. package/project/.sdk/tm/rust/core/operation.rs +35 -0
  1420. package/project/.sdk/tm/rust/core/point.rs +68 -0
  1421. package/project/.sdk/tm/rust/core/response.rs +38 -0
  1422. package/project/.sdk/tm/rust/core/result.rs +90 -0
  1423. package/project/.sdk/tm/rust/core/spec.rs +109 -0
  1424. package/project/.sdk/tm/rust/core/types.rs +105 -0
  1425. package/project/.sdk/tm/rust/core/utility_type.rs +184 -0
  1426. package/project/.sdk/tm/rust/feature/audit.rs +138 -0
  1427. package/project/.sdk/tm/rust/feature/base.rs +49 -0
  1428. package/project/.sdk/tm/rust/feature/cache.rs +198 -0
  1429. package/project/.sdk/tm/rust/feature/clienttrack.rs +154 -0
  1430. package/project/.sdk/tm/rust/feature/debug.rs +188 -0
  1431. package/project/.sdk/tm/rust/feature/idempotency.rs +139 -0
  1432. package/project/.sdk/tm/rust/feature/log.rs +114 -0
  1433. package/project/.sdk/tm/rust/feature/metrics.rs +136 -0
  1434. package/project/.sdk/tm/rust/feature/mod.rs +24 -0
  1435. package/project/.sdk/tm/rust/feature/netsim.rs +233 -0
  1436. package/project/.sdk/tm/rust/feature/paging.rs +209 -0
  1437. package/project/.sdk/tm/rust/feature/proxy.rs +165 -0
  1438. package/project/.sdk/tm/rust/feature/ratelimit.rs +116 -0
  1439. package/project/.sdk/tm/rust/feature/rbac.rs +152 -0
  1440. package/project/.sdk/tm/rust/feature/retry.rs +190 -0
  1441. package/project/.sdk/tm/rust/feature/streaming.rs +124 -0
  1442. package/project/.sdk/tm/rust/feature/support.rs +145 -0
  1443. package/project/.sdk/tm/rust/feature/telemetry.rs +185 -0
  1444. package/project/.sdk/tm/rust/feature/test.rs +397 -0
  1445. package/project/.sdk/tm/rust/feature/timeout.rs +103 -0
  1446. package/project/.sdk/tm/rust/src/feature/README.md +1 -0
  1447. package/project/.sdk/tm/rust/src/feature/audit/.gitkeep +0 -0
  1448. package/project/.sdk/tm/rust/src/feature/base/.gitkeep +0 -0
  1449. package/project/.sdk/tm/rust/src/feature/cache/.gitkeep +0 -0
  1450. package/project/.sdk/tm/rust/src/feature/clienttrack/.gitkeep +0 -0
  1451. package/project/.sdk/tm/rust/src/feature/debug/.gitkeep +0 -0
  1452. package/project/.sdk/tm/rust/src/feature/idempotency/.gitkeep +0 -0
  1453. package/project/.sdk/tm/rust/src/feature/log/.gitkeep +0 -0
  1454. package/project/.sdk/tm/rust/src/feature/metrics/.gitkeep +0 -0
  1455. package/project/.sdk/tm/rust/src/feature/netsim/.gitkeep +0 -0
  1456. package/project/.sdk/tm/rust/src/feature/paging/.gitkeep +0 -0
  1457. package/project/.sdk/tm/rust/src/feature/proxy/.gitkeep +0 -0
  1458. package/project/.sdk/tm/rust/src/feature/ratelimit/.gitkeep +0 -0
  1459. package/project/.sdk/tm/rust/src/feature/rbac/.gitkeep +0 -0
  1460. package/project/.sdk/tm/rust/src/feature/retry/.gitkeep +0 -0
  1461. package/project/.sdk/tm/rust/src/feature/streaming/.gitkeep +0 -0
  1462. package/project/.sdk/tm/rust/src/feature/telemetry/.gitkeep +0 -0
  1463. package/project/.sdk/tm/rust/src/feature/test/.gitkeep +0 -0
  1464. package/project/.sdk/tm/rust/src/feature/timeout/.gitkeep +0 -0
  1465. package/project/.sdk/tm/rust/tests/common/mod.rs +969 -0
  1466. package/project/.sdk/tm/rust/tests/custom_utility_test.rs +69 -0
  1467. package/project/.sdk/tm/rust/tests/feature_test.rs +1864 -0
  1468. package/project/.sdk/tm/rust/tests/netsim_test.rs +78 -0
  1469. package/project/.sdk/tm/rust/tests/pipeline_test.rs +699 -0
  1470. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +999 -0
  1471. package/project/.sdk/tm/rust/tests/sdk-test-control.json +19 -0
  1472. package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +424 -0
  1473. package/project/.sdk/tm/rust/tests/struct_utility_test.rs +733 -0
  1474. package/project/.sdk/tm/rust/utility/clean.rs +13 -0
  1475. package/project/.sdk/tm/rust/utility/done.rs +31 -0
  1476. package/project/.sdk/tm/rust/utility/feature_add.rs +46 -0
  1477. package/project/.sdk/tm/rust/utility/feature_hook.rs +18 -0
  1478. package/project/.sdk/tm/rust/utility/feature_init.rs +26 -0
  1479. package/project/.sdk/tm/rust/utility/fetcher.rs +142 -0
  1480. package/project/.sdk/tm/rust/utility/jsonparse.rs +211 -0
  1481. package/project/.sdk/tm/rust/utility/make_context.rs +7 -0
  1482. package/project/.sdk/tm/rust/utility/make_error.rs +79 -0
  1483. package/project/.sdk/tm/rust/utility/make_fetch_def.rs +42 -0
  1484. package/project/.sdk/tm/rust/utility/make_options.rs +175 -0
  1485. package/project/.sdk/tm/rust/utility/make_point.rs +116 -0
  1486. package/project/.sdk/tm/rust/utility/make_request.rs +73 -0
  1487. package/project/.sdk/tm/rust/utility/make_response.rs +56 -0
  1488. package/project/.sdk/tm/rust/utility/make_result.rs +64 -0
  1489. package/project/.sdk/tm/rust/utility/make_spec.rs +70 -0
  1490. package/project/.sdk/tm/rust/utility/make_url.rs +83 -0
  1491. package/project/.sdk/tm/rust/utility/mod.rs +36 -0
  1492. package/project/.sdk/tm/rust/utility/param.rs +67 -0
  1493. package/project/.sdk/tm/rust/utility/prepare_auth.rs +65 -0
  1494. package/project/.sdk/tm/rust/utility/prepare_body.rs +14 -0
  1495. package/project/.sdk/tm/rust/utility/prepare_headers.rs +23 -0
  1496. package/project/.sdk/tm/rust/utility/prepare_method.rs +18 -0
  1497. package/project/.sdk/tm/rust/utility/prepare_params.rs +33 -0
  1498. package/project/.sdk/tm/rust/utility/prepare_path.rs +17 -0
  1499. package/project/.sdk/tm/rust/utility/prepare_query.rs +47 -0
  1500. package/project/.sdk/tm/rust/utility/result_basic.rs +35 -0
  1501. package/project/.sdk/tm/rust/utility/result_body.rs +26 -0
  1502. package/project/.sdk/tm/rust/utility/result_headers.rs +24 -0
  1503. package/project/.sdk/tm/rust/utility/transform_request.rs +31 -0
  1504. package/project/.sdk/tm/rust/utility/transform_response.rs +55 -0
  1505. package/project/.sdk/tm/rust/utility/voxgigstruct/consts.rs +122 -0
  1506. package/project/.sdk/tm/rust/utility/voxgigstruct/major.rs +2688 -0
  1507. package/project/.sdk/tm/rust/utility/voxgigstruct/mini.rs +1081 -0
  1508. package/project/.sdk/tm/rust/utility/voxgigstruct/mod.rs +70 -0
  1509. package/project/.sdk/tm/rust/utility/voxgigstruct/ordered_map.rs +159 -0
  1510. package/project/.sdk/tm/rust/utility/voxgigstruct/re.rs +1229 -0
  1511. package/project/.sdk/tm/rust/utility/voxgigstruct/value.rs +372 -0
  1512. package/project/.sdk/tm/scala/LICENSE +22 -0
  1513. package/project/.sdk/tm/scala/Makefile +24 -0
  1514. package/project/.sdk/tm/scala/VERSION +1 -0
  1515. package/project/.sdk/tm/scala/core/Context.scala +160 -0
  1516. package/project/.sdk/tm/scala/core/Contracts.scala +76 -0
  1517. package/project/.sdk/tm/scala/core/Control.scala +23 -0
  1518. package/project/.sdk/tm/scala/core/Helpers.scala +38 -0
  1519. package/project/.sdk/tm/scala/core/Operation.scala +37 -0
  1520. package/project/.sdk/tm/scala/core/Point.scala +44 -0
  1521. package/project/.sdk/tm/scala/core/Response.scala +37 -0
  1522. package/project/.sdk/tm/scala/core/Result.scala +42 -0
  1523. package/project/.sdk/tm/scala/core/SdkClient.scala +220 -0
  1524. package/project/.sdk/tm/scala/core/SdkError.scala +15 -0
  1525. package/project/.sdk/tm/scala/core/Spec.scala +39 -0
  1526. package/project/.sdk/tm/scala/core/Types.scala +31 -0
  1527. package/project/.sdk/tm/scala/core/Utility.scala +85 -0
  1528. package/project/.sdk/tm/scala/feature/AuditFeature.scala +101 -0
  1529. package/project/.sdk/tm/scala/feature/BaseFeature.scala +21 -0
  1530. package/project/.sdk/tm/scala/feature/CacheFeature.scala +181 -0
  1531. package/project/.sdk/tm/scala/feature/ClienttrackFeature.scala +93 -0
  1532. package/project/.sdk/tm/scala/feature/DebugFeature.scala +149 -0
  1533. package/project/.sdk/tm/scala/feature/FeatureOptions.scala +111 -0
  1534. package/project/.sdk/tm/scala/feature/IdempotencyFeature.scala +106 -0
  1535. package/project/.sdk/tm/scala/feature/LogFeature.scala +64 -0
  1536. package/project/.sdk/tm/scala/feature/MetricsFeature.scala +105 -0
  1537. package/project/.sdk/tm/scala/feature/NetsimFeature.scala +134 -0
  1538. package/project/.sdk/tm/scala/feature/PagingFeature.scala +170 -0
  1539. package/project/.sdk/tm/scala/feature/ProxyFeature.scala +113 -0
  1540. package/project/.sdk/tm/scala/feature/RatelimitFeature.scala +58 -0
  1541. package/project/.sdk/tm/scala/feature/RbacFeature.scala +90 -0
  1542. package/project/.sdk/tm/scala/feature/RetryFeature.scala +104 -0
  1543. package/project/.sdk/tm/scala/feature/StreamingFeature.scala +98 -0
  1544. package/project/.sdk/tm/scala/feature/TelemetryFeature.scala +129 -0
  1545. package/project/.sdk/tm/scala/feature/TestFeature.scala +253 -0
  1546. package/project/.sdk/tm/scala/feature/TimeoutFeature.scala +57 -0
  1547. package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +766 -0
  1548. package/project/.sdk/tm/scala/sdktest/SdkTestSupport.scala +93 -0
  1549. package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
  1550. package/project/.sdk/tm/scala/sdktest/sdk-test-control.json +19 -0
  1551. package/project/.sdk/tm/scala/src/feature/README.md +1 -0
  1552. package/project/.sdk/tm/scala/src/feature/audit/.gitkeep +0 -0
  1553. package/project/.sdk/tm/scala/src/feature/base/.gitkeep +0 -0
  1554. package/project/.sdk/tm/scala/src/feature/cache/.gitkeep +0 -0
  1555. package/project/.sdk/tm/scala/src/feature/clienttrack/.gitkeep +0 -0
  1556. package/project/.sdk/tm/scala/src/feature/debug/.gitkeep +0 -0
  1557. package/project/.sdk/tm/scala/src/feature/idempotency/.gitkeep +0 -0
  1558. package/project/.sdk/tm/scala/src/feature/log/.gitkeep +0 -0
  1559. package/project/.sdk/tm/scala/src/feature/metrics/.gitkeep +0 -0
  1560. package/project/.sdk/tm/scala/src/feature/netsim/.gitkeep +0 -0
  1561. package/project/.sdk/tm/scala/src/feature/paging/.gitkeep +0 -0
  1562. package/project/.sdk/tm/scala/src/feature/proxy/.gitkeep +0 -0
  1563. package/project/.sdk/tm/scala/src/feature/ratelimit/.gitkeep +0 -0
  1564. package/project/.sdk/tm/scala/src/feature/rbac/.gitkeep +0 -0
  1565. package/project/.sdk/tm/scala/src/feature/retry/.gitkeep +0 -0
  1566. package/project/.sdk/tm/scala/src/feature/streaming/.gitkeep +0 -0
  1567. package/project/.sdk/tm/scala/src/feature/telemetry/.gitkeep +0 -0
  1568. package/project/.sdk/tm/scala/src/feature/test/.gitkeep +0 -0
  1569. package/project/.sdk/tm/scala/src/feature/timeout/.gitkeep +0 -0
  1570. package/project/.sdk/tm/scala/utility/FeatureUtils.scala +68 -0
  1571. package/project/.sdk/tm/scala/utility/Fetcher.scala +129 -0
  1572. package/project/.sdk/tm/scala/utility/Json.java +268 -0
  1573. package/project/.sdk/tm/scala/utility/Make.scala +463 -0
  1574. package/project/.sdk/tm/scala/utility/MakeSpec.scala +49 -0
  1575. package/project/.sdk/tm/scala/utility/Misc.scala +68 -0
  1576. package/project/.sdk/tm/scala/utility/Prepare.scala +142 -0
  1577. package/project/.sdk/tm/scala/utility/Register.scala +38 -0
  1578. package/project/.sdk/tm/scala/utility/Results.scala +63 -0
  1579. package/project/.sdk/tm/scala/utility/StructUtility.scala +29 -0
  1580. package/project/.sdk/tm/scala/utility/Transform.scala +52 -0
  1581. package/project/.sdk/tm/scala/utility/struct/Struct.java +3550 -0
  1582. package/project/.sdk/tm/scala/utility/struct/voxgig_struct.scala +1833 -0
  1583. package/project/.sdk/tm/swift/LICENSE +22 -0
  1584. package/project/.sdk/tm/swift/Makefile +41 -0
  1585. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +113 -0
  1586. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +260 -0
  1587. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +111 -0
  1588. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/JSON.swift +327 -0
  1589. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Merge.swift +55 -0
  1590. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +601 -0
  1591. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/OrderedDictionary.swift +79 -0
  1592. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Path.swift +157 -0
  1593. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Select.swift +259 -0
  1594. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Transform.swift +462 -0
  1595. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +378 -0
  1596. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Value.swift +184 -0
  1597. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Walk.swift +44 -0
  1598. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Context.swift +161 -0
  1599. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Control.swift +20 -0
  1600. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Operation.swift +27 -0
  1601. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Point.swift +37 -0
  1602. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Response.swift +29 -0
  1603. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Result.swift +41 -0
  1604. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Spec.swift +36 -0
  1605. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Support.swift +98 -0
  1606. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Types.swift +25 -0
  1607. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Utility.swift +81 -0
  1608. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/AuditFeature.swift +99 -0
  1609. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/BaseFeature.swift +60 -0
  1610. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/CacheFeature.swift +164 -0
  1611. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/ClienttrackFeature.swift +95 -0
  1612. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/DebugFeature.swift +126 -0
  1613. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/FeatureOptions.swift +96 -0
  1614. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/IdempotencyFeature.swift +80 -0
  1615. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/LogFeature.swift +69 -0
  1616. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/MetricsFeature.swift +103 -0
  1617. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/NetsimFeature.swift +177 -0
  1618. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/PagingFeature.swift +154 -0
  1619. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/ProxyFeature.swift +122 -0
  1620. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/RatelimitFeature.swift +79 -0
  1621. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/RbacFeature.swift +103 -0
  1622. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/RetryFeature.swift +150 -0
  1623. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/StreamingFeature.swift +82 -0
  1624. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TelemetryFeature.swift +119 -0
  1625. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TestFeature.swift +257 -0
  1626. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TimeoutFeature.swift +83 -0
  1627. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Feature.swift +56 -0
  1628. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Fetcher.swift +107 -0
  1629. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Make.swift +321 -0
  1630. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeError.swift +56 -0
  1631. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/MakeOptions.swift +151 -0
  1632. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +157 -0
  1633. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Register.swift +40 -0
  1634. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/ResultUtil.swift +107 -0
  1635. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/CustomUtilityTest.swift +44 -0
  1636. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/ExistsTest.swift +12 -0
  1637. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/FeatureTest.swift +1049 -0
  1638. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/NetsimTest.swift +50 -0
  1639. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PipelineTest.swift +398 -0
  1640. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +750 -0
  1641. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +237 -0
  1642. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +523 -0
  1643. package/project/.sdk/tm/swift/VERSION +1 -0
  1644. package/project/.sdk/tm/swift/src/feature/README.md +6 -0
  1645. package/project/.sdk/tm/swift/src/feature/audit/.gitkeep +0 -0
  1646. package/project/.sdk/tm/swift/src/feature/base/.gitkeep +0 -0
  1647. package/project/.sdk/tm/swift/src/feature/cache/.gitkeep +0 -0
  1648. package/project/.sdk/tm/swift/src/feature/clienttrack/.gitkeep +0 -0
  1649. package/project/.sdk/tm/swift/src/feature/debug/.gitkeep +0 -0
  1650. package/project/.sdk/tm/swift/src/feature/idempotency/.gitkeep +0 -0
  1651. package/project/.sdk/tm/swift/src/feature/log/.gitkeep +0 -0
  1652. package/project/.sdk/tm/swift/src/feature/metrics/.gitkeep +0 -0
  1653. package/project/.sdk/tm/swift/src/feature/netsim/.gitkeep +0 -0
  1654. package/project/.sdk/tm/swift/src/feature/paging/.gitkeep +0 -0
  1655. package/project/.sdk/tm/swift/src/feature/proxy/.gitkeep +0 -0
  1656. package/project/.sdk/tm/swift/src/feature/ratelimit/.gitkeep +0 -0
  1657. package/project/.sdk/tm/swift/src/feature/rbac/.gitkeep +0 -0
  1658. package/project/.sdk/tm/swift/src/feature/retry/.gitkeep +0 -0
  1659. package/project/.sdk/tm/swift/src/feature/streaming/.gitkeep +0 -0
  1660. package/project/.sdk/tm/swift/src/feature/telemetry/.gitkeep +0 -0
  1661. package/project/.sdk/tm/swift/src/feature/test/.gitkeep +0 -0
  1662. package/project/.sdk/tm/swift/src/feature/timeout/.gitkeep +0 -0
  1663. package/project/.sdk/tm/ts/Makefile +6 -1
  1664. package/project/.sdk/tm/ts/src/feature/audit/AuditFeature.ts +98 -0
  1665. package/project/.sdk/tm/ts/src/feature/cache/CacheFeature.ts +152 -0
  1666. package/project/.sdk/tm/ts/src/feature/clienttrack/ClienttrackFeature.ts +106 -0
  1667. package/project/.sdk/tm/ts/src/feature/debug/DebugFeature.ts +134 -0
  1668. package/project/.sdk/tm/ts/src/feature/idempotency/IdempotencyFeature.ts +97 -0
  1669. package/project/.sdk/tm/ts/src/feature/metrics/MetricsFeature.ts +104 -0
  1670. package/project/.sdk/tm/ts/src/feature/netsim/NetsimFeature.ts +189 -0
  1671. package/project/.sdk/tm/ts/src/feature/paging/PagingFeature.ts +141 -0
  1672. package/project/.sdk/tm/ts/src/feature/proxy/ProxyFeature.ts +112 -0
  1673. package/project/.sdk/tm/ts/src/feature/ratelimit/RatelimitFeature.ts +108 -0
  1674. package/project/.sdk/tm/ts/src/feature/rbac/RbacFeature.ts +104 -0
  1675. package/project/.sdk/tm/ts/src/feature/retry/RetryFeature.ts +160 -0
  1676. package/project/.sdk/tm/ts/src/feature/streaming/StreamingFeature.ts +98 -0
  1677. package/project/.sdk/tm/ts/src/feature/telemetry/TelemetryFeature.ts +130 -0
  1678. package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +58 -1
  1679. package/project/.sdk/tm/ts/src/feature/timeout/TimeoutFeature.ts +103 -0
  1680. package/project/.sdk/tm/ts/src/utility/FeatureHookUtility.ts +4 -1
  1681. package/project/.sdk/tm/ts/src/utility/MakeErrorUtility.ts +9 -0
  1682. package/project/.sdk/tm/ts/src/utility/MakeOptionsUtility.ts +31 -1
  1683. package/project/.sdk/tm/ts/test/feature/harness.ts +293 -0
  1684. package/project/.sdk/tm/ts/test/feature.test.ts +772 -0
  1685. package/project/.sdk/tm/ts/test/netsim.test.ts +43 -0
  1686. package/project/.sdk/tm/ts/test/pipeline.test.ts +382 -0
  1687. package/project/.sdk/tm/zig/LICENSE +21 -0
  1688. package/project/.sdk/tm/zig/Makefile +31 -0
  1689. package/project/.sdk/tm/zig/VERSION +1 -0
  1690. package/project/.sdk/tm/zig/build.zig +58 -0
  1691. package/project/.sdk/tm/zig/build.zig.zon +11 -0
  1692. package/project/.sdk/tm/zig/core/context.zig +258 -0
  1693. package/project/.sdk/tm/zig/core/control.zig +26 -0
  1694. package/project/.sdk/tm/zig/core/error.zig +28 -0
  1695. package/project/.sdk/tm/zig/core/helpers.zig +326 -0
  1696. package/project/.sdk/tm/zig/core/mem.zig +20 -0
  1697. package/project/.sdk/tm/zig/core/operation.zig +34 -0
  1698. package/project/.sdk/tm/zig/core/point.zig +63 -0
  1699. package/project/.sdk/tm/zig/core/response.zig +32 -0
  1700. package/project/.sdk/tm/zig/core/result.zig +73 -0
  1701. package/project/.sdk/tm/zig/core/spec.zig +68 -0
  1702. package/project/.sdk/tm/zig/core/types.zig +101 -0
  1703. package/project/.sdk/tm/zig/core/utility.zig +1115 -0
  1704. package/project/.sdk/tm/zig/feature/audit.zig +131 -0
  1705. package/project/.sdk/tm/zig/feature/base.zig +52 -0
  1706. package/project/.sdk/tm/zig/feature/cache.zig +216 -0
  1707. package/project/.sdk/tm/zig/feature/clienttrack.zig +129 -0
  1708. package/project/.sdk/tm/zig/feature/debug.zig +191 -0
  1709. package/project/.sdk/tm/zig/feature/idempotency.zig +121 -0
  1710. package/project/.sdk/tm/zig/feature/log.zig +93 -0
  1711. package/project/.sdk/tm/zig/feature/metrics.zig +145 -0
  1712. package/project/.sdk/tm/zig/feature/netsim.zig +186 -0
  1713. package/project/.sdk/tm/zig/feature/paging.zig +201 -0
  1714. package/project/.sdk/tm/zig/feature/proxy.zig +180 -0
  1715. package/project/.sdk/tm/zig/feature/ratelimit.zig +123 -0
  1716. package/project/.sdk/tm/zig/feature/rbac.zig +126 -0
  1717. package/project/.sdk/tm/zig/feature/retry.zig +167 -0
  1718. package/project/.sdk/tm/zig/feature/streaming.zig +127 -0
  1719. package/project/.sdk/tm/zig/feature/support.zig +128 -0
  1720. package/project/.sdk/tm/zig/feature/telemetry.zig +165 -0
  1721. package/project/.sdk/tm/zig/feature/test.zig +315 -0
  1722. package/project/.sdk/tm/zig/feature/timeout.zig +105 -0
  1723. package/project/.sdk/tm/zig/root.zig +74 -0
  1724. package/project/.sdk/tm/zig/src/feature/README.md +1 -0
  1725. package/project/.sdk/tm/zig/src/feature/audit/.gitkeep +0 -0
  1726. package/project/.sdk/tm/zig/src/feature/base/.gitkeep +0 -0
  1727. package/project/.sdk/tm/zig/src/feature/cache/.gitkeep +0 -0
  1728. package/project/.sdk/tm/zig/src/feature/clienttrack/.gitkeep +0 -0
  1729. package/project/.sdk/tm/zig/src/feature/debug/.gitkeep +0 -0
  1730. package/project/.sdk/tm/zig/src/feature/idempotency/.gitkeep +0 -0
  1731. package/project/.sdk/tm/zig/src/feature/log/.gitkeep +0 -0
  1732. package/project/.sdk/tm/zig/src/feature/metrics/.gitkeep +0 -0
  1733. package/project/.sdk/tm/zig/src/feature/netsim/.gitkeep +0 -0
  1734. package/project/.sdk/tm/zig/src/feature/paging/.gitkeep +0 -0
  1735. package/project/.sdk/tm/zig/src/feature/proxy/.gitkeep +0 -0
  1736. package/project/.sdk/tm/zig/src/feature/ratelimit/.gitkeep +0 -0
  1737. package/project/.sdk/tm/zig/src/feature/rbac/.gitkeep +0 -0
  1738. package/project/.sdk/tm/zig/src/feature/retry/.gitkeep +0 -0
  1739. package/project/.sdk/tm/zig/src/feature/streaming/.gitkeep +0 -0
  1740. package/project/.sdk/tm/zig/src/feature/telemetry/.gitkeep +0 -0
  1741. package/project/.sdk/tm/zig/src/feature/test/.gitkeep +0 -0
  1742. package/project/.sdk/tm/zig/src/feature/timeout/.gitkeep +0 -0
  1743. package/project/.sdk/tm/zig/test/feature_test.zig +1045 -0
  1744. package/project/.sdk/tm/zig/test/fh.zig +531 -0
  1745. package/project/.sdk/tm/zig/test/gotcha_test.zig +230 -0
  1746. package/project/.sdk/tm/zig/test/pipeline_test.zig +493 -0
  1747. package/project/.sdk/tm/zig/test/primary_utility_test.zig +346 -0
  1748. package/project/.sdk/tm/zig/test/struct_corpus.zig +1145 -0
  1749. package/project/.sdk/tm/zig/test/struct_runner.zig +226 -0
  1750. package/project/.sdk/tm/zig/utility/jsonparse.zig +13 -0
  1751. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +779 -0
  1752. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +4400 -0
  1753. package/src/cmp/AgentGuide.ts +150 -0
  1754. package/src/cmp/AgentGuideContent.ts +286 -0
  1755. package/src/cmp/AgentGuideFeature.ts +107 -0
  1756. package/src/cmp/AgentGuideTop.ts +121 -0
  1757. package/src/cmp/ReadmeTop.ts +16 -3
  1758. package/src/sdkgen.ts +6 -0
@@ -0,0 +1,2615 @@
1
+ # Copyright (c) 2025-2026 Voxgig Ltd. MIT LICENSE.
2
+ #
3
+ # Voxgig Struct — Elixir port.
4
+ #
5
+ # A faithful port of the canonical TypeScript implementation
6
+ # (typescript/src/StructUtility.ts). The canonical algorithm mutates nodes in
7
+ # place and relies on reference-stable nodes (shared references seen by walk /
8
+ # merge / inject). The BEAM has no mutable, reference-stable native collection,
9
+ # so this port emulates a small mutable heap with ETS (an OTP-stdlib facility,
10
+ # like the JVM heap the Clojure port uses or Rust's Rc<RefCell>): a node is a
11
+ # tagged reference `{:vmap, id}` / `{:vlist, id}` whose contents live in the
12
+ # heap table and are replaced on mutation; the reference is stable, so all
13
+ # holders observe updates.
14
+ #
15
+ # Like the Python / Clojure / Dart ports, Elixir has a single `nil`, so the
16
+ # canonical `undefined` and JSON `null` are both `nil`; the Group A/B rules
17
+ # recover the distinction, and a NOARG sentinel marks "no argument supplied".
18
+ #
19
+ # Zero third-party runtime dependencies (ETS and :re/Regex are OTP stdlib).
20
+
21
+ defmodule Voxgig.Struct do
22
+ @moduledoc "Faithful Elixir port of voxgig/struct. See AGENTS.md."
23
+
24
+ # ---------------------------------------------------------------------------
25
+ # Mutable heap (ETS)
26
+ # ---------------------------------------------------------------------------
27
+
28
+ @heap :vox_struct_heap
29
+
30
+ defp ensure_heap do
31
+ case :ets.whereis(@heap) do
32
+ :undefined ->
33
+ try do
34
+ :ets.new(@heap, [:set, :public, :named_table])
35
+ rescue
36
+ ArgumentError -> :ok
37
+ end
38
+
39
+ :ok
40
+
41
+ _ ->
42
+ :ok
43
+ end
44
+ end
45
+
46
+ defp alloc(contents) do
47
+ ensure_heap()
48
+ id = :erlang.unique_integer([:positive, :monotonic])
49
+ :ets.insert(@heap, {id, contents})
50
+ id
51
+ end
52
+
53
+ defp hget(id) do
54
+ case :ets.lookup(@heap, id) do
55
+ [{_, c}] -> c
56
+ _ -> nil
57
+ end
58
+ end
59
+
60
+ defp hset(id, contents), do: :ets.insert(@heap, {id, contents})
61
+
62
+ defp vmap_new(pairs), do: {:vmap, alloc(pairs)}
63
+ defp vlist_new(items), do: {:vlist, alloc(items)}
64
+ defp empty_map, do: vmap_new([])
65
+ defp empty_list, do: vlist_new([])
66
+
67
+ defp map_pairs({:vmap, id}), do: hget(id)
68
+ defp map_set_pairs({:vmap, id}, pairs), do: hset(id, pairs)
69
+ defp list_items({:vlist, id}), do: hget(id)
70
+ defp list_set_items({:vlist, id}, items), do: hset(id, items)
71
+
72
+ # Injection cell
73
+ defp vinj_new(fields), do: {:vinj, alloc(fields)}
74
+ defp ig({:vinj, id}, k), do: Map.get(hget(id), k)
75
+
76
+ defp is_({:vinj, id}, k, v) do
77
+ hset(id, Map.put(hget(id), k, v))
78
+ v
79
+ end
80
+
81
+ defp isinj({:vinj, _}), do: true
82
+ defp isinj(_), do: false
83
+
84
+ # ---------------------------------------------------------------------------
85
+ # Sentinels / constants
86
+ # ---------------------------------------------------------------------------
87
+
88
+ @noarg :vox_noarg
89
+ def noarg, do: @noarg
90
+
91
+ @skip :vox_skip
92
+ @delete :vox_delete
93
+ def skip, do: @skip
94
+ def delete, do: @delete
95
+ def is_skip(v), do: v == @skip
96
+ def is_delete(v), do: v == @delete
97
+
98
+ @m_keypre "key:pre"
99
+ @m_keypost "key:post"
100
+ @m_val "val"
101
+ def m_keypre, do: 1
102
+ def m_keypost, do: 2
103
+ def m_val, do: 4
104
+
105
+ defp mode_to_num(@m_keypre), do: 1
106
+ defp mode_to_num(@m_keypost), do: 2
107
+ defp mode_to_num(@m_val), do: 4
108
+ defp mode_to_num(_), do: 0
109
+
110
+ @s_dkey "$KEY"
111
+ @s_banno "`$ANNO`"
112
+ @s_dtop "$TOP"
113
+ @s_derrs "$ERRS"
114
+ @s_dspec "$SPEC"
115
+ @s_bexact "`$EXACT`"
116
+ @s_bval "`$VAL`"
117
+ @s_bkey "`$KEY`"
118
+ @s_bopen "`$OPEN`"
119
+ @s_mt ""
120
+ @s_bt "`"
121
+ @s_ds "$"
122
+ @s_cn ":"
123
+ @s_key "KEY"
124
+ @s_viz ": "
125
+
126
+ @t_any 0x7FFFFFFF
127
+ @t_noval 0x40000000
128
+ @t_boolean 0x20000000
129
+ @t_decimal 0x10000000
130
+ @t_integer 0x08000000
131
+ @t_number 0x04000000
132
+ @t_string 0x02000000
133
+ @t_function 0x01000000
134
+ @t_null 0x00400000
135
+ @t_list 0x00004000
136
+ @t_map 0x00002000
137
+ @t_instance 0x00001000
138
+ @t_scalar 0x00000080
139
+ @t_node 0x00000040
140
+
141
+ def t_any, do: @t_any
142
+ def t_noval, do: @t_noval
143
+ def t_boolean, do: @t_boolean
144
+ def t_decimal, do: @t_decimal
145
+ def t_integer, do: @t_integer
146
+ def t_number, do: @t_number
147
+ def t_string, do: @t_string
148
+ def t_function, do: @t_function
149
+ def t_null, do: @t_null
150
+ def t_list, do: @t_list
151
+ def t_map, do: @t_map
152
+ def t_instance, do: @t_instance
153
+ def t_scalar, do: @t_scalar
154
+ def t_node, do: @t_node
155
+
156
+ @typename {
157
+ "any", "nil", "boolean", "decimal", "integer", "number", "string", "function",
158
+ "symbol", "null", "", "", "", "", "", "", "", "list", "map", "instance",
159
+ "", "", "", "", "scalar", "node"
160
+ }
161
+
162
+ @maxdepth 32
163
+
164
+ @r_inject_full ~r/^`(\$[A-Z]+|[^`]*)[0-9]*`$/
165
+ @r_inject_part ~r/`([^`]*)`/
166
+ @r_meta_path ~r/^([^$]+)\$([=~])(.+)$/
167
+ @r_transform_name ~r/`\$([A-Z]+)`/
168
+ @r_intkey ~r/^-?[0-9]+$/
169
+
170
+ # ---------------------------------------------------------------------------
171
+ # Low-level helpers
172
+ # ---------------------------------------------------------------------------
173
+
174
+ defp is_intish(n) when is_integer(n), do: true
175
+ defp is_intish(n) when is_float(n), do: n == Float.floor(n)
176
+ defp is_intish(_), do: false
177
+
178
+ defp num_to_string(n) when is_integer(n), do: Integer.to_string(n)
179
+
180
+ defp num_to_string(n) when is_float(n) do
181
+ cond do
182
+ n == Float.floor(n) and abs(n) < 1.0e16 -> Integer.to_string(trunc(n))
183
+ true -> shortest_float(n)
184
+ end
185
+ end
186
+
187
+ defp shortest_float(n) do
188
+ s = :erlang.float_to_binary(n, [:short])
189
+ s
190
+ end
191
+
192
+ defp js_string(nil), do: "null"
193
+ defp js_string(true), do: "true"
194
+ defp js_string(false), do: "false"
195
+ defp js_string(v) when is_number(v), do: num_to_string(v)
196
+ defp js_string(v) when is_binary(v), do: v
197
+ defp js_string(v) when is_function(v), do: "function"
198
+ defp js_string(@skip), do: "skip"
199
+ defp js_string(@delete), do: "delete"
200
+
201
+ defp js_string({:vlist, _} = v) do
202
+ list_items(v)
203
+ |> Enum.map(fn x -> if x == nil, do: "", else: js_string(x) end)
204
+ |> Enum.join(",")
205
+ end
206
+
207
+ defp js_string({:vmap, _}), do: "[object Object]"
208
+ defp js_string(v), do: inspect(v)
209
+
210
+ defp mapkey(k) when is_binary(k), do: k
211
+ defp mapkey(k) when is_number(k), do: num_to_string(k)
212
+ defp mapkey(k), do: js_string(k)
213
+
214
+ defp to_int(k) when is_boolean(k), do: nil
215
+ defp to_int(k) when is_integer(k), do: k
216
+ defp to_int(k) when is_float(k), do: trunc(Float.floor(k))
217
+
218
+ defp to_int(k) when is_binary(k) do
219
+ case Integer.parse(String.trim(k)) do
220
+ {n, ""} -> n
221
+ _ -> nil
222
+ end
223
+ end
224
+
225
+ defp to_int(_), do: nil
226
+
227
+ defp clz32(n0) do
228
+ n = Bitwise.band(n0, 0xFFFFFFFF)
229
+
230
+ if n == 0 do
231
+ 32
232
+ else
233
+ clz_loop(n, 0)
234
+ end
235
+ end
236
+
237
+ defp clz_loop(n, r) do
238
+ if Bitwise.band(n, 0x80000000) != 0 do
239
+ r
240
+ else
241
+ clz_loop(Bitwise.band(Bitwise.bsl(n, 1), 0xFFFFFFFF), r + 1)
242
+ end
243
+ end
244
+
245
+ # ---------------------------------------------------------------------------
246
+ # Minor utilities
247
+ # ---------------------------------------------------------------------------
248
+
249
+ def isnode({:vmap, _}), do: true
250
+ def isnode({:vlist, _}), do: true
251
+ def isnode(_), do: false
252
+
253
+ def ismap({:vmap, _}), do: true
254
+ def ismap(_), do: false
255
+
256
+ def islist({:vlist, _}), do: true
257
+ def islist(_), do: false
258
+
259
+ def isfunc(v), do: is_function(v)
260
+
261
+ def iskey(k) when is_binary(k), do: k != ""
262
+ def iskey(k) when is_boolean(k), do: false
263
+ def iskey(k) when is_number(k), do: true
264
+ def iskey(_), do: false
265
+
266
+ def isempty(v \\ nil) do
267
+ cond do
268
+ v == nil -> true
269
+ v == "" -> true
270
+ islist(v) -> list_items(v) == []
271
+ ismap(v) -> map_pairs(v) == []
272
+ true -> false
273
+ end
274
+ end
275
+
276
+ def getdef(v, alt), do: if(v == nil, do: alt, else: v)
277
+
278
+ def typify(value \\ @noarg) do
279
+ cond do
280
+ value == @noarg -> @t_noval
281
+ value == nil -> Bitwise.bor(@t_scalar, @t_null)
282
+ is_boolean(value) -> Bitwise.bor(@t_scalar, @t_boolean)
283
+ is_integer(value) -> Bitwise.bor(Bitwise.bor(@t_scalar, @t_number), @t_integer)
284
+ is_float(value) -> typify_float(value)
285
+ is_binary(value) -> Bitwise.bor(@t_scalar, @t_string)
286
+ is_function(value) -> Bitwise.bor(@t_scalar, @t_function)
287
+ islist(value) -> Bitwise.bor(@t_node, @t_list)
288
+ ismap(value) -> Bitwise.bor(@t_node, @t_map)
289
+ true -> Bitwise.bor(@t_node, @t_instance)
290
+ end
291
+ end
292
+
293
+ defp typify_float(value) do
294
+ cond do
295
+ value != value -> @t_noval
296
+ value == Float.floor(value) -> Bitwise.bor(Bitwise.bor(@t_scalar, @t_number), @t_integer)
297
+ true -> Bitwise.bor(Bitwise.bor(@t_scalar, @t_number), @t_decimal)
298
+ end
299
+ end
300
+
301
+ def typename(t \\ 0) do
302
+ i = clz32(t)
303
+ if i >= 0 and i < tuple_size(@typename), do: elem(@typename, i), else: elem(@typename, 0)
304
+ end
305
+
306
+ def size(v \\ nil) do
307
+ cond do
308
+ islist(v) -> length(list_items(v))
309
+ ismap(v) -> length(map_pairs(v))
310
+ is_binary(v) -> String.length(v)
311
+ is_boolean(v) -> if v, do: 1, else: 0
312
+ is_number(v) -> trunc(Float.floor(v / 1))
313
+ true -> 0
314
+ end
315
+ end
316
+
317
+ def strkey(key \\ nil) do
318
+ cond do
319
+ key == nil -> @s_mt
320
+ is_binary(key) -> key
321
+ is_boolean(key) -> @s_mt
322
+ is_number(key) -> if(is_intish(key), do: num_to_string(key), else: num_to_string(Float.floor(key)))
323
+ true -> @s_mt
324
+ end
325
+ end
326
+
327
+ def keysof(v \\ nil) do
328
+ cond do
329
+ ismap(v) -> map_pairs(v) |> Enum.map(&elem(&1, 0)) |> Enum.sort()
330
+ islist(v) -> n = length(list_items(v)); if(n == 0, do: [], else: Enum.map(0..(n - 1), &Integer.to_string/1))
331
+ true -> []
332
+ end
333
+ end
334
+
335
+ defp omap_get(pairs, k) do
336
+ case List.keyfind(pairs, k, 0) do
337
+ {_, v} -> {:ok, v}
338
+ nil -> :error
339
+ end
340
+ end
341
+
342
+ defp omap_put(pairs, k, v) do
343
+ if List.keymember?(pairs, k, 0) do
344
+ Enum.map(pairs, fn {kk, vv} -> if kk == k, do: {k, v}, else: {kk, vv} end)
345
+ else
346
+ pairs ++ [{k, v}]
347
+ end
348
+ end
349
+
350
+ defp omap_del(pairs, k), do: Enum.reject(pairs, fn {kk, _} -> kk == k end)
351
+
352
+ def getprop(val, key, alt \\ nil) do
353
+ if val == nil or key == nil do
354
+ alt
355
+ else
356
+ out =
357
+ cond do
358
+ ismap(val) ->
359
+ case omap_get(map_pairs(val), mapkey(key)) do
360
+ {:ok, v} -> v
361
+ :error -> nil
362
+ end
363
+
364
+ islist(val) ->
365
+ ki = to_int(key)
366
+ items = if ki == nil, do: [], else: list_items(val)
367
+ if ki != nil and ki >= 0 and ki < length(items), do: Enum.at(items, ki), else: nil
368
+
369
+ true ->
370
+ nil
371
+ end
372
+
373
+ if out == nil, do: alt, else: out
374
+ end
375
+ end
376
+
377
+ defp lookup_(val, key) do
378
+ cond do
379
+ val == nil or key == nil ->
380
+ nil
381
+
382
+ ismap(val) ->
383
+ case omap_get(map_pairs(val), mapkey(key)) do
384
+ {:ok, v} -> v
385
+ :error -> nil
386
+ end
387
+
388
+ islist(val) ->
389
+ ki = to_int(key)
390
+ items = if ki == nil, do: [], else: list_items(val)
391
+ if ki != nil and ki >= 0 and ki < length(items), do: Enum.at(items, ki), else: nil
392
+
393
+ true ->
394
+ nil
395
+ end
396
+ end
397
+
398
+ def haskey(val \\ nil, key \\ nil), do: getprop(val, key) != nil
399
+
400
+ def getelem(val, key, alt \\ nil) do
401
+ if val == nil or key == nil do
402
+ alt
403
+ else
404
+ out =
405
+ if islist(val) do
406
+ ks = cond do; is_binary(key) -> key; is_number(key) -> num_to_string(key); true -> "" end
407
+
408
+ if Regex.match?(@r_intkey, ks) do
409
+ items = list_items(val)
410
+ len = length(items)
411
+ nk0 = String.to_integer(ks)
412
+ nk = if nk0 < 0, do: len + nk0, else: nk0
413
+ if nk >= 0 and nk < len, do: Enum.at(items, nk), else: nil
414
+ else
415
+ nil
416
+ end
417
+ else
418
+ nil
419
+ end
420
+
421
+ if out == nil do
422
+ if isfunc(alt), do: alt.(), else: alt
423
+ else
424
+ out
425
+ end
426
+ end
427
+ end
428
+
429
+ defp getprop_raw(v, k) do
430
+ cond do
431
+ ismap(v) ->
432
+ case omap_get(map_pairs(v), k) do
433
+ {:ok, x} -> x
434
+ :error -> nil
435
+ end
436
+
437
+ islist(v) ->
438
+ i = String.to_integer(k)
439
+ items = list_items(v)
440
+ if i >= 0 and i < length(items), do: Enum.at(items, i), else: nil
441
+
442
+ true ->
443
+ nil
444
+ end
445
+ end
446
+
447
+ defp items_pairs(v) do
448
+ if not isnode(v), do: [], else: Enum.map(keysof(v), fn k -> {k, getprop_raw(v, k)} end)
449
+ end
450
+
451
+ def items(v \\ nil) do
452
+ vlist_new(Enum.map(items_pairs(v), fn {k, x} -> vlist_new([k, x]) end))
453
+ end
454
+
455
+ defp items_v(v, f), do: vlist_new(Enum.map(items_pairs(v), f))
456
+
457
+ def flatten(l, depth \\ 1) do
458
+ if not islist(l) do
459
+ l
460
+ else
461
+ out =
462
+ Enum.reduce(list_items(l), [], fn item, acc ->
463
+ if islist(item) and depth > 0 do
464
+ acc ++ list_items(flatten(item, depth - 1))
465
+ else
466
+ acc ++ [item]
467
+ end
468
+ end)
469
+
470
+ vlist_new(out)
471
+ end
472
+ end
473
+
474
+ def filter(val, check) do
475
+ out = Enum.reduce(items_pairs(val), [], fn {k, x}, acc -> if check.({k, x}), do: acc ++ [x], else: acc end)
476
+ vlist_new(out)
477
+ end
478
+
479
+ def setprop(parent, key, val) do
480
+ cond do
481
+ not iskey(key) ->
482
+ parent
483
+
484
+ ismap(parent) ->
485
+ map_set_pairs(parent, omap_put(map_pairs(parent), mapkey(key), val))
486
+ parent
487
+
488
+ islist(parent) ->
489
+ case to_int(key) do
490
+ nil ->
491
+ parent
492
+
493
+ ki ->
494
+ items = list_items(parent)
495
+ len = length(items)
496
+
497
+ new =
498
+ cond do
499
+ ki >= 0 ->
500
+ ki2 = if ki > len, do: len, else: ki
501
+ if ki2 >= len, do: items ++ [val], else: List.replace_at(items, ki2, val)
502
+
503
+ true ->
504
+ [val | items]
505
+ end
506
+
507
+ list_set_items(parent, new)
508
+ parent
509
+ end
510
+
511
+ true ->
512
+ parent
513
+ end
514
+ end
515
+
516
+ def delprop(parent, key) do
517
+ cond do
518
+ not iskey(key) ->
519
+ parent
520
+
521
+ ismap(parent) ->
522
+ map_set_pairs(parent, omap_del(map_pairs(parent), mapkey(key)))
523
+ parent
524
+
525
+ islist(parent) ->
526
+ case to_int(key) do
527
+ nil ->
528
+ parent
529
+
530
+ ki ->
531
+ items = list_items(parent)
532
+ if ki >= 0 and ki < length(items), do: list_set_items(parent, List.delete_at(items, ki))
533
+ parent
534
+ end
535
+
536
+ true ->
537
+ parent
538
+ end
539
+ end
540
+
541
+ def clone(v \\ nil) do
542
+ cond do
543
+ ismap(v) -> vmap_new(Enum.map(map_pairs(v), fn {k, x} -> {k, clone(x)} end))
544
+ islist(v) -> vlist_new(Enum.map(list_items(v), &clone/1))
545
+ true -> v
546
+ end
547
+ end
548
+
549
+ def slice(val, start \\ nil, stop \\ nil, mutate \\ false) do
550
+ cond do
551
+ is_number(val) and not is_boolean(val) ->
552
+ lo = if is_number(start), do: start, else: nil
553
+ hi = if is_number(stop), do: stop - 1, else: nil
554
+
555
+ cond do
556
+ hi != nil and val > hi -> hi
557
+ lo != nil and val < lo -> lo
558
+ true -> val
559
+ end
560
+
561
+ islist(val) or is_binary(val) ->
562
+ slice_seq(val, start, stop, mutate)
563
+
564
+ true ->
565
+ val
566
+ end
567
+ end
568
+
569
+ defp slice_seq(val, start, stop, mutate) do
570
+ vlen = size(val)
571
+ start = if start == nil and stop != nil, do: 0, else: start
572
+
573
+ if start == nil do
574
+ val
575
+ else
576
+ s0 = trunc(start)
577
+
578
+ {s, e} =
579
+ cond do
580
+ s0 < 0 ->
581
+ e = vlen + s0
582
+ {0, if(e < 0, do: 0, else: e)}
583
+
584
+ stop != nil ->
585
+ e0 = trunc(stop)
586
+
587
+ cond do
588
+ e0 < 0 -> ee = vlen + e0; {s0, if(ee < 0, do: 0, else: ee)}
589
+ vlen < e0 -> {s0, vlen}
590
+ true -> {s0, e0}
591
+ end
592
+
593
+ true ->
594
+ {s0, vlen}
595
+ end
596
+
597
+ s = if vlen < s, do: vlen, else: s
598
+
599
+ if s > -1 and s <= e and e <= vlen do
600
+ cond do
601
+ islist(val) ->
602
+ sub = Enum.slice(list_items(val), s, e - s)
603
+ if mutate, do: (list_set_items(val, sub); val), else: vlist_new(sub)
604
+
605
+ true ->
606
+ binary_part(val, s, e - s)
607
+ end
608
+ else
609
+ cond do
610
+ islist(val) -> if mutate, do: (list_set_items(val, []); val), else: empty_list()
611
+ true -> @s_mt
612
+ end
613
+ end
614
+ end
615
+ end
616
+
617
+ # ---------------------------------------------------------------------------
618
+ # Regex helpers (uniform re_* API over :re/Regex)
619
+ # ---------------------------------------------------------------------------
620
+
621
+ defp rx(p) do
622
+ cond do
623
+ is_struct(p, Regex) -> p
624
+ is_binary(p) -> Regex.compile!(p)
625
+ true -> Regex.compile!(js_string(p))
626
+ end
627
+ end
628
+
629
+ def re_compile(p, _flags \\ nil), do: rx(p)
630
+ def re_test(p, input), do: Regex.match?(rx(p), if(is_binary(input), do: input, else: js_string(input)))
631
+
632
+ def re_find(p, input) do
633
+ case Regex.run(rx(p), if(is_binary(input), do: input, else: js_string(input))) do
634
+ nil -> nil
635
+ groups -> vlist_new(Enum.map(groups, fn g -> g || "" end))
636
+ end
637
+ end
638
+
639
+ def re_find_all(p, input) do
640
+ matches = Regex.scan(rx(p), if(is_binary(input), do: input, else: js_string(input)))
641
+ vlist_new(Enum.map(matches, fn groups -> vlist_new(Enum.map(groups, fn g -> g || "" end)) end))
642
+ end
643
+
644
+ def re_replace(_p, input, _repl), do: input
645
+ def re_escape(s), do: escre(s)
646
+
647
+ def escre(s \\ nil) do
648
+ str = cond do; is_binary(s) -> s; s == nil -> @s_mt; true -> js_string(s) end
649
+
650
+ str
651
+ |> String.to_charlist()
652
+ |> Enum.map(fn c ->
653
+ ch = <<c::utf8>>
654
+ if String.contains?(".*+?^${}()|[]\\", ch), do: "\\" <> ch, else: ch
655
+ end)
656
+ |> Enum.join("")
657
+ end
658
+
659
+ @url_unreserved "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.!~*'()"
660
+
661
+ def escurl(s \\ nil) do
662
+ str = cond do; is_binary(s) -> s; s == nil -> @s_mt; true -> js_string(s) end
663
+
664
+ :binary.bin_to_list(str)
665
+ |> Enum.map(fn b ->
666
+ ch = <<b>>
667
+ if String.contains?(@url_unreserved, ch) do
668
+ ch
669
+ else
670
+ "%" <> String.upcase(String.pad_leading(Integer.to_string(b, 16), 2, "0"))
671
+ end
672
+ end)
673
+ |> Enum.join("")
674
+ end
675
+
676
+ # ---------------------------------------------------------------------------
677
+ # JSON-ish serialization / stringify / jsonify
678
+ # ---------------------------------------------------------------------------
679
+
680
+ defp esc_json(s) do
681
+ inner =
682
+ s
683
+ |> String.to_charlist()
684
+ |> Enum.map(fn c ->
685
+ case c do
686
+ ?" -> "\\\""
687
+ ?\\ -> "\\\\"
688
+ ?\n -> "\\n"
689
+ ?\r -> "\\r"
690
+ ?\t -> "\\t"
691
+ c when c < 32 -> "\\u" <> String.pad_leading(Integer.to_string(c, 16), 4, "0")
692
+ c -> <<c::utf8>>
693
+ end
694
+ end)
695
+ |> Enum.join("")
696
+
697
+ "\"" <> inner <> "\""
698
+ end
699
+
700
+ defp json_encode(v, sort \\ false, indent \\ nil), do: json_enc(v, sort, indent, 0)
701
+
702
+ defp json_enc(v, sort, indent, level) do
703
+ cond do
704
+ v == nil -> "null"
705
+ v == true -> "true"
706
+ v == false -> "false"
707
+ is_number(v) -> num_to_string(v)
708
+ is_binary(v) -> esc_json(v)
709
+ is_function(v) -> "null"
710
+ v == @skip or v == @delete -> "null"
711
+ islist(v) -> json_list(list_items(v), sort, indent, level)
712
+ ismap(v) -> json_map(map_pairs(v), sort, indent, level)
713
+ true -> esc_json(js_string(v))
714
+ end
715
+ end
716
+
717
+ defp json_list([], _sort, _indent, _level), do: "[]"
718
+
719
+ defp json_list(items, sort, nil, level) do
720
+ "[" <> Enum.map_join(items, ",", fn x -> json_enc(x, sort, nil, level + 1) end) <> "]"
721
+ end
722
+
723
+ defp json_list(items, sort, indent, level) do
724
+ pad = String.duplicate(" ", indent * (level + 1))
725
+ cpad = String.duplicate(" ", indent * level)
726
+ body = Enum.map_join(items, ",\n", fn x -> pad <> json_enc(x, sort, indent, level + 1) end)
727
+ "[\n" <> body <> "\n" <> cpad <> "]"
728
+ end
729
+
730
+ defp json_map(pairs, sort, indent, level) do
731
+ ks = Enum.map(pairs, &elem(&1, 0))
732
+ ks = if sort, do: Enum.sort(ks), else: ks
733
+
734
+ cond do
735
+ ks == [] ->
736
+ "{}"
737
+
738
+ indent == nil ->
739
+ "{" <>
740
+ Enum.map_join(ks, ",", fn k ->
741
+ {_, v} = List.keyfind(pairs, k, 0)
742
+ esc_json(k) <> ":" <> json_enc(v, sort, nil, level + 1)
743
+ end) <> "}"
744
+
745
+ true ->
746
+ pad = String.duplicate(" ", indent * (level + 1))
747
+ cpad = String.duplicate(" ", indent * level)
748
+
749
+ body =
750
+ Enum.map_join(ks, ",\n", fn k ->
751
+ {_, v} = List.keyfind(pairs, k, 0)
752
+ pad <> esc_json(k) <> ": " <> json_enc(v, sort, indent, level + 1)
753
+ end)
754
+
755
+ "{\n" <> body <> "\n" <> cpad <> "}"
756
+ end
757
+ end
758
+
759
+ defp has_cycle(v), do: has_cycle(v, MapSet.new())
760
+
761
+ defp has_cycle({:vmap, id} = v, seen) do
762
+ if MapSet.member?(seen, id), do: true, else: Enum.any?(map_pairs(v), fn {_, x} -> has_cycle(x, MapSet.put(seen, id)) end)
763
+ end
764
+
765
+ defp has_cycle({:vlist, id} = v, seen) do
766
+ if MapSet.member?(seen, id), do: true, else: Enum.any?(list_items(v), fn x -> has_cycle(x, MapSet.put(seen, id)) end)
767
+ end
768
+
769
+ defp has_cycle(_, _), do: false
770
+
771
+ def stringify(v \\ @noarg, maxlen \\ nil, pretty \\ nil) do
772
+ pr = pretty == true
773
+
774
+ cond do
775
+ v == @noarg ->
776
+ if pr, do: "<>", else: @s_mt
777
+
778
+ true ->
779
+ valstr =
780
+ cond do
781
+ is_binary(v) -> v
782
+ has_cycle(v) -> "__STRINGIFY_FAILED__"
783
+ true -> String.replace(json_encode(v, true), "\"", "")
784
+ end
785
+
786
+ valstr =
787
+ if is_number(maxlen) and maxlen > -1 do
788
+ m = trunc(maxlen)
789
+
790
+ if m < String.length(valstr) do
791
+ String.slice(valstr, 0, max(0, m - 3)) <> "..."
792
+ else
793
+ valstr
794
+ end
795
+ else
796
+ valstr
797
+ end
798
+
799
+ if pr, do: stringify_pretty(valstr), else: valstr
800
+ end
801
+ end
802
+
803
+ defp stringify_pretty(valstr) do
804
+ colors = [81, 118, 213, 39, 208, 201, 45, 190, 129, 51, 160, 121, 226, 33, 207, 69]
805
+ c = Enum.map(colors, fn n -> "\e[38;5;" <> Integer.to_string(n) <> "m" end) |> List.to_tuple()
806
+ r = "\e[0m"
807
+ clen = tuple_size(c)
808
+
809
+ {_, _, t} =
810
+ String.to_charlist(valstr)
811
+ |> Enum.reduce({0, elem(c, 0), elem(c, 0)}, fn ch, {d, o, t} ->
812
+ chs = <<ch::utf8>>
813
+
814
+ cond do
815
+ ch == ?{ or ch == ?[ ->
816
+ d2 = d + 1
817
+ o2 = elem(c, rem(d2, clen))
818
+ {d2, o2, t <> o2 <> chs}
819
+
820
+ ch == ?} or ch == ?] ->
821
+ t2 = t <> o <> chs
822
+ d2 = d - 1
823
+ o2 = elem(c, rem(rem(d2, clen) + clen, clen))
824
+ {d2, o2, t2}
825
+
826
+ true ->
827
+ {d, o, t <> o <> chs}
828
+ end
829
+ end)
830
+
831
+ t <> r
832
+ end
833
+
834
+ def jsonify(v \\ nil, flags \\ nil) do
835
+ if v == nil do
836
+ "null"
837
+ else
838
+ indent = getprop(flags, "indent", 2)
839
+ ind = if is_number(indent), do: trunc(indent), else: 2
840
+ str = if ind > 0, do: json_encode(v, false, ind), else: json_encode(v)
841
+ offset = getprop(flags, "offset", 0)
842
+ off = if is_number(offset), do: trunc(offset), else: 0
843
+
844
+ if off > 0 do
845
+ lines = String.split(str, "\n")
846
+
847
+ case lines do
848
+ [_ | rest] -> "{\n" <> Enum.map_join(rest, "\n", fn l -> String.duplicate(" ", off) <> l end)
849
+ [] -> str
850
+ end
851
+ else
852
+ str
853
+ end
854
+ end
855
+ end
856
+
857
+ def pad(s \\ nil, padding \\ nil, padchar \\ nil) do
858
+ str = cond do; is_binary(s) -> s; s == nil -> "null"; true -> stringify(s) end
859
+ p = if is_number(padding), do: trunc(padding), else: 44
860
+ pc = if is_binary(padchar), do: String.slice(padchar <> " ", 0, 1), else: " "
861
+
862
+ if p > -1 do
863
+ n = p - String.length(str)
864
+ if n > 0, do: str <> String.duplicate(pc, n), else: str
865
+ else
866
+ n = -p - String.length(str)
867
+ if n > 0, do: String.duplicate(pc, n) <> str, else: str
868
+ end
869
+ end
870
+
871
+ # ---------------------------------------------------------------------------
872
+ # join / pathify / replace
873
+ # ---------------------------------------------------------------------------
874
+
875
+ def join(arr, sep \\ nil, url \\ nil) do
876
+ if not islist(arr) do
877
+ @s_mt
878
+ else
879
+ sepdef = cond do; sep == nil -> ","; is_binary(sep) -> sep; true -> js_string(sep) end
880
+ single = String.length(sepdef) == 1
881
+ sc = if single, do: sepdef, else: " "
882
+ is_url = url == true
883
+ items = list_items(arr)
884
+ sarr = length(items)
885
+
886
+ out =
887
+ items
888
+ |> Enum.with_index()
889
+ |> Enum.reduce([], fn {s0, idx}, acc ->
890
+ if is_binary(s0) and s0 != @s_mt do
891
+ s =
892
+ if single do
893
+ cond do
894
+ is_url and idx == 0 ->
895
+ strip_trailing(s0, sc)
896
+
897
+ true ->
898
+ x = if idx > 0, do: strip_leading(s0, sc), else: s0
899
+ x = if idx < sarr - 1 or not is_url, do: strip_trailing(x, sc), else: x
900
+ collapse(x, sc)
901
+ end
902
+ else
903
+ s0
904
+ end
905
+
906
+ if s != @s_mt, do: acc ++ [s], else: acc
907
+ else
908
+ acc
909
+ end
910
+ end)
911
+
912
+ Enum.join(out, sepdef)
913
+ end
914
+ end
915
+
916
+ defp strip_trailing(s, sc) do
917
+ if String.ends_with?(s, sc) and s != "", do: strip_trailing(String.slice(s, 0, String.length(s) - 1), sc), else: s
918
+ end
919
+
920
+ defp strip_leading(s, sc) do
921
+ if String.starts_with?(s, sc) and s != "", do: strip_leading(String.slice(s, 1, String.length(s) - 1), sc), else: s
922
+ end
923
+
924
+ defp collapse(s, sc) do
925
+ chars = String.graphemes(s)
926
+ collapse_loop(chars, sc, [])
927
+ end
928
+
929
+ defp collapse_loop([], _sc, acc), do: Enum.join(Enum.reverse(acc), "")
930
+
931
+ defp collapse_loop([ch | rest], sc, acc) do
932
+ if ch != sc do
933
+ collapse_loop(rest, sc, [ch | acc])
934
+ else
935
+ {run, rest2} = take_run(rest, sc, [ch])
936
+ before_non = acc != [] and hd(acc) != sc
937
+ after_non = rest2 != []
938
+
939
+ if before_non and after_non do
940
+ collapse_loop(rest2, sc, [sc | acc])
941
+ else
942
+ collapse_loop(rest2, sc, Enum.reverse(run) ++ acc)
943
+ end
944
+ end
945
+ end
946
+
947
+ defp take_run([ch | rest], sc, acc) when ch == sc, do: take_run(rest, sc, [ch | acc])
948
+ defp take_run(rest, _sc, acc), do: {Enum.reverse(acc), rest}
949
+
950
+ def joinurl(arr), do: join(arr, "/", true)
951
+
952
+ def replace(s, from, to) do
953
+ ts = typify(s)
954
+
955
+ rs =
956
+ cond do
957
+ Bitwise.band(@t_string, ts) == 0 -> stringify(s)
958
+ Bitwise.band(Bitwise.bor(@t_noval, @t_null), ts) > 0 -> @s_mt
959
+ true -> stringify(s)
960
+ end
961
+
962
+ to_s = if is_binary(to), do: to, else: js_string(to)
963
+
964
+ cond do
965
+ is_binary(from) and from != "" -> String.replace(rs, from, to_s)
966
+ is_struct(from, Regex) -> Regex.replace(from, rs, to_s)
967
+ true -> rs
968
+ end
969
+ end
970
+
971
+ def pathify(v \\ @noarg, startin \\ nil, endin \\ nil) do
972
+ absent = v == @noarg
973
+ val = if absent, do: nil, else: v
974
+
975
+ path =
976
+ cond do
977
+ islist(val) -> list_items(val)
978
+ iskey(val) -> [val]
979
+ true -> nil
980
+ end
981
+
982
+ start = if is_number(startin), do: if(startin > -1, do: trunc(startin), else: 0), else: 0
983
+ endn = if is_number(endin), do: if(endin > -1, do: trunc(endin), else: 0), else: 0
984
+
985
+ pathstr =
986
+ if path != nil and start >= 0 do
987
+ len = length(path)
988
+ e = max(0, len - endn)
989
+ s = if start > len, do: len, else: start
990
+ sub = if s <= e, do: Enum.slice(path, s, e - s), else: []
991
+
992
+ if sub == [] do
993
+ "<root>"
994
+ else
995
+ sub
996
+ |> Enum.filter(&iskey/1)
997
+ |> Enum.map(fn p ->
998
+ cond do
999
+ is_integer(p) -> num_to_string(p)
1000
+ is_float(p) -> num_to_string(Float.floor(p))
1001
+ true -> String.replace(js_string(p), ".", @s_mt)
1002
+ end
1003
+ end)
1004
+ |> Enum.join(".")
1005
+ end
1006
+ else
1007
+ nil
1008
+ end
1009
+
1010
+ if pathstr == nil do
1011
+ "<unknown-path" <> (if absent, do: @s_mt, else: @s_cn <> stringify(val, 47)) <> ">"
1012
+ else
1013
+ pathstr
1014
+ end
1015
+ end
1016
+
1017
+ # ---------------------------------------------------------------------------
1018
+ # walk / merge
1019
+ # ---------------------------------------------------------------------------
1020
+
1021
+ def walk(val, opts \\ []) do
1022
+ before = Keyword.get(opts, :before)
1023
+ aft = Keyword.get(opts, :after)
1024
+ maxdepth = Keyword.get(opts, :maxdepth)
1025
+ key = Keyword.get(opts, :key)
1026
+ parent = Keyword.get(opts, :parent)
1027
+ path = Keyword.get(opts, :path)
1028
+ path = if path == nil, do: empty_list(), else: path
1029
+ depth = size(path)
1030
+ out = if before == nil, do: val, else: before.(key, val, parent, path)
1031
+ md = if is_number(maxdepth) and maxdepth >= 0, do: trunc(maxdepth), else: @maxdepth
1032
+
1033
+ if md == 0 or (md > 0 and md <= depth) do
1034
+ out
1035
+ else
1036
+ if isnode(out) do
1037
+ prefix = list_items(path)
1038
+
1039
+ Enum.each(items_pairs(out), fn {ckey, child} ->
1040
+ childpath = vlist_new(prefix ++ [ckey])
1041
+
1042
+ result =
1043
+ walk(child, before: before, after: aft, maxdepth: md, key: ckey, parent: out, path: childpath)
1044
+
1045
+ setprop(out, ckey, result)
1046
+ end)
1047
+ end
1048
+
1049
+ if aft == nil, do: out, else: aft.(key, out, parent, path)
1050
+ end
1051
+ end
1052
+
1053
+ defp grow(a, n) do
1054
+ if size(a) <= n do
1055
+ setprop(a, size(a), nil)
1056
+ grow(a, n)
1057
+ end
1058
+ end
1059
+
1060
+ def merge(objs, maxdepth \\ nil) do
1061
+ md = if is_number(maxdepth), do: if(maxdepth < 0, do: 0, else: trunc(maxdepth)), else: @maxdepth
1062
+
1063
+ if not islist(objs) do
1064
+ objs
1065
+ else
1066
+ items = list_items(objs)
1067
+ lenlist = length(items)
1068
+
1069
+ cond do
1070
+ lenlist == 0 ->
1071
+ nil
1072
+
1073
+ lenlist == 1 ->
1074
+ Enum.at(items, 0)
1075
+
1076
+ true ->
1077
+ out0 = getprop(objs, 0, empty_map())
1078
+ out = merge_loop(objs, lenlist, md, out0)
1079
+
1080
+ if md == 0 do
1081
+ o = getprop(objs, lenlist - 1)
1082
+ cond do; islist(o) -> empty_list(); ismap(o) -> empty_map(); true -> o end
1083
+ else
1084
+ out
1085
+ end
1086
+ end
1087
+ end
1088
+ end
1089
+
1090
+ defp merge_loop(_objs, _lenlist, _md, out, oi \\ 1)
1091
+
1092
+ defp merge_loop(objs, lenlist, md, out, oi) do
1093
+ if oi >= lenlist do
1094
+ out
1095
+ else
1096
+ obj = getprop(objs, oi)
1097
+
1098
+ out2 =
1099
+ if not isnode(obj) do
1100
+ obj
1101
+ else
1102
+ cur = vlist_new([out])
1103
+ dst = vlist_new([out])
1104
+
1105
+ before = fn key, val, _parent, path ->
1106
+ pi = size(path)
1107
+
1108
+ cond do
1109
+ md <= pi ->
1110
+ grow(cur, pi)
1111
+ setprop(cur, pi, val)
1112
+ if pi > 0, do: setprop(getelem(cur, pi - 1), key, val)
1113
+ nil
1114
+
1115
+ not isnode(val) ->
1116
+ grow(cur, pi)
1117
+ setprop(cur, pi, val)
1118
+ val
1119
+
1120
+ true ->
1121
+ grow(dst, pi)
1122
+ grow(cur, pi)
1123
+ dnew = if pi > 0, do: getprop(getelem(dst, pi - 1), key), else: getelem(dst, pi)
1124
+ setprop(dst, pi, dnew)
1125
+ tval = getelem(dst, pi)
1126
+
1127
+ cond do
1128
+ tval == nil ->
1129
+ setprop(cur, pi, if(islist(val), do: empty_list(), else: empty_map()))
1130
+ val
1131
+
1132
+ (islist(val) and islist(tval)) or (ismap(val) and ismap(tval)) ->
1133
+ setprop(cur, pi, tval)
1134
+ val
1135
+
1136
+ true ->
1137
+ setprop(cur, pi, val)
1138
+ nil
1139
+ end
1140
+ end
1141
+ end
1142
+
1143
+ aft = fn key, vv, _parent, path ->
1144
+ ci = size(path)
1145
+
1146
+ if ci < 1 do
1147
+ if size(cur) > 0, do: getelem(cur, 0), else: vv
1148
+ else
1149
+ target = if ci - 1 < size(cur), do: getelem(cur, ci - 1), else: nil
1150
+ value = if ci < size(cur), do: getelem(cur, ci), else: nil
1151
+ setprop(target, key, value)
1152
+ value
1153
+ end
1154
+ end
1155
+
1156
+ walk(obj, before: before, after: aft)
1157
+ end
1158
+
1159
+ merge_loop(objs, lenlist, md, out2, oi + 1)
1160
+ end
1161
+ end
1162
+
1163
+ # ---------------------------------------------------------------------------
1164
+ # getpath / setpath
1165
+ # ---------------------------------------------------------------------------
1166
+
1167
+ defp idef(injdef, field) do
1168
+ cond do
1169
+ isinj(injdef) ->
1170
+ case field do
1171
+ "base" -> ig(injdef, :base)
1172
+ "dparent" -> ig(injdef, :dparent)
1173
+ "meta" -> ig(injdef, :meta)
1174
+ "key" -> ig(injdef, :key)
1175
+ "dpath" -> ig(injdef, :dpath)
1176
+ "handler" -> ig(injdef, :handler)
1177
+ end
1178
+
1179
+ injdef == nil ->
1180
+ nil
1181
+
1182
+ true ->
1183
+ getprop(injdef, field)
1184
+ end
1185
+ end
1186
+
1187
+ defp dummy_inj, do: new_inj(nil, vmap_new([{@s_dtop, nil}]))
1188
+
1189
+ def getpath(store, path, injdef \\ nil) do
1190
+ parts =
1191
+ cond do
1192
+ islist(path) -> list_items(path)
1193
+ is_binary(path) -> String.split(path, ".")
1194
+ is_number(path) and not is_boolean(path) -> [strkey(path)]
1195
+ true -> nil
1196
+ end
1197
+
1198
+ if parts == nil do
1199
+ nil
1200
+ else
1201
+ has_inj = injdef != nil
1202
+ base = idef(injdef, "base")
1203
+ dparent = idef(injdef, "dparent")
1204
+ inj_meta = idef(injdef, "meta")
1205
+ inj_key = idef(injdef, "key")
1206
+ dpath = idef(injdef, "dpath")
1207
+ src = if iskey(base), do: getprop(store, base, store), else: store
1208
+ numparts = length(parts)
1209
+
1210
+ val =
1211
+ cond do
1212
+ path == nil or store == nil or (numparts == 1 and Enum.at(parts, 0) == @s_mt) or numparts == 0 ->
1213
+ src
1214
+
1215
+ true ->
1216
+ val0 = if numparts == 1, do: getprop(store, Enum.at(parts, 0)), else: store
1217
+
1218
+ if isfunc(val0) do
1219
+ val0
1220
+ else
1221
+ {val1, parts1} =
1222
+ case if(is_binary(Enum.at(parts, 0)), do: Regex.run(@r_meta_path, Enum.at(parts, 0)), else: nil) do
1223
+ [_, g1, _, g3] when inj_meta != nil and has_inj ->
1224
+ {getprop(inj_meta, g1), List.replace_at(parts, 0, g3)}
1225
+
1226
+ _ ->
1227
+ {src, parts}
1228
+ end
1229
+
1230
+ getpath_loop(store, parts1, 0, val1, has_inj, inj_key, inj_meta, src, dparent, dpath)
1231
+ end
1232
+ end
1233
+
1234
+ handler = idef(injdef, "handler")
1235
+
1236
+ if has_inj and isfunc(handler) do
1237
+ ref = pathify(path)
1238
+ if isinj(injdef), do: handler.(injdef, val, ref, store), else: handler.(dummy_inj(), val, ref, store)
1239
+ else
1240
+ val
1241
+ end
1242
+ end
1243
+ end
1244
+
1245
+ defp count_ascends(parts, pi, acc) do
1246
+ if pi + 1 < length(parts) and Enum.at(parts, pi + 1) == @s_mt do
1247
+ count_ascends(parts, pi + 1, acc + 1)
1248
+ else
1249
+ {acc, pi}
1250
+ end
1251
+ end
1252
+
1253
+ defp getpath_loop(store, parts, pi, val, has_inj, inj_key, inj_meta, src, dparent, dpath) do
1254
+ numparts = length(parts)
1255
+
1256
+ if val == nil or pi >= numparts do
1257
+ val
1258
+ else
1259
+ raw = Enum.at(parts, pi)
1260
+
1261
+ part0 =
1262
+ cond do
1263
+ has_inj and raw == @s_dkey -> if inj_key != nil, do: inj_key, else: raw
1264
+ is_binary(raw) and String.starts_with?(raw, "$GET:") -> stringify(getpath(src, slice(raw, 5, -1)))
1265
+ is_binary(raw) and String.starts_with?(raw, "$REF:") -> stringify(getpath(getprop(store, @s_dspec), slice(raw, 5, -1)))
1266
+ has_inj and is_binary(raw) and String.starts_with?(raw, "$META:") -> stringify(getpath(inj_meta, slice(raw, 6, -1)))
1267
+ true -> raw
1268
+ end
1269
+
1270
+ part = if is_binary(part0), do: String.replace(part0, "$$", "$"), else: strkey(part0)
1271
+
1272
+ if part == @s_mt do
1273
+ {ascends, pi2} = count_ascends(parts, pi, 0)
1274
+
1275
+ if has_inj and ascends > 0 do
1276
+ ascends2 = if pi2 == numparts - 1, do: ascends - 1, else: ascends
1277
+
1278
+ if ascends2 == 0 do
1279
+ getpath_loop(store, parts, pi2 + 1, dparent, has_inj, inj_key, inj_meta, src, dparent, dpath)
1280
+ else
1281
+ tail = Enum.drop(parts, pi2 + 1)
1282
+ fullpath = flatten(vlist_new([slice(dpath, -ascends2), vlist_new(tail)]))
1283
+ if ascends2 <= size(dpath), do: getpath(store, fullpath), else: nil
1284
+ end
1285
+ else
1286
+ getpath_loop(store, parts, pi2 + 1, dparent, has_inj, inj_key, inj_meta, src, dparent, dpath)
1287
+ end
1288
+ else
1289
+ getpath_loop(store, parts, pi + 1, getprop(val, part), has_inj, inj_key, inj_meta, src, dparent, dpath)
1290
+ end
1291
+ end
1292
+ end
1293
+
1294
+ def setpath(store, path, val, injdef \\ nil) do
1295
+ ptype = typify(path)
1296
+
1297
+ parts =
1298
+ cond do
1299
+ Bitwise.band(@t_list, ptype) > 0 -> vlist_new(list_items(path))
1300
+ Bitwise.band(@t_string, ptype) > 0 -> vlist_new(String.split(path, "."))
1301
+ Bitwise.band(@t_number, ptype) > 0 -> vlist_new([path])
1302
+ true -> nil
1303
+ end
1304
+
1305
+ if parts == nil do
1306
+ nil
1307
+ else
1308
+ base = if injdef != nil, do: idef(injdef, "base"), else: nil
1309
+ numparts = size(parts)
1310
+ parent0 = if iskey(base), do: getprop(store, base, store), else: store
1311
+ parent = setpath_walk(parts, numparts, parent0, 0)
1312
+
1313
+ if is_delete(val) do
1314
+ delprop(parent, getelem(parts, -1))
1315
+ else
1316
+ setprop(parent, getelem(parts, -1), val)
1317
+ end
1318
+
1319
+ parent
1320
+ end
1321
+ end
1322
+
1323
+ defp setpath_walk(parts, numparts, parent, pi) do
1324
+ if pi >= numparts - 1 do
1325
+ parent
1326
+ else
1327
+ pkey = getelem(parts, pi)
1328
+ np0 = getprop(parent, pkey)
1329
+
1330
+ np =
1331
+ if not isnode(np0) do
1332
+ nextpart = getelem(parts, pi + 1)
1333
+ nn = if Bitwise.band(@t_number, typify(nextpart)) > 0, do: empty_list(), else: empty_map()
1334
+ setprop(parent, pkey, nn)
1335
+ nn
1336
+ else
1337
+ np0
1338
+ end
1339
+
1340
+ setpath_walk(parts, numparts, np, pi + 1)
1341
+ end
1342
+ end
1343
+
1344
+ # ---------------------------------------------------------------------------
1345
+ # Injection
1346
+ # ---------------------------------------------------------------------------
1347
+
1348
+ defp new_inj(val, parent) do
1349
+ vinj_new(%{
1350
+ mode: @m_val,
1351
+ full: false,
1352
+ keyi: 0,
1353
+ keys: vlist_new([@s_dtop]),
1354
+ key: @s_dtop,
1355
+ ival: val,
1356
+ parent: parent,
1357
+ path: vlist_new([@s_dtop]),
1358
+ nodes: vlist_new([parent]),
1359
+ handler: &inject_handler/4,
1360
+ errs: empty_list(),
1361
+ meta: empty_map(),
1362
+ dparent: nil,
1363
+ dpath: vlist_new([@s_dtop]),
1364
+ base: @s_dtop,
1365
+ modify: nil,
1366
+ prior: nil,
1367
+ extra: nil,
1368
+ root: nil
1369
+ })
1370
+ end
1371
+
1372
+ defp inj_descend(inj) do
1373
+ meta = ig(inj, :meta)
1374
+
1375
+ if ismap(meta) do
1376
+ d = case getprop(meta, "__d") do; n when is_number(n) -> n; _ -> 0 end
1377
+ setprop(meta, "__d", d + 1)
1378
+ end
1379
+
1380
+ parentkey = getelem(ig(inj, :path), -2)
1381
+
1382
+ cond do
1383
+ ig(inj, :dparent) == nil ->
1384
+ if size(ig(inj, :dpath)) > 1 do
1385
+ is_(inj, :dpath, vlist_new(list_items(ig(inj, :dpath)) ++ [parentkey]))
1386
+ end
1387
+
1388
+ parentkey != nil ->
1389
+ is_(inj, :dparent, getprop(ig(inj, :dparent), parentkey))
1390
+ lastpart = getelem(ig(inj, :dpath), -1)
1391
+
1392
+ if lastpart == "$:" <> js_string(parentkey) do
1393
+ is_(inj, :dpath, slice(ig(inj, :dpath), -1))
1394
+ else
1395
+ is_(inj, :dpath, vlist_new(list_items(ig(inj, :dpath)) ++ [parentkey]))
1396
+ end
1397
+
1398
+ true ->
1399
+ :ok
1400
+ end
1401
+
1402
+ ig(inj, :dparent)
1403
+ end
1404
+
1405
+ defp inj_child(inj, keyi, keys) do
1406
+ key = strkey(getelem(keys, keyi))
1407
+ val = ig(inj, :ival)
1408
+
1409
+ vinj_new(%{
1410
+ mode: ig(inj, :mode),
1411
+ full: ig(inj, :full),
1412
+ keyi: keyi,
1413
+ keys: keys,
1414
+ key: key,
1415
+ ival: getprop(val, key),
1416
+ parent: val,
1417
+ path: vlist_new(list_items(ig(inj, :path)) ++ [key]),
1418
+ nodes: vlist_new(list_items(ig(inj, :nodes)) ++ [val]),
1419
+ handler: ig(inj, :handler),
1420
+ errs: ig(inj, :errs),
1421
+ meta: ig(inj, :meta),
1422
+ base: ig(inj, :base),
1423
+ modify: ig(inj, :modify),
1424
+ prior: inj,
1425
+ dpath: vlist_new(list_items(ig(inj, :dpath))),
1426
+ dparent: ig(inj, :dparent),
1427
+ extra: ig(inj, :extra),
1428
+ root: ig(inj, :root)
1429
+ })
1430
+ end
1431
+
1432
+ defp inj_setval(inj, val, ancestor \\ 1) do
1433
+ {target, key} =
1434
+ if ancestor < 2 do
1435
+ {ig(inj, :parent), ig(inj, :key)}
1436
+ else
1437
+ {getelem(ig(inj, :nodes), -ancestor), getelem(ig(inj, :path), -ancestor)}
1438
+ end
1439
+
1440
+ if val == nil, do: delprop(target, key), else: setprop(target, key, val)
1441
+ end
1442
+
1443
+ # ---------------------------------------------------------------------------
1444
+ # inject
1445
+ # ---------------------------------------------------------------------------
1446
+
1447
+ def inject(val, store, injdef \\ nil) do
1448
+ inj =
1449
+ if isinj(injdef) do
1450
+ injdef
1451
+ else
1452
+ parent = vmap_new([{@s_dtop, val}])
1453
+ i = new_inj(val, parent)
1454
+ is_(i, :dparent, store)
1455
+ is_(i, :errs, getprop(store, @s_derrs, empty_list()))
1456
+ if ismap(ig(i, :meta)), do: setprop(ig(i, :meta), "__d", 0)
1457
+ is_(i, :root, parent)
1458
+
1459
+ if injdef != nil do
1460
+ if getprop(injdef, "modify") != nil, do: is_(i, :modify, getprop(injdef, "modify"))
1461
+ if getprop(injdef, "extra") != nil, do: is_(i, :extra, getprop(injdef, "extra"))
1462
+ if getprop(injdef, "meta") != nil, do: is_(i, :meta, getprop(injdef, "meta"))
1463
+ if getprop(injdef, "handler") != nil, do: is_(i, :handler, getprop(injdef, "handler"))
1464
+ end
1465
+
1466
+ i
1467
+ end
1468
+
1469
+ inj_descend(inj)
1470
+
1471
+ rv =
1472
+ cond do
1473
+ isnode(val) ->
1474
+ nodekeys =
1475
+ if ismap(val) do
1476
+ ks = Enum.map(map_pairs(val), &elem(&1, 0))
1477
+ normal = ks |> Enum.filter(fn k -> not String.contains?(k, @s_ds) end) |> Enum.sort()
1478
+ trans = ks |> Enum.filter(fn k -> String.contains?(k, @s_ds) end) |> Enum.sort()
1479
+ normal ++ trans
1480
+ else
1481
+ n = length(list_items(val))
1482
+ if n == 0, do: [], else: Enum.map(0..(n - 1), &Integer.to_string/1)
1483
+ end
1484
+
1485
+ inject_loop(inj, val, store, nodekeys, 0)
1486
+ val
1487
+
1488
+ is_binary(val) ->
1489
+ is_(inj, :mode, @m_val)
1490
+ nv = injectstr(val, store, inj)
1491
+ if not is_skip(nv), do: inj_setval(inj, nv)
1492
+ nv
1493
+
1494
+ true ->
1495
+ val
1496
+ end
1497
+
1498
+ if ig(inj, :modify) != nil and not is_skip(rv) do
1499
+ mkey = ig(inj, :key)
1500
+ mparent = ig(inj, :parent)
1501
+ mval = getprop(mparent, mkey)
1502
+ ig(inj, :modify).(mval, mkey, mparent, inj)
1503
+ end
1504
+
1505
+ is_(inj, :ival, rv)
1506
+
1507
+ cond do
1508
+ ig(inj, :prior) == nil and ig(inj, :root) != nil and haskey(ig(inj, :root), @s_dtop) ->
1509
+ getprop(ig(inj, :root), @s_dtop)
1510
+
1511
+ ig(inj, :key) == @s_dtop and ig(inj, :parent) != nil and haskey(ig(inj, :parent), @s_dtop) ->
1512
+ getprop(ig(inj, :parent), @s_dtop)
1513
+
1514
+ true ->
1515
+ rv
1516
+ end
1517
+ end
1518
+
1519
+ defp inject_loop(inj, val, store, nodekeys, nki) do
1520
+ if nki >= length(nodekeys) do
1521
+ :ok
1522
+ else
1523
+ childinj = inj_child(inj, nki, vlist_new(nodekeys))
1524
+ nodekey = ig(childinj, :key)
1525
+ is_(childinj, :mode, @m_keypre)
1526
+ prekey = injectstr(js_string(nodekey), store, childinj)
1527
+ nk1 = Enum.map(list_items(ig(childinj, :keys)), &js_string/1)
1528
+
1529
+ nk2 =
1530
+ if prekey != nil do
1531
+ is_(childinj, :ival, getprop(val, prekey))
1532
+ is_(childinj, :mode, @m_val)
1533
+ inject(ig(childinj, :ival), store, childinj)
1534
+ _ = Enum.map(list_items(ig(childinj, :keys)), &js_string/1)
1535
+ is_(childinj, :mode, @m_keypost)
1536
+ injectstr(js_string(nodekey), store, childinj)
1537
+ Enum.map(list_items(ig(childinj, :keys)), &js_string/1)
1538
+ else
1539
+ nk1
1540
+ end
1541
+
1542
+ inject_loop(inj, val, store, nk2, ig(childinj, :keyi) + 1)
1543
+ end
1544
+ end
1545
+
1546
+ defp inject_handler(inj, val, ref, store) do
1547
+ iscmd = isfunc(val) and (ref == nil or (is_binary(ref) and String.starts_with?(ref, @s_ds)))
1548
+
1549
+ cond do
1550
+ iscmd ->
1551
+ val.(inj, val, ref, store)
1552
+
1553
+ ig(inj, :mode) == @m_val and ig(inj, :full) ->
1554
+ inj_setval(inj, val)
1555
+ val
1556
+
1557
+ true ->
1558
+ val
1559
+ end
1560
+ end
1561
+
1562
+ defp injectstr(val, store, inj) do
1563
+ if val == @s_mt do
1564
+ @s_mt
1565
+ else
1566
+ case Regex.run(@r_inject_full, val) do
1567
+ [_, pathref0] ->
1568
+ if inj != nil, do: is_(inj, :full, true)
1569
+
1570
+ pathref =
1571
+ if String.length(pathref0) > 3,
1572
+ do: pathref0 |> String.replace("$BT", @s_bt) |> String.replace("$DS", @s_ds),
1573
+ else: pathref0
1574
+
1575
+ getpath(store, pathref, inj)
1576
+
1577
+ _ ->
1578
+ out =
1579
+ Regex.replace(@r_inject_part, val, fn _whole, ref0 ->
1580
+ ref =
1581
+ if String.length(ref0) > 3,
1582
+ do: ref0 |> String.replace("$BT", @s_bt) |> String.replace("$DS", @s_ds),
1583
+ else: ref0
1584
+
1585
+ if inj != nil, do: is_(inj, :full, false)
1586
+ found = getpath(store, ref, inj)
1587
+
1588
+ cond do
1589
+ found == nil -> @s_mt
1590
+ is_binary(found) -> if found == "__NULL__", do: "null", else: found
1591
+ isfunc(found) -> @s_mt
1592
+ true -> try do; json_encode(found); rescue _ -> stringify(found) end
1593
+ end
1594
+ end)
1595
+
1596
+ if inj != nil and isfunc(ig(inj, :handler)) do
1597
+ is_(inj, :full, true)
1598
+ ig(inj, :handler).(inj, out, val, store)
1599
+ else
1600
+ out
1601
+ end
1602
+ end
1603
+ end
1604
+ end
1605
+
1606
+ # ---------------------------------------------------------------------------
1607
+ # transform commands
1608
+ # ---------------------------------------------------------------------------
1609
+
1610
+ defp transform_delete(inj, _v, _r, _s) do
1611
+ delprop(ig(inj, :parent), ig(inj, :key))
1612
+ nil
1613
+ end
1614
+
1615
+ defp transform_copy(inj, _v, _r, _s) do
1616
+ if ig(inj, :mode) == @m_keypre or ig(inj, :mode) == @m_keypost do
1617
+ ig(inj, :key)
1618
+ else
1619
+ out = lookup_(ig(inj, :dparent), ig(inj, :key))
1620
+ inj_setval(inj, out)
1621
+ out
1622
+ end
1623
+ end
1624
+
1625
+ defp transform_key(inj, _v, _r, _s) do
1626
+ if ig(inj, :mode) != @m_val do
1627
+ nil
1628
+ else
1629
+ keyspec = lookup_(ig(inj, :parent), @s_bkey)
1630
+
1631
+ if keyspec != nil do
1632
+ delprop(ig(inj, :parent), @s_bkey)
1633
+ getprop(ig(inj, :dparent), keyspec)
1634
+ else
1635
+ anno = lookup_(ig(inj, :parent), @s_banno)
1636
+ fromanno = lookup_(anno, @s_key)
1637
+ if fromanno != nil, do: fromanno, else: getelem(ig(inj, :path), -2)
1638
+ end
1639
+ end
1640
+ end
1641
+
1642
+ defp transform_anno(inj, _v, _r, _s) do
1643
+ delprop(ig(inj, :parent), @s_banno)
1644
+ nil
1645
+ end
1646
+
1647
+ defp transform_merge(inj, _v, _r, _s) do
1648
+ cond do
1649
+ ig(inj, :mode) == @m_keypre ->
1650
+ ig(inj, :key)
1651
+
1652
+ ig(inj, :mode) == @m_keypost ->
1653
+ args0 = getprop(ig(inj, :parent), ig(inj, :key))
1654
+ args = if islist(args0), do: args0, else: vlist_new([args0])
1655
+ inj_setval(inj, nil)
1656
+ mergelist = flatten(vlist_new([vlist_new([ig(inj, :parent)]), args, vlist_new([clone(ig(inj, :parent))])]))
1657
+ merge(mergelist)
1658
+ ig(inj, :key)
1659
+
1660
+ true ->
1661
+ nil
1662
+ end
1663
+ end
1664
+
1665
+ defp transform_each(inj, _v, _r, store) do
1666
+ if islist(ig(inj, :keys)), do: slice(ig(inj, :keys), 0, 1, true)
1667
+
1668
+ if ig(inj, :mode) != @m_val do
1669
+ nil
1670
+ else
1671
+ parent = ig(inj, :parent)
1672
+ srcpath = if size(parent) > 1, do: getelem(parent, 1), else: nil
1673
+ child_tm = if size(parent) > 2, do: clone(getelem(parent, 2)), else: nil
1674
+ srcstore = getprop(store, ig(inj, :base), store)
1675
+ src = getpath(srcstore, srcpath, inj)
1676
+ tkey = getelem(ig(inj, :path), -2)
1677
+ nodes = ig(inj, :nodes)
1678
+ target = (fn -> t = getelem(nodes, -2); if t == nil, do: getelem(nodes, -1), else: t end).()
1679
+ rval = vlist_new([])
1680
+
1681
+ if isnode(src) do
1682
+ tval_items =
1683
+ cond do
1684
+ islist(src) ->
1685
+ Enum.map(list_items(src), fn _ -> clone(child_tm) end)
1686
+
1687
+ ismap(src) ->
1688
+ Enum.map(map_pairs(src), fn {k, _} ->
1689
+ cc = clone(child_tm)
1690
+ if ismap(cc), do: setprop(cc, @s_banno, vmap_new([{@s_key, k}]))
1691
+ cc
1692
+ end)
1693
+
1694
+ true ->
1695
+ []
1696
+ end
1697
+
1698
+ tval = vlist_new(tval_items)
1699
+
1700
+ tcurrent =
1701
+ cond do
1702
+ ismap(src) -> vlist_new(Enum.map(map_pairs(src), &elem(&1, 1)))
1703
+ islist(src) -> vlist_new(list_items(src))
1704
+ true -> src
1705
+ end
1706
+
1707
+ if tval_items != [] do
1708
+ path = ig(inj, :path)
1709
+ ckey = getelem(path, -2)
1710
+ plist = list_items(path)
1711
+ tpath = if plist == [], do: vlist_new([]), else: vlist_new(Enum.take(plist, length(plist) - 1))
1712
+ dpath0 = [@s_dtop]
1713
+
1714
+ dpath0 =
1715
+ if is_binary(srcpath) and srcpath != @s_mt do
1716
+ dpath0 ++ (String.split(srcpath, ".") |> Enum.filter(&(&1 != @s_mt)))
1717
+ else
1718
+ dpath0
1719
+ end
1720
+
1721
+ dpath0 = if ckey != nil, do: dpath0 ++ ["$:" <> js_string(ckey)], else: dpath0
1722
+ tcur = vmap_new([{js_string(ckey), tcurrent}])
1723
+
1724
+ {tcur, dpath0} =
1725
+ if size(tpath) > 1 do
1726
+ pkey = getelem(path, -3, @s_dtop)
1727
+ {vmap_new([{js_string(pkey), tcur}]), dpath0 ++ ["$:" <> js_string(pkey)]}
1728
+ else
1729
+ {tcur, dpath0}
1730
+ end
1731
+
1732
+ tinj = inj_child(inj, 0, if(ckey != nil, do: vlist_new([ckey]), else: vlist_new([])))
1733
+ is_(tinj, :path, tpath)
1734
+ nlist = list_items(nodes)
1735
+ is_(tinj, :nodes, if(nlist == [], do: vlist_new([]), else: vlist_new(Enum.take(nlist, length(nlist) - 1))))
1736
+ is_(tinj, :parent, if(size(ig(tinj, :nodes)) > 0, do: getelem(ig(tinj, :nodes), -1), else: nil))
1737
+ if ckey != nil and ig(tinj, :parent) != nil, do: setprop(ig(tinj, :parent), ckey, tval)
1738
+ is_(tinj, :ival, tval)
1739
+ is_(tinj, :dpath, vlist_new(dpath0))
1740
+ is_(tinj, :dparent, tcur)
1741
+ inject(tval, store, tinj)
1742
+ rval = ig(tinj, :ival)
1743
+ setprop(target, tkey, rval)
1744
+ if islist(rval) and size(rval) > 0, do: getelem(rval, 0), else: nil
1745
+ else
1746
+ setprop(target, tkey, rval)
1747
+ if islist(rval) and size(rval) > 0, do: getelem(rval, 0), else: nil
1748
+ end
1749
+ else
1750
+ setprop(target, tkey, rval)
1751
+ nil
1752
+ end
1753
+ end
1754
+ end
1755
+
1756
+ defp transform_pack(inj, _v, _r, store) do
1757
+ cond do
1758
+ ig(inj, :mode) != @m_keypre or not is_binary(ig(inj, :key)) ->
1759
+ nil
1760
+
1761
+ true ->
1762
+ parent = ig(inj, :parent)
1763
+ path = ig(inj, :path)
1764
+ nodes = ig(inj, :nodes)
1765
+ args_val = getprop(parent, ig(inj, :key))
1766
+
1767
+ if not islist(args_val) or size(args_val) < 2 do
1768
+ nil
1769
+ else
1770
+ srcpath = getelem(args_val, 0)
1771
+ origchildspec = getelem(args_val, 1)
1772
+ tkey = getelem(path, -2)
1773
+ pathsize = size(path)
1774
+ target = (fn -> t = getelem(nodes, pathsize - 2); if t == nil, do: getelem(nodes, pathsize - 1), else: t end).()
1775
+ srcstore = getprop(store, ig(inj, :base), store)
1776
+ src0 = getpath(srcstore, srcpath, inj)
1777
+
1778
+ src =
1779
+ if not islist(src0) do
1780
+ if ismap(src0) do
1781
+ vlist_new(
1782
+ Enum.map(items_pairs(src0), fn {k, node} ->
1783
+ setprop(node, @s_banno, vmap_new([{@s_key, k}]))
1784
+ node
1785
+ end)
1786
+ )
1787
+ else
1788
+ nil
1789
+ end
1790
+ else
1791
+ src0
1792
+ end
1793
+
1794
+ if src == nil do
1795
+ nil
1796
+ else
1797
+ keypath = getprop(origchildspec, @s_bkey)
1798
+ childspec = delprop(origchildspec, @s_bkey)
1799
+ child = getprop(childspec, @s_bval, childspec)
1800
+ tval = empty_map()
1801
+
1802
+ Enum.each(items_pairs(src), fn {srckey, srcnode} ->
1803
+ k =
1804
+ cond do
1805
+ keypath == nil -> srckey
1806
+ is_binary(keypath) and String.starts_with?(keypath, @s_bt) -> inject(keypath, merge(vlist_new([empty_map(), store, vmap_new([{@s_dtop, srcnode}])]), 1))
1807
+ true -> getpath(srcnode, keypath, inj)
1808
+ end
1809
+
1810
+ tchild = clone(child)
1811
+ setprop(tval, k, tchild)
1812
+ anno = getprop(srcnode, @s_banno)
1813
+ if anno == nil, do: delprop(tchild, @s_banno), else: setprop(tchild, @s_banno, anno)
1814
+ end)
1815
+
1816
+ rval =
1817
+ if not isempty(tval) do
1818
+ tsrc = empty_map()
1819
+
1820
+ list_items(src)
1821
+ |> Enum.with_index()
1822
+ |> Enum.each(fn {node, i} ->
1823
+ kn =
1824
+ cond do
1825
+ keypath == nil -> i
1826
+ is_binary(keypath) and String.starts_with?(keypath, @s_bt) -> inject(keypath, merge(vlist_new([empty_map(), store, vmap_new([{@s_dtop, node}])]), 1))
1827
+ true -> getpath(node, keypath, inj)
1828
+ end
1829
+
1830
+ setprop(tsrc, kn, node)
1831
+ end)
1832
+
1833
+ tpath = slice(ig(inj, :path), -1)
1834
+ ckey = getelem(ig(inj, :path), -2)
1835
+ dpath = flatten(vlist_new([@s_dtop, vlist_new(String.split(srcpath, ".")), "$:" <> js_string(ckey)]))
1836
+
1837
+ tcur =
1838
+ if size(tpath) > 1 do
1839
+ pkey = getelem(ig(inj, :path), -3, @s_dtop)
1840
+ setprop(dpath, size(dpath), "$:" <> js_string(pkey))
1841
+ vmap_new([{js_string(pkey), vmap_new([{js_string(ckey), tsrc}])}])
1842
+ else
1843
+ vmap_new([{js_string(ckey), tsrc}])
1844
+ end
1845
+
1846
+ tinj = inj_child(inj, 0, vlist_new([ckey]))
1847
+ is_(tinj, :path, tpath)
1848
+ is_(tinj, :nodes, slice(ig(inj, :nodes), -1))
1849
+ is_(tinj, :parent, getelem(ig(tinj, :nodes), -1))
1850
+ is_(tinj, :ival, tval)
1851
+ is_(tinj, :dpath, dpath)
1852
+ is_(tinj, :dparent, tcur)
1853
+ inject(tval, store, tinj)
1854
+ ig(tinj, :ival)
1855
+ else
1856
+ empty_map()
1857
+ end
1858
+
1859
+ setprop(target, tkey, rval)
1860
+ nil
1861
+ end
1862
+ end
1863
+ end
1864
+ end
1865
+
1866
+ defp transform_ref(inj, val, _r, store) do
1867
+ if ig(inj, :mode) != @m_val do
1868
+ nil
1869
+ else
1870
+ nodes = ig(inj, :nodes)
1871
+ refpath = lookup_(ig(inj, :parent), 1)
1872
+ is_(inj, :keyi, size(ig(inj, :keys)))
1873
+ spec_func = getprop(store, @s_dspec)
1874
+
1875
+ if not isfunc(spec_func) do
1876
+ nil
1877
+ else
1878
+ spec = spec_func.(inj, nil, "", store)
1879
+ refv = getpath(spec, refpath)
1880
+ flag = vlist_new([false])
1881
+
1882
+ if isnode(refv) do
1883
+ walk(refv, after: fn _k, v2, _p, _path ->
1884
+ if v2 == "`$REF`", do: setprop(flag, 0, true)
1885
+ v2
1886
+ end)
1887
+ end
1888
+
1889
+ has_sub = getelem(flag, 0) == true
1890
+ tref = clone(refv)
1891
+ cpath = slice(ig(inj, :path), 0, size(ig(inj, :path)) - 3)
1892
+ tpath = slice(ig(inj, :path), 0, size(ig(inj, :path)) - 1)
1893
+ tcur = getpath(store, cpath)
1894
+ tval = getpath(store, tpath)
1895
+
1896
+ rval =
1897
+ if refv != nil and (not has_sub or tval != nil) do
1898
+ cs = inj_child(inj, 0, vlist_new([getelem(tpath, -1)]))
1899
+ is_(cs, :path, tpath)
1900
+ is_(cs, :nodes, slice(ig(inj, :nodes), 0, size(ig(inj, :nodes)) - 1))
1901
+ is_(cs, :parent, getelem(nodes, -2))
1902
+ is_(cs, :ival, tref)
1903
+ is_(cs, :dparent, tcur)
1904
+ inject(tref, store, cs)
1905
+ ig(cs, :ival)
1906
+ else
1907
+ nil
1908
+ end
1909
+
1910
+ inj_setval(inj, rval, 2)
1911
+
1912
+ if islist(ig(inj, :parent)) and ig(inj, :prior) != nil do
1913
+ is_(ig(inj, :prior), :keyi, ig(ig(inj, :prior), :keyi) - 1)
1914
+ end
1915
+
1916
+ val
1917
+ end
1918
+ end
1919
+ end
1920
+
1921
+ defp formatter_tbl do
1922
+ %{
1923
+ "identity" => fn _k, v -> v end,
1924
+ "upper" => fn _k, v -> if isnode(v), do: v, else: String.upcase(js_string(v)) end,
1925
+ "lower" => fn _k, v -> if isnode(v), do: v, else: String.downcase(js_string(v)) end,
1926
+ "string" => fn _k, v -> if isnode(v), do: v, else: js_string(v) end,
1927
+ "number" => fn _k, v ->
1928
+ if isnode(v) do
1929
+ v
1930
+ else
1931
+ n = parse_num(js_string(v))
1932
+ if is_intish(n), do: trunc(n), else: n
1933
+ end
1934
+ end,
1935
+ "integer" => fn _k, v -> if isnode(v), do: v, else: trunc(parse_num(js_string(v))) end,
1936
+ "concat" => fn k, v ->
1937
+ if k == nil and islist(v) do
1938
+ join(items_v(v, fn {_, x} -> if isnode(x), do: @s_mt, else: js_string(x) end), @s_mt)
1939
+ else
1940
+ v
1941
+ end
1942
+ end
1943
+ }
1944
+ end
1945
+
1946
+ defp parse_num(s) do
1947
+ case Float.parse(s) do
1948
+ {n, _} -> n
1949
+ :error -> 0
1950
+ end
1951
+ end
1952
+
1953
+ def check_placement(modes, ijname, parent_types, inj) do
1954
+ modenum = mode_to_num(ig(inj, :mode))
1955
+
1956
+ cond do
1957
+ Bitwise.band(modes, modenum) == 0 ->
1958
+ allowed = Enum.filter([1, 2, 4], fn m -> Bitwise.band(modes, m) != 0 end)
1959
+ placements = allowed |> Enum.map(fn m -> if m == 4, do: "value", else: "key" end) |> Enum.join(",")
1960
+ cur = if modenum == 4, do: "value", else: "key"
1961
+ push_err(inj, "$" <> ijname <> ": invalid placement as " <> cur <> ", expected: " <> placements <> ".")
1962
+ false
1963
+
1964
+ not isempty(parent_types) ->
1965
+ ptype = typify(ig(inj, :parent))
1966
+
1967
+ if Bitwise.band(parent_types, ptype) == 0 do
1968
+ push_err(inj, "$" <> ijname <> ": invalid placement in parent " <> typename(ptype) <> ", expected: " <> typename(parent_types) <> ".")
1969
+ false
1970
+ else
1971
+ true
1972
+ end
1973
+
1974
+ true ->
1975
+ true
1976
+ end
1977
+ end
1978
+
1979
+ def injector_args(arg_types, args) do
1980
+ numargs = length(arg_types)
1981
+ found = injector_args_loop(arg_types, args, 0, numargs, List.duplicate(nil, 1 + numargs))
1982
+ vlist_new(found)
1983
+ end
1984
+
1985
+ defp injector_args_loop(arg_types, args, argi, numargs, found) do
1986
+ if argi >= numargs do
1987
+ found
1988
+ else
1989
+ arg = getelem(args, argi)
1990
+ arg_type = typify(arg)
1991
+ at = Enum.at(arg_types, argi)
1992
+
1993
+ if Bitwise.band(at, arg_type) == 0 do
1994
+ List.replace_at(found, 0, "invalid argument: " <> stringify(arg, 22) <> " (" <> typename(arg_type) <> " at position " <> Integer.to_string(1 + argi) <> ") is not of type: " <> typename(at) <> ".")
1995
+ else
1996
+ injector_args_loop(arg_types, args, argi + 1, numargs, List.replace_at(found, 1 + argi, arg))
1997
+ end
1998
+ end
1999
+ end
2000
+
2001
+ def inject_child(child, store, inj) do
2002
+ cinj =
2003
+ if ig(inj, :prior) != nil do
2004
+ prior = ig(inj, :prior)
2005
+
2006
+ if ig(prior, :prior) != nil do
2007
+ c = inj_child(ig(prior, :prior), ig(prior, :keyi), ig(prior, :keys))
2008
+ is_(c, :ival, child)
2009
+ setprop(ig(c, :parent), ig(prior, :key), child)
2010
+ c
2011
+ else
2012
+ c = inj_child(prior, ig(inj, :keyi), ig(inj, :keys))
2013
+ is_(c, :ival, child)
2014
+ setprop(ig(c, :parent), ig(inj, :key), child)
2015
+ c
2016
+ end
2017
+ else
2018
+ inj
2019
+ end
2020
+
2021
+ inject(child, store, cinj)
2022
+ cinj
2023
+ end
2024
+
2025
+ defp transform_format(inj, _v, _r, store) do
2026
+ slice(ig(inj, :keys), 0, 1, true)
2027
+
2028
+ if ig(inj, :mode) != @m_val do
2029
+ nil
2030
+ else
2031
+ name = lookup_(ig(inj, :parent), 1)
2032
+ child = lookup_(ig(inj, :parent), 2)
2033
+ tkey = getelem(ig(inj, :path), -2)
2034
+ target = (fn -> t = getelem(ig(inj, :nodes), -2); if t == nil, do: getelem(ig(inj, :nodes), -1), else: t end).()
2035
+ cinj = inject_child(child, store, inj)
2036
+ resolved = ig(cinj, :ival)
2037
+
2038
+ formatter =
2039
+ if Bitwise.band(@t_function, typify(name)) > 0 do
2040
+ fn k, v -> name.(dummy_inj(), v, js_string(k), nil) end
2041
+ else
2042
+ Map.get(formatter_tbl(), js_string(name))
2043
+ end
2044
+
2045
+ if formatter == nil do
2046
+ push_err(inj, "$FORMAT: unknown format: " <> js_string(name) <> ".")
2047
+ nil
2048
+ else
2049
+ out = walk(resolved, after: fn k, v, _p, _path -> formatter.(k, v) end)
2050
+ setprop(target, tkey, out)
2051
+ out
2052
+ end
2053
+ end
2054
+ end
2055
+
2056
+ defp transform_apply(inj, _v, _r, store) do
2057
+ if not check_placement(4, "APPLY", @t_list, inj) do
2058
+ nil
2059
+ else
2060
+ res = injector_args([@t_function, @t_any], slice(ig(inj, :parent), 1))
2061
+ err = getelem(res, 0)
2062
+ apply_fn = getelem(res, 1)
2063
+ child = if size(res) > 2, do: getelem(res, 2), else: nil
2064
+
2065
+ if err != nil do
2066
+ push_err(inj, "$APPLY: " <> js_string(err))
2067
+ nil
2068
+ else
2069
+ tkey = getelem(ig(inj, :path), -2)
2070
+ target = (fn -> t = getelem(ig(inj, :nodes), -2); if t == nil, do: getelem(ig(inj, :nodes), -1), else: t end).()
2071
+ cinj = inject_child(child, store, inj)
2072
+ resolved = ig(cinj, :ival)
2073
+ out = apply_fn.(resolved, store, cinj)
2074
+ setprop(target, tkey, out)
2075
+ out
2076
+ end
2077
+ end
2078
+ end
2079
+
2080
+ def transform(data, spec0, injdef \\ nil) do
2081
+ origspec = spec0
2082
+ spec = clone(spec0)
2083
+ extra = if injdef != nil, do: getprop(injdef, "extra"), else: nil
2084
+ collect = injdef != nil and getprop(injdef, "errs") != nil
2085
+ errs = if collect, do: getprop(injdef, "errs"), else: empty_list()
2086
+ extra_transforms = empty_map()
2087
+ extra_data = empty_map()
2088
+
2089
+ if extra != nil do
2090
+ Enum.each(items_pairs(extra), fn {k, v} ->
2091
+ if String.starts_with?(k, @s_ds), do: setprop(extra_transforms, k, v), else: setprop(extra_data, k, v)
2092
+ end)
2093
+ end
2094
+
2095
+ data_clone = merge(vlist_new([if(isempty(extra_data), do: nil, else: clone(extra_data)), clone(data)]))
2096
+ store = empty_map()
2097
+ setprop(store, @s_dtop, data_clone)
2098
+ setprop(store, @s_dspec, fn _i, _v, _r, _s -> origspec end)
2099
+ setprop(store, "$BT", fn _i, _v, _r, _s -> @s_bt end)
2100
+ setprop(store, "$DS", fn _i, _v, _r, _s -> @s_ds end)
2101
+ setprop(store, "$WHEN", fn _i, _v, _r, _s -> "1970-01-01T00:00:00.000Z" end)
2102
+ setprop(store, "$DELETE", &transform_delete/4)
2103
+ setprop(store, "$COPY", &transform_copy/4)
2104
+ setprop(store, "$KEY", &transform_key/4)
2105
+ setprop(store, "$ANNO", &transform_anno/4)
2106
+ setprop(store, "$MERGE", &transform_merge/4)
2107
+ setprop(store, "$EACH", &transform_each/4)
2108
+ setprop(store, "$PACK", &transform_pack/4)
2109
+ setprop(store, "$REF", &transform_ref/4)
2110
+ setprop(store, "$FORMAT", &transform_format/4)
2111
+ setprop(store, "$APPLY", &transform_apply/4)
2112
+ Enum.each(items_pairs(extra_transforms), fn {k, v} -> setprop(store, k, v) end)
2113
+ setprop(store, @s_derrs, errs)
2114
+
2115
+ idef = empty_map()
2116
+ if ismap(injdef), do: Enum.each(items_pairs(injdef), fn {k, v} -> setprop(idef, k, v) end)
2117
+ setprop(idef, "errs", errs)
2118
+ out = inject(spec, store, idef)
2119
+ if size(errs) > 0 and not collect, do: raise(Voxgig.Struct.Error, message: join(errs, " | "))
2120
+ out
2121
+ end
2122
+
2123
+ # ---------------------------------------------------------------------------
2124
+ # validate
2125
+ # ---------------------------------------------------------------------------
2126
+
2127
+ defp push_err(inj, msg), do: setprop(ig(inj, :errs), size(ig(inj, :errs)), msg)
2128
+
2129
+ defp invalid_type_msg(path, needtype, vt, v, _whence) do
2130
+ vs = if v == nil, do: "no value", else: stringify(v)
2131
+
2132
+ "Expected " <>
2133
+ (if size(path) > 1, do: "field " <> pathify(path, 1) <> " to be ", else: "") <>
2134
+ needtype <>
2135
+ ", but found " <>
2136
+ (if v != nil, do: typename(vt) <> @s_viz, else: "") <>
2137
+ vs <> "."
2138
+ end
2139
+
2140
+ defp validate_string(inj, _v, _r, _s) do
2141
+ out = lookup_(ig(inj, :dparent), ig(inj, :key))
2142
+ t = typify(out)
2143
+
2144
+ cond do
2145
+ Bitwise.band(@t_string, t) == 0 -> push_err(inj, invalid_type_msg(ig(inj, :path), "string", t, out, "V1010")); nil
2146
+ out == @s_mt -> push_err(inj, "Empty string at " <> pathify(ig(inj, :path), 1)); nil
2147
+ true -> out
2148
+ end
2149
+ end
2150
+
2151
+ defp validate_type(inj, _v, ref, _s) do
2152
+ tname = if is_binary(ref) and String.length(ref) > 1, do: String.downcase(String.slice(ref, 1, String.length(ref) - 1)), else: "any"
2153
+ idx = type_index(tname)
2154
+ typev0 = if idx >= 0, do: Bitwise.bsl(1, 31 - idx), else: 0
2155
+ typev = if tname == "nil", do: Bitwise.bor(typev0, @t_null), else: typev0
2156
+ out = lookup_(ig(inj, :dparent), ig(inj, :key))
2157
+ t = typify(out)
2158
+
2159
+ if Bitwise.band(t, typev) == 0 do
2160
+ push_err(inj, invalid_type_msg(ig(inj, :path), tname, t, out, "V1001"))
2161
+ nil
2162
+ else
2163
+ out
2164
+ end
2165
+ end
2166
+
2167
+ defp type_index(tname) do
2168
+ Enum.find_index(Tuple.to_list(@typename), fn x -> x == tname end) || -1
2169
+ end
2170
+
2171
+ defp validate_any(inj, _v, _r, _s), do: lookup_(ig(inj, :dparent), ig(inj, :key))
2172
+
2173
+ defp validate_child(inj, _v, _r, _s) do
2174
+ parent = ig(inj, :parent)
2175
+ key = ig(inj, :key)
2176
+ path = ig(inj, :path)
2177
+ keys = ig(inj, :keys)
2178
+
2179
+ cond do
2180
+ ig(inj, :mode) == @m_keypre ->
2181
+ childtm = getprop(parent, key)
2182
+ pkey = getelem(path, -2)
2183
+ tval = getprop(ig(inj, :dparent), pkey)
2184
+
2185
+ cond do
2186
+ tval == nil ->
2187
+ Enum.each(keysof(empty_map()), fn ckey -> setprop(parent, ckey, clone(childtm)); setprop(keys, size(keys), ckey) end)
2188
+ delprop(parent, key)
2189
+ nil
2190
+
2191
+ not ismap(tval) ->
2192
+ push_err(inj, invalid_type_msg(slice(path, 0, size(path) - 1), "object", typify(tval), tval, "V0220"))
2193
+ nil
2194
+
2195
+ true ->
2196
+ Enum.each(keysof(tval), fn ckey -> setprop(parent, ckey, clone(childtm)); setprop(keys, size(keys), ckey) end)
2197
+ delprop(parent, key)
2198
+ nil
2199
+ end
2200
+
2201
+ ig(inj, :mode) == @m_val ->
2202
+ childtm = getprop(parent, 1)
2203
+
2204
+ cond do
2205
+ not islist(parent) ->
2206
+ push_err(inj, "Invalid $CHILD as value")
2207
+ nil
2208
+
2209
+ ig(inj, :dparent) == nil ->
2210
+ list_set_items(parent, [])
2211
+ nil
2212
+
2213
+ not islist(ig(inj, :dparent)) ->
2214
+ push_err(inj, invalid_type_msg(slice(path, 0, size(path) - 1), "list", typify(ig(inj, :dparent)), ig(inj, :dparent), "V0230"))
2215
+ is_(inj, :keyi, size(parent))
2216
+ ig(inj, :dparent)
2217
+
2218
+ true ->
2219
+ Enum.each(items_pairs(ig(inj, :dparent)), fn {k, _} -> setprop(parent, k, clone(childtm)) end)
2220
+ n = size(ig(inj, :dparent))
2221
+ list_set_items(parent, Enum.take(list_items(parent), n))
2222
+ is_(inj, :keyi, 0)
2223
+ getprop(ig(inj, :dparent), 0)
2224
+ end
2225
+
2226
+ true ->
2227
+ nil
2228
+ end
2229
+ end
2230
+
2231
+ defp validate_one(inj, _v, _r, store) do
2232
+ if ig(inj, :mode) != @m_val do
2233
+ nil
2234
+ else
2235
+ parent = ig(inj, :parent)
2236
+
2237
+ if not islist(parent) or ig(inj, :keyi) != 0 do
2238
+ push_err(inj, "The $ONE validator at field " <> pathify(ig(inj, :path), 1, 1) <> " must be the first element of an array.")
2239
+ nil
2240
+ else
2241
+ is_(inj, :keyi, size(ig(inj, :keys)))
2242
+ inj_setval(inj, ig(inj, :dparent), 2)
2243
+ is_(inj, :path, slice(ig(inj, :path), 0, size(ig(inj, :path)) - 1))
2244
+ is_(inj, :key, getelem(ig(inj, :path), -1))
2245
+ tvals = slice(parent, 1)
2246
+
2247
+ if size(tvals) == 0 do
2248
+ push_err(inj, "The $ONE validator at field " <> pathify(ig(inj, :path), 1, 1) <> " must have at least one argument.")
2249
+ nil
2250
+ else
2251
+ matched = validate_one_loop(inj, store, list_items(tvals), false)
2252
+
2253
+ if not matched do
2254
+ valdesc = Enum.map_join(list_items(tvals), ", ", &stringify/1)
2255
+ valdesc = Regex.replace(@r_transform_name, valdesc, fn _w, g1 -> String.downcase(g1) end)
2256
+ push_err(inj, invalid_type_msg(ig(inj, :path), (if size(tvals) > 1, do: "one of ", else: "") <> valdesc, typify(ig(inj, :dparent)), ig(inj, :dparent), "V0210"))
2257
+ end
2258
+
2259
+ nil
2260
+ end
2261
+ end
2262
+ end
2263
+ end
2264
+
2265
+ defp validate_one_loop(_inj, _store, [], matched), do: matched
2266
+
2267
+ defp validate_one_loop(inj, store, [tv | rest], matched) do
2268
+ if matched do
2269
+ true
2270
+ else
2271
+ terrs = empty_list()
2272
+ vstore = merge(vlist_new([empty_map(), store]), 1)
2273
+ setprop(vstore, @s_dtop, ig(inj, :dparent))
2274
+ idef = vmap_new([{"extra", vstore}, {"errs", terrs}, {"meta", ig(inj, :meta)}])
2275
+ vcurrent = validate(ig(inj, :dparent), tv, idef)
2276
+ inj_setval(inj, vcurrent, -2)
2277
+ if size(terrs) == 0, do: true, else: validate_one_loop(inj, store, rest, false)
2278
+ end
2279
+ end
2280
+
2281
+ defp validate_exact(inj, _v, _r, _s) do
2282
+ if ig(inj, :mode) != @m_val do
2283
+ delprop(ig(inj, :parent), ig(inj, :key))
2284
+ nil
2285
+ else
2286
+ parent = ig(inj, :parent)
2287
+
2288
+ if not islist(parent) or ig(inj, :keyi) != 0 do
2289
+ push_err(inj, "The $EXACT validator at field " <> pathify(ig(inj, :path), 1, 1) <> " must be the first element of an array.")
2290
+ nil
2291
+ else
2292
+ is_(inj, :keyi, size(ig(inj, :keys)))
2293
+ inj_setval(inj, ig(inj, :dparent), 2)
2294
+ is_(inj, :path, slice(ig(inj, :path), 0, size(ig(inj, :path)) - 1))
2295
+ is_(inj, :key, getelem(ig(inj, :path), -1))
2296
+ tvals = slice(parent, 1)
2297
+
2298
+ if size(tvals) == 0 do
2299
+ push_err(inj, "The $EXACT validator at field " <> pathify(ig(inj, :path), 1, 1) <> " must have at least one argument.")
2300
+ nil
2301
+ else
2302
+ matched = Enum.any?(list_items(tvals), fn tv -> veq(tv, ig(inj, :dparent)) end)
2303
+
2304
+ if not matched do
2305
+ valdesc = Enum.map_join(list_items(tvals), ", ", &stringify/1)
2306
+ valdesc = Regex.replace(@r_transform_name, valdesc, fn _w, g1 -> String.downcase(g1) end)
2307
+ push_err(inj, invalid_type_msg(ig(inj, :path), (if size(ig(inj, :path)) > 1, do: "", else: "value ") <> "exactly equal to " <> (if size(tvals) == 1, do: "", else: "one of ") <> valdesc, typify(ig(inj, :dparent)), ig(inj, :dparent), "V0110"))
2308
+ end
2309
+
2310
+ nil
2311
+ end
2312
+ end
2313
+ end
2314
+ end
2315
+
2316
+ def veq(a, b) do
2317
+ cond do
2318
+ a == nil and b == nil -> true
2319
+ is_boolean(a) or is_boolean(b) -> a == b
2320
+ is_number(a) and is_number(b) -> a == b
2321
+ is_binary(a) and is_binary(b) -> a == b
2322
+ islist(a) and islist(b) -> ia = list_items(a); ib = list_items(b); length(ia) == length(ib) and Enum.all?(Enum.zip(ia, ib), fn {x, y} -> veq(x, y) end)
2323
+ ismap(a) and ismap(b) -> veq_map(a, b)
2324
+ true -> a == b
2325
+ end
2326
+ end
2327
+
2328
+ defp veq_map(a, b) do
2329
+ pa = map_pairs(a)
2330
+ pb = map_pairs(b)
2331
+ length(pa) == length(pb) and Enum.all?(pa, fn {k, v} -> case omap_get(pb, k) do; {:ok, w} -> veq(v, w); :error -> false end end)
2332
+ end
2333
+
2334
+ defp validation(pval, key, parent, inj) do
2335
+ if is_skip(pval) do
2336
+ :ok
2337
+ else
2338
+ exact = getprop(ig(inj, :meta), @s_bexact, false)
2339
+ cval = getprop(ig(inj, :dparent), key)
2340
+ exact_b = exact == true
2341
+
2342
+ if not exact_b and cval == nil do
2343
+ :ok
2344
+ else
2345
+ ptype = typify(pval)
2346
+
2347
+ if Bitwise.band(@t_string, ptype) > 0 and String.contains?(js_string(pval), @s_ds) do
2348
+ :ok
2349
+ else
2350
+ ctype = typify(cval)
2351
+
2352
+ cond do
2353
+ ptype != ctype and pval != nil ->
2354
+ push_err(inj, invalid_type_msg(ig(inj, :path), typename(ptype), ctype, cval, "V0010"))
2355
+
2356
+ ismap(cval) ->
2357
+ if not ismap(pval) do
2358
+ push_err(inj, invalid_type_msg(ig(inj, :path), typename(ptype), ctype, cval, "V0020"))
2359
+ else
2360
+ ckeys = keysof(cval)
2361
+ pkeys = keysof(pval)
2362
+
2363
+ if pkeys != [] and getprop(pval, @s_bopen) != true do
2364
+ badkeys = Enum.filter(ckeys, fn ck -> lookup_(pval, ck) == nil end)
2365
+ if badkeys != [], do: push_err(inj, "Unexpected keys at field " <> pathify(ig(inj, :path), 1) <> @s_viz <> Enum.join(badkeys, ", "))
2366
+ else
2367
+ merge(vlist_new([pval, cval]))
2368
+ if isnode(pval), do: delprop(pval, @s_bopen)
2369
+ end
2370
+ end
2371
+
2372
+ islist(cval) ->
2373
+ if not islist(pval), do: push_err(inj, invalid_type_msg(ig(inj, :path), typename(ptype), ctype, cval, "V0030"))
2374
+
2375
+ exact_b ->
2376
+ if not veq(cval, pval) do
2377
+ pathmsg = if size(ig(inj, :path)) > 1, do: "at field " <> pathify(ig(inj, :path), 1) <> ": ", else: ""
2378
+ push_err(inj, "Value " <> pathmsg <> js_string(cval) <> " should equal " <> js_string(pval) <> ".")
2379
+ end
2380
+
2381
+ true ->
2382
+ setprop(parent, key, cval)
2383
+ end
2384
+
2385
+ :ok
2386
+ end
2387
+ end
2388
+ end
2389
+ end
2390
+
2391
+ defp validate_handler(inj, val, ref, store) do
2392
+ m = if is_binary(ref), do: Regex.run(@r_meta_path, ref), else: nil
2393
+
2394
+ case m do
2395
+ [_, _, g2, _] ->
2396
+ if g2 == "=", do: inj_setval(inj, vlist_new([@s_bexact, val])), else: inj_setval(inj, val)
2397
+ is_(inj, :keyi, -1)
2398
+ @skip
2399
+
2400
+ _ ->
2401
+ inject_handler(inj, val, ref, store)
2402
+ end
2403
+ end
2404
+
2405
+ def validate(data, spec, injdef \\ nil) do
2406
+ extra = getprop(injdef, "extra")
2407
+ collect = injdef != nil and getprop(injdef, "errs") != nil
2408
+ errs = if collect, do: getprop(injdef, "errs"), else: empty_list()
2409
+ base = empty_map()
2410
+ Enum.each(["$DELETE", "$COPY", "$KEY", "$META", "$MERGE", "$EACH", "$PACK"], fn k -> setprop(base, k, nil) end)
2411
+ setprop(base, "$STRING", &validate_string/4)
2412
+ Enum.each(["$NUMBER", "$INTEGER", "$DECIMAL", "$BOOLEAN", "$NULL", "$NIL", "$MAP", "$LIST", "$FUNCTION", "$INSTANCE"], fn k -> setprop(base, k, &validate_type/4) end)
2413
+ setprop(base, "$ANY", &validate_any/4)
2414
+ setprop(base, "$CHILD", &validate_child/4)
2415
+ setprop(base, "$ONE", &validate_one/4)
2416
+ setprop(base, "$EXACT", &validate_exact/4)
2417
+ store = merge(vlist_new([base, if(extra == nil, do: empty_map(), else: extra), vmap_new([{@s_derrs, errs}])]), 1)
2418
+ meta = getprop(injdef, "meta", empty_map())
2419
+ setprop(meta, @s_bexact, getprop(meta, @s_bexact, false))
2420
+ idef = vmap_new([{"meta", meta}, {"extra", store}, {"modify", &validation/4}, {"handler", &validate_handler/4}, {"errs", errs}])
2421
+ out = transform(data, spec, idef)
2422
+ if size(errs) > 0 and not collect, do: raise(Voxgig.Struct.Error, message: join(errs, " | "))
2423
+ out
2424
+ end
2425
+
2426
+ # ---------------------------------------------------------------------------
2427
+ # select
2428
+ # ---------------------------------------------------------------------------
2429
+
2430
+ defp select_and(inj, _v, _r, store) do
2431
+ if ig(inj, :mode) == @m_keypre do
2432
+ terms = getprop(ig(inj, :parent), ig(inj, :key))
2433
+ ppath = slice(ig(inj, :path), -1)
2434
+ point = getpath(store, ppath)
2435
+ vstore = merge(vlist_new([empty_map(), store]), 1)
2436
+ setprop(vstore, @s_dtop, point)
2437
+
2438
+ Enum.each(items_pairs(terms), fn {_, term} ->
2439
+ terrs = empty_list()
2440
+ validate(point, term, vmap_new([{"extra", vstore}, {"errs", terrs}, {"meta", ig(inj, :meta)}]))
2441
+ if size(terrs) != 0, do: push_err(inj, "AND:" <> pathify(ppath) <> "⨯" <> stringify(point) <> " fail:" <> stringify(terms))
2442
+ end)
2443
+
2444
+ gkey = getelem(ig(inj, :path), -2)
2445
+ gp = getelem(ig(inj, :nodes), -2)
2446
+ setprop(gp, gkey, point)
2447
+ end
2448
+
2449
+ nil
2450
+ end
2451
+
2452
+ defp select_or(inj, _v, _r, store) do
2453
+ if ig(inj, :mode) == @m_keypre do
2454
+ terms = getprop(ig(inj, :parent), ig(inj, :key))
2455
+ ppath = slice(ig(inj, :path), -1)
2456
+ point = getpath(store, ppath)
2457
+ vstore = merge(vlist_new([empty_map(), store]), 1)
2458
+ setprop(vstore, @s_dtop, point)
2459
+ done = select_or_loop(inj, store, vstore, ppath, point, items_pairs(terms))
2460
+ if not done, do: push_err(inj, "OR:" <> pathify(ppath) <> "⨯" <> stringify(point) <> " fail:" <> stringify(terms))
2461
+ end
2462
+
2463
+ nil
2464
+ end
2465
+
2466
+ defp select_or_loop(_inj, _store, _vstore, _ppath, _point, []), do: false
2467
+
2468
+ defp select_or_loop(inj, store, vstore, ppath, point, [{_, term} | rest]) do
2469
+ terrs = empty_list()
2470
+ validate(point, term, vmap_new([{"extra", vstore}, {"errs", terrs}, {"meta", ig(inj, :meta)}]))
2471
+
2472
+ if size(terrs) == 0 do
2473
+ gkey = getelem(ig(inj, :path), -2)
2474
+ gp = getelem(ig(inj, :nodes), -2)
2475
+ setprop(gp, gkey, point)
2476
+ true
2477
+ else
2478
+ select_or_loop(inj, store, vstore, ppath, point, rest)
2479
+ end
2480
+ end
2481
+
2482
+ defp select_not(inj, _v, _r, store) do
2483
+ if ig(inj, :mode) == @m_keypre do
2484
+ term = getprop(ig(inj, :parent), ig(inj, :key))
2485
+ ppath = slice(ig(inj, :path), -1)
2486
+ point = getpath(store, ppath)
2487
+ vstore = merge(vlist_new([empty_map(), store]), 1)
2488
+ setprop(vstore, @s_dtop, point)
2489
+ terrs = empty_list()
2490
+ validate(point, term, vmap_new([{"extra", vstore}, {"errs", terrs}, {"meta", ig(inj, :meta)}]))
2491
+ if size(terrs) == 0, do: push_err(inj, "NOT:" <> pathify(ppath) <> "⨯" <> stringify(point) <> " fail:" <> stringify(term))
2492
+ gkey = getelem(ig(inj, :path), -2)
2493
+ gp = getelem(ig(inj, :nodes), -2)
2494
+ setprop(gp, gkey, point)
2495
+ end
2496
+
2497
+ nil
2498
+ end
2499
+
2500
+ defp num_cmp(a, b, op) do
2501
+ if is_number(a) and is_number(b) do
2502
+ case op do
2503
+ :gt -> a > b
2504
+ :lt -> a < b
2505
+ :gte -> a >= b
2506
+ :lte -> a <= b
2507
+ end
2508
+ else
2509
+ false
2510
+ end
2511
+ end
2512
+
2513
+ defp select_cmp(inj, _v, ref, store) do
2514
+ if ig(inj, :mode) == @m_keypre do
2515
+ term = getprop(ig(inj, :parent), ig(inj, :key))
2516
+ gkey = getelem(ig(inj, :path), -2)
2517
+ ppath = slice(ig(inj, :path), -1)
2518
+ point = getpath(store, ppath)
2519
+
2520
+ pass =
2521
+ cond do
2522
+ ref == "$GT" -> num_cmp(point, term, :gt)
2523
+ ref == "$LT" -> num_cmp(point, term, :lt)
2524
+ ref == "$GTE" -> num_cmp(point, term, :gte)
2525
+ ref == "$LTE" -> num_cmp(point, term, :lte)
2526
+ ref == "$LIKE" -> is_binary(term) and Regex.match?(Regex.compile!(term), stringify(point))
2527
+ true -> false
2528
+ end
2529
+
2530
+ if pass do
2531
+ gp = getelem(ig(inj, :nodes), -2)
2532
+ setprop(gp, gkey, point)
2533
+ else
2534
+ push_err(inj, "CMP: " <> pathify(ppath) <> "⨯" <> stringify(point) <> " fail:" <> js_string(ref) <> " " <> stringify(term))
2535
+ end
2536
+ end
2537
+
2538
+ nil
2539
+ end
2540
+
2541
+ def select(children0, query) do
2542
+ if not isnode(children0) do
2543
+ empty_list()
2544
+ else
2545
+ children =
2546
+ if ismap(children0) do
2547
+ vlist_new(Enum.map(items_pairs(children0), fn {k, n} -> setprop(n, @s_dkey, k); n end))
2548
+ else
2549
+ vlist_new(
2550
+ list_items(children0)
2551
+ |> Enum.with_index()
2552
+ |> Enum.map(fn {n, i} -> if ismap(n), do: (setprop(n, @s_dkey, i); n), else: n end)
2553
+ )
2554
+ end
2555
+
2556
+ results = empty_list()
2557
+ extra = empty_map()
2558
+ setprop(extra, "$AND", &select_and/4)
2559
+ setprop(extra, "$OR", &select_or/4)
2560
+ setprop(extra, "$NOT", &select_not/4)
2561
+ setprop(extra, "$GT", &select_cmp/4)
2562
+ setprop(extra, "$LT", &select_cmp/4)
2563
+ setprop(extra, "$GTE", &select_cmp/4)
2564
+ setprop(extra, "$LTE", &select_cmp/4)
2565
+ setprop(extra, "$LIKE", &select_cmp/4)
2566
+ q = clone(query)
2567
+
2568
+ walk(q, after: fn _k, v, _p, _path ->
2569
+ if ismap(v), do: setprop(v, @s_bopen, getprop(v, @s_bopen, true))
2570
+ v
2571
+ end)
2572
+
2573
+ Enum.each(list_items(children), fn child ->
2574
+ errs = empty_list()
2575
+ meta = empty_map()
2576
+ setprop(meta, @s_bexact, true)
2577
+ idef = vmap_new([{"errs", errs}, {"meta", meta}, {"extra", extra}])
2578
+ validate(child, clone(q), idef)
2579
+ if size(errs) == 0, do: setprop(results, size(results), child)
2580
+ end)
2581
+
2582
+ results
2583
+ end
2584
+ end
2585
+
2586
+ # ---------------------------------------------------------------------------
2587
+ # builders
2588
+ # ---------------------------------------------------------------------------
2589
+
2590
+ def jm(kv) do
2591
+ m = empty_map()
2592
+ n = length(kv)
2593
+ jm_loop(m, kv, n, 0)
2594
+ m
2595
+ end
2596
+
2597
+ defp jm_loop(m, kv, n, i) do
2598
+ if i >= n do
2599
+ m
2600
+ else
2601
+ k0 = Enum.at(kv, i)
2602
+ k = cond do; k0 == nil -> "null"; is_binary(k0) -> k0; true -> stringify(k0) end
2603
+ setprop(m, k, if(i + 1 < n, do: Enum.at(kv, i + 1), else: nil))
2604
+ jm_loop(m, kv, n, i + 2)
2605
+ end
2606
+ end
2607
+
2608
+ def jt(v), do: vlist_new(v)
2609
+
2610
+ def tn(t), do: typename(t)
2611
+ end
2612
+
2613
+ defmodule Voxgig.Struct.Error do
2614
+ defexception message: "struct error"
2615
+ end