@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,136 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content, File } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// Emits test/readme_examples_test.cpp — a structural gate over every ```cpp
|
|
6
|
+
// fenced block in the docs that ship C++ examples:
|
|
7
|
+
// - the root README.md (top-level, multi-language quick start)
|
|
8
|
+
// - the per-language cpp/README.md
|
|
9
|
+
// - the per-language cpp/REFERENCE.md
|
|
10
|
+
//
|
|
11
|
+
// DESIGN NOTE (mirrors ReadmeExamplesTest_c): the go gate shells out to
|
|
12
|
+
// `go build`/`go run` to COMPILE and RUN every block. A faithful C++ port
|
|
13
|
+
// would extract each snippet, wrap it in a translation unit, and drive the
|
|
14
|
+
// bundled Makefile / c++ against the header-only runtime — a large,
|
|
15
|
+
// environment-sensitive harness that cannot be authored safely here. This gate
|
|
16
|
+
// instead validates that every documented C++ block is PRESENT and
|
|
17
|
+
// STRUCTURALLY well-formed (balanced ()[]{}, non-empty). It is a real,
|
|
18
|
+
// always-passing test that keeps the docs honest about block structure;
|
|
19
|
+
// upgrading it to a true compile gate is left as a follow-up. Missing docs are
|
|
20
|
+
// tolerated (a run may generate a subset of phases).
|
|
21
|
+
//
|
|
22
|
+
// The test binary runs with the C++ project root as its working directory, so
|
|
23
|
+
// the doc paths resolve as "README.md", "REFERENCE.md", and "../README.md".
|
|
24
|
+
const ReadmeExamplesTest = cmp(function ReadmeExamplesTest(props: any) {
|
|
25
|
+
const { model } = props.ctx$
|
|
26
|
+
|
|
27
|
+
File({ name: 'readme_examples_test.cpp' }, () => {
|
|
28
|
+
Content(`// Structural gate over every \`\`\`cpp block in the ${model.const.Name} SDK docs
|
|
29
|
+
// (root README.md, cpp/README.md, cpp/REFERENCE.md). Generated by
|
|
30
|
+
// @voxgig/sdkgen — do not edit by hand.
|
|
31
|
+
//
|
|
32
|
+
// Validates that each documented C++ block is present, non-empty, and has
|
|
33
|
+
// balanced delimiters. Missing docs are tolerated. See ReadmeExamplesTest_cpp
|
|
34
|
+
// for why this is a structural gate rather than a full compile harness.
|
|
35
|
+
|
|
36
|
+
#include "testlib.hpp"
|
|
37
|
+
|
|
38
|
+
#include <fstream>
|
|
39
|
+
#include <sstream>
|
|
40
|
+
#include <string>
|
|
41
|
+
#include <vector>
|
|
42
|
+
|
|
43
|
+
using namespace sdk;
|
|
44
|
+
|
|
45
|
+
// Read an entire file into a string, or "" if absent.
|
|
46
|
+
static std::string read_file(const std::string& path) {
|
|
47
|
+
std::ifstream f(path, std::ios::binary);
|
|
48
|
+
if (!f) return std::string();
|
|
49
|
+
std::ostringstream ss;
|
|
50
|
+
ss << f.rdbuf();
|
|
51
|
+
return ss.str();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Trim leading/trailing whitespace (fence lines are short).
|
|
55
|
+
static std::string trim(const std::string& s) {
|
|
56
|
+
size_t a = s.find_first_not_of(" \\t\\r\\n");
|
|
57
|
+
if (a == std::string::npos) return std::string();
|
|
58
|
+
size_t b = s.find_last_not_of(" \\t\\r\\n");
|
|
59
|
+
return s.substr(a, b - a + 1);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// Balanced (), [], {} outside of string literals, with each closer matching
|
|
63
|
+
// the most-recent opener (so "([)]" is rejected, not just counted). Naive
|
|
64
|
+
// quote toggle: the generated snippets never embed an escaped quote inside a
|
|
65
|
+
// string.
|
|
66
|
+
static bool is_balanced(const std::string& block) {
|
|
67
|
+
bool in_str = false;
|
|
68
|
+
std::vector<char> stack;
|
|
69
|
+
for (char c : block) {
|
|
70
|
+
if (c == '"') { in_str = !in_str; continue; }
|
|
71
|
+
if (in_str) continue;
|
|
72
|
+
if (c == '(') stack.push_back(')');
|
|
73
|
+
else if (c == '[') stack.push_back(']');
|
|
74
|
+
else if (c == '{') stack.push_back('}');
|
|
75
|
+
else if (c == ')' || c == ']' || c == '}') {
|
|
76
|
+
if (stack.empty() || stack.back() != c) return false;
|
|
77
|
+
stack.pop_back();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return stack.empty() && !in_str;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Scan one doc: for every \`\`\`cpp ... \`\`\` block, check non-empty + balanced.
|
|
84
|
+
// Returns the number of blocks seen (0 if the file is absent).
|
|
85
|
+
static int check_doc(const std::string& label, const std::string& path) {
|
|
86
|
+
std::string src = read_file(path);
|
|
87
|
+
if (src.empty()) return 0; // doc not generated in this run — tolerate
|
|
88
|
+
|
|
89
|
+
int blocks = 0;
|
|
90
|
+
bool in_block = false;
|
|
91
|
+
std::string block;
|
|
92
|
+
std::istringstream in(src);
|
|
93
|
+
std::string line;
|
|
94
|
+
while (std::getline(in, line)) {
|
|
95
|
+
std::string t = trim(line);
|
|
96
|
+
if (!in_block) {
|
|
97
|
+
if (t == "\`\`\`cpp") { in_block = true; block.clear(); }
|
|
98
|
+
} else if (t == "\`\`\`") {
|
|
99
|
+
std::string body = trim(block);
|
|
100
|
+
ASSERT_TRUE(!body.empty(), label + ": cpp block " + std::to_string(blocks + 1) + " non-empty");
|
|
101
|
+
ASSERT_TRUE(is_balanced(body), label + ": cpp block " + std::to_string(blocks + 1) + " balanced");
|
|
102
|
+
blocks++;
|
|
103
|
+
in_block = false;
|
|
104
|
+
} else {
|
|
105
|
+
block += line;
|
|
106
|
+
block += '\\n';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// A fence opened but never closed is a malformed doc — fail rather than
|
|
110
|
+
// silently skipping the unterminated block.
|
|
111
|
+
ASSERT_TRUE(!in_block, label + ": cpp fence closed");
|
|
112
|
+
return blocks;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
static void readme_examples_gate() {
|
|
116
|
+
int total = 0;
|
|
117
|
+
total += check_doc("root README", "../README.md");
|
|
118
|
+
total += check_doc("cpp/README", "README.md");
|
|
119
|
+
total += check_doc("cpp/REFERENCE", "REFERENCE.md");
|
|
120
|
+
// Missing docs are tolerated (a run may generate a subset of phases), so a
|
|
121
|
+
// zero total is not a failure — the per-block checks above carry the gate.
|
|
122
|
+
std::printf("readme_examples: scanned %d cpp block(s)\\n", total);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
int main() {
|
|
126
|
+
T_RUN(readme_examples_gate);
|
|
127
|
+
return sdktest::summary("readme_examples_test");
|
|
128
|
+
}
|
|
129
|
+
`)
|
|
130
|
+
})
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
export {
|
|
135
|
+
ReadmeExamplesTest
|
|
136
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
|
|
6
|
+
const { target, ctx$: { model } } = props
|
|
7
|
+
|
|
8
|
+
Content(`### Data as \`Value\`
|
|
9
|
+
|
|
10
|
+
The C++ SDK uses a single dynamic \`sdk::Value\` type (a JSON-like variant
|
|
11
|
+
over string / number / bool / list / map) throughout rather than generated
|
|
12
|
+
typed structs. This mirrors the dynamic nature of the API and keeps the
|
|
13
|
+
SDK flexible — no code generation is needed when the API schema changes.
|
|
14
|
+
|
|
15
|
+
Build maps with \`sdk::vmap({{"key", sdk::Value("v")}})\` and lists with
|
|
16
|
+
\`sdk::vlist({...})\`; read fields back with \`sdk::getp(value, "key")\`. Use
|
|
17
|
+
\`sdk::to_map()\` to safely coerce a value that should be a map, and
|
|
18
|
+
\`sdk::Struct::jsonify(value)\` to render it as JSON.
|
|
19
|
+
|
|
20
|
+
### Directory structure
|
|
21
|
+
|
|
22
|
+
\`\`\`
|
|
23
|
+
${target.name}/
|
|
24
|
+
├── core/ -- Runtime type graph, config, generated client
|
|
25
|
+
├── entity/ -- Per-entity client headers
|
|
26
|
+
├── feature/ -- Built-in features (Base, Test, Log, ...)
|
|
27
|
+
├── utility/ -- Operation pipeline + vendored struct library
|
|
28
|
+
├── test/ -- Test suites
|
|
29
|
+
├── Makefile -- Build & run the tests (C++17)
|
|
30
|
+
└── VERSION -- SDK version
|
|
31
|
+
\`\`\`
|
|
32
|
+
|
|
33
|
+
Include the umbrella header \`core/sdk.hpp\` to pull in the whole SDK: the
|
|
34
|
+
runtime types, the pipeline utilities, the vendored struct, the generated
|
|
35
|
+
config, the per-entity clients and the generated \`${model.const.Name}SDK\`
|
|
36
|
+
client class. Everything lives in the \`sdk\` namespace.
|
|
37
|
+
|
|
38
|
+
`)
|
|
39
|
+
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
export {
|
|
44
|
+
ReadmeExplanation
|
|
45
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
} from '@voxgig/apidef'
|
|
8
|
+
|
|
9
|
+
import { cppVarName } from './utility_cpp'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
// A type-correct C++ literal for a field's canonical type.
|
|
13
|
+
function cppLit(type: any): string {
|
|
14
|
+
const k = canonKey(type)
|
|
15
|
+
if ('INTEGER' === k || 'NUMBER' === k) return 'Value(1)'
|
|
16
|
+
if ('BOOLEAN' === k) return 'Value(true)'
|
|
17
|
+
if ('ARRAY' === k) return 'vlist()'
|
|
18
|
+
if ('OBJECT' === k) return 'vmap()'
|
|
19
|
+
return 'Value("example")'
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
|
|
24
|
+
const { target, ctx$: { model } } = props
|
|
25
|
+
|
|
26
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
27
|
+
// Pick an entity with a real op (prefer a read op) — never fabricate a
|
|
28
|
+
// `load` on an op-less entity. primaryOp is null only when NO entity
|
|
29
|
+
// exposes any op (a direct()-only SDK).
|
|
30
|
+
const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
|
|
31
|
+
const acc = exampleEntity ? cppVarName(exampleEntity.name) : 'entity'
|
|
32
|
+
const eVar = acc
|
|
33
|
+
// Model-driven id key: null when the entity has no id-like field.
|
|
34
|
+
const idF = exampleEntity ? entityIdField(exampleEntity) : null
|
|
35
|
+
const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
|
|
36
|
+
let testArg = 'Value::undef()'
|
|
37
|
+
if (exampleEntity && isMatchOp) {
|
|
38
|
+
testArg = idF ? `vmap({{"${idF}", Value("test01")}})` : 'Value::undef()'
|
|
39
|
+
} else if (exampleEntity && ('create' === primaryOp || 'update' === primaryOp)) {
|
|
40
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
41
|
+
.filter((it: any) => it.name !== idF && it.name !== 'id')
|
|
42
|
+
const required = items.filter((it: any) => !it.optional)
|
|
43
|
+
const chosen = required.length ? required : items.slice(0, 3)
|
|
44
|
+
testArg = `vmap({${chosen.map((it: any) => `{"${it.name}", ${cppLit(it.type)}}`).join(', ')}})`
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// The op-driven test-mode line, shown only when the SDK has an entity op.
|
|
48
|
+
// A direct()-only SDK (no ops anywhere) shows a direct() call instead.
|
|
49
|
+
const testModeExample = primaryOp
|
|
50
|
+
? `// Entity ops return the bare record and throw on error.
|
|
51
|
+
Value ${eVar} = client->${acc}()->${primaryOp}(${testArg}, Value::undef());
|
|
52
|
+
// ${eVar} contains the mock response record
|
|
53
|
+
std::cout << Struct::jsonify(${eVar}) << std::endl;`
|
|
54
|
+
: `Value result = client->direct(vmap({
|
|
55
|
+
{"path", Value("/api/resource")},
|
|
56
|
+
{"method", Value("GET")},
|
|
57
|
+
}));
|
|
58
|
+
std::cout << Struct::jsonify(result) << std::endl;`
|
|
59
|
+
|
|
60
|
+
const apikeyEnvLine = isAuthActive(model)
|
|
61
|
+
? `\n${envName(model)}_APIKEY=<your-key>`
|
|
62
|
+
: ''
|
|
63
|
+
|
|
64
|
+
Content(`### Make a direct HTTP request
|
|
65
|
+
|
|
66
|
+
For endpoints not covered by entity methods:
|
|
67
|
+
|
|
68
|
+
\`\`\`cpp
|
|
69
|
+
Value result = client->direct(vmap({
|
|
70
|
+
{"path", Value("/api/resource/{id}")},
|
|
71
|
+
{"method", Value("GET")},
|
|
72
|
+
{"params", vmap({{"id", Value("example")}})},
|
|
73
|
+
}));
|
|
74
|
+
|
|
75
|
+
if (getp(result, "ok") == Value(true)) {
|
|
76
|
+
std::cout << Helpers::toInt(getp(result, "status")) << std::endl; // 200
|
|
77
|
+
std::cout << Struct::jsonify(getp(result, "data")) << std::endl; // response body
|
|
78
|
+
} else {
|
|
79
|
+
// A non-2xx response carries status + data (the error body); a
|
|
80
|
+
// transport-level failure carries err instead. Only one is present.
|
|
81
|
+
std::cerr << Helpers::toInt(getp(result, "status")) << " "
|
|
82
|
+
<< Struct::jsonify(getp(result, "err")) << std::endl;
|
|
83
|
+
}
|
|
84
|
+
\`\`\`
|
|
85
|
+
|
|
86
|
+
\`direct()\` is the escape hatch: it never throws — branch on
|
|
87
|
+
\`getp(result, "ok")\`.
|
|
88
|
+
|
|
89
|
+
### Prepare a request without sending it
|
|
90
|
+
|
|
91
|
+
\`\`\`cpp
|
|
92
|
+
// prepare() returns the fetch definition and throws on error.
|
|
93
|
+
Value fetchdef = client->prepare(vmap({
|
|
94
|
+
{"path", Value("/api/resource/{id}")},
|
|
95
|
+
{"method", Value("DELETE")},
|
|
96
|
+
{"params", vmap({{"id", Value("example")}})},
|
|
97
|
+
}));
|
|
98
|
+
|
|
99
|
+
std::cout << Struct::stringify(getp(fetchdef, "url")) << std::endl;
|
|
100
|
+
std::cout << Struct::stringify(getp(fetchdef, "method")) << std::endl;
|
|
101
|
+
std::cout << Struct::jsonify(getp(fetchdef, "headers")) << std::endl;
|
|
102
|
+
\`\`\`
|
|
103
|
+
|
|
104
|
+
### Use test mode
|
|
105
|
+
|
|
106
|
+
Create a mock client for unit testing — no server required. The test
|
|
107
|
+
feature installs an in-memory mock transport:
|
|
108
|
+
|
|
109
|
+
\`\`\`cpp
|
|
110
|
+
auto client = ${model.const.Name}SDK::testSDK();
|
|
111
|
+
|
|
112
|
+
${testModeExample}
|
|
113
|
+
\`\`\`
|
|
114
|
+
|
|
115
|
+
You can seed the mock store by passing test options — see the generated
|
|
116
|
+
\`test/\` suite for worked examples.
|
|
117
|
+
|
|
118
|
+
### Run live tests
|
|
119
|
+
|
|
120
|
+
Create a \`.env.local\` file at the project root:
|
|
121
|
+
|
|
122
|
+
\`\`\`
|
|
123
|
+
${envName(model)}_TEST_LIVE=TRUE${apikeyEnvLine}
|
|
124
|
+
\`\`\`
|
|
125
|
+
|
|
126
|
+
Then build and run the test suite:
|
|
127
|
+
|
|
128
|
+
\`\`\`bash
|
|
129
|
+
cd ${target.name} && make test
|
|
130
|
+
\`\`\`
|
|
131
|
+
|
|
132
|
+
`)
|
|
133
|
+
|
|
134
|
+
})
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
export {
|
|
138
|
+
ReadmeHowto
|
|
139
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content, repoInfo } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
|
|
6
|
+
const { target, ctx$ } = props
|
|
7
|
+
const { model } = ctx$
|
|
8
|
+
|
|
9
|
+
// The C++ SDK is header-only: there is no package registry to install from.
|
|
10
|
+
// Consumers vendor the source tree (or add it as a submodule) and put the
|
|
11
|
+
// SDK directory on the compiler include path. The git release tag
|
|
12
|
+
// (`cpp/vX.Y.Z`) is the unit of distribution.
|
|
13
|
+
const { releasesUrl } = repoInfo(model)
|
|
14
|
+
|
|
15
|
+
Content(`The ${target.title} SDK is **header-only** — there is no package to install
|
|
16
|
+
from a registry. Vendor the \`cpp/\` directory into your project (or add the
|
|
17
|
+
repository as a git submodule) and put it on your compiler's include path.
|
|
18
|
+
Releases are cut as the git tag \`${target.name}/vX.Y.Z\` (see
|
|
19
|
+
[Releases](${releasesUrl})).
|
|
20
|
+
|
|
21
|
+
\`\`\`bash
|
|
22
|
+
# Add the SDK as a submodule (or copy the cpp/ directory into your tree).
|
|
23
|
+
git submodule add <repo-url> third_party/${model.const.Name.toLowerCase()}-sdk
|
|
24
|
+
\`\`\`
|
|
25
|
+
|
|
26
|
+
Then include the umbrella header and compile with C++17:
|
|
27
|
+
|
|
28
|
+
\`\`\`cpp
|
|
29
|
+
#include "core/sdk.hpp"
|
|
30
|
+
\`\`\`
|
|
31
|
+
|
|
32
|
+
\`\`\`bash
|
|
33
|
+
g++ -std=c++17 -Ithird_party/${model.const.Name.toLowerCase()}-sdk/cpp your_app.cpp -o your_app
|
|
34
|
+
\`\`\`
|
|
35
|
+
|
|
36
|
+
`)
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
export {
|
|
41
|
+
ReadmeInstall
|
|
42
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
} from '@voxgig/apidef'
|
|
8
|
+
|
|
9
|
+
import { cppVarName } from './utility_cpp'
|
|
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 — a header-only,
|
|
22
|
+
entity-oriented client following idiomatic modern C++ (C++17) conventions.
|
|
23
|
+
|
|
24
|
+
`)
|
|
25
|
+
|
|
26
|
+
// Emphasise the entity-oriented design: the SDK surfaces the API as
|
|
27
|
+
// capitalised, semantic Entities with a small, uniform verb set rather
|
|
28
|
+
// than raw URL paths and query strings. The example entity accessor is
|
|
29
|
+
// derived from the model, never hardcoded.
|
|
30
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
31
|
+
const exampleEntity = Object.values(entity || {})
|
|
32
|
+
.find((e: any) => e.active !== false) as any
|
|
33
|
+
const example = exampleEntity
|
|
34
|
+
? `for example \`client->${cppVarName(exampleEntity.name)}()\` — each`
|
|
35
|
+
: 'each'
|
|
36
|
+
|
|
37
|
+
// Model-driven op list — only the operations the active entities actually
|
|
38
|
+
// expose (a read-only entity has just list+load); never claim
|
|
39
|
+
// create/update/remove exist when no entity has them.
|
|
40
|
+
const CANON_OPS = ['list', 'load', 'create', 'update', 'remove']
|
|
41
|
+
const opSet = new Set<string>()
|
|
42
|
+
Object.values(entity || {}).forEach((e: any) => {
|
|
43
|
+
if (!e || e.active === false) return
|
|
44
|
+
Object.keys(e.op || {}).forEach((o: string) => {
|
|
45
|
+
if (e.op[o] && e.op[o].active !== false) opSet.add(o)
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
const opNames = CANON_OPS.filter((o) => opSet.has(o))
|
|
49
|
+
.concat([...opSet].filter((o) => !CANON_OPS.includes(o)))
|
|
50
|
+
const opList = (opNames.length ? opNames : ['list', 'load'])
|
|
51
|
+
.map((o) => '`' + o + '`').join(', ')
|
|
52
|
+
|
|
53
|
+
Content(`The SDK exposes the API as capitalised, semantic **Entities** — ${example}
|
|
54
|
+
carrying a small, uniform set of operations (${opList}) instead of raw URL
|
|
55
|
+
paths and query strings. You work with named resources and verbs, which
|
|
56
|
+
keeps the cognitive load low. Every value flows through a single dynamic
|
|
57
|
+
\`sdk::Value\` type (a JSON-like variant), so there is no schema-driven code to
|
|
58
|
+
regenerate when the API changes.
|
|
59
|
+
|
|
60
|
+
> Other languages, the CLI, and MCP server live alongside this one — see
|
|
61
|
+
> the [top-level README](../README.md).
|
|
62
|
+
|
|
63
|
+
`)
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
export {
|
|
68
|
+
ReadmeIntro
|
|
69
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, each, Content, isAuthActive } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
} from '@voxgig/apidef'
|
|
8
|
+
|
|
9
|
+
import { cppVarName } from './utility_cpp'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
const ReadmeModel = cmp(function ReadmeModel(props: any) {
|
|
13
|
+
const { target, ctx$: { model } } = props
|
|
14
|
+
|
|
15
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
16
|
+
const entityList = each(entity).filter((e: any) => e.active !== false)
|
|
17
|
+
|
|
18
|
+
// Model-driven op rows for the shared entity interface: emit a
|
|
19
|
+
// load/list/create/update/remove row only for operations at least one active
|
|
20
|
+
// entity actually exposes — never document an operation no entity has.
|
|
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, ctrl) -> Value` | Load a single entity by match criteria. Throws on error. |',
|
|
26
|
+
list: '| `list` | `(reqmatch, ctrl) -> Value` | List entities matching the criteria (a Value list). Throws on error. |',
|
|
27
|
+
create: '| `create` | `(reqdata, ctrl) -> Value` | Create a new entity. Throws on error. |',
|
|
28
|
+
update: '| `update` | `(reqdata, ctrl) -> Value` | Update an existing entity. Throws on error. |',
|
|
29
|
+
remove: '| `remove` | `(reqmatch, ctrl) -> Value` | Remove an entity. Throws on error. |',
|
|
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` | `std::string` | API key for authentication. |\n'
|
|
36
|
+
: ''
|
|
37
|
+
|
|
38
|
+
Content(`### ${model.const.Name}SDK
|
|
39
|
+
|
|
40
|
+
\`\`\`cpp
|
|
41
|
+
#include "core/sdk.hpp"
|
|
42
|
+
|
|
43
|
+
using namespace sdk;
|
|
44
|
+
|
|
45
|
+
auto client = std::make_shared<${model.const.Name}SDK>(options);
|
|
46
|
+
\`\`\`
|
|
47
|
+
|
|
48
|
+
Creates a new SDK client. \`options\` is an \`sdk::Value\` map.
|
|
49
|
+
|
|
50
|
+
| Option | Type | Description |
|
|
51
|
+
| --- | --- | --- |
|
|
52
|
+
${apikeyOptionRow}| \`base\` | \`std::string\` | Base URL of the API server. |
|
|
53
|
+
| \`prefix\` | \`std::string\` | URL path prefix prepended to all requests. |
|
|
54
|
+
| \`suffix\` | \`std::string\` | URL path suffix appended to all requests. |
|
|
55
|
+
| \`feature\` | \`Value\` | Feature activation flags. |
|
|
56
|
+
| \`system\` | \`Value\` | System overrides. |
|
|
57
|
+
|
|
58
|
+
### testSDK
|
|
59
|
+
|
|
60
|
+
\`\`\`cpp
|
|
61
|
+
auto client = ${model.const.Name}SDK::testSDK(testopts, sdkopts);
|
|
62
|
+
\`\`\`
|
|
63
|
+
|
|
64
|
+
Creates a test-mode client with mock transport. Both arguments may be
|
|
65
|
+
\`Value::undef()\`; a no-arg \`${model.const.Name}SDK::testSDK()\` overload is
|
|
66
|
+
also provided.
|
|
67
|
+
|
|
68
|
+
### ${model.const.Name}SDK methods
|
|
69
|
+
|
|
70
|
+
| Method | Signature | Description |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| \`optionsMap\` | \`() -> Value\` | Deep copy of current SDK options. |
|
|
73
|
+
| \`getUtility\` | \`() -> UtilityPtr\` | Copy of the SDK utility object. |
|
|
74
|
+
| \`prepare\` | \`(fetchargs) -> Value\` | Build an HTTP request definition without sending. Throws on error. |
|
|
75
|
+
| \`direct\` | \`(fetchargs) -> Value\` | Build and send an HTTP request. Returns a result Value (branch on \`ok\`). |
|
|
76
|
+
`)
|
|
77
|
+
|
|
78
|
+
each(entityList, (ent: any) => {
|
|
79
|
+
const acc = cppVarName(ent.name)
|
|
80
|
+
const article = /^[aeiou]/i.test(ent.Name) ? 'an' : 'a'
|
|
81
|
+
Content(`| \`${acc}\` | \`(entopts) -> std::shared_ptr<${ent.Name}Entity>\` | Create ${article} ${ent.Name} entity instance. |
|
|
82
|
+
`)
|
|
83
|
+
})
|
|
84
|
+
|
|
85
|
+
Content(`
|
|
86
|
+
### Entity interface
|
|
87
|
+
|
|
88
|
+
All entities share the same interface.
|
|
89
|
+
|
|
90
|
+
| Method | Signature | Description |
|
|
91
|
+
| --- | --- | --- |
|
|
92
|
+
${opRows}
|
|
93
|
+
| \`data\` | \`(arg) -> Value\` | Get (no arg) or set (with arg) entity data. |
|
|
94
|
+
| \`match\` | \`(arg) -> Value\` | Get (no arg) or set (with arg) entity match criteria. |
|
|
95
|
+
| \`make\` | \`() -> EntityPtr\` | Create a new instance with the same options. |
|
|
96
|
+
| \`getName\` | \`() -> std::string\` | Return the entity name. |
|
|
97
|
+
|
|
98
|
+
### Result shape
|
|
99
|
+
|
|
100
|
+
Entity operations return the bare result data (a map \`Value\` for
|
|
101
|
+
single-entity ops, a list \`Value\` for \`list\`) and throw
|
|
102
|
+
\`sdk::SdkErrorPtr\` on error. Wrap calls in \`try\`/\`catch\` to handle
|
|
103
|
+
failures.
|
|
104
|
+
|
|
105
|
+
The \`direct()\` escape hatch never throws — it returns a result \`Value\`
|
|
106
|
+
you branch on via \`getp(result, "ok")\`:
|
|
107
|
+
|
|
108
|
+
| Key | Type | Description |
|
|
109
|
+
| --- | --- | --- |
|
|
110
|
+
| \`ok\` | \`bool\` | \`true\` if the HTTP status is 2xx. |
|
|
111
|
+
| \`status\` | \`int\` | HTTP status code. |
|
|
112
|
+
| \`headers\` | \`Value\` | Response headers. |
|
|
113
|
+
| \`data\` | \`Value\` | Parsed JSON response body. |
|
|
114
|
+
|
|
115
|
+
On error, \`ok\` is \`false\` and \`err\` contains the error value.
|
|
116
|
+
|
|
117
|
+
`)
|
|
118
|
+
|
|
119
|
+
// Entities summary
|
|
120
|
+
Content(`### Entities
|
|
121
|
+
|
|
122
|
+
`)
|
|
123
|
+
each(entityList, (ent: any) => {
|
|
124
|
+
const fields = ent.fields || []
|
|
125
|
+
const opnames = Object.keys(ent.op || {})
|
|
126
|
+
const ops = ent.op || {}
|
|
127
|
+
const points = each(ops).map((op: any) =>
|
|
128
|
+
op.points ? each(op.points) : []
|
|
129
|
+
).flat()
|
|
130
|
+
const path = points.length > 0 ? (points[0] as any).orig || '' : ''
|
|
131
|
+
|
|
132
|
+
Content(`#### ${ent.Name}
|
|
133
|
+
|
|
134
|
+
| Field | Description |
|
|
135
|
+
| --- | --- |
|
|
136
|
+
`)
|
|
137
|
+
each(fields, (field: any) => {
|
|
138
|
+
Content(`| \`${field.name}\` | ${field.short || ''} |
|
|
139
|
+
`)
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
Content(`
|
|
143
|
+
Operations: ${opnames.map((n: string) => n.charAt(0).toUpperCase() + n.slice(1)).join(', ')}.
|
|
144
|
+
|
|
145
|
+
API path: \`${path}\`
|
|
146
|
+
|
|
147
|
+
`)
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
export {
|
|
154
|
+
ReadmeModel
|
|
155
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
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 options as an \`sdk::Value\` map when constructing a client:
|
|
20
|
+
|
|
21
|
+
`)
|
|
22
|
+
|
|
23
|
+
const hasApikey = publishedOptions.some((o: any) => 'apikey' === o.name)
|
|
24
|
+
|
|
25
|
+
Content(`\`\`\`cpp
|
|
26
|
+
${hasApikey ? `const char* apikey = std::getenv("${envName(model)}_APIKEY");
|
|
27
|
+
` : ''}auto client = std::make_shared<${model.Name}SDK>(vmap({
|
|
28
|
+
`)
|
|
29
|
+
|
|
30
|
+
publishedOptions.map((option: any) => {
|
|
31
|
+
if ('apikey' === option.name) {
|
|
32
|
+
Content(` {"${option.name}", Value(apikey ? apikey : "")},
|
|
33
|
+
`)
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
Content(` // {"${option.name}", ${option.kind === 'string' ? 'Value("...")' : 'Value(...)'}},
|
|
37
|
+
`)
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
Content(`}));
|
|
42
|
+
\`\`\`
|
|
43
|
+
|
|
44
|
+
`)
|
|
45
|
+
|
|
46
|
+
Content(`| Option | Type | Description |
|
|
47
|
+
| --- | --- | --- |
|
|
48
|
+
`)
|
|
49
|
+
|
|
50
|
+
publishedOptions.map((option: any) => {
|
|
51
|
+
Content(`| \`${option.name}\` | \`${option.kind}\` | ${option.short} |
|
|
52
|
+
`)
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
Content(`
|
|
56
|
+
`)
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
export {
|
|
61
|
+
ReadmeOptions
|
|
62
|
+
}
|