@voxgig/sdkgen 1.3.14 → 1.3.17
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.map +1 -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 +107 -24
- package/dist/helpers/canonType.js.map +1 -1
- package/dist/helpers/collectDeps.js.map +1 -1
- package/dist/helpers/getMatchEntries.js.map +1 -1
- package/dist/helpers/naming.d.ts +5 -1
- package/dist/helpers/naming.js +37 -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 +3 -1
- package/dist/helpers/opShape.js +91 -3
- 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 +7 -1
- 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 +7 -6
- package/project/.sdk/model/target/haskell.aontu +6 -3
- 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 +168 -0
- 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 +152 -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/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/ReadmeEntity_clojure.ts +182 -0
- package/project/.sdk/src/cmp/clojure/ReadmeExamplesTest_clojure.ts +54 -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/Main_cpp.ts +5 -0
- package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +170 -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/TestEntity_cpp.ts +5 -1
- package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +196 -0
- package/project/.sdk/src/cmp/csharp/Main_csharp.ts +6 -0
- package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +174 -0
- package/project/.sdk/src/cmp/csharp/ReadmeExamplesTest_csharp.ts +198 -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/Test_csharp.ts +4 -0
- package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +43 -29
- package/project/.sdk/src/cmp/dart/Entity_dart.ts +8 -0
- 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/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 +165 -0
- 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 +126 -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/EntityTypes_go.ts +12 -3
- package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +6 -1
- package/project/.sdk/src/cmp/go/TestEntity_go.ts +10 -3
- package/project/.sdk/src/cmp/go/utility_go.ts +3 -2
- package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +240 -43
- package/project/.sdk/src/cmp/go-cli/fragment/main.fragment.go +27 -5
- package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +191 -30
- package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +181 -0
- package/project/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +125 -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 +207 -0
- package/project/.sdk/src/cmp/java/Main_java.ts +6 -0
- package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +175 -0
- package/project/.sdk/src/cmp/java/ReadmeExamplesTest_java.ts +186 -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/Test_java.ts +4 -0
- package/project/.sdk/src/cmp/js/EntityTypes_js.ts +25 -8
- package/project/.sdk/src/cmp/js/MainEntity_js.ts +4 -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 +6 -5
- 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 +201 -0
- package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +6 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +175 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeExamplesTest_kotlin.ts +173 -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/Test_kotlin.ts +4 -0
- package/project/.sdk/src/cmp/lua/Config_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +19 -5
- package/project/.sdk/src/cmp/lua/Main_lua.ts +14 -2
- 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/TestEntity_lua.ts +7 -2
- 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 +111 -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/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/Test_perl.ts +4 -0
- package/project/.sdk/src/cmp/php/EntityTypes_php.ts +23 -6
- package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +6 -1
- package/project/.sdk/src/cmp/php/TestEntity_php.ts +7 -2
- package/project/.sdk/src/cmp/py/EntityTypes_py.ts +32 -7
- package/project/.sdk/src/cmp/py/Entity_py.ts +2 -10
- 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/TestEntity_py.ts +7 -2
- package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +19 -5
- 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/TestEntity_rb.ts +7 -2
- package/project/.sdk/src/cmp/rust/EntityBase_rust.ts +4 -0
- package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +152 -0
- package/project/.sdk/src/cmp/rust/Entity_rust.ts +1 -1
- package/project/.sdk/src/cmp/rust/Main_rust.ts +5 -0
- package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +163 -0
- package/project/.sdk/src/cmp/rust/ReadmeExamplesTest_rust.ts +132 -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/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 +202 -0
- 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 +163 -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/TestEntity_scala.ts +38 -10
- package/project/.sdk/src/cmp/scala/Test_scala.ts +8 -0
- package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +152 -0
- package/project/.sdk/src/cmp/swift/Main_swift.ts +5 -0
- package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +176 -0
- package/project/.sdk/src/cmp/swift/ReadmeExamplesTest_swift.ts +170 -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/Test_swift.ts +4 -0
- package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +19 -5
- package/project/.sdk/src/cmp/ts/MainEntity_ts.ts +4 -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 +13 -11
- 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 +1 -1
- package/project/.sdk/src/cmp/zig/Main_zig.ts +10 -4
- package/project/.sdk/src/cmp/zig/Package_zig.ts +53 -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/dart/lib/utility/MakeRequestUtility.dart +4 -1
- package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +7 -1
- 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/utility/struct/voxgigstruct.go +3 -1
- package/project/.sdk/tm/haskell/test/Harness.hs +8 -3
- package/project/.sdk/tm/js/Makefile +1 -1
- package/project/.sdk/tm/js/jsconfig.json +12 -0
- package/project/.sdk/tm/ocaml/Makefile +5 -1
- package/project/.sdk/tm/php/utility/struct/Struct.php +1 -1
- package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +1 -1
- package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +1 -1
- package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +8 -59
- package/project/.sdk/tm/ts/Makefile +1 -1
- package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -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 +116 -25
- package/src/helpers/naming.ts +47 -0
- package/src/helpers/opExample.ts +43 -20
- package/src/helpers/opShape.ts +102 -3
- package/src/sdkgen.ts +8 -2
- package/src/tsconfig.json +2 -0
- package/project/.sdk/tm/zig/build.zig.zon +0 -11
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, each, Content, canonKey, File, isAuthActive, 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.
|
|
11
|
+
function cljLit(type: any, placeholder: string = 'example'): string {
|
|
12
|
+
const k = canonKey(type)
|
|
13
|
+
if ('INTEGER' === k || 'NUMBER' === k) return '1'
|
|
14
|
+
if ('BOOLEAN' === k) return 'true'
|
|
15
|
+
if ('ARRAY' === k) return '(vs/jt)'
|
|
16
|
+
if ('OBJECT' === k) return '(vs/jm)'
|
|
17
|
+
return `"${placeholder}"`
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
// A descriptive Clojure-ish type name (documentation hint, not a static type).
|
|
22
|
+
function cljType(type: any): string {
|
|
23
|
+
const k = canonKey(type)
|
|
24
|
+
if ('STRING' === k) return 'string'
|
|
25
|
+
if ('INTEGER' === k) return 'long'
|
|
26
|
+
if ('NUMBER' === k) return 'double'
|
|
27
|
+
if ('BOOLEAN' === k) return 'boolean'
|
|
28
|
+
if ('ARRAY' === k) return 'vector'
|
|
29
|
+
if ('OBJECT' === k) return 'map'
|
|
30
|
+
return 'any'
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
const OP_SIGNATURES: Record<string, { sig: string, returns: string, desc: string }> = {
|
|
35
|
+
load: {
|
|
36
|
+
sig: '(load ent reqmatch ctrl) -> map',
|
|
37
|
+
returns: 'the entity data',
|
|
38
|
+
desc: 'Load a single entity matching the given criteria. Returns the entity data and raises on error.',
|
|
39
|
+
},
|
|
40
|
+
list: {
|
|
41
|
+
sig: '(list ent reqmatch ctrl) -> vector',
|
|
42
|
+
returns: 'a vector of entities',
|
|
43
|
+
desc: 'List entities matching the given criteria. The match is optional — call with `nil` to list all records. Returns a vector and raises on error.',
|
|
44
|
+
},
|
|
45
|
+
create: {
|
|
46
|
+
sig: '(create ent reqdata ctrl) -> map',
|
|
47
|
+
returns: 'the created entity data',
|
|
48
|
+
desc: 'Create a new entity with the given data. Returns the created entity data and raises on error.',
|
|
49
|
+
},
|
|
50
|
+
update: {
|
|
51
|
+
sig: '(update ent reqdata ctrl) -> map',
|
|
52
|
+
returns: 'the updated entity data',
|
|
53
|
+
desc: 'Update an existing entity. The data must include the entity `id`. Returns the updated entity data and raises on error.',
|
|
54
|
+
},
|
|
55
|
+
remove: {
|
|
56
|
+
sig: '(remove ent reqmatch ctrl) -> map',
|
|
57
|
+
returns: 'the removed entity data',
|
|
58
|
+
desc: 'Remove the entity matching the given criteria. Raises on error.',
|
|
59
|
+
},
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
const ReadmeRef = cmp(function ReadmeRef(props: any) {
|
|
64
|
+
const { target } = props
|
|
65
|
+
const { model } = props.ctx$
|
|
66
|
+
|
|
67
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
68
|
+
const feature = getModelPath(model, `main.${KIT}.feature`)
|
|
69
|
+
|
|
70
|
+
const publishedEntities = each(entity).filter((e: any) => e.active !== false)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
File({ name: 'REFERENCE.md' }, () => {
|
|
74
|
+
|
|
75
|
+
Content(`# ${model.Name} ${target.title} SDK Reference
|
|
76
|
+
|
|
77
|
+
Complete API reference for the ${model.Name} ${target.title} SDK.
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
## Client
|
|
81
|
+
|
|
82
|
+
### make-sdk
|
|
83
|
+
|
|
84
|
+
`)
|
|
85
|
+
|
|
86
|
+
Content(`\`\`\`clojure
|
|
87
|
+
(require '[sdk.api :as api]
|
|
88
|
+
'[voxgig.struct :as vs])
|
|
89
|
+
|
|
90
|
+
(def client (api/make-sdk options))
|
|
91
|
+
\`\`\`
|
|
92
|
+
|
|
93
|
+
Create a new SDK client instance. \`options\` is a \`voxgig.struct\` map.
|
|
94
|
+
|
|
95
|
+
**Options:**
|
|
96
|
+
|
|
97
|
+
| Key | Type | Description |
|
|
98
|
+
| --- | --- | --- |
|
|
99
|
+
${isAuthActive(model) ? '| `apikey` | `string` | API key for authentication. |\n' : ''}| \`base\` | \`string\` | Base URL for API requests. |
|
|
100
|
+
| \`prefix\` | \`string\` | URL prefix appended after base. |
|
|
101
|
+
| \`suffix\` | \`string\` | URL suffix appended after path. |
|
|
102
|
+
| \`headers\` | \`map\` | Custom headers for all requests. |
|
|
103
|
+
| \`feature\` | \`map\` | Feature configuration. |
|
|
104
|
+
| \`system\` | \`map\` | System overrides (e.g. custom fetch). |
|
|
105
|
+
|
|
106
|
+
`)
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
Content(`
|
|
110
|
+
### Test client
|
|
111
|
+
|
|
112
|
+
`)
|
|
113
|
+
|
|
114
|
+
Content(`#### \`(api/test-sdk testopts sdkopts)\`
|
|
115
|
+
|
|
116
|
+
Create a test client with mock features active. Both arguments may be \`nil\`.
|
|
117
|
+
|
|
118
|
+
\`\`\`clojure
|
|
119
|
+
(def client (api/test-sdk nil nil))
|
|
120
|
+
\`\`\`
|
|
121
|
+
|
|
122
|
+
`)
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
Content(`
|
|
126
|
+
### Client functions
|
|
127
|
+
|
|
128
|
+
`)
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
// Entity factory functions
|
|
132
|
+
publishedEntities.map((ent: any) => {
|
|
133
|
+
Content(`#### \`(api/${ent.name} client data)\`
|
|
134
|
+
|
|
135
|
+
Create a new \`${ent.Name}\` entity instance. Pass \`nil\` for no initial data.
|
|
136
|
+
|
|
137
|
+
`)
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
Content(`#### \`(api/options-map client) -> map\`
|
|
142
|
+
|
|
143
|
+
Return a deep copy of the current SDK options.
|
|
144
|
+
|
|
145
|
+
#### \`(api/get-utility client) -> utility\`
|
|
146
|
+
|
|
147
|
+
Return a copy of the SDK utility object.
|
|
148
|
+
|
|
149
|
+
#### \`(api/direct client fetchargs) -> map\`
|
|
150
|
+
|
|
151
|
+
Make a direct HTTP request to any API endpoint. Returns a result \`map\` with \`ok\`, \`status\`, \`headers\`, and \`data\` (or \`err\` on failure). This escape hatch never raises — branch on \`(vs/getprop result "ok")\`.
|
|
152
|
+
|
|
153
|
+
**Fetch args:**
|
|
154
|
+
|
|
155
|
+
| Key | Type | Description |
|
|
156
|
+
| --- | --- | --- |
|
|
157
|
+
| \`path\` | \`string\` | URL path with optional \`{param}\` placeholders. |
|
|
158
|
+
| \`method\` | \`string\` | HTTP method (default: \`"GET"\`). |
|
|
159
|
+
| \`params\` | \`map\` | Path parameter values. |
|
|
160
|
+
| \`query\` | \`map\` | Query string parameters. |
|
|
161
|
+
| \`headers\` | \`map\` | Request headers (merged with defaults). |
|
|
162
|
+
| \`body\` | \`any\` | Request body (maps are JSON-serialized). |
|
|
163
|
+
|
|
164
|
+
**Returns:** a result \`map\`.
|
|
165
|
+
|
|
166
|
+
#### \`(api/prepare client fetchargs) -> map\`
|
|
167
|
+
|
|
168
|
+
Prepare a fetch definition without sending. Returns the \`fetchdef\` and raises on error.
|
|
169
|
+
|
|
170
|
+
`)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
// Entity reference sections
|
|
174
|
+
publishedEntities.map((ent: any) => {
|
|
175
|
+
const opnames = Object.keys(ent.op || {})
|
|
176
|
+
const fields = ent.fields || []
|
|
177
|
+
// Model-driven id key: null when this entity has no id-like field.
|
|
178
|
+
const idF = entityIdField(ent)
|
|
179
|
+
const eLow = ent.name
|
|
180
|
+
|
|
181
|
+
Content(`
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## ${ent.Name}
|
|
185
|
+
|
|
186
|
+
`)
|
|
187
|
+
|
|
188
|
+
if (ent.short) {
|
|
189
|
+
Content(`${ent.short}
|
|
190
|
+
|
|
191
|
+
`)
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
Content(`\`\`\`clojure
|
|
195
|
+
(require '[sdk.entity.${eLow} :as e-${eLow}])
|
|
196
|
+
|
|
197
|
+
(def ${eLow} (api/${eLow} client nil))
|
|
198
|
+
\`\`\`
|
|
199
|
+
|
|
200
|
+
`)
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
// Field schema
|
|
204
|
+
if (fields.length > 0) {
|
|
205
|
+
Content(`### Fields
|
|
206
|
+
|
|
207
|
+
| Field | Type | Required | Description |
|
|
208
|
+
| --- | --- | --- | --- |
|
|
209
|
+
`)
|
|
210
|
+
each(fields, (field: any) => {
|
|
211
|
+
const req = field.req ? 'Yes' : 'No'
|
|
212
|
+
const desc = field.short || ''
|
|
213
|
+
Content(`| \`${field.name}\` | \`${cljType(field.type)}\` | ${req} | ${desc} |
|
|
214
|
+
`)
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
Content(`
|
|
218
|
+
`)
|
|
219
|
+
|
|
220
|
+
// Field operations breakdown
|
|
221
|
+
const hasFieldOps = fields.some((f: any) => f.op && Object.keys(f.op).length > 0)
|
|
222
|
+
if (hasFieldOps) {
|
|
223
|
+
const opcols = ['load', 'list', 'create', 'update', 'remove']
|
|
224
|
+
.filter((op: string) => opnames.includes(op) && ent.op[op]?.active !== false)
|
|
225
|
+
Content(`### Field Usage by Operation
|
|
226
|
+
|
|
227
|
+
| Field | ${opcols.join(' | ')} |
|
|
228
|
+
| --- | ${opcols.map(() => '---').join(' | ')} |
|
|
229
|
+
`)
|
|
230
|
+
each(fields, (field: any) => {
|
|
231
|
+
const fops = field.op || {}
|
|
232
|
+
const cols = opcols.map((op: string) => {
|
|
233
|
+
const fop = fops[op]
|
|
234
|
+
if (null == fop) return '-'
|
|
235
|
+
if (fop.active === false) return '-'
|
|
236
|
+
return 'Yes'
|
|
237
|
+
})
|
|
238
|
+
Content(`| \`${field.name}\` | ${cols.join(' | ')} |
|
|
239
|
+
`)
|
|
240
|
+
})
|
|
241
|
+
|
|
242
|
+
Content(`
|
|
243
|
+
`)
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
// Operation details
|
|
249
|
+
if (opnames.length > 0) {
|
|
250
|
+
Content(`### Operations
|
|
251
|
+
|
|
252
|
+
`)
|
|
253
|
+
|
|
254
|
+
opnames.map((opname: string) => {
|
|
255
|
+
const info = OP_SIGNATURES[opname]
|
|
256
|
+
if (!info) return
|
|
257
|
+
|
|
258
|
+
Content(`#### \`${info.sig}\`
|
|
259
|
+
|
|
260
|
+
${info.desc}
|
|
261
|
+
|
|
262
|
+
`)
|
|
263
|
+
|
|
264
|
+
if ('load' === opname || 'remove' === opname) {
|
|
265
|
+
const matchItems = opRequestShape(ent, opname).items
|
|
266
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
267
|
+
.sort((a: any, b: any) =>
|
|
268
|
+
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
269
|
+
const arg = 0 < matchItems.length
|
|
270
|
+
? `(vs/jm ${matchItems.map((it: any) =>
|
|
271
|
+
`"${it.name}" ${cljLit(it.type,
|
|
272
|
+
it.name === idF ? ent.name + '_id' : it.name)}`).join(' ')})`
|
|
273
|
+
: 'nil'
|
|
274
|
+
Content(`\`\`\`clojure
|
|
275
|
+
(def result (e-${eLow}/${opname} (api/${eLow} client nil) ${arg} nil))
|
|
276
|
+
\`\`\`
|
|
277
|
+
|
|
278
|
+
`)
|
|
279
|
+
}
|
|
280
|
+
else if ('list' === opname) {
|
|
281
|
+
Content(`\`\`\`clojure
|
|
282
|
+
(doseq [${eLow} (e-${eLow}/list (api/${eLow} client nil) nil nil)]
|
|
283
|
+
(println ${eLow}))
|
|
284
|
+
\`\`\`
|
|
285
|
+
|
|
286
|
+
`)
|
|
287
|
+
}
|
|
288
|
+
else if ('create' === opname) {
|
|
289
|
+
const createItems = opRequestShape(ent, 'create').items
|
|
290
|
+
.filter((it: any) => !it.optional)
|
|
291
|
+
Content(`\`\`\`clojure
|
|
292
|
+
(def result
|
|
293
|
+
(e-${eLow}/create (api/${eLow} client nil)
|
|
294
|
+
(vs/jm
|
|
295
|
+
`)
|
|
296
|
+
createItems.map((it: any) => {
|
|
297
|
+
Content(` "${it.name}" ${cljLit(it.type, 'example_' + it.name)} ;; ${cljType(it.type)}
|
|
298
|
+
`)
|
|
299
|
+
})
|
|
300
|
+
Content(` )
|
|
301
|
+
nil))
|
|
302
|
+
\`\`\`
|
|
303
|
+
|
|
304
|
+
`)
|
|
305
|
+
}
|
|
306
|
+
else if ('update' === opname) {
|
|
307
|
+
const updateItems = opRequestShape(ent, 'update').items
|
|
308
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
309
|
+
.sort((a: any, b: any) =>
|
|
310
|
+
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
311
|
+
const updateLines = updateItems.map((it: any) =>
|
|
312
|
+
` "${it.name}" ${cljLit(it.type,
|
|
313
|
+
it.name === idF ? ent.name + '_id' : it.name)}\n`).join('')
|
|
314
|
+
Content(`\`\`\`clojure
|
|
315
|
+
(def result
|
|
316
|
+
(e-${eLow}/update (api/${eLow} client nil)
|
|
317
|
+
(vs/jm
|
|
318
|
+
${updateLines} ;; Fields to update
|
|
319
|
+
)
|
|
320
|
+
nil))
|
|
321
|
+
\`\`\`
|
|
322
|
+
|
|
323
|
+
`)
|
|
324
|
+
}
|
|
325
|
+
})
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
// Common methods
|
|
330
|
+
Content(`### Common Members
|
|
331
|
+
|
|
332
|
+
State accessors are stored on the entity map and called via keyword lookup.
|
|
333
|
+
|
|
334
|
+
#### \`((:data-get ent)) -> map\`
|
|
335
|
+
|
|
336
|
+
Get the entity data.
|
|
337
|
+
|
|
338
|
+
#### \`((:data-set ent) data)\`
|
|
339
|
+
|
|
340
|
+
Set the entity data.
|
|
341
|
+
|
|
342
|
+
#### \`((:match-get ent)) -> map\`
|
|
343
|
+
|
|
344
|
+
Get the entity match criteria.
|
|
345
|
+
|
|
346
|
+
#### \`((:match-set ent) match)\`
|
|
347
|
+
|
|
348
|
+
Set the entity match criteria.
|
|
349
|
+
|
|
350
|
+
#### \`((:make ent)) -> entity\`
|
|
351
|
+
|
|
352
|
+
Create a new \`${ent.Name}\` entity instance with the same options.
|
|
353
|
+
|
|
354
|
+
#### \`((:get-name ent)) -> string\`
|
|
355
|
+
|
|
356
|
+
Return the entity name.
|
|
357
|
+
|
|
358
|
+
`)
|
|
359
|
+
})
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
// Features section
|
|
363
|
+
const activeFeatures = each(feature).filter((f: any) => f.active)
|
|
364
|
+
if (activeFeatures.length > 0) {
|
|
365
|
+
Content(`
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## Features
|
|
369
|
+
|
|
370
|
+
| Feature | Version | Description |
|
|
371
|
+
| --- | --- | --- |
|
|
372
|
+
`)
|
|
373
|
+
|
|
374
|
+
activeFeatures.map((f: any) => {
|
|
375
|
+
Content(`| \`${f.name}\` | ${f.version || '0.0.1'} | ${f.title || ''} |
|
|
376
|
+
`)
|
|
377
|
+
})
|
|
378
|
+
|
|
379
|
+
Content(`
|
|
380
|
+
|
|
381
|
+
Features are activated via the \`feature\` option:
|
|
382
|
+
|
|
383
|
+
`)
|
|
384
|
+
|
|
385
|
+
Content(`\`\`\`clojure
|
|
386
|
+
(def client
|
|
387
|
+
(api/make-sdk
|
|
388
|
+
(vs/jm "feature"
|
|
389
|
+
(vs/jm
|
|
390
|
+
`)
|
|
391
|
+
activeFeatures.map((f: any) => {
|
|
392
|
+
Content(` "${f.name}" (vs/jm "active" true)
|
|
393
|
+
`)
|
|
394
|
+
})
|
|
395
|
+
Content(` ))))
|
|
396
|
+
\`\`\`
|
|
397
|
+
|
|
398
|
+
`)
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
})
|
|
402
|
+
})
|
|
403
|
+
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
export {
|
|
408
|
+
ReadmeRef
|
|
409
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content } from '@voxgig/sdkgen'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
const ReadmeTopHowto = cmp(function ReadmeTopHowto(props: any) {
|
|
6
|
+
const { target } = props
|
|
7
|
+
|
|
8
|
+
Content(`**Clojure:**
|
|
9
|
+
\`\`\`clojure
|
|
10
|
+
(def result
|
|
11
|
+
(api/direct client
|
|
12
|
+
(vs/jm "path" "/api/resource/{id}"
|
|
13
|
+
"method" "GET"
|
|
14
|
+
"params" (vs/jm "id" "example"))))
|
|
15
|
+
\`\`\`
|
|
16
|
+
|
|
17
|
+
`)
|
|
18
|
+
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
ReadmeTopHowto
|
|
24
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
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
|
+
|
|
11
|
+
// A type-correct Clojure literal for a param: numeric/boolean/array/object
|
|
12
|
+
// params render a typed literal; strings render the quoted placeholder.
|
|
13
|
+
function cljLit(type: any, placeholder: string = 'example'): string {
|
|
14
|
+
const k = canonKey(type)
|
|
15
|
+
if ('INTEGER' === k || 'NUMBER' === k) return '1'
|
|
16
|
+
if ('BOOLEAN' === k) return 'true'
|
|
17
|
+
if ('ARRAY' === k) return '(vs/jt)'
|
|
18
|
+
if ('OBJECT' === k) return '(vs/jm)'
|
|
19
|
+
return `"${placeholder}"`
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
const ReadmeTopQuick = cmp(function ReadmeTopQuick(props: any) {
|
|
24
|
+
const { target, ctx$: { model } } = props
|
|
25
|
+
|
|
26
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
27
|
+
|
|
28
|
+
const exampleEntity = Object.values(entity).find((e: any) => e.active !== false) as any
|
|
29
|
+
|
|
30
|
+
const authActive = isAuthActive(model)
|
|
31
|
+
const ctor = authActive
|
|
32
|
+
? `(api/make-sdk (vs/jm "apikey" (System/getenv "${envName(model)}_APIKEY")))`
|
|
33
|
+
: `(api/make-sdk nil)`
|
|
34
|
+
|
|
35
|
+
if (exampleEntity) {
|
|
36
|
+
const eName = nom(exampleEntity, 'Name')
|
|
37
|
+
const eLow = exampleEntity.name
|
|
38
|
+
|
|
39
|
+
Content(`\`\`\`clojure
|
|
40
|
+
(require '[sdk.api :as api]
|
|
41
|
+
'[sdk.entity.${eLow} :as e-${eLow}]
|
|
42
|
+
'[voxgig.struct :as vs])
|
|
43
|
+
|
|
44
|
+
(def client ${ctor})
|
|
45
|
+
|
|
46
|
+
`)
|
|
47
|
+
|
|
48
|
+
const opnames = Object.keys(exampleEntity.op || {})
|
|
49
|
+
// Model-driven id key: null when the entity has no id-like field, in which
|
|
50
|
+
// case the load example takes no match argument.
|
|
51
|
+
const idF = entityIdField(exampleEntity)
|
|
52
|
+
|
|
53
|
+
if (opnames.includes('list')) {
|
|
54
|
+
Content(`;; List all ${eLow}s (returns a vector, raises on error)
|
|
55
|
+
(doseq [${eLow} (e-${eLow}/list (api/${eLow} client nil) nil nil)]
|
|
56
|
+
(println ${eLow}))
|
|
57
|
+
`)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (opnames.includes('load')) {
|
|
61
|
+
// Every REQUIRED load-match key (id first, then parent path params like
|
|
62
|
+
// page_id) — the same shape the runtime resolves path params from, so
|
|
63
|
+
// the example always works.
|
|
64
|
+
const loadItems = opRequestShape(exampleEntity, 'load').items
|
|
65
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
66
|
+
.sort((a: any, b: any) =>
|
|
67
|
+
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
68
|
+
const loadArg = 0 < loadItems.length
|
|
69
|
+
? `(vs/jm ${loadItems.map((it: any) =>
|
|
70
|
+
`"${it.name}" ${cljLit(it.type,
|
|
71
|
+
it.name === idF ? 'example_id' : 'example_' + it.name)}`).join(' ')})`
|
|
72
|
+
: 'nil'
|
|
73
|
+
Content(`
|
|
74
|
+
;; Load a specific ${eLow} (returns the record, raises on error)
|
|
75
|
+
(def ${eLow} (e-${eLow}/load (api/${eLow} client nil) ${loadArg} nil))
|
|
76
|
+
(println ${eLow})
|
|
77
|
+
`)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
Content(`\`\`\`
|
|
81
|
+
`)
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
Content(`\`\`\`clojure
|
|
85
|
+
(require '[sdk.api :as api]
|
|
86
|
+
'[voxgig.struct :as vs])
|
|
87
|
+
|
|
88
|
+
(def client ${ctor})
|
|
89
|
+
\`\`\`
|
|
90
|
+
`)
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
})
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
export {
|
|
97
|
+
ReadmeTopQuick
|
|
98
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
|
|
2
|
+
import { cmp, Content, canonKey, entityIdField, pickExampleEntity, 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.
|
|
11
|
+
function cljLit(type: any): string {
|
|
12
|
+
const k = canonKey(type)
|
|
13
|
+
if ('INTEGER' === k || 'NUMBER' === k) return '1'
|
|
14
|
+
if ('BOOLEAN' === k) return 'true'
|
|
15
|
+
if ('ARRAY' === k) return '(vs/jt)'
|
|
16
|
+
if ('OBJECT' === k) return '(vs/jm)'
|
|
17
|
+
return '"example"'
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
const ReadmeTopTest = cmp(function ReadmeTopTest(props: any) {
|
|
22
|
+
const { target, ctx$: { model } } = props
|
|
23
|
+
|
|
24
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
25
|
+
// Pick an entity with a real op (prefer a read op) — never fabricate a
|
|
26
|
+
// `load` on an op-less entity.
|
|
27
|
+
const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
|
|
28
|
+
|
|
29
|
+
Content(`\`\`\`clojure
|
|
30
|
+
(require '[sdk.api :as api]
|
|
31
|
+
`)
|
|
32
|
+
if (exampleEntity && primaryOp) {
|
|
33
|
+
Content(` '[sdk.entity.${exampleEntity.name} :as e-${exampleEntity.name}]
|
|
34
|
+
`)
|
|
35
|
+
}
|
|
36
|
+
Content(` '[voxgig.struct :as vs])
|
|
37
|
+
|
|
38
|
+
(def client (api/test-sdk nil nil))
|
|
39
|
+
`)
|
|
40
|
+
|
|
41
|
+
if (exampleEntity && primaryOp) {
|
|
42
|
+
const eLow = exampleEntity.name
|
|
43
|
+
const idF = entityIdField(exampleEntity)
|
|
44
|
+
const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
|
|
45
|
+
let arg = 'nil'
|
|
46
|
+
if (isMatchOp) {
|
|
47
|
+
// Every REQUIRED match key (id first) — the same shape that generates
|
|
48
|
+
// the op's match handling.
|
|
49
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
50
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
51
|
+
.sort((a: any, b: any) =>
|
|
52
|
+
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
53
|
+
arg = 0 < items.length
|
|
54
|
+
? `(vs/jm ${items.map((it: any) =>
|
|
55
|
+
`"${it.name}" ${it.name === idF ? '"test01"' : cljLit(it.type)}`).join(' ')})`
|
|
56
|
+
: 'nil'
|
|
57
|
+
} else if ('create' === primaryOp || 'update' === primaryOp) {
|
|
58
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
59
|
+
.filter((it: any) => it.name !== idF && it.name !== 'id')
|
|
60
|
+
const required = items.filter((it: any) => !it.optional)
|
|
61
|
+
const chosen = required.length ? required : items.slice(0, 3)
|
|
62
|
+
arg = `(vs/jm ${chosen.map((it: any) => `"${it.name}" ${cljLit(it.type)}`).join(' ')})`
|
|
63
|
+
}
|
|
64
|
+
const eVar = eLow + ('list' === primaryOp ? 's' : '')
|
|
65
|
+
Content(`(def ${eVar} (e-${eLow}/${primaryOp} (api/${eLow} client nil) ${arg} nil))
|
|
66
|
+
(println ${eVar})
|
|
67
|
+
`)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
Content(`\`\`\`
|
|
71
|
+
`)
|
|
72
|
+
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
export {
|
|
77
|
+
ReadmeTopTest
|
|
78
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
|
|
2
|
+
import {
|
|
3
|
+
Content,
|
|
4
|
+
cmp,
|
|
5
|
+
isAuthActive,
|
|
6
|
+
} from '@voxgig/sdkgen'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
// Emit per-entity direct()/prepare() checks INTO the shared gentest run body
|
|
10
|
+
// (the clojure test runner drives a single sdk.gentest/run). Only entities
|
|
11
|
+
// with a read op get a check — matching the py/elixir TestDirect gate — so an
|
|
12
|
+
// op-less entity does not fabricate a request path. The checks exercise the
|
|
13
|
+
// raw-HTTP escape hatch: prepare() builds a fetchdef without sending, and
|
|
14
|
+
// direct() runs a live-mode client against an in-test mock system.fetch.
|
|
15
|
+
const TestDirect = cmp(function TestDirect(props: any) {
|
|
16
|
+
const { model } = props.ctx$
|
|
17
|
+
const entity = props.entity
|
|
18
|
+
|
|
19
|
+
const opnames = Object.keys(entity.op || {})
|
|
20
|
+
const hasLoad = opnames.includes('load')
|
|
21
|
+
const hasList = opnames.includes('list')
|
|
22
|
+
if (!hasLoad && !hasList) {
|
|
23
|
+
return
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const ename = entity.name
|
|
27
|
+
// A live-mode client must satisfy prepare-auth when auth is active, so pass a
|
|
28
|
+
// dummy apikey; otherwise prepare() (and thus direct()) would throw.
|
|
29
|
+
const apikeyOpt = isAuthActive(model) ? ` "apikey" "test-key"` : ''
|
|
30
|
+
|
|
31
|
+
// prepare(): pure request-definition build, no transport.
|
|
32
|
+
Content(` (t/run-check rec "gen-prepare-${ename}"
|
|
33
|
+
(fn [] (let [client (api/make-sdk (vs/jm "base" "http://example.test"${apikeyOpt}))
|
|
34
|
+
fetchdef (api/prepare client (vs/jm "path" "/api/${ename}" "method" "GET"))]
|
|
35
|
+
(t/is-true (vs/ismap fetchdef) "prepare returns a fetchdef map")
|
|
36
|
+
(t/is-some (vs/getprop fetchdef "url") "fetchdef carries a url")
|
|
37
|
+
(t/is-eq (vs/getprop fetchdef "method") "GET" "fetchdef preserves the method"))))
|
|
38
|
+
`)
|
|
39
|
+
|
|
40
|
+
// direct(): live-mode client wired to a recording mock system.fetch. The
|
|
41
|
+
// mock returns a 200 JSON response, so direct() reports ok=true.
|
|
42
|
+
Content(` (t/run-check rec "gen-direct-${ename}"
|
|
43
|
+
(fn [] (let [fetch (fn [_url _fetchdef]
|
|
44
|
+
[(vs/jm "status" 200 "statusText" "OK" "headers" (vs/jm)
|
|
45
|
+
"json" (fn [] (vs/jm "id" "d1"))) nil])
|
|
46
|
+
client (api/make-sdk (vs/jm "base" "http://example.test"${apikeyOpt}
|
|
47
|
+
"system" (vs/jm "fetch" fetch)))
|
|
48
|
+
result (api/direct client (vs/jm "path" "/api/${ename}" "method" "GET"))]
|
|
49
|
+
(t/is-true (vs/ismap result) "direct returns a result map")
|
|
50
|
+
(t/is-true (vs/getprop result "ok") "direct 200 => ok true")
|
|
51
|
+
(t/is-eq (vs/getprop result "status") 200 "direct surfaces the status"))))
|
|
52
|
+
`)
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
export {
|
|
57
|
+
TestDirect
|
|
58
|
+
}
|