@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
|
@@ -39,7 +39,7 @@ gemspec
|
|
|
39
39
|
|
|
40
40
|
`)
|
|
41
41
|
|
|
42
|
-
for (const d of collectDeps(model, target.name, target.deps)) {
|
|
42
|
+
for (const d of collectDeps(model, target.name, target.deps, ctx$.log)) {
|
|
43
43
|
Content(`gem "${d.name}", "~> ${versionOf(d)}"
|
|
44
44
|
`)
|
|
45
45
|
}
|
|
@@ -51,7 +51,7 @@ gemspec
|
|
|
51
51
|
// twice (Gem::InvalidSpecificationException at `gem build`), so the
|
|
52
52
|
// unconstrained json fallback is only emitted when the model's own
|
|
53
53
|
// dependency list doesn't already declare json.
|
|
54
|
-
const deps = collectDeps(model, target.name, target.deps)
|
|
54
|
+
const deps = collectDeps(model, target.name, target.deps, ctx$.log)
|
|
55
55
|
const hasJson = deps.some((d: any) => 'json' === d.name)
|
|
56
56
|
|
|
57
57
|
Content(`Gem::Specification.new do |spec|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, each, Content, canonToType, canonKey, entityIdField, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, each, Content, canonToType, canonKey, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -58,7 +58,7 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
|
|
|
58
58
|
const idF = entityIdField(entity)
|
|
59
59
|
// Sanitise the local variable name — an entity whose lowercased name is a
|
|
60
60
|
// Ruby keyword (e.g. `self`) would otherwise emit uncompilable code.
|
|
61
|
-
const eVar =
|
|
61
|
+
const eVar = exampleVarName(entity.name, 'rb')
|
|
62
62
|
|
|
63
63
|
Content(`
|
|
64
64
|
### ${entity.Name}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -32,7 +32,7 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
|
|
|
32
32
|
// Ruby keyword (e.g. `self`) would otherwise emit uncompilable code. The
|
|
33
33
|
// fixture KEY (`"${eName.toLowerCase()}"`) stays raw — it must match the
|
|
34
34
|
// entity's registered name for the mock lookup to resolve.
|
|
35
|
-
const eVar =
|
|
35
|
+
const eVar = exampleVarName(eName.toLowerCase(), 'rb')
|
|
36
36
|
// Model-driven id key: null when the entity has no id-like field (a
|
|
37
37
|
// response-wrapped spec). When null the fixture seeds no id and a match op
|
|
38
38
|
// takes no argument.
|
|
@@ -48,7 +48,12 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
|
|
|
48
48
|
// remove, a required-field body for create/update, nothing for list.
|
|
49
49
|
let testCallArg = ''
|
|
50
50
|
if (exampleEntity && isMatchOp) {
|
|
51
|
-
|
|
51
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
52
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
53
|
+
.sort((a: any, b: any) => (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
54
|
+
testCallArg = 0 < items.length
|
|
55
|
+
? `{ ${items.map((it: any) => `"${it.name}" => ${it.name === idF ? '"test01"' : rbLit(it.type)}`).join(', ')} }`
|
|
56
|
+
: ''
|
|
52
57
|
} else if (exampleEntity && ('create' === primaryOp || 'update' === primaryOp)) {
|
|
53
58
|
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
54
59
|
.filter((it: any) => it.name !== idF && it.name !== 'id')
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, each, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityDataIdField, entityOps, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, each, Content, isAuthActive, envName, canonKey, opRequestShape, entityIdField, entityDataIdField, entityOps, safeVarName, exampleVarName } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -45,7 +45,7 @@ client = ${ctor}
|
|
|
45
45
|
const article = /^[aeiou]/i.test(eName) ? "an" : "a"
|
|
46
46
|
// Sanitise the local variable name — an entity whose lowercased name is a
|
|
47
47
|
// Ruby keyword (e.g. `self`) would otherwise emit uncompilable code.
|
|
48
|
-
const eVar =
|
|
48
|
+
const eVar = exampleVarName(eName.toLowerCase(), 'rb')
|
|
49
49
|
const opnames = entityOps(exampleEntity)
|
|
50
50
|
// Model-driven id keys: `idF` is the load-MATCH key (null when the entity
|
|
51
51
|
// has no id-like field — a response-wrapped spec); when null, load/remove
|
|
@@ -102,7 +102,7 @@ end
|
|
|
102
102
|
if (nestedEntity) {
|
|
103
103
|
const neName = nom(nestedEntity, 'Name')
|
|
104
104
|
const neArticle = /^[aeiou]/i.test(neName) ? "an" : "a"
|
|
105
|
-
const neVar =
|
|
105
|
+
const neVar = exampleVarName(neName.toLowerCase(), 'rb')
|
|
106
106
|
|
|
107
107
|
// Model-driven match: every REQUIRED load-match key — the same shape
|
|
108
108
|
// the runtime resolves path params from, so the example always works.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, each, Content, canonToType, canonKey, File, isAuthActive, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -174,7 +174,7 @@ same parameters as \`direct()\`. Raises on error.
|
|
|
174
174
|
const idF = entityIdField(ent)
|
|
175
175
|
// Sanitise the local variable name — an entity whose lowercased name is
|
|
176
176
|
// a Ruby keyword (e.g. `self`) would otherwise emit uncompilable code.
|
|
177
|
-
const eVar =
|
|
177
|
+
const eVar = exampleVarName(ent.name, 'rb')
|
|
178
178
|
|
|
179
179
|
Content(`
|
|
180
180
|
---
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, Content, isAuthActive, envName, canonKey, entityIdField, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -45,7 +45,7 @@ client = ${ctor}
|
|
|
45
45
|
const eName = nom(exampleEntity, 'Name')
|
|
46
46
|
// Sanitise the local variable name — an entity whose lowercased name is a
|
|
47
47
|
// Ruby keyword (e.g. `self`) would otherwise emit uncompilable code.
|
|
48
|
-
const eVar =
|
|
48
|
+
const eVar = exampleVarName(eName.toLowerCase(), 'rb')
|
|
49
49
|
const opnames = Object.keys(exampleEntity.op || {})
|
|
50
50
|
// Model-driven id key: null when the entity has no id-like field, in which
|
|
51
51
|
// case the load example takes no match argument.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, Content, canonKey, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -59,7 +59,7 @@ const ReadmeTopTest = cmp(function ReadmeTopTest(props: any) {
|
|
|
59
59
|
// base name — an entity whose lowercased name is a Ruby keyword (e.g.
|
|
60
60
|
// `self`) would otherwise emit uncompilable code. The fixture KEY (`ename`)
|
|
61
61
|
// stays raw so the mock lookup resolves.
|
|
62
|
-
const eVar =
|
|
62
|
+
const eVar = exampleVarName(ename, 'rb') + ('list' === primaryOp ? 's' : '')
|
|
63
63
|
Content(`\`\`\`ruby
|
|
64
64
|
# Seed fixture data so offline calls resolve without a live server.
|
|
65
65
|
client = ${model.const.Name}SDK.test({
|
|
@@ -70,7 +70,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
70
70
|
? `\n "apikey" => env["${PROJECTNAME}_APIKEY"],`
|
|
71
71
|
: ''
|
|
72
72
|
|
|
73
|
-
const opnames = Object.keys(entity.op)
|
|
73
|
+
const opnames = Object.keys(entity.op || {})
|
|
74
74
|
const hasLoad = opnames.includes('load')
|
|
75
75
|
const hasList = opnames.includes('list')
|
|
76
76
|
|
|
@@ -78,8 +78,8 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
78
78
|
return
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
-
const loadOp = entity.op
|
|
82
|
-
const listOp = entity.op
|
|
81
|
+
const loadOp = entity.op?.load
|
|
82
|
+
const listOp = entity.op?.list
|
|
83
83
|
|
|
84
84
|
const loadPoint = loadOp?.points?.[0]
|
|
85
85
|
const loadPath = loadPoint ? normalizePathParams(loadPoint.parts || [], loadPoint?.args?.params || [], loadPoint?.rename?.param) : ''
|
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
buildIdNames,
|
|
25
25
|
getMatchEntries,
|
|
26
26
|
isAuthActive,
|
|
27
|
+
entityDataIdField,
|
|
27
28
|
} from '@voxgig/sdkgen'
|
|
28
29
|
|
|
29
30
|
|
|
@@ -49,7 +50,7 @@ const TestEntity = cmp(function TestEntity(props: any) {
|
|
|
49
50
|
// it only applies to entities that declare a list op. Others (e.g. Batch =
|
|
50
51
|
// create/load) have no list endpoint — make_point errors and the stream
|
|
51
52
|
// yields nothing — so skip the stream test for them.
|
|
52
|
-
const hasList = !!(entity.op && (entity.op as any)
|
|
53
|
+
const hasList = !!(entity.op && (entity.op as any)?.list)
|
|
53
54
|
|
|
54
55
|
const basicflow: ModelEntityFlow | undefined =
|
|
55
56
|
getModelPath(model, `main.${KIT}.flow.Basic${nom(entity, 'Name')}Flow`)
|
|
@@ -327,6 +328,7 @@ const generateCreate: OpGen = (ctx, step, index) => {
|
|
|
327
328
|
|
|
328
329
|
const generateList: OpGen = (ctx, step, index) => {
|
|
329
330
|
const { entity, flow } = ctx
|
|
331
|
+
const hasDataId = null != entityDataIdField(entity)
|
|
330
332
|
const ref = step.input.ref ?? entity.name + '_ref01'
|
|
331
333
|
const entvar = step.input.entvar ?? ref + '_ent'
|
|
332
334
|
const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
|
|
@@ -371,7 +373,7 @@ const generateList: OpGen = (ctx, step, index) => {
|
|
|
371
373
|
const hasRefData = validRef && allSteps.some((s: any) => 'create' === s.op &&
|
|
372
374
|
((s.input.ref ?? entity.name + '_ref01') === validRef))
|
|
373
375
|
|
|
374
|
-
if ('ItemExists' === validator.apply && hasRefData) {
|
|
376
|
+
if ('ItemExists' === validator.apply && hasRefData && hasDataId) {
|
|
375
377
|
const refDataVar = validRef + '_data'
|
|
376
378
|
Content(`
|
|
377
379
|
found_item = Vs.select(
|
|
@@ -379,7 +381,7 @@ const generateList: OpGen = (ctx, step, index) => {
|
|
|
379
381
|
{ "id" => ${refDataVar}["id"] })
|
|
380
382
|
assert !Vs.isempty(found_item)
|
|
381
383
|
`)
|
|
382
|
-
} else if ('ItemNotExists' === validator.apply && hasRefData) {
|
|
384
|
+
} else if ('ItemNotExists' === validator.apply && hasRefData && hasDataId) {
|
|
383
385
|
const refDataVar = validRef + '_data'
|
|
384
386
|
Content(`
|
|
385
387
|
not_found_item = Vs.select(
|
|
@@ -529,6 +531,9 @@ const generateLoad: OpGen = (ctx, step, index) => {
|
|
|
529
531
|
|
|
530
532
|
const generateRemove: OpGen = (ctx, step, index) => {
|
|
531
533
|
const { entity, flow } = ctx
|
|
534
|
+
if (null == entityDataIdField(entity)) {
|
|
535
|
+
return
|
|
536
|
+
}
|
|
532
537
|
const ref = step.input.ref ?? entity.name + '_ref01'
|
|
533
538
|
const entvar = step.input.entvar ?? ref + '_ent'
|
|
534
539
|
const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
Folder,
|
|
6
6
|
cmp,
|
|
7
7
|
each,
|
|
8
|
-
entityClassName,
|
|
8
|
+
entityClassName, entityCollection,
|
|
9
9
|
} from '@voxgig/sdkgen'
|
|
10
10
|
|
|
11
11
|
|
|
@@ -27,7 +27,7 @@ const EntityBase = cmp(async function EntityBase(props: any) {
|
|
|
27
27
|
const { model } = props.ctx$
|
|
28
28
|
|
|
29
29
|
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
30
|
-
const entityColl =
|
|
30
|
+
const entityColl = entityCollection(model)
|
|
31
31
|
|
|
32
32
|
Folder({ name: 'entity' }, () => {
|
|
33
33
|
File({ name: 'mod.' + target.ext }, () => {
|
|
@@ -39,6 +39,10 @@ const EntityBase = cmp(async function EntityBase(props: any) {
|
|
|
39
39
|
`)
|
|
40
40
|
})
|
|
41
41
|
|
|
42
|
+
// Documentary typed models (entity/types.rs), generated by EntityTypes.
|
|
43
|
+
Content(`pub mod types;
|
|
44
|
+
`)
|
|
45
|
+
|
|
42
46
|
if (0 < Object.keys(entity || {}).length) {
|
|
43
47
|
Content(`
|
|
44
48
|
`)
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
// Typed-model generator (Rust target). Port of EntityTypes_go.ts.
|
|
4
|
+
//
|
|
5
|
+
// Reads main.<KIT>.entity.<e>.fields[] and per-op params
|
|
6
|
+
// (op.<name>.points[].args.params[]) and emits one file, entity/types.rs, with
|
|
7
|
+
// a rust `struct <Name> { ... }` per entity plus a request/match struct per
|
|
8
|
+
// active op. Field/param sentinels ($STRING, $INTEGER, ...) map to rust types
|
|
9
|
+
// via the SHARED canonToType 'rust' column (the single source of truth per
|
|
10
|
+
// language — do not keep a local table here). Note OBJECT renders as
|
|
11
|
+
// std::collections::HashMap<String, Value> (fully qualified, no import
|
|
12
|
+
// needed).
|
|
13
|
+
//
|
|
14
|
+
// DESIGN NOTE (rust specifics vs the go reference):
|
|
15
|
+
// * The rust runtime is fully DYNAMIC: every op takes and returns the
|
|
16
|
+
// vendored `Value` enum (Result<Value, ...Error>), and the op fragments
|
|
17
|
+
// emit no typed wrappers. Go additionally emits `LoadTyped`/`ListTyped`
|
|
18
|
+
// wrappers plus json round-trip helpers; rust has no serde/json-derive
|
|
19
|
+
// dependency (only `ureq`), so these typed models are DOCUMENTARY: they
|
|
20
|
+
// mirror the entity/op shapes for reference and IDE support, but are not
|
|
21
|
+
// wired into the runtime. They compile as part of the crate (declared in
|
|
22
|
+
// entity/mod.rs) so they stay in sync with the model.
|
|
23
|
+
// * Optional (req:false) member -> `Option<T>`.
|
|
24
|
+
// * The module carries broad `#![allow(...)]` since nothing consumes the
|
|
25
|
+
// types yet (parity intent, not dead-code churn).
|
|
26
|
+
|
|
27
|
+
import {
|
|
28
|
+
cmp, each,
|
|
29
|
+
File, Content, Folder,
|
|
30
|
+
} from '@voxgig/sdkgen'
|
|
31
|
+
|
|
32
|
+
import { canonToType, opTypeName, opRequestShape, warnEntityTypeCollisions , deriveEntityNames } from '@voxgig/sdkgen'
|
|
33
|
+
|
|
34
|
+
import {
|
|
35
|
+
KIT,
|
|
36
|
+
getModelPath,
|
|
37
|
+
} from '@voxgig/apidef'
|
|
38
|
+
|
|
39
|
+
import { rustVarName } from './utility_rust'
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
const LANG = 'rust'
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
// One rust struct field line. `optional` -> Option<T>. Field names are
|
|
46
|
+
// snake_case + keyword-safe via rustVarName; duplicates are dropped by the
|
|
47
|
+
// caller so a struct never declares the same field twice.
|
|
48
|
+
function fieldLine(name: string, sentinel: any, optional: boolean): string {
|
|
49
|
+
const rt = canonToType(sentinel, LANG)
|
|
50
|
+
const typ = optional ? `Option<${rt}>` : rt
|
|
51
|
+
return ` pub ${rustVarName(name)}: ${typ},\n`
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
// Emit a struct named `typeName` from {name, type, optional} items, dropping
|
|
56
|
+
// duplicate rust identifiers (two model names can collapse to one ident).
|
|
57
|
+
function emitStruct(comment: string, typeName: string, items: any[]): void {
|
|
58
|
+
Content(`${comment}
|
|
59
|
+
#[derive(Debug, Clone)]
|
|
60
|
+
pub struct ${typeName} {
|
|
61
|
+
`)
|
|
62
|
+
const seen = new Set<string>()
|
|
63
|
+
items.forEach((it: any) => {
|
|
64
|
+
if (null == it || null == it.name) return
|
|
65
|
+
const ident = rustVarName(it.name)
|
|
66
|
+
if (seen.has(ident)) return
|
|
67
|
+
seen.add(ident)
|
|
68
|
+
Content(fieldLine(it.name, it.type, !!it.optional))
|
|
69
|
+
})
|
|
70
|
+
Content(`}
|
|
71
|
+
|
|
72
|
+
`)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
const EntityTypes = cmp(function EntityTypes(props: any) {
|
|
77
|
+
const { target } = props
|
|
78
|
+
const { model, log } = props.ctx$
|
|
79
|
+
|
|
80
|
+
// only_active:false — getModelPath DROPS active:false entries by default,
|
|
81
|
+
// but the consumer scaffold (create-sdkgen Root.ts) iterates the RAW entity
|
|
82
|
+
// collection, so inactive entities still get generated entity code that
|
|
83
|
+
// references these typed names. The typed model must cover them too.
|
|
84
|
+
const entity = getModelPath(model, `main.${KIT}.entity`, { only_active: false, required: false })
|
|
85
|
+
// Emit for every entity that gets an entity file (filter on `name`, always
|
|
86
|
+
// present; derive `Name` here so the struct set is deterministic — parity
|
|
87
|
+
// with the go emitter's fix).
|
|
88
|
+
const entityList = deriveEntityNames(entity)
|
|
89
|
+
|
|
90
|
+
// Surface duplicate generated type names (two entities with the same
|
|
91
|
+
// PascalCase Name) — they would redeclare a type in statically-typed
|
|
92
|
+
// targets. Detection only; renaming is a model-level decision.
|
|
93
|
+
warnEntityTypeCollisions(entity, log, LANG)
|
|
94
|
+
|
|
95
|
+
Folder({ name: 'entity' }, () => {
|
|
96
|
+
|
|
97
|
+
File({ name: 'types.' + target.ext }, () => {
|
|
98
|
+
|
|
99
|
+
Content(`// Typed models for the ${model.const.Name} SDK.
|
|
100
|
+
//
|
|
101
|
+
// GENERATED from the API model: main.${KIT}.entity.<e>.fields[] and per-op
|
|
102
|
+
// params (op.<name>.points[].args.params[]). Field/param types are mapped
|
|
103
|
+
// from the canonical type sentinels. Do not edit by hand.
|
|
104
|
+
//
|
|
105
|
+
// These are DOCUMENTARY: the SDK runtime is dynamic (ops take/return the
|
|
106
|
+
// \`Value\` enum), so nothing consumes these structs yet — they mirror the
|
|
107
|
+
// entity/op shapes for reference and IDE support.
|
|
108
|
+
#![allow(dead_code, non_snake_case, unused_imports)]
|
|
109
|
+
|
|
110
|
+
use crate::utility::voxgigstruct::Value;
|
|
111
|
+
|
|
112
|
+
`)
|
|
113
|
+
|
|
114
|
+
entityList.forEach((ent: any) => {
|
|
115
|
+
const Name = ent.Name
|
|
116
|
+
const fields = (ent.fields ? each(ent.fields) : [])
|
|
117
|
+
.filter((f: any) => f.active !== false)
|
|
118
|
+
|
|
119
|
+
// Entity data model: one field per model field. req:false -> Option.
|
|
120
|
+
emitStruct(
|
|
121
|
+
`/// ${Name} is the typed data model for the ${ent.name} entity.`,
|
|
122
|
+
Name,
|
|
123
|
+
fields.map((f: any) => ({ name: f.name, type: f.type, optional: false === f.req }))
|
|
124
|
+
)
|
|
125
|
+
|
|
126
|
+
// Per active op: a request/match struct. Members and their optionality
|
|
127
|
+
// come from the shared partiality policy (opRequestShape).
|
|
128
|
+
const ops = ent.op || {}
|
|
129
|
+
;['load', 'list', 'create', 'update', 'remove'].forEach((opname: string) => {
|
|
130
|
+
if (null == ops[opname]) {
|
|
131
|
+
return
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const typeName = opTypeName(Name, opname)
|
|
135
|
+
const { items } = opRequestShape(ent, opname)
|
|
136
|
+
|
|
137
|
+
emitStruct(
|
|
138
|
+
`/// ${typeName} is the typed request payload for ${Name}.${opname}.`,
|
|
139
|
+
typeName,
|
|
140
|
+
items
|
|
141
|
+
)
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
})
|
|
145
|
+
})
|
|
146
|
+
})
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
export {
|
|
150
|
+
EntityTypes,
|
|
151
|
+
}
|
|
@@ -4,7 +4,7 @@ import * as Path from 'node:path'
|
|
|
4
4
|
import {
|
|
5
5
|
cmp, camelify,
|
|
6
6
|
File, Content, Folder, Fragment,
|
|
7
|
-
entityClassName,
|
|
7
|
+
entityClassName, entityCollection,
|
|
8
8
|
} from '@voxgig/sdkgen'
|
|
9
9
|
|
|
10
10
|
import {
|
|
@@ -23,7 +23,7 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
23
23
|
// Collision-free entity CLASS name (see entityClassName): normally
|
|
24
24
|
// `<Name>Entity`, but disambiguated when it would clash with another
|
|
25
25
|
// entity's data-type name.
|
|
26
|
-
const entityColl =
|
|
26
|
+
const entityColl = entityCollection(model)
|
|
27
27
|
const cls = entityClassName(entity, entityColl)
|
|
28
28
|
|
|
29
29
|
const entrep = {
|
|
@@ -37,7 +37,7 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
37
37
|
|
|
38
38
|
File({ name: rustVarName(entity.name) + '.' + target.ext }, () => {
|
|
39
39
|
|
|
40
|
-
const opnames = Object.keys(entity.op)
|
|
40
|
+
const opnames = Object.keys(entity.op || {})
|
|
41
41
|
|
|
42
42
|
// For each CRUD op: if the spec defines it, splice in the real
|
|
43
43
|
// implementation. Otherwise emit a stub that satisfies the static
|
|
@@ -53,7 +53,7 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
53
53
|
({ indent }: any) => {
|
|
54
54
|
const arg = ('create' === opname || 'update' === opname) ?
|
|
55
55
|
'reqdata' : 'reqmatch'
|
|
56
|
-
Content({ indent }, `fn ${opname}(&self, _${arg}: Value, _ctrl: Value) -> Result<Value,
|
|
56
|
+
Content({ indent }, `fn ${opname}(&self, _${arg}: Value, _ctrl: Value) -> Result<Value, ${model.const.Name}Error> {
|
|
57
57
|
Err(crate::core::helpers::unsupported_op("${opname}", &self.name))
|
|
58
58
|
}
|
|
59
59
|
`)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
import { cmp, Content, entityClassName } from '@voxgig/sdkgen'
|
|
3
|
+
import { cmp, Content, entityClassName, entityCollection } from '@voxgig/sdkgen'
|
|
4
4
|
|
|
5
5
|
import {
|
|
6
6
|
KIT,
|
|
@@ -17,7 +17,7 @@ const MainEntity = cmp(async function MainEntity(props: any) {
|
|
|
17
17
|
const { entity } = props
|
|
18
18
|
const { model } = props.ctx$
|
|
19
19
|
|
|
20
|
-
const entityColl =
|
|
20
|
+
const entityColl = entityCollection(model)
|
|
21
21
|
const cls = entityClassName(entity, entityColl)
|
|
22
22
|
const method = rustVarName(entity.name)
|
|
23
23
|
const mod = rustVarName(entity.name)
|
|
@@ -24,6 +24,7 @@ import { Config } from './Config_rust'
|
|
|
24
24
|
import { Gitignore } from './Gitignore_rust'
|
|
25
25
|
import { MainEntity } from './MainEntity_rust'
|
|
26
26
|
import { EntityBase } from './EntityBase_rust'
|
|
27
|
+
import { EntityTypes } from './EntityTypes_rust'
|
|
27
28
|
import { SdkError } from './SdkError_rust'
|
|
28
29
|
import { crateIdent } from './utility_rust'
|
|
29
30
|
|
|
@@ -87,6 +88,10 @@ const Main = cmp(async function Main(props: any) {
|
|
|
87
88
|
// entity/mod.rs — the entity module index.
|
|
88
89
|
EntityBase({ target })
|
|
89
90
|
|
|
91
|
+
// entity/types.rs — the documentary typed models (one struct per entity +
|
|
92
|
+
// per op). Declared as a module by EntityBase so it compiles with the crate.
|
|
93
|
+
EntityTypes({ target })
|
|
94
|
+
|
|
90
95
|
// lib.rs — the crate root: module declarations plus the public API
|
|
91
96
|
// re-exports (twin of the go root package file).
|
|
92
97
|
File({ name: 'lib.' + target.ext }, () => {
|
|
@@ -43,7 +43,7 @@ path = "lib.rs"
|
|
|
43
43
|
|
|
44
44
|
const prod: Record<string, string> = {}
|
|
45
45
|
const dev: Record<string, string> = {}
|
|
46
|
-
for (const d of collectDeps(model, target.name, target.deps)) {
|
|
46
|
+
for (const d of collectDeps(model, target.name, target.deps, ctx$.log)) {
|
|
47
47
|
// Target-level deps default to '*' when version is absent; feature
|
|
48
48
|
// deps require an explicit version.
|
|
49
49
|
const version = d.source === 'target' ? (d.version || '*') : d.version
|
|
@@ -0,0 +1,163 @@
|
|
|
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 { rustVarName } from './utility_rust'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
// Type names come from the shared canonToType 'rust' column (single source of truth).
|
|
13
|
+
|
|
14
|
+
// A type-correct rust expression constructing a voxgig struct Value.
|
|
15
|
+
function rustLit(type: any, placeholder: string = 'example'): string {
|
|
16
|
+
const k = canonKey(type)
|
|
17
|
+
if ('INTEGER' === k || 'NUMBER' === k) return 'Value::Num(1.0)'
|
|
18
|
+
if ('BOOLEAN' === k) return 'Value::Bool(true)'
|
|
19
|
+
if ('ARRAY' === k) return 'Value::empty_list()'
|
|
20
|
+
if ('OBJECT' === k) return 'Value::empty_map()'
|
|
21
|
+
return `Value::str("${placeholder}")`
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
// Operation method descriptions (language-agnostic wording, rust signatures).
|
|
26
|
+
const OP_DESC: Record<string, { method: string, desc: string }> = {
|
|
27
|
+
load: { method: 'load(reqmatch, ctrl)', desc: 'Load a single entity by match criteria.' },
|
|
28
|
+
list: { method: 'list(reqmatch, ctrl)', desc: 'List entities, optionally matching the given criteria.' },
|
|
29
|
+
create: { method: 'create(reqdata, ctrl)', desc: 'Create a new entity with the given data.' },
|
|
30
|
+
update: { method: 'update(reqdata, ctrl)', desc: 'Update an existing entity.' },
|
|
31
|
+
remove: { method: 'remove(reqmatch, ctrl)', desc: 'Remove the matching entity.' },
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
|
|
36
|
+
const { target } = props
|
|
37
|
+
const { model } = props.ctx$
|
|
38
|
+
|
|
39
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
40
|
+
|
|
41
|
+
const publishedEntities = each(entity)
|
|
42
|
+
.filter((entity: any) => entity.active !== false)
|
|
43
|
+
|
|
44
|
+
if (0 === publishedEntities.length) {
|
|
45
|
+
return
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
Content(`
|
|
49
|
+
|
|
50
|
+
## Entities
|
|
51
|
+
|
|
52
|
+
`)
|
|
53
|
+
|
|
54
|
+
publishedEntities.map((entity: any) => {
|
|
55
|
+
const opnames = Object.keys(entity.op || {})
|
|
56
|
+
const fields = entity.fields || []
|
|
57
|
+
const idF = entityIdField(entity)
|
|
58
|
+
const eVar = rustVarName(entity.name)
|
|
59
|
+
const method = rustVarName(entity.name)
|
|
60
|
+
|
|
61
|
+
Content(`
|
|
62
|
+
### ${entity.Name}
|
|
63
|
+
|
|
64
|
+
`)
|
|
65
|
+
|
|
66
|
+
if (entity.short) {
|
|
67
|
+
Content(`${entity.short}
|
|
68
|
+
|
|
69
|
+
`)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
Content(`Create an instance: \`let ${eVar} = client.${method}(Value::Noval);\`
|
|
73
|
+
|
|
74
|
+
`)
|
|
75
|
+
|
|
76
|
+
if (opnames.length > 0) {
|
|
77
|
+
Content(`#### Operations
|
|
78
|
+
|
|
79
|
+
| Method | Description |
|
|
80
|
+
| --- | --- |
|
|
81
|
+
`)
|
|
82
|
+
opnames.map((opname: string) => {
|
|
83
|
+
const info = OP_DESC[opname]
|
|
84
|
+
if (info) {
|
|
85
|
+
Content(`| \`${info.method}\` | ${info.desc} |
|
|
86
|
+
`)
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
Content(`
|
|
91
|
+
`)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (fields.length > 0) {
|
|
95
|
+
Content(`#### Fields
|
|
96
|
+
|
|
97
|
+
| Field | Type | Description |
|
|
98
|
+
| --- | --- | --- |
|
|
99
|
+
`)
|
|
100
|
+
|
|
101
|
+
each(fields, (field: any) => {
|
|
102
|
+
const desc = field.short || ''
|
|
103
|
+
Content(`| \`${field.name}\` | \`${canonToType(field.type, target.name)}\` | ${desc} |
|
|
104
|
+
`)
|
|
105
|
+
})
|
|
106
|
+
|
|
107
|
+
Content(`
|
|
108
|
+
`)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (opnames.includes('load')) {
|
|
112
|
+
const loadItems = opRequestShape(entity, 'load').items
|
|
113
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
114
|
+
.sort((a: any, b: any) =>
|
|
115
|
+
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
116
|
+
const loadArg = 0 < loadItems.length
|
|
117
|
+
? `jo(vec![${loadItems.map((it: any) =>
|
|
118
|
+
`("${it.name}", ${rustLit(it.type,
|
|
119
|
+
it.name === idF ? entity.name + '_id' : it.name)})`).join(', ')}])`
|
|
120
|
+
: 'Value::Noval'
|
|
121
|
+
Content(`#### Example: Load
|
|
122
|
+
|
|
123
|
+
\`\`\`rust
|
|
124
|
+
let ${eVar} = client.${method}(Value::Noval).load(${loadArg}, Value::Noval).unwrap();
|
|
125
|
+
\`\`\`
|
|
126
|
+
|
|
127
|
+
`)
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
if (opnames.includes('list')) {
|
|
131
|
+
Content(`#### Example: List
|
|
132
|
+
|
|
133
|
+
\`\`\`rust
|
|
134
|
+
let ${eVar}s = client.${method}(Value::Noval).list(Value::Noval, Value::Noval).unwrap();
|
|
135
|
+
\`\`\`
|
|
136
|
+
|
|
137
|
+
`)
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (opnames.includes('create')) {
|
|
141
|
+
const createItems = opRequestShape(entity, 'create').items
|
|
142
|
+
.filter((it: any) => !it.optional)
|
|
143
|
+
Content(`#### Example: Create
|
|
144
|
+
|
|
145
|
+
\`\`\`rust
|
|
146
|
+
let ${eVar} = client.${method}(Value::Noval).create(jo(vec![
|
|
147
|
+
`)
|
|
148
|
+
createItems.map((it: any) => {
|
|
149
|
+
Content(` ("${it.name}", ${rustLit(it.type, 'example_' + it.name)}), // ${canonToType(it.type, target.name)}
|
|
150
|
+
`)
|
|
151
|
+
})
|
|
152
|
+
Content(`]), Value::Noval).unwrap();
|
|
153
|
+
\`\`\`
|
|
154
|
+
|
|
155
|
+
`)
|
|
156
|
+
}
|
|
157
|
+
})
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
export {
|
|
162
|
+
ReadmeEntity
|
|
163
|
+
}
|