@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,104 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
nom,
|
|
8
|
+
} from '@voxgig/apidef'
|
|
9
|
+
|
|
10
|
+
import { cIdent, cVarName } from './utility_c'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// A type-correct C expression constructing a voxgig struct Value for a param.
|
|
14
|
+
// Strings render the quoted placeholder; numeric/boolean/array/object render a
|
|
15
|
+
// typed builder call.
|
|
16
|
+
function cLit(type: any, placeholder: string = 'example'): string {
|
|
17
|
+
const k = canonKey(type)
|
|
18
|
+
if ('INTEGER' === k || 'NUMBER' === k) return 'v_num(1)'
|
|
19
|
+
if ('BOOLEAN' === k) return 'v_bool(true)'
|
|
20
|
+
if ('ARRAY' === k) return 'v_list()'
|
|
21
|
+
if ('OBJECT' === k) return 'v_map()'
|
|
22
|
+
return `v_str("${placeholder}")`
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
// cmap(...) for a set of `"key", <lit>` pairs, or NULL when empty (ops accept
|
|
27
|
+
// a NULL match/data argument).
|
|
28
|
+
function cmapExpr(pairs: string[]): string {
|
|
29
|
+
return pairs.length ? `cmap(${pairs.length}, ${pairs.join(', ')})` : 'NULL'
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
const ReadmeTopQuick = cmp(function ReadmeTopQuick(props: any) {
|
|
34
|
+
const { target, ctx$: { model } } = props
|
|
35
|
+
|
|
36
|
+
const ident = cIdent(model)
|
|
37
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
38
|
+
|
|
39
|
+
const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
|
|
40
|
+
|
|
41
|
+
const authActive = isAuthActive(model)
|
|
42
|
+
const ctor = authActive
|
|
43
|
+
? `${ident}_sdk_new(cmap(1,\n "apikey", v_str(getenv("${envName(model)}_APIKEY"))))`
|
|
44
|
+
: `${ident}_sdk_new(NULL)`
|
|
45
|
+
|
|
46
|
+
Content(`\`\`\`c
|
|
47
|
+
#include "core/api.h"
|
|
48
|
+
|
|
49
|
+
${model.const.Name}SDK* client = ${ctor};
|
|
50
|
+
PNError* err = NULL;
|
|
51
|
+
|
|
52
|
+
`)
|
|
53
|
+
|
|
54
|
+
if (exampleEntity) {
|
|
55
|
+
const eName = nom(exampleEntity, 'Name')
|
|
56
|
+
const evar = cVarName(exampleEntity.name)
|
|
57
|
+
const acc = `${ident}_${evar}`
|
|
58
|
+
const opnames = Object.keys(exampleEntity.op || {})
|
|
59
|
+
// Model-driven id key: null when the entity has no id-like field, in which
|
|
60
|
+
// case the load example takes no match argument.
|
|
61
|
+
const idF = entityIdField(exampleEntity)
|
|
62
|
+
|
|
63
|
+
if (opnames.includes('list')) {
|
|
64
|
+
Content(`Entity* ${evar} = ${acc}(client, NULL);
|
|
65
|
+
|
|
66
|
+
// List all ${eName.toLowerCase()}s (returns a List, sets *err on failure)
|
|
67
|
+
voxgig_value* ${evar}s = ${evar}->vt->list(${evar}, NULL, NULL, &err);
|
|
68
|
+
for (size_t i = 0; i < (size_t)voxgig_size(${evar}s); i++) {
|
|
69
|
+
printf("%s\\n", voxgig_to_json(voxgig_getelem(${evar}s, v_int(i), NULL)));
|
|
70
|
+
}
|
|
71
|
+
`)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (opnames.includes('load')) {
|
|
75
|
+
// Every REQUIRED load-match key (id first, then parent path params like
|
|
76
|
+
// page_id) — the same shape the runtime resolves path params from, so
|
|
77
|
+
// the example always works.
|
|
78
|
+
const loadItems = opRequestShape(exampleEntity, 'load').items
|
|
79
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
80
|
+
.sort((a: any, b: any) =>
|
|
81
|
+
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
82
|
+
const loadArg = cmapExpr(loadItems.map((it: any) =>
|
|
83
|
+
`"${it.name}", ${cLit(it.type,
|
|
84
|
+
it.name === idF ? 'example_id' : 'example_' + it.name)}`))
|
|
85
|
+
const acquire = opnames.includes('list')
|
|
86
|
+
? ''
|
|
87
|
+
: `Entity* ${evar} = ${acc}(client, NULL);\n`
|
|
88
|
+
Content(`
|
|
89
|
+
${acquire}// Load a specific ${eName.toLowerCase()} (returns the record, sets *err on failure)
|
|
90
|
+
voxgig_value* ${evar}_rec = ${evar}->vt->load(${evar}, ${loadArg}, NULL, &err);
|
|
91
|
+
printf("%s\\n", voxgig_to_json(${evar}_rec));
|
|
92
|
+
`)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
Content(`\`\`\`
|
|
97
|
+
`)
|
|
98
|
+
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
export {
|
|
103
|
+
ReadmeTopQuick
|
|
104
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
nom,
|
|
8
|
+
} from '@voxgig/apidef'
|
|
9
|
+
|
|
10
|
+
import { cIdent, cVarName } from './utility_c'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// A type-correct C expression constructing a voxgig struct Value for a field's
|
|
14
|
+
// canonical type.
|
|
15
|
+
function cLit(type: any): string {
|
|
16
|
+
const k = canonKey(type)
|
|
17
|
+
if ('INTEGER' === k || 'NUMBER' === k) return 'v_num(1)'
|
|
18
|
+
if ('BOOLEAN' === k) return 'v_bool(true)'
|
|
19
|
+
if ('ARRAY' === k) return 'v_list()'
|
|
20
|
+
if ('OBJECT' === k) return 'v_map()'
|
|
21
|
+
return 'v_str("example")'
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
// cmap(...) for a set of pairs, or NULL when empty.
|
|
26
|
+
function cmapExpr(pairs: string[]): string {
|
|
27
|
+
return pairs.length ? `cmap(${pairs.length}, ${pairs.join(', ')})` : 'NULL'
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
const ReadmeTopTest = cmp(function ReadmeTopTest(props: any) {
|
|
32
|
+
const { target, ctx$: { model } } = props
|
|
33
|
+
|
|
34
|
+
const ident = cIdent(model)
|
|
35
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
36
|
+
|
|
37
|
+
// Pick an entity with a real op (prefer a read op) — never fabricate a
|
|
38
|
+
// `load` on an op-less entity.
|
|
39
|
+
const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
|
|
40
|
+
|
|
41
|
+
Content(`\`\`\`c
|
|
42
|
+
#include "core/api.h"
|
|
43
|
+
|
|
44
|
+
${model.const.Name}SDK* client = test_sdk(NULL, NULL);
|
|
45
|
+
PNError* err = NULL;
|
|
46
|
+
`)
|
|
47
|
+
|
|
48
|
+
if (exampleEntity && primaryOp) {
|
|
49
|
+
const eName = nom(exampleEntity, 'Name')
|
|
50
|
+
const evar = cVarName(exampleEntity.name)
|
|
51
|
+
const acc = `${ident}_${evar}`
|
|
52
|
+
const idF = entityIdField(exampleEntity)
|
|
53
|
+
const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
|
|
54
|
+
let arg = 'NULL'
|
|
55
|
+
if (isMatchOp) {
|
|
56
|
+
// Every REQUIRED match key (id first) — the same shape that generates
|
|
57
|
+
// the op's request match.
|
|
58
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
59
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
60
|
+
.sort((a: any, b: any) =>
|
|
61
|
+
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
62
|
+
arg = cmapExpr(items.map((it: any) =>
|
|
63
|
+
`"${it.name}", ${it.name === idF ? 'v_str("test01")' : cLit(it.type)}`))
|
|
64
|
+
} else if ('create' === primaryOp || 'update' === primaryOp) {
|
|
65
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
66
|
+
.filter((it: any) => it.name !== idF && it.name !== 'id')
|
|
67
|
+
const required = items.filter((it: any) => !it.optional)
|
|
68
|
+
const chosen = required.length ? required : items.slice(0, 3)
|
|
69
|
+
arg = cmapExpr(chosen.map((it: any) => `"${it.name}", ${cLit(it.type)}`))
|
|
70
|
+
}
|
|
71
|
+
const resVar = cVarName(exampleEntity.name) + ('list' === primaryOp ? 's' : '_rec')
|
|
72
|
+
Content(`Entity* ${evar} = ${acc}(client, NULL);
|
|
73
|
+
voxgig_value* ${resVar} = ${evar}->vt->${primaryOp}(${evar}, ${arg}, NULL, &err);
|
|
74
|
+
printf("%s\\n", voxgig_to_json(${resVar}));
|
|
75
|
+
`)
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
Content(`\`\`\`
|
|
79
|
+
`)
|
|
80
|
+
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
export {
|
|
85
|
+
ReadmeTopTest
|
|
86
|
+
}
|
|
@@ -64,15 +64,15 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
64
64
|
const evar = cVarName(entity.name)
|
|
65
65
|
const Name = model.const.Name
|
|
66
66
|
|
|
67
|
-
const opnames = Object.keys(entity.op)
|
|
67
|
+
const opnames = Object.keys(entity.op || {})
|
|
68
68
|
const hasLoad = opnames.includes('load')
|
|
69
69
|
const hasList = opnames.includes('list')
|
|
70
70
|
if (!hasLoad && !hasList) {
|
|
71
71
|
return
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
const loadOp = (entity.op as any)
|
|
75
|
-
const listOp = (entity.op as any)
|
|
74
|
+
const loadOp = (entity.op as any)?.load
|
|
75
|
+
const listOp = (entity.op as any)?.list
|
|
76
76
|
|
|
77
77
|
const loadPoint = loadOp?.points?.[0]
|
|
78
78
|
const loadPath = loadPoint ? normalizePathParams(loadPoint.parts || [], loadPoint?.args?.params || [], loadPoint?.rename?.param) : ''
|
|
@@ -39,7 +39,14 @@ int main(void) {
|
|
|
39
39
|
Entity* e = ${ident}_${evar}(sdk, NULL);
|
|
40
40
|
CHECK(e != NULL, "entity instance");
|
|
41
41
|
CHECK_STR_EQ(e->vt->get_name(e), "${entity.name}", "entity get_name");
|
|
42
|
+
`)
|
|
42
43
|
|
|
44
|
+
// The stream test drives the list op; only emit it when the entity has a
|
|
45
|
+
// list op — a create/load-only entity has no list endpoint, so
|
|
46
|
+
// stream("list") would error.
|
|
47
|
+
const hasList = null != (entity.op && (entity.op as any)?.list)
|
|
48
|
+
if (hasList) {
|
|
49
|
+
Content(`
|
|
43
50
|
// stream(): runs the list op through the full pipeline and returns a List
|
|
44
51
|
// of items. Seed two entities via test mode; with the streaming feature
|
|
45
52
|
// active it yields the feature's incremental items, else it falls back to
|
|
@@ -69,7 +76,10 @@ int main(void) {
|
|
|
69
76
|
CHECK(perr == NULL, "stream fallback: no error");
|
|
70
77
|
CHECK_INT_EQ((int64_t)voxgig_as_list(pitems)->len, 2, "stream fallback: yields both items");
|
|
71
78
|
}
|
|
79
|
+
`)
|
|
80
|
+
}
|
|
72
81
|
|
|
82
|
+
Content(`
|
|
73
83
|
TEST_SUMMARY("${evar}_entity");
|
|
74
84
|
}
|
|
75
85
|
`)
|
|
@@ -13,6 +13,7 @@ import { cmp, each, Folder, File, Content } from '@voxgig/sdkgen'
|
|
|
13
13
|
|
|
14
14
|
import { TestEntity } from './TestEntity_c'
|
|
15
15
|
import { TestDirect } from './TestDirect_c'
|
|
16
|
+
import { ReadmeExamplesTest } from './ReadmeExamplesTest_c'
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
const Test = cmp(function Test(props: any) {
|
|
@@ -42,6 +43,9 @@ int main(void) {
|
|
|
42
43
|
TestEntity({ target, entity })
|
|
43
44
|
TestDirect({ target, entity })
|
|
44
45
|
})
|
|
46
|
+
|
|
47
|
+
// Validate the documented C examples in the READMEs are well-formed.
|
|
48
|
+
ReadmeExamplesTest({ target })
|
|
45
49
|
})
|
|
46
50
|
})
|
|
47
51
|
|
|
@@ -23,9 +23,15 @@ function cVarName(name: string): string {
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
|
|
26
|
-
// The C project identifier used as a function-name prefix, e.g. solar.
|
|
26
|
+
// The C project identifier used as a function-name prefix, e.g. solar. Must
|
|
27
|
+
// match the SQUASHED `projectname` token that the umbrella header/fragment use
|
|
28
|
+
// for the constructor (`<ident>_sdk_new`): a hyphenated slug
|
|
29
|
+
// (bluefin-decryptx-p2pe) squashes to `bluefindecryptxp2pe`, so drop every
|
|
30
|
+
// non-alphanumeric char rather than mapping them to `_` (which produced
|
|
31
|
+
// `bluefin_decryptx_p2pe_sdk_new` callers that never linked against the
|
|
32
|
+
// squashed definition). No-op for single-word names.
|
|
27
33
|
function cIdent(model: any): string {
|
|
28
|
-
return String(model.name).toLowerCase().replace(/[^a-z0-
|
|
34
|
+
return String(model.name).toLowerCase().replace(/[^a-z0-9]/g, '')
|
|
29
35
|
}
|
|
30
36
|
|
|
31
37
|
|
|
@@ -31,7 +31,7 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
31
31
|
|
|
32
32
|
File({ name: entity.name + '.' + target.ext }, () => {
|
|
33
33
|
|
|
34
|
-
const opnames = Object.keys(entity.op)
|
|
34
|
+
const opnames = Object.keys(entity.op || {})
|
|
35
35
|
|
|
36
36
|
// For each CRUD op: splice the real implementation when the spec
|
|
37
37
|
// defines it; otherwise leave the slot empty (the fn is simply not
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, each, Content, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
} from '@voxgig/apidef'
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
// A type-correct Clojure literal for a field's canonical type. The create
|
|
11
|
+
// example builds a real struct map, so array/object render as (vs/jt)/(vs/jm).
|
|
12
|
+
function cljLit(type: any, placeholder: string = 'example'): string {
|
|
13
|
+
const k = canonKey(type)
|
|
14
|
+
if ('INTEGER' === k || 'NUMBER' === k) return '1'
|
|
15
|
+
if ('BOOLEAN' === k) return 'true'
|
|
16
|
+
if ('ARRAY' === k) return '(vs/jt)'
|
|
17
|
+
if ('OBJECT' === k) return '(vs/jm)'
|
|
18
|
+
return `"${placeholder}"`
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
// A descriptive Clojure-ish type name for a field's canonical type. Clojure is
|
|
23
|
+
// dynamically typed, so these are documentation hints, not static types.
|
|
24
|
+
function cljType(type: any): string {
|
|
25
|
+
const k = canonKey(type)
|
|
26
|
+
if ('STRING' === k) return 'string'
|
|
27
|
+
if ('INTEGER' === k) return 'long'
|
|
28
|
+
if ('NUMBER' === k) return 'double'
|
|
29
|
+
if ('BOOLEAN' === k) return 'boolean'
|
|
30
|
+
if ('ARRAY' === k) return 'vector'
|
|
31
|
+
if ('OBJECT' === k) return 'map'
|
|
32
|
+
return 'any'
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
// Operation descriptions are language-agnostic; the method spelling matches
|
|
37
|
+
// the generated Clojure entity fns: (op ent arg ctrl).
|
|
38
|
+
const OP_DESC: Record<string, { method: string, desc: string }> = {
|
|
39
|
+
load: { method: '(load ent match ctrl)', desc: 'Load a single entity by match criteria.' },
|
|
40
|
+
list: { method: '(list ent match ctrl)', desc: 'List entities, optionally matching the given criteria.' },
|
|
41
|
+
create: { method: '(create ent data ctrl)', desc: 'Create a new entity with the given data.' },
|
|
42
|
+
update: { method: '(update ent data ctrl)', desc: 'Update an existing entity.' },
|
|
43
|
+
remove: { method: '(remove ent match ctrl)', desc: 'Remove the matching entity.' },
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
|
|
48
|
+
const { target } = props
|
|
49
|
+
const { model } = props.ctx$
|
|
50
|
+
|
|
51
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
52
|
+
|
|
53
|
+
const publishedEntities = each(entity)
|
|
54
|
+
.filter((entity: any) => entity.active !== false)
|
|
55
|
+
|
|
56
|
+
if (0 === publishedEntities.length) {
|
|
57
|
+
return
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
Content(`
|
|
61
|
+
|
|
62
|
+
## Entities
|
|
63
|
+
|
|
64
|
+
`)
|
|
65
|
+
|
|
66
|
+
publishedEntities.map((entity: any) => {
|
|
67
|
+
const opnames = Object.keys(entity.op || {})
|
|
68
|
+
const fields = entity.fields || []
|
|
69
|
+
// Model-driven id key: null when this entity has no id-like field.
|
|
70
|
+
const idF = entityIdField(entity)
|
|
71
|
+
const eLow = entity.name
|
|
72
|
+
|
|
73
|
+
Content(`
|
|
74
|
+
### ${entity.Name}
|
|
75
|
+
|
|
76
|
+
`)
|
|
77
|
+
|
|
78
|
+
if (entity.short) {
|
|
79
|
+
Content(`${entity.short}
|
|
80
|
+
|
|
81
|
+
`)
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
Content(`Create an instance: \`(def ${eLow} (api/${eLow} client nil))\`
|
|
85
|
+
|
|
86
|
+
`)
|
|
87
|
+
|
|
88
|
+
if (opnames.length > 0) {
|
|
89
|
+
Content(`#### Operations
|
|
90
|
+
|
|
91
|
+
| Method | Description |
|
|
92
|
+
| --- | --- |
|
|
93
|
+
`)
|
|
94
|
+
opnames.map((opname: string) => {
|
|
95
|
+
const info = OP_DESC[opname]
|
|
96
|
+
if (info) {
|
|
97
|
+
Content(`| \`${info.method}\` | ${info.desc} |
|
|
98
|
+
`)
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
Content(`
|
|
103
|
+
`)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
if (fields.length > 0) {
|
|
107
|
+
Content(`#### Fields
|
|
108
|
+
|
|
109
|
+
| Field | Type | Description |
|
|
110
|
+
| --- | --- | --- |
|
|
111
|
+
`)
|
|
112
|
+
|
|
113
|
+
each(fields, (field: any) => {
|
|
114
|
+
const desc = field.short || ''
|
|
115
|
+
Content(`| \`${field.name}\` | \`${cljType(field.type)}\` | ${desc} |
|
|
116
|
+
`)
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
Content(`
|
|
120
|
+
`)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (opnames.includes('load')) {
|
|
124
|
+
// The id key plus every REQUIRED match key (parent path params like
|
|
125
|
+
// page_id) — the same shape the runtime resolves path params from.
|
|
126
|
+
const loadItems = opRequestShape(entity, 'load').items
|
|
127
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
128
|
+
.sort((a: any, b: any) =>
|
|
129
|
+
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
130
|
+
const loadArg = 0 < loadItems.length
|
|
131
|
+
? `(vs/jm ${loadItems.map((it: any) =>
|
|
132
|
+
`"${it.name}" ${cljLit(it.type,
|
|
133
|
+
it.name === idF ? entity.name + '_id' : it.name)}`).join(' ')})`
|
|
134
|
+
: 'nil'
|
|
135
|
+
Content(`#### Example: Load
|
|
136
|
+
|
|
137
|
+
\`\`\`clojure
|
|
138
|
+
(def ${eLow} (e-${eLow}/load (api/${eLow} client nil) ${loadArg} nil))
|
|
139
|
+
\`\`\`
|
|
140
|
+
|
|
141
|
+
`)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (opnames.includes('list')) {
|
|
145
|
+
Content(`#### Example: List
|
|
146
|
+
|
|
147
|
+
\`\`\`clojure
|
|
148
|
+
(def ${eLow}s (e-${eLow}/list (api/${eLow} client nil) nil nil))
|
|
149
|
+
\`\`\`
|
|
150
|
+
|
|
151
|
+
`)
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
if (opnames.includes('create')) {
|
|
155
|
+
// Members come from the SAME shape the runtime validates
|
|
156
|
+
// (opRequestShape): every required member must appear.
|
|
157
|
+
const createItems = opRequestShape(entity, 'create').items
|
|
158
|
+
.filter((it: any) => !it.optional)
|
|
159
|
+
Content(`#### Example: Create
|
|
160
|
+
|
|
161
|
+
\`\`\`clojure
|
|
162
|
+
(def ${eLow}
|
|
163
|
+
(e-${eLow}/create (api/${eLow} client nil)
|
|
164
|
+
(vs/jm
|
|
165
|
+
`)
|
|
166
|
+
createItems.map((it: any) => {
|
|
167
|
+
Content(` "${it.name}" ${cljLit(it.type, 'example_' + it.name)} ;; ${cljType(it.type)}
|
|
168
|
+
`)
|
|
169
|
+
})
|
|
170
|
+
Content(` )
|
|
171
|
+
nil))
|
|
172
|
+
\`\`\`
|
|
173
|
+
|
|
174
|
+
`)
|
|
175
|
+
}
|
|
176
|
+
})
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
export {
|
|
181
|
+
ReadmeEntity
|
|
182
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// Emit a documentation clojure-examples SYNTAX gate INTO the shared gentest run
|
|
6
|
+
// body (the clojure test runner drives a single sdk.gentest/run). For each doc
|
|
7
|
+
// that ships clojure examples — the repository ROOT README.md, the per-language
|
|
8
|
+
// README.md, and REFERENCE.md — every ```clojure fenced block is extracted and
|
|
9
|
+
// PARSED with read-string (all forms wrapped in a vector), catching a malformed
|
|
10
|
+
// documented example (an unbalanced paren, a bad token, an unclosed string).
|
|
11
|
+
//
|
|
12
|
+
// SCOPE NOTE: like the elixir gate, this stops at the syntax check rather than
|
|
13
|
+
// EXECUTING each block. Running a README fragment against the generated
|
|
14
|
+
// namespaces would need the SDK loaded and the narrative requires resolved for
|
|
15
|
+
// every block; the syntax gate is a real, useful guard that keeps documented
|
|
16
|
+
// examples parseable as the generator evolves. A doc that is absent at test
|
|
17
|
+
// time is skipped (passes), so the gate never hard-fails on a missing file.
|
|
18
|
+
//
|
|
19
|
+
// The emitted clojure builds the triple-backtick fence from (char 96) so this
|
|
20
|
+
// TS template literal needs no embedded backticks.
|
|
21
|
+
const ReadmeExamplesTest = cmp(function ReadmeExamplesTest(_props: any) {
|
|
22
|
+
|
|
23
|
+
Content(` (letfn [(fence-pat [] (re-pattern (apply str (repeat 3 (char 96)))))
|
|
24
|
+
(fence-count [text] (count (re-seq (fence-pat) text)))
|
|
25
|
+
(clj-blocks [text]
|
|
26
|
+
(let [parts (clojure.string/split text (fence-pat))]
|
|
27
|
+
(->> parts
|
|
28
|
+
(map-indexed vector)
|
|
29
|
+
(filter (fn [[i _]] (odd? i)))
|
|
30
|
+
(map (fn [[_ seg]] seg))
|
|
31
|
+
(filter (fn [seg]
|
|
32
|
+
(= "clojure"
|
|
33
|
+
(clojure.string/trim (first (clojure.string/split-lines seg))))))
|
|
34
|
+
(map (fn [seg]
|
|
35
|
+
(clojure.string/join "\\n"
|
|
36
|
+
(rest (clojure.string/split-lines seg))))))))]
|
|
37
|
+
(doseq [[label path] [["root-README" "../README.md"]
|
|
38
|
+
["README" "README.md"]
|
|
39
|
+
["REFERENCE" "REFERENCE.md"]]]
|
|
40
|
+
(t/run-check rec (str "gen-readme-examples-" label)
|
|
41
|
+
(fn []
|
|
42
|
+
(if-not (.exists (java.io.File. ^String path))
|
|
43
|
+
(t/is-true true (str label " absent (skipped)"))
|
|
44
|
+
(let [text (slurp path)]
|
|
45
|
+
;; A code fence opened but never closed leaves an ODD number of
|
|
46
|
+
;; fence markers; the split-on-fence then captures the trailing
|
|
47
|
+
;; prose (everything after the last opener) as if it were a
|
|
48
|
+
;; clojure block, which can parse cleanly and pass silently. Fail
|
|
49
|
+
;; on the malformed doc instead. (Count markers directly rather
|
|
50
|
+
;; than split parts: split drops trailing empty segments, so a
|
|
51
|
+
;; closing fence at EOF would be miscounted.)
|
|
52
|
+
(t/is-true (even? (fence-count text))
|
|
53
|
+
(str label " code fences balanced (no unclosed fence)"))
|
|
54
|
+
(let [blocks (clj-blocks text)]
|
|
55
|
+
(doseq [b blocks]
|
|
56
|
+
(binding [*read-eval* false]
|
|
57
|
+
(read-string (str "[\\n" b "\\n]"))))
|
|
58
|
+
(t/is-true true (str label " clojure blocks parse cleanly")))))))))
|
|
59
|
+
`)
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
export {
|
|
64
|
+
ReadmeExamplesTest
|
|
65
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
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 struct value maps
|
|
9
|
+
|
|
10
|
+
The Clojure SDK represents API data with the vendored \`voxgig.struct\`
|
|
11
|
+
value model (ordered, Java-backed maps and lists) rather than typed
|
|
12
|
+
records. This mirrors the dynamic nature of the API and keeps the SDK
|
|
13
|
+
flexible — no code generation is needed when the API schema changes.
|
|
14
|
+
|
|
15
|
+
Build request maps with \`(vs/jm "k" v ...)\` and lists with
|
|
16
|
+
\`(vs/jt v ...)\`; read values with \`(vs/getprop m "k")\`. Use
|
|
17
|
+
\`(vs/ismap x)\` to safely check that a value is a map.
|
|
18
|
+
|
|
19
|
+
### Namespace structure
|
|
20
|
+
|
|
21
|
+
\`\`\`
|
|
22
|
+
${target.name}/
|
|
23
|
+
├── src/sdk/api.clj -- public API namespace (entity accessors)
|
|
24
|
+
├── src/sdk/client.clj -- client constructors (make-sdk, test-sdk)
|
|
25
|
+
├── src/sdk/config.clj -- generated configuration
|
|
26
|
+
├── src/sdk/core.clj -- core types, context and pipeline
|
|
27
|
+
├── src/sdk/features.clj -- feature factory
|
|
28
|
+
├── src/sdk/entity/ -- entity namespaces (one per entity)
|
|
29
|
+
├── src/voxgig/struct.clj -- vendored struct value library
|
|
30
|
+
└── test/ -- test suites
|
|
31
|
+
\`\`\`
|
|
32
|
+
|
|
33
|
+
Require \`[sdk.api :as api]\` for the public surface, and an entity
|
|
34
|
+
namespace (e.g. \`[sdk.entity.${model.const.Name.toLowerCase()} :as e-${model.const.Name.toLowerCase()}]\`)
|
|
35
|
+
only when you call its operations directly.
|
|
36
|
+
|
|
37
|
+
`)
|
|
38
|
+
|
|
39
|
+
})
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
export {
|
|
43
|
+
ReadmeExplanation
|
|
44
|
+
}
|