@voxgig/sdkgen 0.35.2 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/cmp/Readme.js +5 -5
  3. package/dist/cmp/Readme.js.map +1 -1
  4. package/dist/cmp/ReadmeEntity.js +74 -24
  5. package/dist/cmp/ReadmeEntity.js.map +1 -1
  6. package/dist/cmp/ReadmeExplanation.d.ts +2 -0
  7. package/dist/cmp/ReadmeExplanation.js +308 -0
  8. package/dist/cmp/ReadmeExplanation.js.map +1 -0
  9. package/dist/cmp/ReadmeHowto.d.ts +2 -0
  10. package/dist/cmp/ReadmeHowto.js +18 -0
  11. package/dist/cmp/ReadmeHowto.js.map +1 -0
  12. package/dist/cmp/ReadmeIntro.js +8 -23
  13. package/dist/cmp/ReadmeIntro.js.map +1 -1
  14. package/dist/cmp/ReadmeModel.js +55 -91
  15. package/dist/cmp/ReadmeModel.js.map +1 -1
  16. package/dist/cmp/ReadmeOptions.js +35 -11
  17. package/dist/cmp/ReadmeOptions.js.map +1 -1
  18. package/dist/cmp/ReadmeQuick.js +4 -1
  19. package/dist/cmp/ReadmeQuick.js.map +1 -1
  20. package/dist/cmp/ReadmeRef.js +1042 -40
  21. package/dist/cmp/ReadmeRef.js.map +1 -1
  22. package/dist/cmp/ReadmeTop.d.ts +2 -0
  23. package/dist/cmp/ReadmeTop.js +171 -0
  24. package/dist/cmp/ReadmeTop.js.map +1 -0
  25. package/dist/sdkgen.d.ts +7 -1
  26. package/dist/sdkgen.js +13 -1
  27. package/dist/sdkgen.js.map +1 -1
  28. package/dist/tsconfig.tsbuildinfo +1 -1
  29. package/package.json +2 -2
  30. package/project/.sdk/model/feature/feature-index.jsonic +5 -0
  31. package/project/.sdk/model/feature/log.jsonic +5 -1
  32. package/project/.sdk/model/feature/test.jsonic +1 -1
  33. package/project/.sdk/model/target/lua.jsonic +23 -0
  34. package/project/.sdk/model/target/php.jsonic +22 -0
  35. package/project/.sdk/model/target/py.jsonic +23 -0
  36. package/project/.sdk/model/target/rb.jsonic +23 -0
  37. package/project/.sdk/src/cmp/go/Main_go.ts +2 -6
  38. package/project/.sdk/src/cmp/go/ReadmeExplanation_go.ts +42 -0
  39. package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +112 -0
  40. package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +29 -0
  41. package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +129 -0
  42. package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +163 -0
  43. package/project/.sdk/src/cmp/go/ReadmeTopHowto_go.ts +24 -0
  44. package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +67 -0
  45. package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +40 -0
  46. package/project/.sdk/src/cmp/go/TestDirect_go.ts +46 -2
  47. package/project/.sdk/src/cmp/go/TestEntity_go.ts +360 -160
  48. package/project/.sdk/src/cmp/go/Test_go.ts +24 -1
  49. package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +1 -1
  50. package/project/.sdk/src/cmp/lua/Config_lua.ts +112 -0
  51. package/project/.sdk/src/cmp/lua/EntityOperation_lua.ts +44 -0
  52. package/project/.sdk/src/cmp/lua/Entity_lua.ts +62 -0
  53. package/project/.sdk/src/cmp/lua/MainEntity_lua.ts +23 -0
  54. package/project/.sdk/src/cmp/lua/Main_lua.ts +133 -0
  55. package/project/.sdk/src/cmp/lua/Package_lua.ts +80 -0
  56. package/project/.sdk/src/cmp/lua/ReadmeExplanation_lua.ts +42 -0
  57. package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +100 -0
  58. package/project/.sdk/src/cmp/lua/ReadmeInstall_lua.ts +26 -0
  59. package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +129 -0
  60. package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +99 -0
  61. package/project/.sdk/src/cmp/lua/ReadmeTopHowto_lua.ts +24 -0
  62. package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +55 -0
  63. package/project/.sdk/src/cmp/lua/ReadmeTopTest_lua.ts +38 -0
  64. package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +261 -0
  65. package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +483 -0
  66. package/project/.sdk/src/cmp/lua/Test_lua.ts +49 -0
  67. package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +147 -0
  68. package/project/.sdk/src/cmp/lua/fragment/EntityCreateOp.fragment.lua +27 -0
  69. package/project/.sdk/src/cmp/lua/fragment/EntityListOp.fragment.lua +24 -0
  70. package/project/.sdk/src/cmp/lua/fragment/EntityLoadOp.fragment.lua +30 -0
  71. package/project/.sdk/src/cmp/lua/fragment/EntityRemoveOp.fragment.lua +30 -0
  72. package/project/.sdk/src/cmp/lua/fragment/EntityUpdateOp.fragment.lua +30 -0
  73. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +256 -0
  74. package/project/.sdk/src/cmp/lua/fragment/SdkError.fragment.lua +26 -0
  75. package/project/.sdk/src/cmp/lua/tsconfig.json +15 -0
  76. package/project/.sdk/src/cmp/lua/utility_lua.ts +84 -0
  77. package/project/.sdk/src/cmp/php/Config_php.ts +107 -0
  78. package/project/.sdk/src/cmp/php/EntityOperation_php.ts +44 -0
  79. package/project/.sdk/src/cmp/php/Entity_php.ts +62 -0
  80. package/project/.sdk/src/cmp/php/MainEntity_php.ts +24 -0
  81. package/project/.sdk/src/cmp/php/Main_php.ts +135 -0
  82. package/project/.sdk/src/cmp/php/Package_php.ts +87 -0
  83. package/project/.sdk/src/cmp/php/ReadmeExplanation_php.ts +42 -0
  84. package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +101 -0
  85. package/project/.sdk/src/cmp/php/ReadmeInstall_php.ts +19 -0
  86. package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +129 -0
  87. package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +100 -0
  88. package/project/.sdk/src/cmp/php/ReadmeTopHowto_php.ts +24 -0
  89. package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +56 -0
  90. package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +38 -0
  91. package/project/.sdk/src/cmp/php/TestDirect_php.ts +270 -0
  92. package/project/.sdk/src/cmp/php/TestEntity_php.ts +484 -0
  93. package/project/.sdk/src/cmp/php/Test_php.ts +56 -0
  94. package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +146 -0
  95. package/project/.sdk/src/cmp/php/fragment/EntityCreateOp.fragment.php +26 -0
  96. package/project/.sdk/src/cmp/php/fragment/EntityListOp.fragment.php +23 -0
  97. package/project/.sdk/src/cmp/php/fragment/EntityLoadOp.fragment.php +29 -0
  98. package/project/.sdk/src/cmp/php/fragment/EntityRemoveOp.fragment.php +29 -0
  99. package/project/.sdk/src/cmp/php/fragment/EntityUpdateOp.fragment.php +29 -0
  100. package/project/.sdk/src/cmp/php/fragment/Main.fragment.php +233 -0
  101. package/project/.sdk/src/cmp/php/fragment/SdkError.fragment.php +24 -0
  102. package/project/.sdk/src/cmp/php/tsconfig.json +15 -0
  103. package/project/.sdk/src/cmp/php/utility_php.ts +85 -0
  104. package/project/.sdk/src/cmp/py/Config_py.ts +93 -0
  105. package/project/.sdk/src/cmp/py/EntityOperation_py.ts +44 -0
  106. package/project/.sdk/src/cmp/py/Entity_py.ts +62 -0
  107. package/project/.sdk/src/cmp/py/MainEntity_py.ts +22 -0
  108. package/project/.sdk/src/cmp/py/Main_py.ts +156 -0
  109. package/project/.sdk/src/cmp/py/Package_py.ts +75 -0
  110. package/project/.sdk/src/cmp/py/ReadmeExplanation_py.ts +41 -0
  111. package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +98 -0
  112. package/project/.sdk/src/cmp/py/ReadmeInstall_py.ts +25 -0
  113. package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +130 -0
  114. package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +100 -0
  115. package/project/.sdk/src/cmp/py/ReadmeTopHowto_py.ts +24 -0
  116. package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +56 -0
  117. package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +38 -0
  118. package/project/.sdk/src/cmp/py/TestDirect_py.ts +248 -0
  119. package/project/.sdk/src/cmp/py/TestEntity_py.ts +475 -0
  120. package/project/.sdk/src/cmp/py/Test_py.ts +55 -0
  121. package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +112 -0
  122. package/project/.sdk/src/cmp/py/fragment/EntityCreateOp.fragment.py +25 -0
  123. package/project/.sdk/src/cmp/py/fragment/EntityListOp.fragment.py +22 -0
  124. package/project/.sdk/src/cmp/py/fragment/EntityLoadOp.fragment.py +27 -0
  125. package/project/.sdk/src/cmp/py/fragment/EntityRemoveOp.fragment.py +27 -0
  126. package/project/.sdk/src/cmp/py/fragment/EntityUpdateOp.fragment.py +27 -0
  127. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +222 -0
  128. package/project/.sdk/src/cmp/py/fragment/SdkError.fragment.py +16 -0
  129. package/project/.sdk/src/cmp/py/tsconfig.json +15 -0
  130. package/project/.sdk/src/cmp/py/utility_py.ts +84 -0
  131. package/project/.sdk/src/cmp/rb/Config_rb.ts +101 -0
  132. package/project/.sdk/src/cmp/rb/EntityOperation_rb.ts +44 -0
  133. package/project/.sdk/src/cmp/rb/Entity_rb.ts +62 -0
  134. package/project/.sdk/src/cmp/rb/MainEntity_rb.ts +23 -0
  135. package/project/.sdk/src/cmp/rb/Main_rb.ts +130 -0
  136. package/project/.sdk/src/cmp/rb/Package_rb.ts +111 -0
  137. package/project/.sdk/src/cmp/rb/ReadmeExplanation_rb.ts +42 -0
  138. package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +98 -0
  139. package/project/.sdk/src/cmp/rb/ReadmeInstall_rb.ts +31 -0
  140. package/project/.sdk/src/cmp/rb/ReadmeModel_rb.ts +129 -0
  141. package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +99 -0
  142. package/project/.sdk/src/cmp/rb/ReadmeTopHowto_rb.ts +24 -0
  143. package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +55 -0
  144. package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +38 -0
  145. package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +260 -0
  146. package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +476 -0
  147. package/project/.sdk/src/cmp/rb/Test_rb.ts +50 -0
  148. package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +116 -0
  149. package/project/.sdk/src/cmp/rb/fragment/EntityCreateOp.fragment.rb +25 -0
  150. package/project/.sdk/src/cmp/rb/fragment/EntityListOp.fragment.rb +20 -0
  151. package/project/.sdk/src/cmp/rb/fragment/EntityLoadOp.fragment.rb +26 -0
  152. package/project/.sdk/src/cmp/rb/fragment/EntityRemoveOp.fragment.rb +26 -0
  153. package/project/.sdk/src/cmp/rb/fragment/EntityUpdateOp.fragment.rb +26 -0
  154. package/project/.sdk/src/cmp/rb/fragment/Main.fragment.rb +203 -0
  155. package/project/.sdk/src/cmp/rb/fragment/SdkError.fragment.rb +16 -0
  156. package/project/.sdk/src/cmp/rb/tsconfig.json +15 -0
  157. package/project/.sdk/src/cmp/rb/utility_rb.ts +84 -0
  158. package/project/.sdk/src/cmp/ts/ReadmeExplanation_ts.ts +34 -0
  159. package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +123 -0
  160. package/project/.sdk/src/cmp/ts/ReadmeInstall_ts.ts +1 -1
  161. package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +159 -0
  162. package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +69 -54
  163. package/project/.sdk/src/cmp/ts/ReadmeTopHowto_ts.ts +25 -0
  164. package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +65 -0
  165. package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +36 -0
  166. package/project/.sdk/tm/go/feature/log_feature.go +133 -0
  167. package/project/.sdk/tm/go/src/feature/log/.gitkeep +0 -0
  168. package/project/.sdk/tm/lua/LICENSE +22 -0
  169. package/project/.sdk/tm/lua/Makefile +10 -0
  170. package/project/.sdk/tm/lua/core/context.lua +208 -0
  171. package/project/.sdk/tm/lua/core/control.lua +17 -0
  172. package/project/.sdk/tm/lua/core/error.lua +30 -0
  173. package/project/.sdk/tm/lua/core/helpers.lua +30 -0
  174. package/project/.sdk/tm/lua/core/operation.lua +51 -0
  175. package/project/.sdk/tm/lua/core/response.lua +45 -0
  176. package/project/.sdk/tm/lua/core/result.lua +58 -0
  177. package/project/.sdk/tm/lua/core/spec.lua +29 -0
  178. package/project/.sdk/tm/lua/core/utility_type.lua +90 -0
  179. package/project/.sdk/tm/lua/feature/base_feature.lua +35 -0
  180. package/project/.sdk/tm/lua/feature/log_feature.lua +80 -0
  181. package/project/.sdk/tm/lua/feature/test_feature.lua +202 -0
  182. package/project/.sdk/tm/lua/src/feature/README.md +3 -0
  183. package/project/.sdk/tm/lua/src/feature/base/.gitkeep +0 -0
  184. package/project/.sdk/tm/lua/src/feature/log/.gitkeep +0 -0
  185. package/project/.sdk/tm/lua/src/feature/test/.gitkeep +0 -0
  186. package/project/.sdk/tm/lua/test/runner.lua +86 -0
  187. package/project/.sdk/tm/lua/utility/clean.lua +7 -0
  188. package/project/.sdk/tm/lua/utility/done.lua +19 -0
  189. package/project/.sdk/tm/lua/utility/feature_add.lua +8 -0
  190. package/project/.sdk/tm/lua/utility/feature_hook.lua +21 -0
  191. package/project/.sdk/tm/lua/utility/feature_init.lua +24 -0
  192. package/project/.sdk/tm/lua/utility/fetcher.lua +96 -0
  193. package/project/.sdk/tm/lua/utility/make_context.lua +9 -0
  194. package/project/.sdk/tm/lua/utility/make_error.lua +73 -0
  195. package/project/.sdk/tm/lua/utility/make_fetch_def.lua +43 -0
  196. package/project/.sdk/tm/lua/utility/make_options.lua +116 -0
  197. package/project/.sdk/tm/lua/utility/make_point.lua +92 -0
  198. package/project/.sdk/tm/lua/utility/make_request.lua +58 -0
  199. package/project/.sdk/tm/lua/utility/make_response.lua +44 -0
  200. package/project/.sdk/tm/lua/utility/make_result.lua +51 -0
  201. package/project/.sdk/tm/lua/utility/make_spec.lua +72 -0
  202. package/project/.sdk/tm/lua/utility/make_url.lua +46 -0
  203. package/project/.sdk/tm/lua/utility/param.lua +68 -0
  204. package/project/.sdk/tm/lua/utility/prepare_auth.lua +39 -0
  205. package/project/.sdk/tm/lua/utility/prepare_body.lua +14 -0
  206. package/project/.sdk/tm/lua/utility/prepare_headers.lua +20 -0
  207. package/project/.sdk/tm/lua/utility/prepare_method.lua +17 -0
  208. package/project/.sdk/tm/lua/utility/prepare_params.lua +36 -0
  209. package/project/.sdk/tm/lua/utility/prepare_path.lua +19 -0
  210. package/project/.sdk/tm/lua/utility/prepare_query.lua +41 -0
  211. package/project/.sdk/tm/lua/utility/register.lua +71 -0
  212. package/project/.sdk/tm/lua/utility/result_basic.lua +32 -0
  213. package/project/.sdk/tm/lua/utility/result_body.lua +17 -0
  214. package/project/.sdk/tm/lua/utility/result_headers.lua +22 -0
  215. package/project/.sdk/tm/lua/utility/struct/struct.lua +3417 -0
  216. package/project/.sdk/tm/lua/utility/transform_request.lua +31 -0
  217. package/project/.sdk/tm/lua/utility/transform_response.lua +44 -0
  218. package/project/.sdk/tm/php/LICENSE +22 -0
  219. package/project/.sdk/tm/php/Makefile +10 -0
  220. package/project/.sdk/tm/php/core/Context.php +139 -0
  221. package/project/.sdk/tm/php/core/Control.php +18 -0
  222. package/project/.sdk/tm/php/core/Error.php +37 -0
  223. package/project/.sdk/tm/php/core/Helpers.php +25 -0
  224. package/project/.sdk/tm/php/core/Operation.php +36 -0
  225. package/project/.sdk/tm/php/core/Response.php +30 -0
  226. package/project/.sdk/tm/php/core/Result.php +35 -0
  227. package/project/.sdk/tm/php/core/Spec.php +38 -0
  228. package/project/.sdk/tm/php/core/UtilityType.php +89 -0
  229. package/project/.sdk/tm/php/feature/BaseFeature.php +37 -0
  230. package/project/.sdk/tm/php/feature/LogFeature.php +65 -0
  231. package/project/.sdk/tm/php/feature/TestFeature.php +193 -0
  232. package/project/.sdk/tm/php/src/feature/README.md +3 -0
  233. package/project/.sdk/tm/php/src/feature/base/.gitkeep +0 -0
  234. package/project/.sdk/tm/php/src/feature/log/.gitkeep +0 -0
  235. package/project/.sdk/tm/php/src/feature/test/.gitkeep +0 -0
  236. package/project/.sdk/tm/php/test/Runner.php +89 -0
  237. package/project/.sdk/tm/php/utility/Clean.php +12 -0
  238. package/project/.sdk/tm/php/utility/Done.php +26 -0
  239. package/project/.sdk/tm/php/utility/FeatureAdd.php +12 -0
  240. package/project/.sdk/tm/php/utility/FeatureHook.php +23 -0
  241. package/project/.sdk/tm/php/utility/FeatureInit.php +25 -0
  242. package/project/.sdk/tm/php/utility/Fetcher.php +101 -0
  243. package/project/.sdk/tm/php/utility/MakeContext.php +14 -0
  244. package/project/.sdk/tm/php/utility/MakeError.php +59 -0
  245. package/project/.sdk/tm/php/utility/MakeFetchDef.php +36 -0
  246. package/project/.sdk/tm/php/utility/MakeOptions.php +98 -0
  247. package/project/.sdk/tm/php/utility/MakePoint.php +87 -0
  248. package/project/.sdk/tm/php/utility/MakeRequest.php +57 -0
  249. package/project/.sdk/tm/php/utility/MakeResponse.php +43 -0
  250. package/project/.sdk/tm/php/utility/MakeResult.php +50 -0
  251. package/project/.sdk/tm/php/utility/MakeSpec.php +64 -0
  252. package/project/.sdk/tm/php/utility/MakeUrl.php +41 -0
  253. package/project/.sdk/tm/php/utility/Param.php +66 -0
  254. package/project/.sdk/tm/php/utility/PrepareAuth.php +33 -0
  255. package/project/.sdk/tm/php/utility/PrepareBody.php +15 -0
  256. package/project/.sdk/tm/php/utility/PrepareHeaders.php +18 -0
  257. package/project/.sdk/tm/php/utility/PrepareMethod.php +21 -0
  258. package/project/.sdk/tm/php/utility/PrepareParams.php +34 -0
  259. package/project/.sdk/tm/php/utility/PreparePath.php +20 -0
  260. package/project/.sdk/tm/php/utility/PrepareQuery.php +32 -0
  261. package/project/.sdk/tm/php/utility/Register.php +67 -0
  262. package/project/.sdk/tm/php/utility/ResultBasic.php +29 -0
  263. package/project/.sdk/tm/php/utility/ResultBody.php +17 -0
  264. package/project/.sdk/tm/php/utility/ResultHeaders.php +21 -0
  265. package/project/.sdk/tm/php/utility/TransformRequest.php +27 -0
  266. package/project/.sdk/tm/php/utility/TransformResponse.php +42 -0
  267. package/project/.sdk/tm/php/utility/struct/Struct.php +3431 -0
  268. package/project/.sdk/tm/py/Makefile +10 -0
  269. package/project/.sdk/tm/py/core/__init__.py +0 -0
  270. package/project/.sdk/tm/py/core/context.py +199 -0
  271. package/project/.sdk/tm/py/core/control.py +12 -0
  272. package/project/.sdk/tm/py/core/error.py +18 -0
  273. package/project/.sdk/tm/py/core/helpers.py +15 -0
  274. package/project/.sdk/tm/py/core/operation.py +37 -0
  275. package/project/.sdk/tm/py/core/response.py +34 -0
  276. package/project/.sdk/tm/py/core/result.py +44 -0
  277. package/project/.sdk/tm/py/core/spec.py +23 -0
  278. package/project/.sdk/tm/py/core/utility_type.py +82 -0
  279. package/project/.sdk/tm/py/entity/__init__.py +0 -0
  280. package/project/.sdk/tm/py/feature/__init__.py +0 -0
  281. package/project/.sdk/tm/py/feature/base_feature.py +61 -0
  282. package/project/.sdk/tm/py/feature/log_feature.py +84 -0
  283. package/project/.sdk/tm/py/feature/test_feature.py +164 -0
  284. package/project/.sdk/tm/py/src/feature/README.md +3 -0
  285. package/project/.sdk/tm/py/src/feature/base/.gitkeep +0 -0
  286. package/project/.sdk/tm/py/src/feature/log/.gitkeep +0 -0
  287. package/project/.sdk/tm/py/src/feature/test/.gitkeep +0 -0
  288. package/project/.sdk/tm/py/test/__init__.py +0 -0
  289. package/project/.sdk/tm/py/test/runner.py +77 -0
  290. package/project/.sdk/tm/py/utility/__init__.py +0 -0
  291. package/project/.sdk/tm/py/utility/clean.py +5 -0
  292. package/project/.sdk/tm/py/utility/done.py +14 -0
  293. package/project/.sdk/tm/py/utility/feature_add.py +6 -0
  294. package/project/.sdk/tm/py/utility/feature_hook.py +15 -0
  295. package/project/.sdk/tm/py/utility/feature_init.py +18 -0
  296. package/project/.sdk/tm/py/utility/fetcher.py +95 -0
  297. package/project/.sdk/tm/py/utility/make_context.py +7 -0
  298. package/project/.sdk/tm/py/utility/make_error.py +64 -0
  299. package/project/.sdk/tm/py/utility/make_fetch_def.py +37 -0
  300. package/project/.sdk/tm/py/utility/make_options.py +103 -0
  301. package/project/.sdk/tm/py/utility/make_point.py +74 -0
  302. package/project/.sdk/tm/py/utility/make_request.py +52 -0
  303. package/project/.sdk/tm/py/utility/make_response.py +36 -0
  304. package/project/.sdk/tm/py/utility/make_result.py +41 -0
  305. package/project/.sdk/tm/py/utility/make_spec.py +68 -0
  306. package/project/.sdk/tm/py/utility/make_url.py +34 -0
  307. package/project/.sdk/tm/py/utility/param.py +55 -0
  308. package/project/.sdk/tm/py/utility/prepare_auth.py +34 -0
  309. package/project/.sdk/tm/py/utility/prepare_body.py +11 -0
  310. package/project/.sdk/tm/py/utility/prepare_headers.py +17 -0
  311. package/project/.sdk/tm/py/utility/prepare_method.py +15 -0
  312. package/project/.sdk/tm/py/utility/prepare_params.py +28 -0
  313. package/project/.sdk/tm/py/utility/prepare_path.py +16 -0
  314. package/project/.sdk/tm/py/utility/prepare_query.py +33 -0
  315. package/project/.sdk/tm/py/utility/register.py +68 -0
  316. package/project/.sdk/tm/py/utility/result_basic.py +26 -0
  317. package/project/.sdk/tm/py/utility/result_body.py +13 -0
  318. package/project/.sdk/tm/py/utility/result_headers.py +17 -0
  319. package/project/.sdk/tm/py/utility/transform_request.py +27 -0
  320. package/project/.sdk/tm/py/utility/transform_response.py +39 -0
  321. package/project/.sdk/tm/py/utility/voxgig_struct/__init__.py +72 -0
  322. package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +2770 -0
  323. package/project/.sdk/tm/rb/Gemfile +4 -0
  324. package/project/.sdk/tm/rb/LICENSE +22 -0
  325. package/project/.sdk/tm/rb/Makefile +10 -0
  326. package/project/.sdk/tm/rb/core/context.rb +105 -0
  327. package/project/.sdk/tm/rb/core/control.rb +11 -0
  328. package/project/.sdk/tm/rb/core/error.rb +24 -0
  329. package/project/.sdk/tm/rb/core/helpers.rb +16 -0
  330. package/project/.sdk/tm/rb/core/operation.rb +26 -0
  331. package/project/.sdk/tm/rb/core/response.rb +20 -0
  332. package/project/.sdk/tm/rb/core/result.rb +23 -0
  333. package/project/.sdk/tm/rb/core/spec.rb +23 -0
  334. package/project/.sdk/tm/rb/core/utility_type.rb +32 -0
  335. package/project/.sdk/tm/rb/feature/base_feature.rb +30 -0
  336. package/project/.sdk/tm/rb/feature/log_feature.rb +50 -0
  337. package/project/.sdk/tm/rb/feature/test_feature.rb +154 -0
  338. package/project/.sdk/tm/rb/src/feature/README.md +3 -0
  339. package/project/.sdk/tm/rb/src/feature/base/.gitkeep +0 -0
  340. package/project/.sdk/tm/rb/src/feature/log/.gitkeep +0 -0
  341. package/project/.sdk/tm/rb/src/feature/test/.gitkeep +0 -0
  342. package/project/.sdk/tm/rb/test/runner.rb +65 -0
  343. package/project/.sdk/tm/rb/utility/clean.rb +4 -0
  344. package/project/.sdk/tm/rb/utility/done.rb +14 -0
  345. package/project/.sdk/tm/rb/utility/feature_add.rb +6 -0
  346. package/project/.sdk/tm/rb/utility/feature_hook.rb +11 -0
  347. package/project/.sdk/tm/rb/utility/feature_init.rb +16 -0
  348. package/project/.sdk/tm/rb/utility/fetcher.rb +67 -0
  349. package/project/.sdk/tm/rb/utility/make_context.rb +7 -0
  350. package/project/.sdk/tm/rb/utility/make_error.rb +44 -0
  351. package/project/.sdk/tm/rb/utility/make_fetch_def.rb +24 -0
  352. package/project/.sdk/tm/rb/utility/make_options.rb +57 -0
  353. package/project/.sdk/tm/rb/utility/make_point.rb +77 -0
  354. package/project/.sdk/tm/rb/utility/make_request.rb +44 -0
  355. package/project/.sdk/tm/rb/utility/make_response.rb +25 -0
  356. package/project/.sdk/tm/rb/utility/make_result.rb +33 -0
  357. package/project/.sdk/tm/rb/utility/make_spec.rb +50 -0
  358. package/project/.sdk/tm/rb/utility/make_url.rb +32 -0
  359. package/project/.sdk/tm/rb/utility/param.rb +48 -0
  360. package/project/.sdk/tm/rb/utility/prepare_auth.rb +26 -0
  361. package/project/.sdk/tm/rb/utility/prepare_body.rb +6 -0
  362. package/project/.sdk/tm/rb/utility/prepare_headers.rb +11 -0
  363. package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -0
  364. package/project/.sdk/tm/rb/utility/prepare_params.rb +25 -0
  365. package/project/.sdk/tm/rb/utility/prepare_path.rb +13 -0
  366. package/project/.sdk/tm/rb/utility/prepare_query.rb +22 -0
  367. package/project/.sdk/tm/rb/utility/register.rb +63 -0
  368. package/project/.sdk/tm/rb/utility/result_basic.rb +23 -0
  369. package/project/.sdk/tm/rb/utility/result_body.rb +11 -0
  370. package/project/.sdk/tm/rb/utility/result_headers.rb +15 -0
  371. package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +2256 -0
  372. package/project/.sdk/tm/rb/utility/transform_request.rb +15 -0
  373. package/project/.sdk/tm/rb/utility/transform_response.rb +23 -0
  374. package/src/cmp/Readme.ts +5 -5
  375. package/src/cmp/ReadmeEntity.ts +77 -25
  376. package/src/cmp/ReadmeExplanation.ts +333 -0
  377. package/src/cmp/ReadmeHowto.ts +28 -0
  378. package/src/cmp/ReadmeIntro.ts +10 -24
  379. package/src/cmp/ReadmeModel.ts +57 -88
  380. package/src/cmp/ReadmeOptions.ts +40 -11
  381. package/src/cmp/ReadmeQuick.ts +4 -1
  382. package/src/cmp/ReadmeRef.ts +1057 -40
  383. package/src/cmp/ReadmeTop.ts +213 -0
  384. package/src/sdkgen.ts +12 -0
  385. package/project/.sdk/tm/go/test/exists_test.go +0 -16
