@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,175 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, each, Content, canonToType, canonKey, entityIdField, opRequestShape } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import {
|
|
5
|
+
KIT,
|
|
6
|
+
getModelPath,
|
|
7
|
+
} from '@voxgig/apidef'
|
|
8
|
+
|
|
9
|
+
import { javaVarName } from './utility_java'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
// Type names come from the shared canonToType 'java' column (single source of truth).
|
|
13
|
+
|
|
14
|
+
// A type-correct, JSON-serialisable Java literal for a field's canonical type.
|
|
15
|
+
function javaLit(type: any, placeholder: string = 'example'): string {
|
|
16
|
+
const k = canonKey(type)
|
|
17
|
+
if ('INTEGER' === k) return '1L'
|
|
18
|
+
if ('NUMBER' === k) return '1.0'
|
|
19
|
+
if ('BOOLEAN' === k) return 'true'
|
|
20
|
+
if ('ARRAY' === k) return 'List.of()'
|
|
21
|
+
if ('OBJECT' === k) return 'Map.of()'
|
|
22
|
+
return `"${placeholder}"`
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
// Operation method spelling for Java: camelCase methods over the loose object
|
|
27
|
+
// model. The op descriptions are language-agnostic.
|
|
28
|
+
const OP_DESC: Record<string, { method: string, desc: string }> = {
|
|
29
|
+
load: { method: 'load(match, null)', desc: 'Load a single entity by match criteria.' },
|
|
30
|
+
list: { method: 'list(null, null)', desc: 'List entities, optionally matching the given criteria.' },
|
|
31
|
+
create: { method: 'create(data, null)', desc: 'Create a new entity with the given data.' },
|
|
32
|
+
update: { method: 'update(data, null)', desc: 'Update an existing entity.' },
|
|
33
|
+
remove: { method: 'remove(match, null)', desc: 'Remove the matching entity.' },
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
|
|
38
|
+
const { target } = props
|
|
39
|
+
const { model } = props.ctx$
|
|
40
|
+
|
|
41
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
42
|
+
|
|
43
|
+
const publishedEntities = each(entity)
|
|
44
|
+
.filter((entity: any) => entity.active !== false)
|
|
45
|
+
|
|
46
|
+
if (0 === publishedEntities.length) {
|
|
47
|
+
return
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
Content(`
|
|
51
|
+
|
|
52
|
+
## Entities
|
|
53
|
+
|
|
54
|
+
`)
|
|
55
|
+
|
|
56
|
+
publishedEntities.map((entity: any) => {
|
|
57
|
+
const opnames = Object.keys(entity.op || {})
|
|
58
|
+
const fields = entity.fields || []
|
|
59
|
+
// Model-driven id key: null when this entity has no id-like field.
|
|
60
|
+
const idF = entityIdField(entity)
|
|
61
|
+
// Sanitise the local variable name — a camelCased Java keyword gets a
|
|
62
|
+
// trailing underscore (javaVarName) so the snippet compiles.
|
|
63
|
+
const eVar = javaVarName(entity.name)
|
|
64
|
+
const accessor = javaVarName(entity.name)
|
|
65
|
+
|
|
66
|
+
Content(`
|
|
67
|
+
### ${entity.Name}
|
|
68
|
+
|
|
69
|
+
`)
|
|
70
|
+
|
|
71
|
+
if (entity.short) {
|
|
72
|
+
Content(`${entity.short}
|
|
73
|
+
|
|
74
|
+
`)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
Content(`Create an instance: \`SdkEntity ${eVar} = client.${accessor}(null);\`
|
|
78
|
+
|
|
79
|
+
`)
|
|
80
|
+
|
|
81
|
+
if (opnames.length > 0) {
|
|
82
|
+
Content(`#### Operations
|
|
83
|
+
|
|
84
|
+
| Method | Description |
|
|
85
|
+
| --- | --- |
|
|
86
|
+
`)
|
|
87
|
+
opnames.map((opname: string) => {
|
|
88
|
+
const info = OP_DESC[opname]
|
|
89
|
+
if (info) {
|
|
90
|
+
Content(`| \`${info.method}\` | ${info.desc} |
|
|
91
|
+
`)
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
Content(`
|
|
96
|
+
`)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (fields.length > 0) {
|
|
100
|
+
Content(`#### Fields
|
|
101
|
+
|
|
102
|
+
| Field | Type | Description |
|
|
103
|
+
| --- | --- | --- |
|
|
104
|
+
`)
|
|
105
|
+
|
|
106
|
+
each(fields, (field: any) => {
|
|
107
|
+
const desc = field.short || ''
|
|
108
|
+
Content(`| \`${field.name}\` | \`${canonToType(field.type, target.name)}\` | ${desc} |
|
|
109
|
+
`)
|
|
110
|
+
})
|
|
111
|
+
|
|
112
|
+
Content(`
|
|
113
|
+
`)
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (opnames.includes('load')) {
|
|
117
|
+
// The id key plus every REQUIRED match key (parent path params like
|
|
118
|
+
// page_id) — the same shape the runtime resolves path params from, so
|
|
119
|
+
// the example always works.
|
|
120
|
+
const loadItems = opRequestShape(entity, 'load').items
|
|
121
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
122
|
+
.sort((a: any, b: any) =>
|
|
123
|
+
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
124
|
+
const loadArg = 0 < loadItems.length
|
|
125
|
+
? `Map.of(${loadItems.map((it: any) =>
|
|
126
|
+
`"${it.name}", ${javaLit(it.type,
|
|
127
|
+
it.name === idF ? entity.name + '_id' : it.name)}`).join(', ')})`
|
|
128
|
+
: 'null'
|
|
129
|
+
Content(`#### Example: Load
|
|
130
|
+
|
|
131
|
+
\`\`\`java
|
|
132
|
+
Object ${eVar} = client.${accessor}(null).load(${loadArg}, null);
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
`)
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
if (opnames.includes('list')) {
|
|
139
|
+
Content(`#### Example: List
|
|
140
|
+
|
|
141
|
+
\`\`\`java
|
|
142
|
+
Object ${eVar}List = client.${accessor}(null).list(null, null);
|
|
143
|
+
\`\`\`
|
|
144
|
+
|
|
145
|
+
`)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (opnames.includes('create')) {
|
|
149
|
+
// Members come from the SAME shape the runtime validates
|
|
150
|
+
// (opRequestShape): every required member must appear — including a
|
|
151
|
+
// required id and parent keys like page_id — with a real literal.
|
|
152
|
+
const createItems = opRequestShape(entity, 'create').items
|
|
153
|
+
.filter((it: any) => !it.optional)
|
|
154
|
+
Content(`#### Example: Create
|
|
155
|
+
|
|
156
|
+
\`\`\`java
|
|
157
|
+
Object ${eVar} = client.${accessor}(null).create(Map.of(
|
|
158
|
+
`)
|
|
159
|
+
createItems.map((it: any, i: number) => {
|
|
160
|
+
const comma = i < createItems.length - 1 ? ',' : ''
|
|
161
|
+
Content(` "${it.name}", ${javaLit(it.type, 'example_' + it.name)}${comma} // ${canonToType(it.type, target.name)}
|
|
162
|
+
`)
|
|
163
|
+
})
|
|
164
|
+
Content(`), null);
|
|
165
|
+
\`\`\`
|
|
166
|
+
|
|
167
|
+
`)
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
})
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
export {
|
|
174
|
+
ReadmeEntity
|
|
175
|
+
}
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, File, Content } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import { javaPackage } from './utility_java'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
// Emits test/ReadmeExamplesTest.java — a JUnit PRESENCE + STRUCTURE gate over
|
|
8
|
+
// every ```java fenced block in the repository ROOT README.md, the
|
|
9
|
+
// per-language java/README.md, AND the per-language java/REFERENCE.md.
|
|
10
|
+
//
|
|
11
|
+
// SCOPE NOTE (deliberate, documented): the Python/TS/Go equivalents EXECUTE and
|
|
12
|
+
// type-check every documented block. That is infeasible here — the generated
|
|
13
|
+
// Java SDK compiles with plain `javac`/Maven only (no in-process Java compiler
|
|
14
|
+
// dependency wired into the test classpath), so a test cannot compile-and-run
|
|
15
|
+
// arbitrary doc snippets at test time. This gate therefore guarantees the
|
|
16
|
+
// weaker-but-real invariant that keeps the docs honest as the generator evolves:
|
|
17
|
+
// 1. every doc exists and contains at least one ```java block (nothing was
|
|
18
|
+
// dropped);
|
|
19
|
+
// 2. every ```java block is structurally well-formed — its braces,
|
|
20
|
+
// parentheses and brackets balance (catches a truncated or malformed
|
|
21
|
+
// generated snippet).
|
|
22
|
+
// A per-doc summary line makes the coverage visible in the test output.
|
|
23
|
+
//
|
|
24
|
+
// The emitted Java is written WITHOUT literal backticks (the fence marker is
|
|
25
|
+
// built at runtime as String.valueOf((char) 96).repeat(3)) so this TS template
|
|
26
|
+
// literal stays clean.
|
|
27
|
+
const ReadmeExamplesTest = cmp(function ReadmeExamplesTest(props: any) {
|
|
28
|
+
const { target, ctx$: { model } } = props
|
|
29
|
+
|
|
30
|
+
const Name = model.const.Name
|
|
31
|
+
const javapackage = props.javapackage || javaPackage(model)
|
|
32
|
+
|
|
33
|
+
File({ name: 'ReadmeExamplesTest.' + target.ext }, () => {
|
|
34
|
+
Content(`package ${javapackage}.sdktest;
|
|
35
|
+
|
|
36
|
+
// ${Name} SDK — documentation java-examples PRESENCE + STRUCTURE gate.
|
|
37
|
+
//
|
|
38
|
+
// GUARANTEE (see ReadmeExamplesTest_java.ts for why this is a structure gate
|
|
39
|
+
// and not an execute gate): every java example in the docs is accounted for.
|
|
40
|
+
// This JUnit class is a completeness gate over every ${'```'}java fenced code
|
|
41
|
+
// block in three documents:
|
|
42
|
+
// - the repository ROOT README.md (one directory above this module),
|
|
43
|
+
// - the per-language java/README.md,
|
|
44
|
+
// - the per-language java/REFERENCE.md.
|
|
45
|
+
//
|
|
46
|
+
// Checks, PER DOCUMENT:
|
|
47
|
+
// 1. PRESENCE: the doc exists and holds at least one java block.
|
|
48
|
+
// 2. STRUCTURE: every java block's braces / parens / brackets balance, so a
|
|
49
|
+
// truncated or malformed generated snippet fails loudly.
|
|
50
|
+
//
|
|
51
|
+
// GENERATED by @voxgig/sdkgen — do not edit by hand.
|
|
52
|
+
|
|
53
|
+
import static org.junit.jupiter.api.Assertions.assertTrue;
|
|
54
|
+
|
|
55
|
+
import java.io.IOException;
|
|
56
|
+
import java.nio.file.Files;
|
|
57
|
+
import java.nio.file.Path;
|
|
58
|
+
import java.util.ArrayDeque;
|
|
59
|
+
import java.util.ArrayList;
|
|
60
|
+
import java.util.Deque;
|
|
61
|
+
import java.util.List;
|
|
62
|
+
import java.util.Map;
|
|
63
|
+
|
|
64
|
+
import org.junit.jupiter.api.Test;
|
|
65
|
+
|
|
66
|
+
public class ReadmeExamplesTest {
|
|
67
|
+
|
|
68
|
+
// The three documents to scan, resolved relative to the Maven module
|
|
69
|
+
// directory (the working directory when surefire runs the tests). Each row
|
|
70
|
+
// is {label, relative path}.
|
|
71
|
+
private static String[][] docs() {
|
|
72
|
+
return new String[][] {
|
|
73
|
+
{ "root README", ".." + java.io.File.separator + "README.md" },
|
|
74
|
+
{ "java README.md", "README.md" },
|
|
75
|
+
{ "java REFERENCE.md", "REFERENCE.md" },
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// Extract every java fenced block. Split on the triple-backtick fence:
|
|
80
|
+
// odd-indexed segments are the inside of a fenced block (info string on the
|
|
81
|
+
// first line, then the code). Only blocks whose info string is exactly
|
|
82
|
+
// "java" are returned.
|
|
83
|
+
private static List<String> javaBlocks(String text) {
|
|
84
|
+
String fence = String.valueOf((char) 96).repeat(3);
|
|
85
|
+
String[] parts = text.split(java.util.regex.Pattern.quote(fence), -1);
|
|
86
|
+
List<String> blocks = new ArrayList<>();
|
|
87
|
+
for (int i = 1; i < parts.length; i += 2) {
|
|
88
|
+
String seg = parts[i];
|
|
89
|
+
int nl = seg.indexOf('\\n');
|
|
90
|
+
String info = (nl < 0 ? seg : seg.substring(0, nl)).trim();
|
|
91
|
+
if (info.equals("java")) {
|
|
92
|
+
blocks.add(nl < 0 ? "" : seg.substring(nl + 1));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return blocks;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// A well-formed doc has an even number of triple-backtick fence markers:
|
|
99
|
+
// every opening fence has a matching close. An odd count means a fence was
|
|
100
|
+
// opened but never closed — a truncated or malformed generated doc. The
|
|
101
|
+
// split-based javaBlocks() would silently treat the unterminated tail as a
|
|
102
|
+
// complete block, so this must be checked explicitly.
|
|
103
|
+
private static boolean fencesClosed(String text) {
|
|
104
|
+
String fence = String.valueOf((char) 96).repeat(3);
|
|
105
|
+
int count = 0;
|
|
106
|
+
int from = 0;
|
|
107
|
+
int idx;
|
|
108
|
+
while ((idx = text.indexOf(fence, from)) >= 0) {
|
|
109
|
+
count++;
|
|
110
|
+
from = idx + fence.length();
|
|
111
|
+
}
|
|
112
|
+
return count % 2 == 0;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private static String readDoc(Path path, String label) {
|
|
116
|
+
assertTrue(Files.exists(path), label + " not found: " + path);
|
|
117
|
+
try {
|
|
118
|
+
return Files.readString(path);
|
|
119
|
+
}
|
|
120
|
+
catch (IOException e) {
|
|
121
|
+
throw new RuntimeException("failed to read " + label + ": " + path, e);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// True when every open/close delimiter balances (ignores the subtlety of
|
|
126
|
+
// delimiters inside string literals — a generated snippet never nests an
|
|
127
|
+
// unbalanced delimiter in a string, and this catches truncation).
|
|
128
|
+
private static boolean balanced(String block) {
|
|
129
|
+
Deque<Character> stack = new ArrayDeque<>();
|
|
130
|
+
Map<Character, Character> pairs =
|
|
131
|
+
Map.of('(', ')', '[', ']', '{', '}');
|
|
132
|
+
for (int i = 0; i < block.length(); i++) {
|
|
133
|
+
char ch = block.charAt(i);
|
|
134
|
+
if (pairs.containsKey(ch)) {
|
|
135
|
+
stack.push(pairs.get(ch));
|
|
136
|
+
}
|
|
137
|
+
else if (ch == ')' || ch == ']' || ch == '}') {
|
|
138
|
+
if (stack.isEmpty() || stack.pop() != ch) {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return stack.isEmpty();
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@Test
|
|
147
|
+
public void rootReadmeHasJavaBlocks() {
|
|
148
|
+
String[] doc = docs()[0];
|
|
149
|
+
List<String> blocks = javaBlocks(readDoc(Path.of(doc[1]), doc[0]));
|
|
150
|
+
assertTrue(blocks.size() > 0,
|
|
151
|
+
"expected at least one java block in " + doc[0]);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
@Test
|
|
155
|
+
public void localReadmeHasJavaBlocks() {
|
|
156
|
+
String[] doc = docs()[1];
|
|
157
|
+
List<String> blocks = javaBlocks(readDoc(Path.of(doc[1]), doc[0]));
|
|
158
|
+
assertTrue(blocks.size() > 0,
|
|
159
|
+
"expected at least one java block in " + doc[0]);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
@Test
|
|
163
|
+
public void referenceHasJavaBlocks() {
|
|
164
|
+
String[] doc = docs()[2];
|
|
165
|
+
List<String> blocks = javaBlocks(readDoc(Path.of(doc[1]), doc[0]));
|
|
166
|
+
assertTrue(blocks.size() > 0,
|
|
167
|
+
"expected at least one java block in " + doc[0]);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
@Test
|
|
171
|
+
public void allJavaBlocksAreStructurallyBalanced() {
|
|
172
|
+
List<String> failures = new ArrayList<>();
|
|
173
|
+
for (String[] doc : docs()) {
|
|
174
|
+
Path path = Path.of(doc[1]);
|
|
175
|
+
if (!Files.exists(path)) {
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
String src = readDoc(path, doc[0]);
|
|
179
|
+
if (!fencesClosed(src)) {
|
|
180
|
+
failures.add(doc[0] +
|
|
181
|
+
" has an unclosed code fence (opened but never closed)");
|
|
182
|
+
}
|
|
183
|
+
List<String> blocks = javaBlocks(src);
|
|
184
|
+
int balancedCount = 0;
|
|
185
|
+
for (int i = 0; i < blocks.size(); i++) {
|
|
186
|
+
if (balanced(blocks.get(i))) {
|
|
187
|
+
balancedCount++;
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
failures.add(doc[0] + " java block #" + i +
|
|
191
|
+
" has unbalanced delimiters:\\n\\n" + blocks.get(i));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
System.out.println(
|
|
195
|
+
"[readme-examples] " + doc[0] + " java blocks: total=" +
|
|
196
|
+
blocks.size() + " balanced=" + balancedCount);
|
|
197
|
+
}
|
|
198
|
+
assertTrue(failures.isEmpty(), String.join("\\n\\n", failures));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
`)
|
|
202
|
+
})
|
|
203
|
+
})
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
export {
|
|
207
|
+
ReadmeExamplesTest
|
|
208
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import { javaPackage } from './utility_java'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
|
|
8
|
+
const { target, ctx$: { model } } = props
|
|
9
|
+
|
|
10
|
+
const pkg = javaPackage(model)
|
|
11
|
+
|
|
12
|
+
Content(`### Data as maps
|
|
13
|
+
|
|
14
|
+
The Java SDK uses a loose object model — \`Map<String, Object>\` throughout —
|
|
15
|
+
rather than a bespoke typed class per endpoint. This mirrors the dynamic
|
|
16
|
+
nature of the API and keeps the SDK flexible: no regeneration is needed when
|
|
17
|
+
the API schema changes.
|
|
18
|
+
|
|
19
|
+
Use \`Helpers.toMapAny(value)\` to safely coerce a value to a
|
|
20
|
+
\`Map<String, Object>\`. A \`${model.const.Name}Types.java\` module of reference
|
|
21
|
+
\`record\` types is also generated for editor documentation.
|
|
22
|
+
|
|
23
|
+
### Project structure
|
|
24
|
+
|
|
25
|
+
\`\`\`
|
|
26
|
+
java/
|
|
27
|
+
├── pom.xml -- Maven project (compiles core/, utility/, feature/, entity/)
|
|
28
|
+
├── core/ -- Main SDK client, config, entity base, error type
|
|
29
|
+
├── entity/ -- Entity implementations
|
|
30
|
+
├── feature/ -- Built-in features (Base, Test, Log, ...)
|
|
31
|
+
├── utility/ -- Utility functions and the vendored struct library
|
|
32
|
+
└── test/ -- JUnit test suites
|
|
33
|
+
\`\`\`
|
|
34
|
+
|
|
35
|
+
The main client class (\`${model.const.Name}SDK\`, package \`${pkg}.core\`)
|
|
36
|
+
exposes the entity accessors. Reference entity or utility types directly only
|
|
37
|
+
when needed.
|
|
38
|
+
|
|
39
|
+
`)
|
|
40
|
+
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
export {
|
|
45
|
+
ReadmeExplanation
|
|
46
|
+
}
|
|
@@ -0,0 +1,156 @@
|
|
|
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 { javaVarName } from './utility_java'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
// A type-correct Java literal for a field's canonical type.
|
|
13
|
+
function javaLit(type: any): string {
|
|
14
|
+
const k = canonKey(type)
|
|
15
|
+
if ('INTEGER' === k) return '1L'
|
|
16
|
+
if ('NUMBER' === k) return '1.0'
|
|
17
|
+
if ('BOOLEAN' === k) return 'true'
|
|
18
|
+
if ('ARRAY' === k) return 'List.of()'
|
|
19
|
+
if ('OBJECT' === k) return 'Map.of()'
|
|
20
|
+
return '"example"'
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
|
|
25
|
+
const { target, ctx$: { model } } = props
|
|
26
|
+
|
|
27
|
+
const SDK = model.const.Name + 'SDK'
|
|
28
|
+
|
|
29
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
30
|
+
// Pick an entity with a real op (prefer a read op). primaryOp is null only
|
|
31
|
+
// when NO entity exposes any op (a direct()-only SDK).
|
|
32
|
+
const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
|
|
33
|
+
const eVar = exampleEntity ? javaVarName(exampleEntity.name) : 'entity'
|
|
34
|
+
const accessor = exampleEntity ? javaVarName(exampleEntity.name) : 'entity'
|
|
35
|
+
// Model-driven id key: null when the entity has no id-like field, so a
|
|
36
|
+
// match op takes an empty match.
|
|
37
|
+
const idF = exampleEntity ? entityIdField(exampleEntity) : null
|
|
38
|
+
const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
|
|
39
|
+
let testArg = 'null'
|
|
40
|
+
if (exampleEntity && isMatchOp) {
|
|
41
|
+
testArg = idF ? `Map.of("${idF}", "test01")` : 'null'
|
|
42
|
+
} else if (exampleEntity && ('create' === primaryOp || 'update' === primaryOp)) {
|
|
43
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
44
|
+
.filter((it: any) => it.name !== idF && it.name !== 'id')
|
|
45
|
+
const required = items.filter((it: any) => !it.optional)
|
|
46
|
+
const chosen = required.length ? required : items.slice(0, 3)
|
|
47
|
+
testArg = `Map.of(${chosen.map((it: any) =>
|
|
48
|
+
`"${it.name}", ${javaLit(it.type)}`).join(', ')})`
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// The op-driven test-mode line, shown only when the SDK has an entity op.
|
|
52
|
+
// A direct()-only SDK (no ops anywhere) shows a direct() call instead.
|
|
53
|
+
const testModeExample = primaryOp
|
|
54
|
+
? `// Entity ops return the bare record and raise on error.
|
|
55
|
+
Object ${eVar} = client.${accessor}(null).${primaryOp}(${testArg}, null);
|
|
56
|
+
// ${eVar} holds the mock response record
|
|
57
|
+
System.out.println(${eVar});`
|
|
58
|
+
: `Map<String, Object> result = client.direct(Map.of(
|
|
59
|
+
"path", "/api/resource",
|
|
60
|
+
"method", "GET"));
|
|
61
|
+
System.out.println(result);`
|
|
62
|
+
|
|
63
|
+
const apikeyEnvLine = isAuthActive(model)
|
|
64
|
+
? `\n${envName(model)}_APIKEY=<your-key>`
|
|
65
|
+
: ''
|
|
66
|
+
|
|
67
|
+
Content(`### Make a direct HTTP request
|
|
68
|
+
|
|
69
|
+
For endpoints not covered by entity methods:
|
|
70
|
+
|
|
71
|
+
\`\`\`java
|
|
72
|
+
Map<String, Object> result = client.direct(Map.of(
|
|
73
|
+
"path", "/api/resource/{id}",
|
|
74
|
+
"method", "GET",
|
|
75
|
+
"params", Map.of("id", "example")));
|
|
76
|
+
|
|
77
|
+
if (Boolean.TRUE.equals(result.get("ok"))) {
|
|
78
|
+
System.out.println(result.get("status")); // 200
|
|
79
|
+
System.out.println(result.get("data")); // response body
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// A non-2xx response carries status + data (the error body); a
|
|
83
|
+
// transport-level failure carries err instead. Only one is present, so
|
|
84
|
+
// read both — an absent key simply reads as null.
|
|
85
|
+
System.out.println(result.get("status") + " " + result.get("err"));
|
|
86
|
+
}
|
|
87
|
+
\`\`\`
|
|
88
|
+
|
|
89
|
+
### Prepare a request without sending it
|
|
90
|
+
|
|
91
|
+
\`\`\`java
|
|
92
|
+
// prepare() returns the fetch definition and raises on error.
|
|
93
|
+
Map<String, Object> fetchdef = client.prepare(Map.of(
|
|
94
|
+
"path", "/api/resource/{id}",
|
|
95
|
+
"method", "DELETE",
|
|
96
|
+
"params", Map.of("id", "example")));
|
|
97
|
+
|
|
98
|
+
System.out.println(fetchdef.get("url"));
|
|
99
|
+
System.out.println(fetchdef.get("method"));
|
|
100
|
+
System.out.println(fetchdef.get("headers"));
|
|
101
|
+
\`\`\`
|
|
102
|
+
|
|
103
|
+
### Use test mode
|
|
104
|
+
|
|
105
|
+
Create a mock client for unit testing — no server required:
|
|
106
|
+
|
|
107
|
+
\`\`\`java
|
|
108
|
+
${SDK} client = ${SDK}.testSDK(null, null);
|
|
109
|
+
|
|
110
|
+
${testModeExample}
|
|
111
|
+
\`\`\`
|
|
112
|
+
|
|
113
|
+
### Use a custom fetch function
|
|
114
|
+
|
|
115
|
+
Replace the HTTP transport with your own \`BiFunction\`:
|
|
116
|
+
|
|
117
|
+
\`\`\`java
|
|
118
|
+
java.util.function.BiFunction<String, Map<String, Object>, Object> mockFetch =
|
|
119
|
+
(url, init) -> {
|
|
120
|
+
Map<String, Object> res = new java.util.LinkedHashMap<>();
|
|
121
|
+
res.put("status", 200);
|
|
122
|
+
res.put("statusText", "OK");
|
|
123
|
+
res.put("headers", new java.util.LinkedHashMap<String, Object>());
|
|
124
|
+
res.put("json", (java.util.function.Supplier<Object>) () ->
|
|
125
|
+
Map.of("id", "mock01"));
|
|
126
|
+
return res;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
Map<String, Object> options = new java.util.LinkedHashMap<>();
|
|
130
|
+
options.put("base", "http://localhost:8080");
|
|
131
|
+
options.put("system", Map.of("fetch", mockFetch));
|
|
132
|
+
${SDK} client = new ${SDK}(options);
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
### Run live tests
|
|
136
|
+
|
|
137
|
+
Create a \`.env.local\` file at the project root:
|
|
138
|
+
|
|
139
|
+
\`\`\`
|
|
140
|
+
${envName(model)}_TEST_LIVE=TRUE${apikeyEnvLine}
|
|
141
|
+
\`\`\`
|
|
142
|
+
|
|
143
|
+
Then run:
|
|
144
|
+
|
|
145
|
+
\`\`\`bash
|
|
146
|
+
cd java && mvn test
|
|
147
|
+
\`\`\`
|
|
148
|
+
|
|
149
|
+
`)
|
|
150
|
+
|
|
151
|
+
})
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
export {
|
|
155
|
+
ReadmeHowto
|
|
156
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content, isPublished, repoInfo } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
import { mavenGroupId } from './utility_java'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
const ReadmeInstall = cmp(function ReadmeInstall(props: any) {
|
|
8
|
+
const { target, ctx$ } = props
|
|
9
|
+
const { model } = ctx$
|
|
10
|
+
|
|
11
|
+
const groupId = mavenGroupId(model)
|
|
12
|
+
const artifactId = `${model.name}-sdk`
|
|
13
|
+
|
|
14
|
+
if (isPublished(model, target.name)) {
|
|
15
|
+
Content(`Add the dependency to your \`pom.xml\`:
|
|
16
|
+
|
|
17
|
+
\`\`\`xml
|
|
18
|
+
<dependency>
|
|
19
|
+
<groupId>${groupId}</groupId>
|
|
20
|
+
<artifactId>${artifactId}</artifactId>
|
|
21
|
+
<version>0.0.1</version>
|
|
22
|
+
</dependency>
|
|
23
|
+
\`\`\`
|
|
24
|
+
|
|
25
|
+
Or build and install from a source checkout:
|
|
26
|
+
|
|
27
|
+
\`\`\`bash
|
|
28
|
+
cd java && mvn install
|
|
29
|
+
\`\`\`
|
|
30
|
+
|
|
31
|
+
`)
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Publish pending: not yet on Maven Central. Install from the git release
|
|
36
|
+
// tag or from a local source checkout built with Maven.
|
|
37
|
+
const { releasesUrl } = repoInfo(model)
|
|
38
|
+
Content(`This package is not yet published to Maven Central. Install it from the GitHub
|
|
39
|
+
release tag (\`${target.name}/vX.Y.Z\`, see [Releases](${releasesUrl})) or
|
|
40
|
+
from a source checkout — build the library with Maven:
|
|
41
|
+
|
|
42
|
+
\`\`\`bash
|
|
43
|
+
cd java && mvn install
|
|
44
|
+
\`\`\`
|
|
45
|
+
|
|
46
|
+
`)
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
export {
|
|
51
|
+
ReadmeInstall
|
|
52
|
+
}
|