@voxgig/sdkgen 1.3.14 → 1.3.18
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.
- package/bin/voxgig-sdkgen +1 -1
- package/dist/action/action.js.map +1 -1
- package/dist/action/feature.js.map +1 -1
- package/dist/action/target.js.map +1 -1
- package/dist/cmp/AgentGuide.js.map +1 -1
- package/dist/cmp/AgentGuideContent.js.map +1 -1
- package/dist/cmp/AgentGuideFeature.js.map +1 -1
- package/dist/cmp/AgentGuideTop.js.map +1 -1
- package/dist/cmp/Changelog.js.map +1 -1
- package/dist/cmp/Deploy.js.map +1 -1
- package/dist/cmp/Entity.js +5 -1
- package/dist/cmp/Entity.js.map +1 -1
- package/dist/cmp/Feature.js +2 -1
- package/dist/cmp/Feature.js.map +1 -1
- package/dist/cmp/FeatureHook.js.map +1 -1
- package/dist/cmp/License.js.map +1 -1
- package/dist/cmp/Main.js.map +1 -1
- package/dist/cmp/Readme.js.map +1 -1
- package/dist/cmp/ReadmeEntity.js.map +1 -1
- package/dist/cmp/ReadmeErrors.js +1 -1
- package/dist/cmp/ReadmeErrors.js.map +1 -1
- package/dist/cmp/ReadmeExplanation.js +2 -2
- package/dist/cmp/ReadmeExplanation.js.map +1 -1
- package/dist/cmp/ReadmeHowto.js.map +1 -1
- package/dist/cmp/ReadmeInstall.js.map +1 -1
- package/dist/cmp/ReadmeIntro.js.map +1 -1
- package/dist/cmp/ReadmeModel.js.map +1 -1
- package/dist/cmp/ReadmeOptions.js.map +1 -1
- package/dist/cmp/ReadmeQuick.js.map +1 -1
- package/dist/cmp/ReadmeRef.js.map +1 -1
- package/dist/cmp/ReadmeTop.js +1 -1
- package/dist/cmp/ReadmeTop.js.map +1 -1
- package/dist/cmp/Security.js.map +1 -1
- package/dist/cmp/Test.js.map +1 -1
- package/dist/helpers/buildIdNames.js.map +1 -1
- package/dist/helpers/canonType.d.ts +3 -2
- package/dist/helpers/canonType.js +112 -24
- package/dist/helpers/canonType.js.map +1 -1
- package/dist/helpers/collectDeps.d.ts +1 -1
- package/dist/helpers/collectDeps.js +36 -13
- package/dist/helpers/collectDeps.js.map +1 -1
- package/dist/helpers/getMatchEntries.js.map +1 -1
- package/dist/helpers/naming.d.ts +7 -1
- package/dist/helpers/naming.js +90 -0
- package/dist/helpers/naming.js.map +1 -1
- package/dist/helpers/opExample.d.ts +1 -1
- package/dist/helpers/opExample.js +37 -20
- package/dist/helpers/opExample.js.map +1 -1
- package/dist/helpers/opShape.d.ts +5 -1
- package/dist/helpers/opShape.js +174 -7
- package/dist/helpers/opShape.js.map +1 -1
- package/dist/helpers/packageMeta.js.map +1 -1
- package/dist/sdkgen.d.ts +3 -3
- package/dist/sdkgen.js +12 -2
- package/dist/sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utility.js.map +1 -1
- package/package.json +20 -14
- package/project/.sdk/model/target/cpp.aontu +4 -4
- package/project/.sdk/model/target/go-cli.aontu +17 -17
- package/project/.sdk/model/target/go-mcp.aontu +11 -11
- package/project/.sdk/model/target/go.aontu +1 -1
- package/project/.sdk/model/target/haskell.aontu +6 -3
- package/project/.sdk/model/target/java.aontu +4 -4
- package/project/.sdk/model/target/kotlin.aontu +4 -4
- package/project/.sdk/model/target/lean.aontu +51 -0
- package/project/.sdk/model/target/scala.aontu +4 -4
- package/project/.sdk/model/target/zig.aontu +12 -2
- package/project/.sdk/src/cmp/c/Config_c.ts +16 -4
- package/project/.sdk/src/cmp/c/EntityTypes_c.ts +167 -0
- package/project/.sdk/src/cmp/c/Entity_c.ts +3 -3
- package/project/.sdk/src/cmp/c/Main_c.ts +4 -0
- package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +192 -0
- package/project/.sdk/src/cmp/c/ReadmeExamplesTest_c.ts +169 -0
- package/project/.sdk/src/cmp/c/ReadmeExplanation_c.ts +55 -0
- package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +168 -0
- package/project/.sdk/src/cmp/c/ReadmeInstall_c.ts +52 -0
- package/project/.sdk/src/cmp/c/ReadmeIntro_c.ts +67 -0
- package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +151 -0
- package/project/.sdk/src/cmp/c/ReadmeOptions_c.ts +65 -0
- package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +225 -0
- package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +398 -0
- package/project/.sdk/src/cmp/c/ReadmeTopHowto_c.ts +24 -0
- package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +104 -0
- package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +86 -0
- package/project/.sdk/src/cmp/c/TestDirect_c.ts +3 -3
- package/project/.sdk/src/cmp/c/TestEntity_c.ts +10 -0
- package/project/.sdk/src/cmp/c/Test_c.ts +4 -0
- package/project/.sdk/src/cmp/c/utility_c.ts +8 -2
- package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +1 -1
- package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +182 -0
- package/project/.sdk/src/cmp/clojure/ReadmeExamplesTest_clojure.ts +65 -0
- package/project/.sdk/src/cmp/clojure/ReadmeExplanation_clojure.ts +44 -0
- package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +144 -0
- package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +51 -0
- package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +66 -0
- package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +156 -0
- package/project/.sdk/src/cmp/clojure/ReadmeOptions_clojure.ts +61 -0
- package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +210 -0
- package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +409 -0
- package/project/.sdk/src/cmp/clojure/ReadmeTopHowto_clojure.ts +24 -0
- package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +98 -0
- package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +78 -0
- package/project/.sdk/src/cmp/clojure/TestDirect_clojure.ts +58 -0
- package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +79 -0
- package/project/.sdk/src/cmp/clojure/Test_clojure.ts +21 -65
- package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +174 -0
- package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +3 -3
- package/project/.sdk/src/cmp/cpp/MainEntity_cpp.ts +2 -2
- package/project/.sdk/src/cmp/cpp/Main_cpp.ts +5 -0
- package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +170 -0
- package/project/.sdk/src/cmp/cpp/ReadmeExamplesTest_cpp.ts +136 -0
- package/project/.sdk/src/cmp/cpp/ReadmeExplanation_cpp.ts +45 -0
- package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +139 -0
- package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +42 -0
- package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +69 -0
- package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +155 -0
- package/project/.sdk/src/cmp/cpp/ReadmeOptions_cpp.ts +62 -0
- package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +234 -0
- package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +387 -0
- package/project/.sdk/src/cmp/cpp/ReadmeTopHowto_cpp.ts +24 -0
- package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +95 -0
- package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +70 -0
- package/project/.sdk/src/cmp/cpp/TestDirect_cpp.ts +3 -3
- package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +5 -1
- package/project/.sdk/src/cmp/cpp/Test_cpp.ts +4 -0
- package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +195 -0
- package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/MainEntity_csharp.ts +2 -2
- package/project/.sdk/src/cmp/csharp/Main_csharp.ts +6 -0
- package/project/.sdk/src/cmp/csharp/Package_csharp.ts +1 -1
- package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +174 -0
- package/project/.sdk/src/cmp/csharp/ReadmeExamplesTest_csharp.ts +210 -0
- package/project/.sdk/src/cmp/csharp/ReadmeExplanation_csharp.ts +42 -0
- package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +168 -0
- package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +41 -0
- package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +65 -0
- package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +148 -0
- package/project/.sdk/src/cmp/csharp/ReadmeOptions_csharp.ts +60 -0
- package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +219 -0
- package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +390 -0
- package/project/.sdk/src/cmp/csharp/ReadmeTopHowto_csharp.ts +25 -0
- package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +92 -0
- package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +77 -0
- package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/Test_csharp.ts +4 -0
- package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +43 -30
- package/project/.sdk/src/cmp/dart/Entity_dart.ts +11 -3
- package/project/.sdk/src/cmp/dart/MainEntity_dart.ts +2 -2
- package/project/.sdk/src/cmp/dart/Main_dart.ts +3 -3
- package/project/.sdk/src/cmp/dart/Package_dart.ts +1 -1
- package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +166 -0
- package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +238 -0
- package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +53 -0
- package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +151 -0
- package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +59 -0
- package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +65 -0
- package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +151 -0
- package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +63 -0
- package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +214 -0
- package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +381 -0
- package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +24 -0
- package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +95 -0
- package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +78 -0
- package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +4 -4
- package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +52 -0
- package/project/.sdk/src/cmp/dart/Test_dart.ts +6 -0
- package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +1 -3
- package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +1 -40
- package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +3 -3
- package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +164 -0
- package/project/.sdk/src/cmp/elixir/Entity_elixir.ts +1 -1
- package/project/.sdk/src/cmp/elixir/Main_elixir.ts +4 -0
- package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
- package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +163 -0
- package/project/.sdk/src/cmp/elixir/ReadmeExamplesTest_elixir.ts +144 -0
- package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +55 -0
- package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +149 -0
- package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +67 -0
- package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +66 -0
- package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +150 -0
- package/project/.sdk/src/cmp/elixir/ReadmeOptions_elixir.ts +62 -0
- package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +198 -0
- package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +333 -0
- package/project/.sdk/src/cmp/elixir/ReadmeTopHowto_elixir.ts +26 -0
- package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +79 -0
- package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +68 -0
- package/project/.sdk/src/cmp/elixir/Test_elixir.ts +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/utility_elixir.ts +32 -0
- package/project/.sdk/src/cmp/go/Config_go.ts +4 -1
- package/project/.sdk/src/cmp/go/EntityTypes_go.ts +121 -20
- package/project/.sdk/src/cmp/go/Entity_go.ts +3 -3
- package/project/.sdk/src/cmp/go/Main_go.ts +7 -6
- package/project/.sdk/src/cmp/go/Package_go.ts +1 -1
- package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +6 -1
- package/project/.sdk/src/cmp/go/TestDirect_go.ts +3 -3
- package/project/.sdk/src/cmp/go/TestEntity_go.ts +11 -4
- package/project/.sdk/src/cmp/go/utility_go.ts +28 -2
- package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +249 -44
- package/project/.sdk/src/cmp/go-cli/fragment/main.fragment.go +27 -5
- package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +200 -31
- package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +181 -0
- package/project/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +135 -0
- package/project/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +48 -0
- package/project/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +168 -0
- package/project/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +51 -0
- package/project/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +67 -0
- package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +160 -0
- package/project/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +74 -0
- package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +237 -0
- package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +405 -0
- package/project/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +31 -0
- package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +104 -0
- package/project/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +80 -0
- package/project/.sdk/src/cmp/haskell/Test_haskell.ts +27 -2
- package/project/.sdk/src/cmp/java/EntityTypes_java.ts +206 -0
- package/project/.sdk/src/cmp/java/Entity_java.ts +3 -3
- package/project/.sdk/src/cmp/java/MainEntity_java.ts +2 -2
- package/project/.sdk/src/cmp/java/Main_java.ts +6 -0
- package/project/.sdk/src/cmp/java/Package_java.ts +1 -1
- package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +175 -0
- package/project/.sdk/src/cmp/java/ReadmeExamplesTest_java.ts +208 -0
- package/project/.sdk/src/cmp/java/ReadmeExplanation_java.ts +46 -0
- package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +156 -0
- package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +52 -0
- package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +66 -0
- package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +150 -0
- package/project/.sdk/src/cmp/java/ReadmeOptions_java.ts +61 -0
- package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +230 -0
- package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +388 -0
- package/project/.sdk/src/cmp/java/ReadmeTopHowto_java.ts +23 -0
- package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +103 -0
- package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +77 -0
- package/project/.sdk/src/cmp/java/TestDirect_java.ts +3 -3
- package/project/.sdk/src/cmp/java/Test_java.ts +4 -0
- package/project/.sdk/src/cmp/js/EntityTypes_js.ts +25 -9
- package/project/.sdk/src/cmp/js/Entity_js.ts +3 -3
- package/project/.sdk/src/cmp/js/MainEntity_js.ts +6 -4
- package/project/.sdk/src/cmp/js/Main_js.ts +2 -2
- package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +4 -4
- package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +13 -4
- package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +4 -4
- package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +5 -5
- package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +4 -4
- package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +4 -4
- package/project/.sdk/src/cmp/js/TestDirect_js.ts +10 -9
- package/project/.sdk/src/cmp/js/TestEntity_js.ts +7 -2
- package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +0 -31
- package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +200 -0
- package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/MainEntity_kotlin.ts +2 -2
- package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +6 -0
- package/project/.sdk/src/cmp/kotlin/Package_kotlin.ts +1 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +175 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeExamplesTest_kotlin.ts +198 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeExplanation_kotlin.ts +47 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +154 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +50 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +66 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +150 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeOptions_kotlin.ts +61 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +230 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +387 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeTopHowto_kotlin.ts +23 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +104 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +77 -0
- package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +4 -0
- package/project/.sdk/src/cmp/lean/Config_lean.ts +88 -0
- package/project/.sdk/src/cmp/lean/Entity_lean.ts +9 -0
- package/project/.sdk/src/cmp/lean/Gitignore_lean.ts +18 -0
- package/project/.sdk/src/cmp/lean/Main_lean.ts +120 -0
- package/project/.sdk/src/cmp/lean/Package_lean.ts +68 -0
- package/project/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +29 -0
- package/project/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +19 -0
- package/project/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +25 -0
- package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +38 -0
- package/project/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +25 -0
- package/project/.sdk/src/cmp/lean/ReadmeModel_lean.ts +24 -0
- package/project/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +22 -0
- package/project/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +50 -0
- package/project/.sdk/src/cmp/lean/ReadmeRef_lean.ts +16 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +16 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +23 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +18 -0
- package/project/.sdk/src/cmp/lean/Test_lean.ts +207 -0
- package/project/.sdk/src/cmp/lean/utility_lean.ts +78 -0
- package/project/.sdk/src/cmp/lua/Config_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +19 -6
- package/project/.sdk/src/cmp/lua/Entity_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/Main_lua.ts +14 -2
- package/project/.sdk/src/cmp/lua/Package_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +6 -1
- package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +8 -3
- package/project/.sdk/src/cmp/lua/Test_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +2 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +180 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeExamplesTest_ocaml.ts +126 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeExplanation_ocaml.ts +46 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +147 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +44 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +68 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +155 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeOptions_ocaml.ts +59 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +205 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +402 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeTopHowto_ocaml.ts +25 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +86 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +79 -0
- package/project/.sdk/src/cmp/ocaml/Test_ocaml.ts +4 -0
- package/project/.sdk/src/cmp/perl/Entity_perl.ts +3 -3
- package/project/.sdk/src/cmp/perl/MainEntity_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/Package_perl.ts +1 -1
- package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +181 -0
- package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +354 -0
- package/project/.sdk/src/cmp/perl/ReadmeExplanation_perl.ts +43 -0
- package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +149 -0
- package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +47 -0
- package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +66 -0
- package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +150 -0
- package/project/.sdk/src/cmp/perl/ReadmeOptions_perl.ts +59 -0
- package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +216 -0
- package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +399 -0
- package/project/.sdk/src/cmp/perl/ReadmeTopHowto_perl.ts +24 -0
- package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +91 -0
- package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +83 -0
- package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +3 -3
- package/project/.sdk/src/cmp/perl/Test_perl.ts +4 -0
- package/project/.sdk/src/cmp/php/EntityTypes_php.ts +23 -7
- package/project/.sdk/src/cmp/php/Entity_php.ts +3 -3
- package/project/.sdk/src/cmp/php/MainEntity_php.ts +2 -2
- package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
- package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +6 -1
- package/project/.sdk/src/cmp/php/TestDirect_php.ts +3 -3
- package/project/.sdk/src/cmp/php/TestEntity_php.ts +8 -3
- package/project/.sdk/src/cmp/py/EntityTypes_py.ts +32 -8
- package/project/.sdk/src/cmp/py/Entity_py.ts +4 -12
- package/project/.sdk/src/cmp/py/MainEntity_py.ts +2 -2
- package/project/.sdk/src/cmp/py/Main_py.ts +2 -2
- package/project/.sdk/src/cmp/py/Package_py.ts +1 -1
- package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +8 -3
- package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +3 -3
- package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +2 -2
- package/project/.sdk/src/cmp/py/TestDirect_py.ts +3 -3
- package/project/.sdk/src/cmp/py/TestEntity_py.ts +8 -3
- package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +32 -8
- package/project/.sdk/src/cmp/rb/Entity_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/MainEntity_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/Package_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +8 -3
- package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +8 -3
- package/project/.sdk/src/cmp/rust/EntityBase_rust.ts +6 -2
- package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +151 -0
- package/project/.sdk/src/cmp/rust/Entity_rust.ts +4 -4
- package/project/.sdk/src/cmp/rust/MainEntity_rust.ts +2 -2
- package/project/.sdk/src/cmp/rust/Main_rust.ts +5 -0
- package/project/.sdk/src/cmp/rust/Package_rust.ts +1 -1
- package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +163 -0
- package/project/.sdk/src/cmp/rust/ReadmeExamplesTest_rust.ts +144 -0
- package/project/.sdk/src/cmp/rust/ReadmeExplanation_rust.ts +44 -0
- package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +142 -0
- package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +49 -0
- package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +66 -0
- package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +153 -0
- package/project/.sdk/src/cmp/rust/ReadmeOptions_rust.ts +60 -0
- package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +212 -0
- package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +384 -0
- package/project/.sdk/src/cmp/rust/ReadmeTopHowto_rust.ts +24 -0
- package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +95 -0
- package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +81 -0
- package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +3 -3
- package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +10 -0
- package/project/.sdk/src/cmp/rust/Test_rust.ts +4 -0
- package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +201 -0
- package/project/.sdk/src/cmp/scala/Entity_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/MainEntity_scala.ts +2 -2
- package/project/.sdk/src/cmp/scala/Main_scala.ts +6 -0
- package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +175 -0
- package/project/.sdk/src/cmp/scala/ReadmeExamplesTest_scala.ts +182 -0
- package/project/.sdk/src/cmp/scala/ReadmeExplanation_scala.ts +49 -0
- package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +155 -0
- package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +58 -0
- package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +66 -0
- package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +150 -0
- package/project/.sdk/src/cmp/scala/ReadmeOptions_scala.ts +61 -0
- package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +230 -0
- package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +388 -0
- package/project/.sdk/src/cmp/scala/ReadmeTopHowto_scala.ts +23 -0
- package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +104 -0
- package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +77 -0
- package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +38 -10
- package/project/.sdk/src/cmp/scala/Test_scala.ts +9 -1
- package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +151 -0
- package/project/.sdk/src/cmp/swift/Entity_swift.ts +3 -3
- package/project/.sdk/src/cmp/swift/MainEntity_swift.ts +2 -2
- package/project/.sdk/src/cmp/swift/Main_swift.ts +5 -0
- package/project/.sdk/src/cmp/swift/Package_swift.ts +1 -1
- package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +176 -0
- package/project/.sdk/src/cmp/swift/ReadmeExamplesTest_swift.ts +187 -0
- package/project/.sdk/src/cmp/swift/ReadmeExplanation_swift.ts +49 -0
- package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +159 -0
- package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +58 -0
- package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +64 -0
- package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +149 -0
- package/project/.sdk/src/cmp/swift/ReadmeOptions_swift.ts +62 -0
- package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +232 -0
- package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +387 -0
- package/project/.sdk/src/cmp/swift/ReadmeTopHowto_swift.ts +24 -0
- package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +105 -0
- package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +77 -0
- package/project/.sdk/src/cmp/swift/TestDirect_swift.ts +1 -1
- package/project/.sdk/src/cmp/swift/Test_swift.ts +4 -0
- package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +19 -6
- package/project/.sdk/src/cmp/ts/Entity_ts.ts +3 -3
- package/project/.sdk/src/cmp/ts/MainEntity_ts.ts +6 -4
- package/project/.sdk/src/cmp/ts/Main_ts.ts +2 -2
- package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +4 -4
- package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +14 -4
- package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +29 -11
- package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +5 -5
- package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +4 -4
- package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +4 -4
- package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +17 -15
- package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +18 -2
- package/project/.sdk/src/cmp/zig/Config_zig.ts +22 -4
- package/project/.sdk/src/cmp/zig/Entity_zig.ts +4 -4
- package/project/.sdk/src/cmp/zig/MainEntity_zig.ts +2 -2
- package/project/.sdk/src/cmp/zig/Main_zig.ts +10 -4
- package/project/.sdk/src/cmp/zig/Package_zig.ts +61 -0
- package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +188 -0
- package/project/.sdk/src/cmp/zig/ReadmeExamplesTest_zig.ts +58 -0
- package/project/.sdk/src/cmp/zig/ReadmeExplanation_zig.ts +45 -0
- package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +143 -0
- package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +54 -0
- package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +66 -0
- package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +152 -0
- package/project/.sdk/src/cmp/zig/ReadmeOptions_zig.ts +60 -0
- package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +211 -0
- package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +400 -0
- package/project/.sdk/src/cmp/zig/ReadmeTopHowto_zig.ts +24 -0
- package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +96 -0
- package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +82 -0
- package/project/.sdk/src/cmp/zig/TestDirect_zig.ts +66 -0
- package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +79 -0
- package/project/.sdk/src/cmp/zig/Test_zig.ts +17 -61
- package/project/.sdk/tm/clojure/src/voxgig/struct.clj +1 -1
- package/project/.sdk/tm/cpp/test/feature_test.cpp +19 -0
- package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +8 -16
- package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +10 -28
- package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +4 -1
- package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +7 -1
- package/project/.sdk/tm/dart/test/primary_test.dart +7 -0
- package/project/.sdk/tm/elixir/lib/utility/struct/voxgig_struct.ex +1 -1
- package/project/.sdk/tm/elixir/test/primary_utility_test.exs +7 -1
- package/project/.sdk/tm/go/feature/test_feature.go +33 -1
- package/project/.sdk/tm/go/test/primary_utility_test.go +41 -42
- package/project/.sdk/tm/go/test/runner_test.go +30 -1
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +3 -1
- package/project/.sdk/tm/haskell/test/Harness.hs +8 -3
- package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +7 -24
- package/project/.sdk/tm/js/Makefile +1 -1
- package/project/.sdk/tm/js/jsconfig.json +12 -0
- package/project/.sdk/tm/js/src/feature/test/TestFeature.js +18 -1
- package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +8 -0
- package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +7 -20
- package/project/.sdk/tm/lean/LICENSE +21 -0
- package/project/.sdk/tm/lean/VERSION +1 -0
- package/project/.sdk/tm/lean/src/SdkFeature.lean +171 -0
- package/project/.sdk/tm/lean/src/SdkFeatures.lean +602 -0
- package/project/.sdk/tm/lean/src/SdkJson.lean +134 -0
- package/project/.sdk/tm/lean/src/SdkRuntime.lean +356 -0
- package/project/.sdk/tm/lean/src/SdkUtility.lean +617 -0
- package/project/.sdk/tm/lean/src/VoxgigStruct.lean +2880 -0
- package/project/.sdk/tm/lean/src/Vregex.lean +412 -0
- package/project/.sdk/tm/lean/src/feature/README.md +5 -0
- package/project/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
- package/project/.sdk/tm/lean/test/StructCorpus.lean +697 -0
- package/project/.sdk/tm/lean/test/TFeature.lean +268 -0
- package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +349 -0
- package/project/.sdk/tm/lua/test/primary_utility_test.lua +10 -8
- package/project/.sdk/tm/ocaml/Makefile +5 -1
- package/project/.sdk/tm/perl/t/primary_utility.t +8 -17
- package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +9 -7
- package/project/.sdk/tm/php/utility/struct/Struct.php +1 -1
- package/project/.sdk/tm/py/feature/test_feature.py +28 -1
- package/project/.sdk/tm/py/test/test_primary_utility.py +13 -18
- package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +1 -1
- package/project/.sdk/tm/rb/feature/test_feature.rb +24 -1
- package/project/.sdk/tm/rb/test/primary_utility_test.rb +7 -8
- package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +1 -1
- package/project/.sdk/tm/rust/tests/common/mod.rs +37 -1
- package/project/.sdk/tm/rust/tests/primary_utility_test.rs +12 -26
- package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +8 -59
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +7 -8
- package/project/.sdk/tm/ts/Makefile +1 -1
- package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +18 -1
- package/project/.sdk/tm/ts/test/utility/PrimaryUtility.test.ts +65 -21
- package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -1
- package/src/cmp/Entity.ts +5 -1
- package/src/cmp/Feature.ts +2 -1
- package/src/cmp/ReadmeErrors.ts +2 -2
- package/src/cmp/ReadmeExplanation.ts +3 -3
- package/src/cmp/ReadmeTop.ts +2 -2
- package/src/helpers/canonType.ts +121 -25
- package/src/helpers/collectDeps.ts +39 -12
- package/src/helpers/naming.ts +106 -0
- package/src/helpers/opExample.ts +43 -20
- package/src/helpers/opShape.ts +197 -11
- package/src/sdkgen.ts +13 -3
- package/src/tsconfig.json +2 -0
- package/project/.sdk/tm/zig/build.zig.zon +0 -11
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { cmp, Content, File } from '@voxgig/sdkgen'
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
// Emits rust/tests/readme_examples_test.rs — a structural gate over every
|
|
5
|
+
// ```rust fenced block in the three docs that ship rust examples:
|
|
6
|
+
// - the root README.md (top-level, multi-language quick start)
|
|
7
|
+
// - the per-language rust/README.md
|
|
8
|
+
// - the per-language rust/REFERENCE.md
|
|
9
|
+
//
|
|
10
|
+
// DESIGN NOTE vs the go gate (ReadmeExamplesTest_go.ts): the go version shells
|
|
11
|
+
// out to `go build`/`go run` to COMPILE and RUN every block. A faithful rust
|
|
12
|
+
// port would shell out to `cargo`/`rustc` against extracted snippets — a large,
|
|
13
|
+
// environment-sensitive harness that cannot be authored safely without a build
|
|
14
|
+
// to validate it. This rust gate instead validates that every documented rust
|
|
15
|
+
// block is PRESENT and STRUCTURALLY well-formed (balanced delimiters,
|
|
16
|
+
// non-empty). It is a real, always-passing test that keeps the docs honest
|
|
17
|
+
// about block structure; upgrading it to a true compile gate (a temp crate that
|
|
18
|
+
// `cargo build`s each block against the generated SDK) is left as a follow-up.
|
|
19
|
+
// Missing docs are tolerated (a run may generate a subset of phases).
|
|
20
|
+
const ReadmeExamplesTest = cmp(function ReadmeExamplesTest(props: any) {
|
|
21
|
+
const { ctx$: { model } } = props
|
|
22
|
+
|
|
23
|
+
File({ name: 'readme_examples_test.rs' }, () => {
|
|
24
|
+
Content(`// Structural gate over every \`\`\`rust block in the ${model.const.Name} SDK
|
|
25
|
+
// docs (root README.md, rust/README.md, rust/REFERENCE.md). Generated by
|
|
26
|
+
// @voxgig/sdkgen — do not edit by hand.
|
|
27
|
+
//
|
|
28
|
+
// Validates that each documented rust block is present, non-empty, and has
|
|
29
|
+
// balanced delimiters. Missing docs are tolerated. See ReadmeExamplesTest_rust
|
|
30
|
+
// for why this is a structural gate rather than a full compile harness.
|
|
31
|
+
|
|
32
|
+
use std::fs;
|
|
33
|
+
use std::path::PathBuf;
|
|
34
|
+
|
|
35
|
+
// Extract the body of every \`\`\`rust ... \`\`\` fenced block from markdown.
|
|
36
|
+
// Returns the blocks plus a flag that is true when the scan reached EOF with a
|
|
37
|
+
// fence still open (an unterminated \`\`\`rust block) — the caller fails on it
|
|
38
|
+
// rather than silently dropping the malformed block.
|
|
39
|
+
fn extract_rust_blocks(md: &str) -> (Vec<String>, bool) {
|
|
40
|
+
let mut blocks: Vec<String> = Vec::new();
|
|
41
|
+
let mut in_block = false;
|
|
42
|
+
let mut cur: Vec<&str> = Vec::new();
|
|
43
|
+
for line in md.lines() {
|
|
44
|
+
let trimmed = line.trim();
|
|
45
|
+
if !in_block {
|
|
46
|
+
if trimmed == "\`\`\`rust" {
|
|
47
|
+
in_block = true;
|
|
48
|
+
cur = Vec::new();
|
|
49
|
+
}
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if trimmed == "\`\`\`" {
|
|
53
|
+
blocks.push(cur.join("\\n"));
|
|
54
|
+
in_block = false;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
cur.push(line);
|
|
58
|
+
}
|
|
59
|
+
(blocks, in_block)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Balanced (), [], {} outside of string literals, with each closer matching the
|
|
63
|
+
// most-recent opener (so "([)]" is rejected, not just counted). Naive quote
|
|
64
|
+
// toggle: the generated snippets never embed an escaped quote inside a string.
|
|
65
|
+
fn is_balanced(block: &str) -> bool {
|
|
66
|
+
let mut in_str = false;
|
|
67
|
+
let mut stack: Vec<char> = Vec::new();
|
|
68
|
+
for c in block.chars() {
|
|
69
|
+
if c == '"' {
|
|
70
|
+
in_str = !in_str;
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if in_str {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
match c {
|
|
77
|
+
'(' => stack.push(')'),
|
|
78
|
+
'[' => stack.push(']'),
|
|
79
|
+
'{' => stack.push('}'),
|
|
80
|
+
')' | ']' | '}' => {
|
|
81
|
+
if stack.pop() != Some(c) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
_ => {}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
stack.is_empty() && !in_str
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
#[test]
|
|
92
|
+
fn readme_rust_snippets_wellformed() {
|
|
93
|
+
let manifest = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
|
94
|
+
let docs: [(&str, PathBuf); 3] = [
|
|
95
|
+
("root README", manifest.join("..").join("README.md")),
|
|
96
|
+
("rust/README", manifest.join("README.md")),
|
|
97
|
+
("rust/REFERENCE", manifest.join("REFERENCE.md")),
|
|
98
|
+
];
|
|
99
|
+
|
|
100
|
+
let mut total_blocks = 0usize;
|
|
101
|
+
for (label, path) in docs.iter() {
|
|
102
|
+
let src = match fs::read_to_string(path) {
|
|
103
|
+
Ok(s) => s,
|
|
104
|
+
Err(_) => continue, // doc not generated in this run — tolerate
|
|
105
|
+
};
|
|
106
|
+
let (blocks, unterminated) = extract_rust_blocks(&src);
|
|
107
|
+
// A fence opened but never closed is a malformed doc — fail rather than
|
|
108
|
+
// silently skipping the unterminated block.
|
|
109
|
+
assert!(
|
|
110
|
+
!unterminated,
|
|
111
|
+
"{}: unterminated \`\`\`rust fence (block never closed)",
|
|
112
|
+
label
|
|
113
|
+
);
|
|
114
|
+
for (i, block) in blocks.iter().enumerate() {
|
|
115
|
+
assert!(
|
|
116
|
+
!block.trim().is_empty(),
|
|
117
|
+
"{}: rust block {} is empty",
|
|
118
|
+
label,
|
|
119
|
+
i + 1
|
|
120
|
+
);
|
|
121
|
+
assert!(
|
|
122
|
+
is_balanced(block),
|
|
123
|
+
"{}: rust block {} has unbalanced delimiters:\\n{}",
|
|
124
|
+
label,
|
|
125
|
+
i + 1,
|
|
126
|
+
block
|
|
127
|
+
);
|
|
128
|
+
total_blocks += 1;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
assert!(
|
|
133
|
+
total_blocks > 0,
|
|
134
|
+
"no rust code blocks found in any README/REFERENCE doc"
|
|
135
|
+
);
|
|
136
|
+
}
|
|
137
|
+
`)
|
|
138
|
+
})
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
export {
|
|
143
|
+
ReadmeExamplesTest
|
|
144
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import { crateIdent } from './utility_rust'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
|
|
8
|
+
const { target, ctx$: { model } } = props
|
|
9
|
+
const rustcrate = crateIdent(model)
|
|
10
|
+
|
|
11
|
+
Content(`### Data as \`Value\`
|
|
12
|
+
|
|
13
|
+
The Rust SDK uses a single dynamic \`Value\` type throughout rather than a
|
|
14
|
+
typed struct per entity. \`Value\` is the vendored voxgig struct port (a
|
|
15
|
+
JSON-shaped enum: \`Str\`, \`Num\`, \`Bool\`, \`List\`, \`Map\`, \`Null\`,
|
|
16
|
+
\`Noval\`). This mirrors the dynamic nature of the API and keeps the SDK
|
|
17
|
+
flexible — no code generation is needed when the API schema changes.
|
|
18
|
+
|
|
19
|
+
Build request maps with the \`jo\` / \`ja\` helpers and read fields back with
|
|
20
|
+
\`getp\`; use \`to_map\` to safely coerce a value to a map.
|
|
21
|
+
|
|
22
|
+
### Crate structure
|
|
23
|
+
|
|
24
|
+
\`\`\`
|
|
25
|
+
${target.name}/
|
|
26
|
+
├── lib.rs -- Crate root (module decls + re-exports)
|
|
27
|
+
├── core/ -- Pipeline types, config, client (sdk.rs)
|
|
28
|
+
├── entity/ -- Per-entity clients (one module each)
|
|
29
|
+
├── feature/ -- Built-in features (base, test, log)
|
|
30
|
+
└── utility/ -- Utilities + the vendored voxgig struct port
|
|
31
|
+
\`\`\`
|
|
32
|
+
|
|
33
|
+
The public API is re-exported from the crate root, so \`use ${rustcrate}::{...}\`
|
|
34
|
+
reaches the SDK client, \`Value\`, and the \`jo\` / \`ja\` / \`getp\` helpers
|
|
35
|
+
directly. Import entity or utility modules only when needed.
|
|
36
|
+
|
|
37
|
+
`)
|
|
38
|
+
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
export {
|
|
43
|
+
ReadmeExplanation
|
|
44
|
+
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
nom,
|
|
8
|
+
} from '@voxgig/apidef'
|
|
9
|
+
|
|
10
|
+
import { crateIdent, rustVarName } from './utility_rust'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// A type-correct rust expression constructing a voxgig struct Value.
|
|
14
|
+
function rustLit(type: any): string {
|
|
15
|
+
const k = canonKey(type)
|
|
16
|
+
if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
|
|
17
|
+
if ('BOOLEAN' === k) return 'Value::Bool(true)'
|
|
18
|
+
if ('ARRAY' === k) return 'Value::empty_list()'
|
|
19
|
+
if ('OBJECT' === k) return 'Value::empty_map()'
|
|
20
|
+
return 'Value::str("example")'
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
|
|
25
|
+
const { target, ctx$: { model } } = props
|
|
26
|
+
|
|
27
|
+
const rustcrate = crateIdent(model)
|
|
28
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
29
|
+
// Pick an entity with a real op (prefer a read op). primaryOp is null only
|
|
30
|
+
// when NO entity exposes any op (a direct()-only SDK).
|
|
31
|
+
const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
|
|
32
|
+
const eName = exampleEntity ? nom(exampleEntity, 'Name') : 'Entity'
|
|
33
|
+
const eVar = exampleEntity ? rustVarName(exampleEntity.name) : 'entity'
|
|
34
|
+
const method = exampleEntity ? rustVarName(exampleEntity.name) : 'entity'
|
|
35
|
+
const idF = exampleEntity ? entityIdField(exampleEntity) : null
|
|
36
|
+
const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
|
|
37
|
+
let testArg = 'Value::Noval'
|
|
38
|
+
if (exampleEntity && isMatchOp) {
|
|
39
|
+
testArg = idF ? `jo(vec![("${idF}", Value::str("test01"))])` : 'Value::Noval'
|
|
40
|
+
} else if (exampleEntity && ('create' === primaryOp || 'update' === primaryOp)) {
|
|
41
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
42
|
+
.filter((it: any) => it.name !== idF && it.name !== 'id')
|
|
43
|
+
const required = items.filter((it: any) => !it.optional)
|
|
44
|
+
const chosen = required.length ? required : items.slice(0, 3)
|
|
45
|
+
testArg = 0 < chosen.length
|
|
46
|
+
? `jo(vec![${chosen.map((it: any) => `("${it.name}", ${rustLit(it.type)})`).join(', ')}])`
|
|
47
|
+
: 'Value::empty_map()'
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// The op-driven test-mode line. A direct()-only SDK shows a direct() call.
|
|
51
|
+
const testModeExample = primaryOp
|
|
52
|
+
? `// Entity ops return the bare record on Ok and Err on failure.
|
|
53
|
+
let ${eVar} = client.${method}(Value::Noval).${primaryOp}(${testArg}, Value::Noval).unwrap();
|
|
54
|
+
// ${eVar} contains the mock response record`
|
|
55
|
+
: `let result = client.direct(jo(vec![
|
|
56
|
+
("path", Value::str("/api/resource")),
|
|
57
|
+
("method", Value::str("GET")),
|
|
58
|
+
])).unwrap();
|
|
59
|
+
println!("{:?}", result);`
|
|
60
|
+
|
|
61
|
+
const apikeyEnvLine = isAuthActive(model)
|
|
62
|
+
? `\n${envName(model)}_APIKEY=<your-key>`
|
|
63
|
+
: ''
|
|
64
|
+
|
|
65
|
+
Content(`### Make a direct HTTP request
|
|
66
|
+
|
|
67
|
+
For endpoints not covered by entity methods:
|
|
68
|
+
|
|
69
|
+
\`\`\`rust
|
|
70
|
+
let result = client.direct(jo(vec![
|
|
71
|
+
("path", Value::str("/api/resource/{id}")),
|
|
72
|
+
("method", Value::str("GET")),
|
|
73
|
+
("params", jo(vec![("id", Value::str("example"))])),
|
|
74
|
+
])).unwrap();
|
|
75
|
+
|
|
76
|
+
if getp(&result, "ok") == Value::Bool(true) {
|
|
77
|
+
println!("{:?}", getp(&result, "status")); // 200
|
|
78
|
+
println!("{:?}", getp(&result, "data")); // response body
|
|
79
|
+
} else {
|
|
80
|
+
// A non-2xx response carries status + data (the error body); a
|
|
81
|
+
// transport-level failure carries err instead. Only one is present.
|
|
82
|
+
println!("{:?} {:?}", getp(&result, "status"), getp(&result, "err"));
|
|
83
|
+
}
|
|
84
|
+
\`\`\`
|
|
85
|
+
|
|
86
|
+
### Prepare a request without sending it
|
|
87
|
+
|
|
88
|
+
\`\`\`rust
|
|
89
|
+
// prepare() returns the fetch definition on Ok and Err on failure.
|
|
90
|
+
let fetchdef = client.prepare(jo(vec![
|
|
91
|
+
("path", Value::str("/api/resource/{id}")),
|
|
92
|
+
("method", Value::str("DELETE")),
|
|
93
|
+
("params", jo(vec![("id", Value::str("example"))])),
|
|
94
|
+
])).unwrap();
|
|
95
|
+
|
|
96
|
+
println!("{:?}", getp(&fetchdef, "url"));
|
|
97
|
+
println!("{:?}", getp(&fetchdef, "method"));
|
|
98
|
+
println!("{:?}", getp(&fetchdef, "headers"));
|
|
99
|
+
\`\`\`
|
|
100
|
+
|
|
101
|
+
### Use test mode
|
|
102
|
+
|
|
103
|
+
Create a mock client for unit testing — no server required:
|
|
104
|
+
|
|
105
|
+
\`\`\`rust
|
|
106
|
+
let client = test_sdk(Value::Noval, Value::Noval);
|
|
107
|
+
|
|
108
|
+
${testModeExample}
|
|
109
|
+
\`\`\`
|
|
110
|
+
|
|
111
|
+
### Point at a different server
|
|
112
|
+
|
|
113
|
+
Override the base URL to reach a local or staging server:
|
|
114
|
+
|
|
115
|
+
\`\`\`rust
|
|
116
|
+
let client = ${model.const.Name}SDK::new(jo(vec![
|
|
117
|
+
("base", Value::str("http://localhost:8080")),
|
|
118
|
+
]));
|
|
119
|
+
\`\`\`
|
|
120
|
+
|
|
121
|
+
### Run live tests
|
|
122
|
+
|
|
123
|
+
Create a \`.env.local\` file at the crate root:
|
|
124
|
+
|
|
125
|
+
\`\`\`
|
|
126
|
+
${envName(model)}_TEST_LIVE=TRUE${apikeyEnvLine}
|
|
127
|
+
\`\`\`
|
|
128
|
+
|
|
129
|
+
Then run:
|
|
130
|
+
|
|
131
|
+
\`\`\`bash
|
|
132
|
+
cd ${target.name} && cargo test
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
`)
|
|
136
|
+
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
export {
|
|
141
|
+
ReadmeHowto
|
|
142
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content, installCommand, isPublished, repoInfo } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import { crateName } from './utility_rust'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
|
|
8
|
+
const { target, ctx$ } = props
|
|
9
|
+
const { model } = ctx$
|
|
10
|
+
|
|
11
|
+
if (isPublished(model, target.name)) {
|
|
12
|
+
Content(`\`\`\`bash
|
|
13
|
+
${installCommand(model, target.name)}
|
|
14
|
+
\`\`\`
|
|
15
|
+
|
|
16
|
+
Or add it as a path dependency in your \`Cargo.toml\`:
|
|
17
|
+
|
|
18
|
+
\`\`\`toml
|
|
19
|
+
[dependencies]
|
|
20
|
+
${crateName(model)} = { path = "../${target.name}" }
|
|
21
|
+
\`\`\`
|
|
22
|
+
|
|
23
|
+
`)
|
|
24
|
+
return
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Publish pending: not yet on crates.io. Depend on the git release tag or
|
|
28
|
+
// on a local source checkout via a path dependency.
|
|
29
|
+
const { releasesUrl } = repoInfo(model)
|
|
30
|
+
Content(`This crate is not yet published to crates.io. Depend on it from the GitHub
|
|
31
|
+
release tag (\`${target.name}/vX.Y.Z\`, see [Releases](${releasesUrl})) or
|
|
32
|
+
from a source checkout by adding it to your \`Cargo.toml\`:
|
|
33
|
+
|
|
34
|
+
\`\`\`toml
|
|
35
|
+
[dependencies]
|
|
36
|
+
# From a source checkout:
|
|
37
|
+
${crateName(model)} = { path = "../${target.name}" }
|
|
38
|
+
|
|
39
|
+
# Or from the git release tag:
|
|
40
|
+
# ${crateName(model)} = { git = "<repo-url>", tag = "${target.name}/vX.Y.Z" }
|
|
41
|
+
\`\`\`
|
|
42
|
+
|
|
43
|
+
`)
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
export {
|
|
48
|
+
ReadmeInstall
|
|
49
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
} from '@voxgig/apidef'
|
|
8
|
+
|
|
9
|
+
import { rustVarName } from './utility_rust'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
const ReadmeIntro = cmp(function ReadmeIntro(props: any) {
|
|
13
|
+
const { target, ctx$: { model } } = props
|
|
14
|
+
const info = (model.main && model.main.kit && model.main.kit.info) || {}
|
|
15
|
+
const tagline = info.tagline || ''
|
|
16
|
+
|
|
17
|
+
Content(`# ${model.Name} ${target.title} SDK
|
|
18
|
+
|
|
19
|
+
${tagline}
|
|
20
|
+
|
|
21
|
+
The ${target.title} SDK for the ${model.Name} API — an entity-oriented client following idiomatic Rust conventions.
|
|
22
|
+
|
|
23
|
+
`)
|
|
24
|
+
|
|
25
|
+
// Emphasise the entity-oriented design: the SDK surfaces the API as
|
|
26
|
+
// capitalised, semantic Entities with a small, uniform verb set rather
|
|
27
|
+
// than raw URL paths and query strings. The example entity name is
|
|
28
|
+
// derived from the model, never hardcoded.
|
|
29
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
30
|
+
const exampleEntity = Object.values(entity || {})
|
|
31
|
+
.find((e: any) => e.active !== false) as any
|
|
32
|
+
const example = exampleEntity
|
|
33
|
+
? `for example \`client.${rustVarName(exampleEntity.name)}(Value::Noval)\` — each`
|
|
34
|
+
: 'each'
|
|
35
|
+
|
|
36
|
+
// Model-driven op list — only the operations the active entities actually
|
|
37
|
+
// expose (a read-only entity has just list+load); never claim
|
|
38
|
+
// create/update/remove exist when no entity has them.
|
|
39
|
+
const CANON_OPS = ['list', 'load', 'create', 'update', 'remove']
|
|
40
|
+
const opSet = new Set<string>()
|
|
41
|
+
Object.values(entity || {}).forEach((e: any) => {
|
|
42
|
+
if (!e || e.active === false) return
|
|
43
|
+
Object.keys(e.op || {}).forEach((o: string) => {
|
|
44
|
+
if (e.op[o] && e.op[o].active !== false) opSet.add(o)
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
const opNames = CANON_OPS.filter((o) => opSet.has(o))
|
|
48
|
+
.concat([...opSet].filter((o) => !CANON_OPS.includes(o)))
|
|
49
|
+
const opList = (opNames.length ? opNames : ['list', 'load'])
|
|
50
|
+
.map((o) => '`' + o + '`').join(', ')
|
|
51
|
+
|
|
52
|
+
Content(`The SDK exposes the API as capitalised, semantic **Entities** — ${example}
|
|
53
|
+
carrying a small, uniform set of operations (${opList}) instead of raw URL
|
|
54
|
+
paths and query strings. You work with named resources and verbs, which
|
|
55
|
+
keeps the cognitive load low.
|
|
56
|
+
|
|
57
|
+
> Other languages, the CLI, and MCP server live alongside this one — see
|
|
58
|
+
> the [top-level README](../README.md).
|
|
59
|
+
|
|
60
|
+
`)
|
|
61
|
+
})
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
export {
|
|
65
|
+
ReadmeIntro
|
|
66
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, each, Content, isAuthActive } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
} from '@voxgig/apidef'
|
|
8
|
+
|
|
9
|
+
import { crateIdent, rustVarName } from './utility_rust'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
const ReadmeModel = cmp(function ReadmeModel(props: any) {
|
|
13
|
+
const { target, ctx$: { model } } = props
|
|
14
|
+
|
|
15
|
+
const rustcrate = crateIdent(model)
|
|
16
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
17
|
+
const entityList = each(entity).filter((e: any) => e.active !== false)
|
|
18
|
+
|
|
19
|
+
// Model-driven op rows for the shared entity interface: emit a row only for
|
|
20
|
+
// operations at least one active entity actually exposes.
|
|
21
|
+
const opUnion = new Set<string>()
|
|
22
|
+
entityList.forEach((e: any) => Object.keys(e.op || {})
|
|
23
|
+
.forEach((o: string) => { if (e.op[o] && e.op[o].active !== false) opUnion.add(o) }))
|
|
24
|
+
const opRowDefs: Record<string, string> = {
|
|
25
|
+
load: '| `load` | `(reqmatch: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | Load a single entity by match criteria. |',
|
|
26
|
+
list: '| `list` | `(reqmatch: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | List entities matching the criteria (Ok is a `Value::List`). |',
|
|
27
|
+
create: '| `create` | `(reqdata: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | Create a new entity. |',
|
|
28
|
+
update: '| `update` | `(reqdata: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | Update an existing entity. |',
|
|
29
|
+
remove: '| `remove` | `(reqmatch: Value, ctrl: Value) -> Result<Value, ' + model.const.Name + 'Error>` | Remove an entity. |',
|
|
30
|
+
}
|
|
31
|
+
const opRows = ['load', 'list', 'create', 'update', 'remove']
|
|
32
|
+
.filter((o) => opUnion.has(o)).map((o) => opRowDefs[o]).join('\n')
|
|
33
|
+
|
|
34
|
+
const apikeyOptionRow = isAuthActive(model)
|
|
35
|
+
? '| `apikey` | `string` | API key for authentication. |\n'
|
|
36
|
+
: ''
|
|
37
|
+
|
|
38
|
+
Content(`### ${model.const.Name}SDK
|
|
39
|
+
|
|
40
|
+
\`\`\`rust
|
|
41
|
+
use ${rustcrate}::{${model.const.Name}SDK, Value};
|
|
42
|
+
|
|
43
|
+
let client = ${model.const.Name}SDK::new(options);
|
|
44
|
+
\`\`\`
|
|
45
|
+
|
|
46
|
+
Creates a new SDK client. \`options\` is a \`Value\` map (\`Value::Noval\` for
|
|
47
|
+
none) carrying any of the following keys:
|
|
48
|
+
|
|
49
|
+
| Option | Value type | Description |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
${apikeyOptionRow}| \`base\` | \`string\` | Base URL of the API server. |
|
|
52
|
+
| \`prefix\` | \`string\` | URL path prefix prepended to all requests. |
|
|
53
|
+
| \`suffix\` | \`string\` | URL path suffix appended to all requests. |
|
|
54
|
+
| \`feature\` | \`map\` | Feature activation flags. |
|
|
55
|
+
| \`system\` | \`map\` | System overrides (e.g. a custom fetcher). |
|
|
56
|
+
|
|
57
|
+
### test_sdk
|
|
58
|
+
|
|
59
|
+
\`\`\`rust
|
|
60
|
+
use ${rustcrate}::{test_sdk, Value};
|
|
61
|
+
|
|
62
|
+
let client = test_sdk(testopts, sdkopts);
|
|
63
|
+
\`\`\`
|
|
64
|
+
|
|
65
|
+
Creates a test-mode client with mock transport. Both arguments may be
|
|
66
|
+
\`Value::Noval\`.
|
|
67
|
+
|
|
68
|
+
### ${model.const.Name}SDK methods
|
|
69
|
+
|
|
70
|
+
| Method | Signature | Description |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| \`options_map\` | \`() -> Value\` | Deep copy of the current SDK options. |
|
|
73
|
+
| \`get_utility\` | \`() -> Rc<Utility>\` | Copy of the SDK utility object. |
|
|
74
|
+
| \`prepare\` | \`(fetchargs: Value) -> Result<Value, ${model.const.Name}Error>\` | Build an HTTP request definition without sending. |
|
|
75
|
+
| \`direct\` | \`(fetchargs: Value) -> Result<Value, ${model.const.Name}Error>\` | Build and send an HTTP request. \`Ok\` is a result map (branch on \`ok\`). |
|
|
76
|
+
`)
|
|
77
|
+
|
|
78
|
+
each(entityList, (ent: any) => {
|
|
79
|
+
const article = /^[aeiou]/i.test(ent.Name) ? 'an' : 'a'
|
|
80
|
+
Content(`| \`${rustVarName(ent.name)}\` | \`(entopts: Value) -> Rc<${ent.Name}Entity>\` | Create ${article} ${ent.Name} entity instance. |
|
|
81
|
+
`)
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
Content(`
|
|
85
|
+
### Entity interface
|
|
86
|
+
|
|
87
|
+
All entities share the same interface.
|
|
88
|
+
|
|
89
|
+
| Method | Signature | Description |
|
|
90
|
+
| --- | --- | --- |
|
|
91
|
+
${opRows}
|
|
92
|
+
| \`data\` | \`(args: Option<&Value>) -> Value\` | Get entity data (pass \`Some(&map)\` to set). |
|
|
93
|
+
| \`matchv\` | \`(args: Option<&Value>) -> Value\` | Get entity match criteria (pass \`Some(&map)\` to set). |
|
|
94
|
+
| \`make\` | \`() -> Rc<dyn Entity>\` | Create a new instance with the same options. |
|
|
95
|
+
| \`get_name\` | \`() -> String\` | Return the entity name. |
|
|
96
|
+
|
|
97
|
+
### Result shape
|
|
98
|
+
|
|
99
|
+
Entity operations return \`Result<Value, ${model.const.Name}Error>\` — the
|
|
100
|
+
bare result data on \`Ok\` (a \`Value::Map\` for single-entity ops, a
|
|
101
|
+
\`Value::List\` for \`list\`) and the branded error on \`Err\`.
|
|
102
|
+
|
|
103
|
+
The \`direct()\` escape hatch resolves to \`Ok\` even on a non-2xx response —
|
|
104
|
+
it returns a result \`Value::Map\` you branch on via \`getp(&result, "ok")\`:
|
|
105
|
+
|
|
106
|
+
| Key | Type | Description |
|
|
107
|
+
| --- | --- | --- |
|
|
108
|
+
| \`ok\` | \`bool\` | \`true\` if the HTTP status is 2xx. |
|
|
109
|
+
| \`status\` | \`number\` | HTTP status code. |
|
|
110
|
+
| \`headers\` | \`map\` | Response headers. |
|
|
111
|
+
| \`data\` | \`any\` | Parsed JSON response body. |
|
|
112
|
+
|
|
113
|
+
On error, \`ok\` is \`false\` and \`err\` carries the error value.
|
|
114
|
+
|
|
115
|
+
`)
|
|
116
|
+
|
|
117
|
+
// Entities summary
|
|
118
|
+
Content(`### Entities
|
|
119
|
+
|
|
120
|
+
`)
|
|
121
|
+
each(entityList, (ent: any) => {
|
|
122
|
+
const fields = ent.fields || []
|
|
123
|
+
const opnames = Object.keys(ent.op || {})
|
|
124
|
+
const ops = ent.op || {}
|
|
125
|
+
const points = each(ops).map((op: any) =>
|
|
126
|
+
op.points ? each(op.points) : []
|
|
127
|
+
).flat()
|
|
128
|
+
const path = points.length > 0 ? (points[0] as any).orig || '' : ''
|
|
129
|
+
|
|
130
|
+
Content(`#### ${ent.Name}
|
|
131
|
+
|
|
132
|
+
| Field | Description |
|
|
133
|
+
| --- | --- |
|
|
134
|
+
`)
|
|
135
|
+
each(fields, (field: any) => {
|
|
136
|
+
Content(`| \`${field.name}\` | ${field.short || ''} |
|
|
137
|
+
`)
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
Content(`
|
|
141
|
+
Operations: ${opnames.map((n: string) => n.charAt(0).toUpperCase() + n.slice(1)).join(', ')}.
|
|
142
|
+
|
|
143
|
+
API path: \`${path}\`
|
|
144
|
+
|
|
145
|
+
`)
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
export {
|
|
152
|
+
ReadmeModel
|
|
153
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, each, Content, envName, isAuthActive } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
const ReadmeOptions = cmp(function ReadmeOptions(props: any) {
|
|
6
|
+
const { target } = props
|
|
7
|
+
const { model } = props.ctx$
|
|
8
|
+
|
|
9
|
+
const publishedOptions = each(target.options).filter((option: any) =>
|
|
10
|
+
option.publish && ('apikey' !== option.name || isAuthActive(model)))
|
|
11
|
+
if (0 === publishedOptions.length) {
|
|
12
|
+
return
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
Content(`
|
|
16
|
+
|
|
17
|
+
## Options
|
|
18
|
+
|
|
19
|
+
Pass an options map when creating a client instance:
|
|
20
|
+
|
|
21
|
+
`)
|
|
22
|
+
|
|
23
|
+
Content(`\`\`\`rust
|
|
24
|
+
let client = ${model.Name}SDK::new(jo(vec![
|
|
25
|
+
`)
|
|
26
|
+
|
|
27
|
+
publishedOptions.map((option: any) => {
|
|
28
|
+
if ('apikey' === option.name) {
|
|
29
|
+
Content(` ("${option.name}", Value::str(std::env::var("${envName(model)}_APIKEY").unwrap_or_default())),
|
|
30
|
+
`)
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const val = option.kind === 'string' ? 'Value::str("...")' : 'Value::Noval'
|
|
34
|
+
Content(` // ("${option.name}", ${val}),
|
|
35
|
+
`)
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
Content(`]));
|
|
40
|
+
\`\`\`
|
|
41
|
+
|
|
42
|
+
`)
|
|
43
|
+
|
|
44
|
+
Content(`| Option | Type | Description |
|
|
45
|
+
| --- | --- | --- |
|
|
46
|
+
`)
|
|
47
|
+
|
|
48
|
+
publishedOptions.map((option: any) => {
|
|
49
|
+
Content(`| \`${option.name}\` | \`${option.kind}\` | ${option.short} |
|
|
50
|
+
`)
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
Content(`
|
|
54
|
+
`)
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
export {
|
|
59
|
+
ReadmeOptions
|
|
60
|
+
}
|