@@ -0,0 +1,164 @@
1
+ # ProjectName SDK test feature
2
+
3
+ from __future__ import annotations
4
+ import random
5
+
6
+ from utility.voxgig_struct import voxgig_struct as vs
7
+ from feature.base_feature import ProjectNameBaseFeature
8
+
9
+
10
+ class ProjectNameTestFeature(ProjectNameBaseFeature):
11
+ def __init__(self):
12
+ super().__init__()
13
+ self.version = "0.0.1"
14
+ self.name = "test"
15
+ self.active = True
16
+ self.client = None
17
+ self.options = None
18
+
19
+ def init(self, ctx, options):
20
+ self.client = ctx.client
21
+ self.options = options
22
+
23
+ entity = vs.getprop(options, "entity")
24
+ if not isinstance(entity, dict):
25
+ entity = {}
26
+
27
+ self.client.mode = "test"
28
+
29
+ # Ensure entity ids are correct.
30
+ vs.walk(entity, lambda key, val, parent, path: (
31
+ val.__setitem__("id", key) if len(path) == 2 and isinstance(val, dict) and key is not None else None,
32
+ val
33
+ )[-1])
34
+
35
+ test_self = self
36
+
37
+ def test_fetcher(fctx, _fullurl, _fetchdef):
38
+ def respond(status, data, extra=None):
39
+ out = {
40
+ "status": status,
41
+ "statusText": "OK",
42
+ "json": lambda: data,
43
+ "body": "not-used",
44
+ }
45
+ if isinstance(extra, dict):
46
+ for k, v in extra.items():
47
+ out[k] = v
48
+ return out, None
49
+
50
+ op = fctx.op
51
+ entmap = vs.getprop(entity, op.entity)
52
+ if not isinstance(entmap, dict):
53
+ entmap = {}
54
+
55
+ if op.name == "load":
56
+ args = test_self.build_args(fctx, op, fctx.reqmatch)
57
+ found = vs.select(entmap, args)
58
+ ent = vs.getelem(found, 0)
59
+ if ent is None:
60
+ return respond(404, None, {"statusText": "Not found"})
61
+ vs.delprop(ent, "$KEY")
62
+ out = vs.clone(ent)
63
+ return respond(200, out)
64
+
65
+ elif op.name == "list":
66
+ args = test_self.build_args(fctx, op, fctx.reqmatch)
67
+ found = vs.select(entmap, args)
68
+ if found is None:
69
+ return respond(404, None, {"statusText": "Not found"})
70
+ if isinstance(found, list):
71
+ for item in found:
72
+ vs.delprop(item, "$KEY")
73
+ out = vs.clone(found)
74
+ return respond(200, out)
75
+
76
+ elif op.name == "update":
77
+ args = test_self.build_args(fctx, op, fctx.reqdata)
78
+ found = vs.select(entmap, args)
79
+ ent = vs.getelem(found, 0)
80
+ if ent is None:
81
+ return respond(404, None, {"statusText": "Not found"})
82
+ if isinstance(ent, dict):
83
+ reqdata = fctx.reqdata
84
+ if reqdata is not None:
85
+ for k, v in reqdata.items():
86
+ ent[k] = v
87
+ vs.delprop(ent, "$KEY")
88
+ out = vs.clone(ent)
89
+ return respond(200, out)
90
+
91
+ elif op.name == "remove":
92
+ args = test_self.build_args(fctx, op, fctx.reqmatch)
93
+ found = vs.select(entmap, args)
94
+ ent = vs.getelem(found, 0)
95
+ if ent is None:
96
+ return respond(404, None, {"statusText": "Not found"})
97
+ if isinstance(ent, dict):
98
+ eid = vs.getprop(ent, "id")
99
+ vs.delprop(entmap, eid)
100
+ return respond(200, None)
101
+
102
+ elif op.name == "create":
103
+ test_self.build_args(fctx, op, fctx.reqdata)
104
+ eid = fctx.utility.param(fctx, "id")
105
+ if eid is None:
106
+ eid = "%04x%04x%04x%04x" % (
107
+ random.randint(0, 0xFFFF), random.randint(0, 0xFFFF),
108
+ random.randint(0, 0xFFFF), random.randint(0, 0xFFFF))
109
+
110
+ ent = vs.clone(fctx.reqdata)
111
+ if isinstance(ent, dict):
112
+ ent["id"] = eid
113
+ if isinstance(eid, str):
114
+ entmap[eid] = ent
115
+ vs.delprop(ent, "$KEY")
116
+ out = vs.clone(ent)
117
+ return respond(200, out)
118
+ return respond(200, ent)
119
+
120
+ return respond(404, None, {"statusText": "Unknown operation"})
121
+
122
+ ctx.utility.fetcher = test_fetcher
123
+
124
+ def build_args(self, ctx, op, args):
125
+ opname = op.name
126
+
127
+ # Get last point from config.
128
+ points = vs.getpath(ctx.config, "entity." + ctx.entity.get_name() + ".op." + opname + ".points")
129
+ point = vs.getelem(points, -1)
130
+
131
+ # Get required params.
132
+ params_path = vs.getpath(point, "args.params")
133
+ reqd_params = vs.select(params_path, {"reqd": True})
134
+ reqd = vs.transform(reqd_params, ["`$EACH`", "", "`$KEY.name`"])
135
+
136
+ qand = []
137
+ q = {"`$AND`": qand}
138
+
139
+ if args is not None:
140
+ keys = vs.keysof(args)
141
+ if keys is not None:
142
+ for key in keys:
143
+ is_id = (key == "id")
144
+ selected = vs.select(reqd, key)
145
+ is_reqd = not vs.isempty(selected)
146
+
147
+ if is_id or is_reqd:
148
+ v = ctx.utility.param(ctx, key)
149
+ ka = None
150
+ if op.alias is not None:
151
+ ka = vs.getprop(op.alias, key)
152
+
153
+ qor = [{key: v}]
154
+ if ka is not None and isinstance(ka, str):
155
+ qor.append({ka: v})
156
+
157
+ qand.append({"`$OR`": qor})
158
+
159
+ q["`$AND`"] = qand
160
+
161
+ if ctx.ctrl.explain is not None:
162
+ ctx.ctrl.explain["test"] = {"query": q}
163
+
164
+ return q
@@ -0,0 +1,3 @@
1
+ # Features
2
+
3
+ This folder contains the feature source templates.
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,77 @@
1
+ # ProjectName SDK test runner
2
+
3
+ from __future__ import annotations
4
+ import os
5
+ import json
6
+
7
+ from utility.voxgig_struct import voxgig_struct as vs
8
+
9
+
10
+ class ProjectNameTestRunner:
11
+ _env = {}
12
+
13
+ @staticmethod
14
+ def load_env_local():
15
+ try:
16
+ with open("../../.env.local", "r") as f:
17
+ content = f.read()
18
+ except (FileNotFoundError, IOError):
19
+ return
20
+
21
+ for line in content.splitlines():
22
+ line = line.strip()
23
+ if line == "" or line.startswith("#"):
24
+ continue
25
+ eq_idx = line.find("=")
26
+ if eq_idx < 0:
27
+ continue
28
+ key = line[:eq_idx].strip()
29
+ val = line[eq_idx + 1:].strip()
30
+ ProjectNameTestRunner._env[key] = val
31
+
32
+ @staticmethod
33
+ def getenv(key):
34
+ val = ProjectNameTestRunner._env.get(key)
35
+ if val is not None:
36
+ return val
37
+ return os.environ.get(key)
38
+
39
+ @staticmethod
40
+ def env_override(m):
41
+ live = ProjectNameTestRunner.getenv("PROJECTNAME_TEST_LIVE")
42
+ override = ProjectNameTestRunner.getenv("PROJECTNAME_TEST_OVERRIDE")
43
+
44
+ if live == "TRUE" or override == "TRUE":
45
+ for key in list(m.keys()):
46
+ envval = ProjectNameTestRunner.getenv(key)
47
+ if envval is not None and envval != "":
48
+ envval = envval.strip()
49
+ if envval.startswith("{"):
50
+ try:
51
+ parsed = json.loads(envval)
52
+ if parsed is not None:
53
+ m[key] = parsed
54
+ continue
55
+ except Exception:
56
+ pass
57
+ m[key] = envval
58
+
59
+ explain = ProjectNameTestRunner.getenv("PROJECTNAME_TEST_EXPLAIN")
60
+ if explain is not None and explain != "":
61
+ m["PROJECTNAME_TEST_EXPLAIN"] = explain
62
+
63
+ return m
64
+
65
+ @staticmethod
66
+ def entity_list_to_data(lst):
67
+ out = []
68
+ for item in lst:
69
+ if isinstance(item, dict):
70
+ out.append(item)
71
+ elif hasattr(item, "data_get") and callable(item.data_get):
72
+ d = item.data_get()
73
+ if isinstance(d, dict):
74
+ out.append(d)
75
+ else:
76
+ out.append(item)
77
+ return out
File without changes
@@ -0,0 +1,5 @@
1
+ # ProjectName SDK utility: clean
2
+
3
+
4
+ def clean_util(ctx, val):
5
+ return val
@@ -0,0 +1,14 @@
1
+ # ProjectName SDK utility: done
2
+
3
+
4
+ def done_util(ctx):
5
+ if ctx.ctrl.explain is not None:
6
+ ctx.ctrl.explain = ctx.utility.clean(ctx, ctx.ctrl.explain)
7
+ explain_result = ctx.ctrl.explain.get("result") if isinstance(ctx.ctrl.explain, dict) else None
8
+ if isinstance(explain_result, dict):
9
+ explain_result.pop("err", None)
10
+
11
+ if ctx.result is not None and ctx.result.ok:
12
+ return ctx.result.resdata, None
13
+
14
+ return ctx.utility.make_error(ctx, None)
@@ -0,0 +1,6 @@
1
+ # ProjectName SDK utility: feature_add
2
+
3
+
4
+ def feature_add_util(ctx, f):
5
+ client = ctx.client
6
+ client.features.append(f)
@@ -0,0 +1,15 @@
1
+ # ProjectName SDK utility: feature_hook
2
+
3
+
4
+ def feature_hook_util(ctx, name):
5
+ client = ctx.client
6
+ if client is None:
7
+ return
8
+ features = client.features
9
+ if features is None:
10
+ return
11
+
12
+ for f in features:
13
+ method = getattr(f, name, None)
14
+ if callable(method):
15
+ method(ctx)
@@ -0,0 +1,18 @@
1
+ # ProjectName SDK utility: feature_init
2
+
3
+ from utility.voxgig_struct import voxgig_struct as vs
4
+
5
+
6
+ def feature_init_util(ctx, f):
7
+ fname = f.get_name()
8
+ fopts = {}
9
+
10
+ if ctx.options is not None:
11
+ feature_opts = vs.getprop(ctx.options, "feature")
12
+ if isinstance(feature_opts, dict):
13
+ fo = vs.getprop(feature_opts, fname)
14
+ if isinstance(fo, dict):
15
+ fopts = fo
16
+
17
+ if fopts.get("active") is True:
18
+ f.init(ctx, fopts)
@@ -0,0 +1,95 @@
1
+ # ProjectName SDK utility: fetcher
2
+
3
+ from __future__ import annotations
4
+ import json
5
+ from utility.voxgig_struct import voxgig_struct as vs
6
+
7
+
8
+ def _default_http_fetch(fullurl, fetchdef):
9
+ import urllib.request
10
+ import urllib.error
11
+
12
+ method = fetchdef.get("method", "GET")
13
+ body_str = fetchdef.get("body")
14
+ headers = fetchdef.get("headers", {})
15
+
16
+ if not isinstance(body_str, str):
17
+ body_str = None
18
+
19
+ data = body_str.encode("utf-8") if body_str is not None else None
20
+
21
+ req = urllib.request.Request(fullurl, data=data, method=method)
22
+ for k, v in headers.items():
23
+ req.add_header(k, v)
24
+
25
+ try:
26
+ resp = urllib.request.urlopen(req)
27
+ body = resp.read().decode("utf-8")
28
+ resp_headers = {}
29
+ for k, v in resp.getheaders():
30
+ resp_headers[k.lower()] = v
31
+
32
+ json_body = None
33
+ if len(body) > 0:
34
+ try:
35
+ json_body = json.loads(body)
36
+ except Exception:
37
+ pass
38
+
39
+ status = resp.getcode()
40
+ status_text = "OK" if status < 400 else "Error"
41
+
42
+ return {
43
+ "status": status,
44
+ "statusText": status_text,
45
+ "headers": resp_headers,
46
+ "json": lambda: json_body,
47
+ "body": body,
48
+ }, None
49
+ except urllib.error.HTTPError as e:
50
+ body = e.read().decode("utf-8")
51
+ resp_headers = {}
52
+ for k, v in e.headers.items():
53
+ resp_headers[k.lower()] = v
54
+
55
+ json_body = None
56
+ if len(body) > 0:
57
+ try:
58
+ json_body = json.loads(body)
59
+ except Exception:
60
+ pass
61
+
62
+ status_text = "OK" if e.code < 400 else "Error"
63
+
64
+ return {
65
+ "status": e.code,
66
+ "statusText": status_text,
67
+ "headers": resp_headers,
68
+ "json": lambda: json_body,
69
+ "body": body,
70
+ }, None
71
+ except Exception as e:
72
+ return None, str(e)
73
+
74
+
75
+ def fetcher_util(ctx, fullurl, fetchdef):
76
+ if ctx.client.mode != "live":
77
+ return None, ctx.make_error("fetch_mode_block",
78
+ 'Request blocked by mode: "' + ctx.client.mode +
79
+ '" (URL was: "' + fullurl + '")')
80
+
81
+ options = ctx.client.options_map()
82
+ if vs.getpath(options, "feature.test.active") is True:
83
+ return None, ctx.make_error("fetch_test_block",
84
+ 'Request blocked as test feature is active'
85
+ ' (URL was: "' + fullurl + '")')
86
+
87
+ sys_fetch = vs.getpath(options, "system.fetch")
88
+
89
+ if sys_fetch is None:
90
+ return _default_http_fetch(fullurl, fetchdef)
91
+
92
+ if callable(sys_fetch):
93
+ return sys_fetch(fullurl, fetchdef)
94
+
95
+ return None, ctx.make_error("fetch_invalid", "system.fetch is not a valid function")
@@ -0,0 +1,7 @@
1
+ # ProjectName SDK utility: make_context
2
+
3
+ from core.context import ProjectNameContext
4
+
5
+
6
+ def make_context_util(ctxmap, basectx):
7
+ return ProjectNameContext(ctxmap, basectx)
@@ -0,0 +1,64 @@
1
+ # ProjectName SDK utility: make_error
2
+
3
+ from __future__ import annotations
4
+ from core.operation import ProjectNameOperation
5
+ from core.result import ProjectNameResult
6
+ from core.control import ProjectNameControl
7
+ from core.error import ProjectNameError
8
+
9
+
10
+ def make_error_util(ctx, err):
11
+ if ctx is None:
12
+ from core.context import ProjectNameContext
13
+ ctx = ProjectNameContext({}, None)
14
+
15
+ op = ctx.op
16
+ if op is None:
17
+ op = ProjectNameOperation({})
18
+ opname = op.name
19
+ if opname == "" or opname == "_":
20
+ opname = "unknown operation"
21
+
22
+ result = ctx.result
23
+ if result is None:
24
+ result = ProjectNameResult({})
25
+ result.ok = False
26
+
27
+ if err is None:
28
+ err = result.err
29
+ if err is None:
30
+ err = ctx.make_error("unknown", "unknown error")
31
+
32
+ errmsg = ""
33
+ if isinstance(err, ProjectNameError):
34
+ errmsg = err.msg
35
+ elif hasattr(err, "msg") and err.msg is not None:
36
+ errmsg = err.msg
37
+ elif isinstance(err, str):
38
+ errmsg = err
39
+ else:
40
+ errmsg = str(err)
41
+
42
+ msg = "ProjectNameSDK: " + opname + ": " + errmsg
43
+ msg = ctx.utility.clean(ctx, msg)
44
+
45
+ result.err = None
46
+
47
+ spec = ctx.spec
48
+
49
+ if ctx.ctrl.explain is not None:
50
+ ctx.ctrl.explain["err"] = {"message": msg}
51
+
52
+ sdk_err = ProjectNameError("", msg, ctx)
53
+ sdk_err.result = ctx.utility.clean(ctx, result)
54
+ sdk_err.spec = ctx.utility.clean(ctx, spec)
55
+
56
+ if isinstance(err, ProjectNameError):
57
+ sdk_err.code = err.code
58
+
59
+ ctx.ctrl.err = sdk_err
60
+
61
+ if ctx.ctrl.throw_err is False:
62
+ return result.resdata, None
63
+
64
+ return None, sdk_err
@@ -0,0 +1,37 @@
1
+ # ProjectName SDK utility: make_fetch_def
2
+
3
+ from __future__ import annotations
4
+ from utility.voxgig_struct import voxgig_struct as vs
5
+
6
+
7
+ def make_fetch_def_util(ctx):
8
+ spec = ctx.spec
9
+ if spec is None:
10
+ return None, ctx.make_error("fetchdef_no_spec",
11
+ "Expected context spec property to be defined.")
12
+
13
+ from core.result import ProjectNameResult
14
+ if ctx.result is None:
15
+ ctx.result = ProjectNameResult({})
16
+
17
+ spec.step = "prepare"
18
+
19
+ url, err = ctx.utility.make_url(ctx)
20
+ if err is not None:
21
+ return None, err
22
+
23
+ spec.url = url
24
+
25
+ fetchdef = {
26
+ "url": url,
27
+ "method": spec.method,
28
+ "headers": spec.headers,
29
+ }
30
+
31
+ if spec.body is not None:
32
+ if isinstance(spec.body, dict):
33
+ fetchdef["body"] = vs.jsonify(spec.body)
34
+ else:
35
+ fetchdef["body"] = spec.body
36
+
37
+ return fetchdef, None
@@ -0,0 +1,103 @@
1
+ # ProjectName SDK utility: make_options
2
+
3
+ from __future__ import annotations
4
+ from utility.voxgig_struct import voxgig_struct as vs
5
+
6
+
7
+ def make_options_util(ctx):
8
+ options = ctx.options or {}
9
+
10
+ # Merge custom utility overrides.
11
+ custom_utils = vs.getprop(options, "utility")
12
+ if isinstance(custom_utils, dict):
13
+ utility = ctx.utility
14
+ if utility is not None:
15
+ for key, val in custom_utils.items():
16
+ utility.custom[key] = val
17
+
18
+ opts = vs.clone(options)
19
+ if not isinstance(opts, dict):
20
+ opts = {}
21
+
22
+ config = ctx.config or {}
23
+ cfgopts = {}
24
+ co = config.get("options") if isinstance(config, dict) else None
25
+ if isinstance(co, dict):
26
+ cfgopts = co
27
+
28
+ optspec = {
29
+ "apikey": "",
30
+ "base": "http://localhost:8000",
31
+ "prefix": "",
32
+ "suffix": "",
33
+ "auth": {
34
+ "prefix": "",
35
+ },
36
+ "headers": {
37
+ "`$CHILD`": "`$STRING`",
38
+ },
39
+ "allow": {
40
+ "method": "GET,PUT,POST,PATCH,DELETE,OPTIONS",
41
+ "op": "create,update,load,list,remove,command,direct",
42
+ },
43
+ "entity": {
44
+ "`$CHILD`": {
45
+ "`$OPEN`": True,
46
+ "active": False,
47
+ "alias": {},
48
+ },
49
+ },
50
+ "feature": {
51
+ "`$CHILD`": {
52
+ "`$OPEN`": True,
53
+ "active": False,
54
+ },
55
+ },
56
+ "utility": {},
57
+ "system": {},
58
+ "test": {
59
+ "active": False,
60
+ "entity": {
61
+ "`$OPEN`": True,
62
+ },
63
+ },
64
+ "clean": {
65
+ "keys": "key,token,id",
66
+ },
67
+ }
68
+
69
+ # Preserve system.fetch before merge/validate.
70
+ sys_fetch = vs.getpath(opts, "system.fetch")
71
+
72
+ merged = vs.merge([{}, cfgopts, opts])
73
+ validated = vs.validate(merged, optspec)
74
+ if not isinstance(validated, dict):
75
+ validated = {}
76
+ opts = validated
77
+
78
+ # Restore system.fetch.
79
+ if sys_fetch is not None:
80
+ if isinstance(opts.get("system"), dict):
81
+ opts["system"]["fetch"] = sys_fetch
82
+ else:
83
+ opts["system"] = {"fetch": sys_fetch}
84
+
85
+ # Derived clean config.
86
+ clean_keys = "key,token,id"
87
+ ck = vs.getpath(opts, "clean.keys")
88
+ if isinstance(ck, str):
89
+ clean_keys = ck
90
+
91
+ parts = []
92
+ for part in clean_keys.split(","):
93
+ trimmed = part.strip()
94
+ if trimmed != "":
95
+ parts.append(vs.escre(trimmed))
96
+ keyre = "|".join(parts)
97
+
98
+ derived = {"clean": {}}
99
+ if keyre != "":
100
+ derived["clean"] = {"keyre": keyre}
101
+ opts["__derived__"] = derived
102
+
103
+ return opts