@voxgig/sdkgen 1.3.14 → 1.3.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/voxgig-sdkgen +1 -1
- package/dist/action/action.js.map +1 -1
- package/dist/action/feature.js.map +1 -1
- package/dist/action/target.js.map +1 -1
- package/dist/cmp/AgentGuide.js.map +1 -1
- package/dist/cmp/AgentGuideContent.js.map +1 -1
- package/dist/cmp/AgentGuideFeature.js.map +1 -1
- package/dist/cmp/AgentGuideTop.js.map +1 -1
- package/dist/cmp/Changelog.js.map +1 -1
- package/dist/cmp/Deploy.js.map +1 -1
- package/dist/cmp/Entity.js +5 -1
- package/dist/cmp/Entity.js.map +1 -1
- package/dist/cmp/Feature.js +2 -1
- package/dist/cmp/Feature.js.map +1 -1
- package/dist/cmp/FeatureHook.js.map +1 -1
- package/dist/cmp/License.js.map +1 -1
- package/dist/cmp/Main.js.map +1 -1
- package/dist/cmp/Readme.js.map +1 -1
- package/dist/cmp/ReadmeEntity.js.map +1 -1
- package/dist/cmp/ReadmeErrors.js +1 -1
- package/dist/cmp/ReadmeErrors.js.map +1 -1
- package/dist/cmp/ReadmeExplanation.js +2 -2
- package/dist/cmp/ReadmeExplanation.js.map +1 -1
- package/dist/cmp/ReadmeHowto.js.map +1 -1
- package/dist/cmp/ReadmeInstall.js.map +1 -1
- package/dist/cmp/ReadmeIntro.js.map +1 -1
- package/dist/cmp/ReadmeModel.js.map +1 -1
- package/dist/cmp/ReadmeOptions.js.map +1 -1
- package/dist/cmp/ReadmeQuick.js.map +1 -1
- package/dist/cmp/ReadmeRef.js.map +1 -1
- package/dist/cmp/ReadmeTop.js +1 -1
- package/dist/cmp/ReadmeTop.js.map +1 -1
- package/dist/cmp/Security.js.map +1 -1
- package/dist/cmp/Test.js.map +1 -1
- package/dist/helpers/buildIdNames.js.map +1 -1
- package/dist/helpers/canonType.d.ts +3 -2
- package/dist/helpers/canonType.js +112 -24
- package/dist/helpers/canonType.js.map +1 -1
- package/dist/helpers/collectDeps.d.ts +1 -1
- package/dist/helpers/collectDeps.js +36 -13
- package/dist/helpers/collectDeps.js.map +1 -1
- package/dist/helpers/getMatchEntries.js.map +1 -1
- package/dist/helpers/naming.d.ts +7 -1
- package/dist/helpers/naming.js +90 -0
- package/dist/helpers/naming.js.map +1 -1
- package/dist/helpers/opExample.d.ts +1 -1
- package/dist/helpers/opExample.js +37 -20
- package/dist/helpers/opExample.js.map +1 -1
- package/dist/helpers/opShape.d.ts +5 -1
- package/dist/helpers/opShape.js +174 -7
- package/dist/helpers/opShape.js.map +1 -1
- package/dist/helpers/packageMeta.js.map +1 -1
- package/dist/sdkgen.d.ts +3 -3
- package/dist/sdkgen.js +12 -2
- package/dist/sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utility.js.map +1 -1
- package/package.json +20 -14
- package/project/.sdk/model/target/cpp.aontu +4 -4
- package/project/.sdk/model/target/go-cli.aontu +17 -17
- package/project/.sdk/model/target/go-mcp.aontu +11 -11
- package/project/.sdk/model/target/go.aontu +1 -1
- package/project/.sdk/model/target/haskell.aontu +6 -3
- package/project/.sdk/model/target/java.aontu +4 -4
- package/project/.sdk/model/target/kotlin.aontu +4 -4
- package/project/.sdk/model/target/lean.aontu +51 -0
- package/project/.sdk/model/target/scala.aontu +4 -4
- package/project/.sdk/model/target/zig.aontu +12 -2
- package/project/.sdk/src/cmp/c/Config_c.ts +16 -4
- package/project/.sdk/src/cmp/c/EntityTypes_c.ts +167 -0
- package/project/.sdk/src/cmp/c/Entity_c.ts +3 -3
- package/project/.sdk/src/cmp/c/Main_c.ts +4 -0
- package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +192 -0
- package/project/.sdk/src/cmp/c/ReadmeExamplesTest_c.ts +169 -0
- package/project/.sdk/src/cmp/c/ReadmeExplanation_c.ts +55 -0
- package/project/.sdk/src/cmp/c/ReadmeHowto_c.ts +168 -0
- package/project/.sdk/src/cmp/c/ReadmeInstall_c.ts +52 -0
- package/project/.sdk/src/cmp/c/ReadmeIntro_c.ts +67 -0
- package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +151 -0
- package/project/.sdk/src/cmp/c/ReadmeOptions_c.ts +65 -0
- package/project/.sdk/src/cmp/c/ReadmeQuick_c.ts +225 -0
- package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +398 -0
- package/project/.sdk/src/cmp/c/ReadmeTopHowto_c.ts +24 -0
- package/project/.sdk/src/cmp/c/ReadmeTopQuick_c.ts +104 -0
- package/project/.sdk/src/cmp/c/ReadmeTopTest_c.ts +86 -0
- package/project/.sdk/src/cmp/c/TestDirect_c.ts +3 -3
- package/project/.sdk/src/cmp/c/TestEntity_c.ts +10 -0
- package/project/.sdk/src/cmp/c/Test_c.ts +4 -0
- package/project/.sdk/src/cmp/c/utility_c.ts +8 -2
- package/project/.sdk/src/cmp/clojure/Entity_clojure.ts +1 -1
- package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +182 -0
- package/project/.sdk/src/cmp/clojure/ReadmeExamplesTest_clojure.ts +65 -0
- package/project/.sdk/src/cmp/clojure/ReadmeExplanation_clojure.ts +44 -0
- package/project/.sdk/src/cmp/clojure/ReadmeHowto_clojure.ts +144 -0
- package/project/.sdk/src/cmp/clojure/ReadmeInstall_clojure.ts +51 -0
- package/project/.sdk/src/cmp/clojure/ReadmeIntro_clojure.ts +66 -0
- package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +156 -0
- package/project/.sdk/src/cmp/clojure/ReadmeOptions_clojure.ts +61 -0
- package/project/.sdk/src/cmp/clojure/ReadmeQuick_clojure.ts +210 -0
- package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +409 -0
- package/project/.sdk/src/cmp/clojure/ReadmeTopHowto_clojure.ts +24 -0
- package/project/.sdk/src/cmp/clojure/ReadmeTopQuick_clojure.ts +98 -0
- package/project/.sdk/src/cmp/clojure/ReadmeTopTest_clojure.ts +78 -0
- package/project/.sdk/src/cmp/clojure/TestDirect_clojure.ts +58 -0
- package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +79 -0
- package/project/.sdk/src/cmp/clojure/Test_clojure.ts +21 -65
- package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +174 -0
- package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +3 -3
- package/project/.sdk/src/cmp/cpp/MainEntity_cpp.ts +2 -2
- package/project/.sdk/src/cmp/cpp/Main_cpp.ts +5 -0
- package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +170 -0
- package/project/.sdk/src/cmp/cpp/ReadmeExamplesTest_cpp.ts +136 -0
- package/project/.sdk/src/cmp/cpp/ReadmeExplanation_cpp.ts +45 -0
- package/project/.sdk/src/cmp/cpp/ReadmeHowto_cpp.ts +139 -0
- package/project/.sdk/src/cmp/cpp/ReadmeInstall_cpp.ts +42 -0
- package/project/.sdk/src/cmp/cpp/ReadmeIntro_cpp.ts +69 -0
- package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +155 -0
- package/project/.sdk/src/cmp/cpp/ReadmeOptions_cpp.ts +62 -0
- package/project/.sdk/src/cmp/cpp/ReadmeQuick_cpp.ts +234 -0
- package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +387 -0
- package/project/.sdk/src/cmp/cpp/ReadmeTopHowto_cpp.ts +24 -0
- package/project/.sdk/src/cmp/cpp/ReadmeTopQuick_cpp.ts +95 -0
- package/project/.sdk/src/cmp/cpp/ReadmeTopTest_cpp.ts +70 -0
- package/project/.sdk/src/cmp/cpp/TestDirect_cpp.ts +3 -3
- package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +5 -1
- package/project/.sdk/src/cmp/cpp/Test_cpp.ts +4 -0
- package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +195 -0
- package/project/.sdk/src/cmp/csharp/Entity_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/MainEntity_csharp.ts +2 -2
- package/project/.sdk/src/cmp/csharp/Main_csharp.ts +6 -0
- package/project/.sdk/src/cmp/csharp/Package_csharp.ts +1 -1
- package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +174 -0
- package/project/.sdk/src/cmp/csharp/ReadmeExamplesTest_csharp.ts +210 -0
- package/project/.sdk/src/cmp/csharp/ReadmeExplanation_csharp.ts +42 -0
- package/project/.sdk/src/cmp/csharp/ReadmeHowto_csharp.ts +168 -0
- package/project/.sdk/src/cmp/csharp/ReadmeInstall_csharp.ts +41 -0
- package/project/.sdk/src/cmp/csharp/ReadmeIntro_csharp.ts +65 -0
- package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +148 -0
- package/project/.sdk/src/cmp/csharp/ReadmeOptions_csharp.ts +60 -0
- package/project/.sdk/src/cmp/csharp/ReadmeQuick_csharp.ts +219 -0
- package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +390 -0
- package/project/.sdk/src/cmp/csharp/ReadmeTopHowto_csharp.ts +25 -0
- package/project/.sdk/src/cmp/csharp/ReadmeTopQuick_csharp.ts +92 -0
- package/project/.sdk/src/cmp/csharp/ReadmeTopTest_csharp.ts +77 -0
- package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/Test_csharp.ts +4 -0
- package/project/.sdk/src/cmp/dart/EntityTypes_dart.ts +43 -30
- package/project/.sdk/src/cmp/dart/Entity_dart.ts +11 -3
- package/project/.sdk/src/cmp/dart/MainEntity_dart.ts +2 -2
- package/project/.sdk/src/cmp/dart/Main_dart.ts +3 -3
- package/project/.sdk/src/cmp/dart/Package_dart.ts +1 -1
- package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +166 -0
- package/project/.sdk/src/cmp/dart/ReadmeExamplesTest_dart.ts +238 -0
- package/project/.sdk/src/cmp/dart/ReadmeExplanation_dart.ts +53 -0
- package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +151 -0
- package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +59 -0
- package/project/.sdk/src/cmp/dart/ReadmeIntro_dart.ts +65 -0
- package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +151 -0
- package/project/.sdk/src/cmp/dart/ReadmeOptions_dart.ts +63 -0
- package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +214 -0
- package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +381 -0
- package/project/.sdk/src/cmp/dart/ReadmeTopHowto_dart.ts +24 -0
- package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +95 -0
- package/project/.sdk/src/cmp/dart/ReadmeTopTest_dart.ts +78 -0
- package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +4 -4
- package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +52 -0
- package/project/.sdk/src/cmp/dart/Test_dart.ts +6 -0
- package/project/.sdk/src/cmp/dart/fragment/Entity.fragment.dart +1 -3
- package/project/.sdk/src/cmp/dart/fragment/Entity.test.fragment.dart +1 -40
- package/project/.sdk/src/cmp/dart/fragment/Main.fragment.dart +3 -3
- package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +164 -0
- package/project/.sdk/src/cmp/elixir/Entity_elixir.ts +1 -1
- package/project/.sdk/src/cmp/elixir/Main_elixir.ts +4 -0
- package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
- package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +163 -0
- package/project/.sdk/src/cmp/elixir/ReadmeExamplesTest_elixir.ts +144 -0
- package/project/.sdk/src/cmp/elixir/ReadmeExplanation_elixir.ts +55 -0
- package/project/.sdk/src/cmp/elixir/ReadmeHowto_elixir.ts +149 -0
- package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +67 -0
- package/project/.sdk/src/cmp/elixir/ReadmeIntro_elixir.ts +66 -0
- package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +150 -0
- package/project/.sdk/src/cmp/elixir/ReadmeOptions_elixir.ts +62 -0
- package/project/.sdk/src/cmp/elixir/ReadmeQuick_elixir.ts +198 -0
- package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +333 -0
- package/project/.sdk/src/cmp/elixir/ReadmeTopHowto_elixir.ts +26 -0
- package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +79 -0
- package/project/.sdk/src/cmp/elixir/ReadmeTopTest_elixir.ts +68 -0
- package/project/.sdk/src/cmp/elixir/Test_elixir.ts +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +4 -0
- package/project/.sdk/src/cmp/elixir/utility_elixir.ts +32 -0
- package/project/.sdk/src/cmp/go/Config_go.ts +4 -1
- package/project/.sdk/src/cmp/go/EntityTypes_go.ts +121 -20
- package/project/.sdk/src/cmp/go/Entity_go.ts +3 -3
- package/project/.sdk/src/cmp/go/Main_go.ts +7 -6
- package/project/.sdk/src/cmp/go/Package_go.ts +1 -1
- package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +6 -1
- package/project/.sdk/src/cmp/go/TestDirect_go.ts +3 -3
- package/project/.sdk/src/cmp/go/TestEntity_go.ts +11 -4
- package/project/.sdk/src/cmp/go/utility_go.ts +28 -2
- package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +249 -44
- package/project/.sdk/src/cmp/go-cli/fragment/main.fragment.go +27 -5
- package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +200 -31
- package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +181 -0
- package/project/.sdk/src/cmp/haskell/ReadmeExamplesTest_haskell.ts +135 -0
- package/project/.sdk/src/cmp/haskell/ReadmeExplanation_haskell.ts +48 -0
- package/project/.sdk/src/cmp/haskell/ReadmeHowto_haskell.ts +168 -0
- package/project/.sdk/src/cmp/haskell/ReadmeInstall_haskell.ts +51 -0
- package/project/.sdk/src/cmp/haskell/ReadmeIntro_haskell.ts +67 -0
- package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +160 -0
- package/project/.sdk/src/cmp/haskell/ReadmeOptions_haskell.ts +74 -0
- package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +237 -0
- package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +405 -0
- package/project/.sdk/src/cmp/haskell/ReadmeTopHowto_haskell.ts +31 -0
- package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +104 -0
- package/project/.sdk/src/cmp/haskell/ReadmeTopTest_haskell.ts +80 -0
- package/project/.sdk/src/cmp/haskell/Test_haskell.ts +27 -2
- package/project/.sdk/src/cmp/java/EntityTypes_java.ts +206 -0
- package/project/.sdk/src/cmp/java/Entity_java.ts +3 -3
- package/project/.sdk/src/cmp/java/MainEntity_java.ts +2 -2
- package/project/.sdk/src/cmp/java/Main_java.ts +6 -0
- package/project/.sdk/src/cmp/java/Package_java.ts +1 -1
- package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +175 -0
- package/project/.sdk/src/cmp/java/ReadmeExamplesTest_java.ts +208 -0
- package/project/.sdk/src/cmp/java/ReadmeExplanation_java.ts +46 -0
- package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +156 -0
- package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +52 -0
- package/project/.sdk/src/cmp/java/ReadmeIntro_java.ts +66 -0
- package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +150 -0
- package/project/.sdk/src/cmp/java/ReadmeOptions_java.ts +61 -0
- package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +230 -0
- package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +388 -0
- package/project/.sdk/src/cmp/java/ReadmeTopHowto_java.ts +23 -0
- package/project/.sdk/src/cmp/java/ReadmeTopQuick_java.ts +103 -0
- package/project/.sdk/src/cmp/java/ReadmeTopTest_java.ts +77 -0
- package/project/.sdk/src/cmp/java/TestDirect_java.ts +3 -3
- package/project/.sdk/src/cmp/java/Test_java.ts +4 -0
- package/project/.sdk/src/cmp/js/EntityTypes_js.ts +25 -9
- package/project/.sdk/src/cmp/js/Entity_js.ts +3 -3
- package/project/.sdk/src/cmp/js/MainEntity_js.ts +6 -4
- package/project/.sdk/src/cmp/js/Main_js.ts +2 -2
- package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +4 -4
- package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +13 -4
- package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +4 -4
- package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +5 -5
- package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +4 -4
- package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +4 -4
- package/project/.sdk/src/cmp/js/TestDirect_js.ts +10 -9
- package/project/.sdk/src/cmp/js/TestEntity_js.ts +7 -2
- package/project/.sdk/src/cmp/js/fragment/Entity.test.fragment.js +0 -31
- package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +200 -0
- package/project/.sdk/src/cmp/kotlin/Entity_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/MainEntity_kotlin.ts +2 -2
- package/project/.sdk/src/cmp/kotlin/Main_kotlin.ts +6 -0
- package/project/.sdk/src/cmp/kotlin/Package_kotlin.ts +1 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +175 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeExamplesTest_kotlin.ts +198 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeExplanation_kotlin.ts +47 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +154 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +50 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeIntro_kotlin.ts +66 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +150 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeOptions_kotlin.ts +61 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +230 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +387 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeTopHowto_kotlin.ts +23 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeTopQuick_kotlin.ts +104 -0
- package/project/.sdk/src/cmp/kotlin/ReadmeTopTest_kotlin.ts +77 -0
- package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +4 -0
- package/project/.sdk/src/cmp/lean/Config_lean.ts +88 -0
- package/project/.sdk/src/cmp/lean/Entity_lean.ts +9 -0
- package/project/.sdk/src/cmp/lean/Gitignore_lean.ts +18 -0
- package/project/.sdk/src/cmp/lean/Main_lean.ts +120 -0
- package/project/.sdk/src/cmp/lean/Package_lean.ts +68 -0
- package/project/.sdk/src/cmp/lean/ReadmeEntity_lean.ts +29 -0
- package/project/.sdk/src/cmp/lean/ReadmeExplanation_lean.ts +19 -0
- package/project/.sdk/src/cmp/lean/ReadmeHowto_lean.ts +25 -0
- package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +38 -0
- package/project/.sdk/src/cmp/lean/ReadmeIntro_lean.ts +25 -0
- package/project/.sdk/src/cmp/lean/ReadmeModel_lean.ts +24 -0
- package/project/.sdk/src/cmp/lean/ReadmeOptions_lean.ts +22 -0
- package/project/.sdk/src/cmp/lean/ReadmeQuick_lean.ts +50 -0
- package/project/.sdk/src/cmp/lean/ReadmeRef_lean.ts +16 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopHowto_lean.ts +16 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopQuick_lean.ts +23 -0
- package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +18 -0
- package/project/.sdk/src/cmp/lean/Test_lean.ts +207 -0
- package/project/.sdk/src/cmp/lean/utility_lean.ts +78 -0
- package/project/.sdk/src/cmp/lua/Config_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +19 -6
- package/project/.sdk/src/cmp/lua/Entity_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/Main_lua.ts +14 -2
- package/project/.sdk/src/cmp/lua/Package_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeHowto_lua.ts +6 -1
- package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/ReadmeTopQuick_lua.ts +2 -2
- package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +8 -3
- package/project/.sdk/src/cmp/lua/Test_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +2 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +180 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeExamplesTest_ocaml.ts +126 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeExplanation_ocaml.ts +46 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +147 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeInstall_ocaml.ts +44 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeIntro_ocaml.ts +68 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +155 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeOptions_ocaml.ts +59 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +205 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +402 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeTopHowto_ocaml.ts +25 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +86 -0
- package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +79 -0
- package/project/.sdk/src/cmp/ocaml/Test_ocaml.ts +4 -0
- package/project/.sdk/src/cmp/perl/Entity_perl.ts +3 -3
- package/project/.sdk/src/cmp/perl/MainEntity_perl.ts +2 -2
- package/project/.sdk/src/cmp/perl/Package_perl.ts +1 -1
- package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +181 -0
- package/project/.sdk/src/cmp/perl/ReadmeExamplesTest_perl.ts +354 -0
- package/project/.sdk/src/cmp/perl/ReadmeExplanation_perl.ts +43 -0
- package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +149 -0
- package/project/.sdk/src/cmp/perl/ReadmeInstall_perl.ts +47 -0
- package/project/.sdk/src/cmp/perl/ReadmeIntro_perl.ts +66 -0
- package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +150 -0
- package/project/.sdk/src/cmp/perl/ReadmeOptions_perl.ts +59 -0
- package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +216 -0
- package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +399 -0
- package/project/.sdk/src/cmp/perl/ReadmeTopHowto_perl.ts +24 -0
- package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +91 -0
- package/project/.sdk/src/cmp/perl/ReadmeTopTest_perl.ts +83 -0
- package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +3 -3
- package/project/.sdk/src/cmp/perl/Test_perl.ts +4 -0
- package/project/.sdk/src/cmp/php/EntityTypes_php.ts +23 -7
- package/project/.sdk/src/cmp/php/Entity_php.ts +3 -3
- package/project/.sdk/src/cmp/php/MainEntity_php.ts +2 -2
- package/project/.sdk/src/cmp/php/Package_php.ts +1 -1
- package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +6 -1
- package/project/.sdk/src/cmp/php/TestDirect_php.ts +3 -3
- package/project/.sdk/src/cmp/php/TestEntity_php.ts +8 -3
- package/project/.sdk/src/cmp/py/EntityTypes_py.ts +32 -8
- package/project/.sdk/src/cmp/py/Entity_py.ts +4 -12
- package/project/.sdk/src/cmp/py/MainEntity_py.ts +2 -2
- package/project/.sdk/src/cmp/py/Main_py.ts +2 -2
- package/project/.sdk/src/cmp/py/Package_py.ts +1 -1
- package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +8 -3
- package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +3 -3
- package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +2 -2
- package/project/.sdk/src/cmp/py/ReadmeTopTest_py.ts +2 -2
- package/project/.sdk/src/cmp/py/TestDirect_py.ts +3 -3
- package/project/.sdk/src/cmp/py/TestEntity_py.ts +8 -3
- package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +32 -8
- package/project/.sdk/src/cmp/rb/Entity_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/MainEntity_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/Package_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +8 -3
- package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/ReadmeTopTest_rb.ts +2 -2
- package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +8 -3
- package/project/.sdk/src/cmp/rust/EntityBase_rust.ts +6 -2
- package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +151 -0
- package/project/.sdk/src/cmp/rust/Entity_rust.ts +4 -4
- package/project/.sdk/src/cmp/rust/MainEntity_rust.ts +2 -2
- package/project/.sdk/src/cmp/rust/Main_rust.ts +5 -0
- package/project/.sdk/src/cmp/rust/Package_rust.ts +1 -1
- package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +163 -0
- package/project/.sdk/src/cmp/rust/ReadmeExamplesTest_rust.ts +144 -0
- package/project/.sdk/src/cmp/rust/ReadmeExplanation_rust.ts +44 -0
- package/project/.sdk/src/cmp/rust/ReadmeHowto_rust.ts +142 -0
- package/project/.sdk/src/cmp/rust/ReadmeInstall_rust.ts +49 -0
- package/project/.sdk/src/cmp/rust/ReadmeIntro_rust.ts +66 -0
- package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +153 -0
- package/project/.sdk/src/cmp/rust/ReadmeOptions_rust.ts +60 -0
- package/project/.sdk/src/cmp/rust/ReadmeQuick_rust.ts +212 -0
- package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +384 -0
- package/project/.sdk/src/cmp/rust/ReadmeTopHowto_rust.ts +24 -0
- package/project/.sdk/src/cmp/rust/ReadmeTopQuick_rust.ts +95 -0
- package/project/.sdk/src/cmp/rust/ReadmeTopTest_rust.ts +81 -0
- package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +3 -3
- package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +10 -0
- package/project/.sdk/src/cmp/rust/Test_rust.ts +4 -0
- package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +201 -0
- package/project/.sdk/src/cmp/scala/Entity_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/MainEntity_scala.ts +2 -2
- package/project/.sdk/src/cmp/scala/Main_scala.ts +6 -0
- package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +175 -0
- package/project/.sdk/src/cmp/scala/ReadmeExamplesTest_scala.ts +182 -0
- package/project/.sdk/src/cmp/scala/ReadmeExplanation_scala.ts +49 -0
- package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +155 -0
- package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +58 -0
- package/project/.sdk/src/cmp/scala/ReadmeIntro_scala.ts +66 -0
- package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +150 -0
- package/project/.sdk/src/cmp/scala/ReadmeOptions_scala.ts +61 -0
- package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +230 -0
- package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +388 -0
- package/project/.sdk/src/cmp/scala/ReadmeTopHowto_scala.ts +23 -0
- package/project/.sdk/src/cmp/scala/ReadmeTopQuick_scala.ts +104 -0
- package/project/.sdk/src/cmp/scala/ReadmeTopTest_scala.ts +77 -0
- package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +38 -10
- package/project/.sdk/src/cmp/scala/Test_scala.ts +9 -1
- package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +151 -0
- package/project/.sdk/src/cmp/swift/Entity_swift.ts +3 -3
- package/project/.sdk/src/cmp/swift/MainEntity_swift.ts +2 -2
- package/project/.sdk/src/cmp/swift/Main_swift.ts +5 -0
- package/project/.sdk/src/cmp/swift/Package_swift.ts +1 -1
- package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +176 -0
- package/project/.sdk/src/cmp/swift/ReadmeExamplesTest_swift.ts +187 -0
- package/project/.sdk/src/cmp/swift/ReadmeExplanation_swift.ts +49 -0
- package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +159 -0
- package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +58 -0
- package/project/.sdk/src/cmp/swift/ReadmeIntro_swift.ts +64 -0
- package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +149 -0
- package/project/.sdk/src/cmp/swift/ReadmeOptions_swift.ts +62 -0
- package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +232 -0
- package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +387 -0
- package/project/.sdk/src/cmp/swift/ReadmeTopHowto_swift.ts +24 -0
- package/project/.sdk/src/cmp/swift/ReadmeTopQuick_swift.ts +105 -0
- package/project/.sdk/src/cmp/swift/ReadmeTopTest_swift.ts +77 -0
- package/project/.sdk/src/cmp/swift/TestDirect_swift.ts +1 -1
- package/project/.sdk/src/cmp/swift/Test_swift.ts +4 -0
- package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +19 -6
- package/project/.sdk/src/cmp/ts/Entity_ts.ts +3 -3
- package/project/.sdk/src/cmp/ts/MainEntity_ts.ts +6 -4
- package/project/.sdk/src/cmp/ts/Main_ts.ts +2 -2
- package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +4 -4
- package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +14 -4
- package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +29 -11
- package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +5 -5
- package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +4 -4
- package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +4 -4
- package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +17 -15
- package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +18 -2
- package/project/.sdk/src/cmp/zig/Config_zig.ts +22 -4
- package/project/.sdk/src/cmp/zig/Entity_zig.ts +4 -4
- package/project/.sdk/src/cmp/zig/MainEntity_zig.ts +2 -2
- package/project/.sdk/src/cmp/zig/Main_zig.ts +10 -4
- package/project/.sdk/src/cmp/zig/Package_zig.ts +61 -0
- package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +188 -0
- package/project/.sdk/src/cmp/zig/ReadmeExamplesTest_zig.ts +58 -0
- package/project/.sdk/src/cmp/zig/ReadmeExplanation_zig.ts +45 -0
- package/project/.sdk/src/cmp/zig/ReadmeHowto_zig.ts +143 -0
- package/project/.sdk/src/cmp/zig/ReadmeInstall_zig.ts +54 -0
- package/project/.sdk/src/cmp/zig/ReadmeIntro_zig.ts +66 -0
- package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +152 -0
- package/project/.sdk/src/cmp/zig/ReadmeOptions_zig.ts +60 -0
- package/project/.sdk/src/cmp/zig/ReadmeQuick_zig.ts +211 -0
- package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +400 -0
- package/project/.sdk/src/cmp/zig/ReadmeTopHowto_zig.ts +24 -0
- package/project/.sdk/src/cmp/zig/ReadmeTopQuick_zig.ts +96 -0
- package/project/.sdk/src/cmp/zig/ReadmeTopTest_zig.ts +82 -0
- package/project/.sdk/src/cmp/zig/TestDirect_zig.ts +66 -0
- package/project/.sdk/src/cmp/zig/TestEntity_zig.ts +79 -0
- package/project/.sdk/src/cmp/zig/Test_zig.ts +17 -61
- package/project/.sdk/tm/clojure/src/voxgig/struct.clj +1 -1
- package/project/.sdk/tm/cpp/test/feature_test.cpp +19 -0
- package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +8 -16
- package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +10 -28
- package/project/.sdk/tm/dart/lib/utility/MakeRequestUtility.dart +4 -1
- package/project/.sdk/tm/dart/lib/utility/voxgig_struct.dart +7 -1
- package/project/.sdk/tm/dart/test/primary_test.dart +7 -0
- package/project/.sdk/tm/elixir/lib/utility/struct/voxgig_struct.ex +1 -1
- package/project/.sdk/tm/elixir/test/primary_utility_test.exs +7 -1
- package/project/.sdk/tm/go/feature/test_feature.go +33 -1
- package/project/.sdk/tm/go/test/primary_utility_test.go +41 -42
- package/project/.sdk/tm/go/test/runner_test.go +30 -1
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +3 -1
- package/project/.sdk/tm/haskell/test/Harness.hs +8 -3
- package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +7 -24
- package/project/.sdk/tm/js/Makefile +1 -1
- package/project/.sdk/tm/js/jsconfig.json +12 -0
- package/project/.sdk/tm/js/src/feature/test/TestFeature.js +18 -1
- package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +8 -0
- package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +7 -20
- package/project/.sdk/tm/lean/LICENSE +21 -0
- package/project/.sdk/tm/lean/VERSION +1 -0
- package/project/.sdk/tm/lean/src/SdkFeature.lean +171 -0
- package/project/.sdk/tm/lean/src/SdkFeatures.lean +602 -0
- package/project/.sdk/tm/lean/src/SdkJson.lean +134 -0
- package/project/.sdk/tm/lean/src/SdkRuntime.lean +356 -0
- package/project/.sdk/tm/lean/src/SdkUtility.lean +617 -0
- package/project/.sdk/tm/lean/src/VoxgigStruct.lean +2880 -0
- package/project/.sdk/tm/lean/src/Vregex.lean +412 -0
- package/project/.sdk/tm/lean/src/feature/README.md +5 -0
- package/project/.sdk/tm/lean/src/feature/audit/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/base/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/cache/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/clienttrack/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/debug/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/idempotency/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/log/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/metrics/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/netsim/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/paging/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/proxy/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/ratelimit/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/rbac/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/retry/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/streaming/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/telemetry/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/test/.gitkeep +0 -0
- package/project/.sdk/tm/lean/src/feature/timeout/.gitkeep +0 -0
- package/project/.sdk/tm/lean/test/StructCorpus.lean +697 -0
- package/project/.sdk/tm/lean/test/TFeature.lean +268 -0
- package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +349 -0
- package/project/.sdk/tm/lua/test/primary_utility_test.lua +10 -8
- package/project/.sdk/tm/ocaml/Makefile +5 -1
- package/project/.sdk/tm/perl/t/primary_utility.t +8 -17
- package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +9 -7
- package/project/.sdk/tm/php/utility/struct/Struct.php +1 -1
- package/project/.sdk/tm/py/feature/test_feature.py +28 -1
- package/project/.sdk/tm/py/test/test_primary_utility.py +13 -18
- package/project/.sdk/tm/py/utility/voxgig_struct/voxgig_struct.py +1 -1
- package/project/.sdk/tm/rb/feature/test_feature.rb +24 -1
- package/project/.sdk/tm/rb/test/primary_utility_test.rb +7 -8
- package/project/.sdk/tm/rb/utility/struct/voxgig_struct.rb +1 -1
- package/project/.sdk/tm/rust/tests/common/mod.rs +37 -1
- package/project/.sdk/tm/rust/tests/primary_utility_test.rs +12 -26
- package/project/.sdk/tm/scala/sdktest/SdkTestMain.scala +8 -59
- package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +7 -8
- package/project/.sdk/tm/ts/Makefile +1 -1
- package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +18 -1
- package/project/.sdk/tm/ts/test/utility/PrimaryUtility.test.ts +65 -21
- package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -1
- package/src/cmp/Entity.ts +5 -1
- package/src/cmp/Feature.ts +2 -1
- package/src/cmp/ReadmeErrors.ts +2 -2
- package/src/cmp/ReadmeExplanation.ts +3 -3
- package/src/cmp/ReadmeTop.ts +2 -2
- package/src/helpers/canonType.ts +121 -25
- package/src/helpers/collectDeps.ts +39 -12
- package/src/helpers/naming.ts +106 -0
- package/src/helpers/opExample.ts +43 -20
- package/src/helpers/opShape.ts +197 -11
- package/src/sdkgen.ts +13 -3
- package/src/tsconfig.json +2 -0
- package/project/.sdk/tm/zig/build.zig.zon +0 -11
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Content,
|
|
3
|
+
File,
|
|
4
|
+
Folder,
|
|
5
|
+
cmp,
|
|
6
|
+
each,
|
|
7
|
+
} from '@voxgig/sdkgen'
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
KIT,
|
|
11
|
+
Model,
|
|
12
|
+
getModelPath,
|
|
13
|
+
} from '@voxgig/apidef'
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
// True when an op has at least one endpoint point that needs no path params
|
|
17
|
+
// (a top-level operation the live smoke test can call without an id).
|
|
18
|
+
function hasParamFreePoint(op: any): boolean {
|
|
19
|
+
if (null == op) return false
|
|
20
|
+
const points = op.points || []
|
|
21
|
+
for (const pt of points) {
|
|
22
|
+
const params = ((pt.args || {}).params) || []
|
|
23
|
+
if (params.length === 0) return true
|
|
24
|
+
}
|
|
25
|
+
return false
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// Synthesize a create payload from the entity's required non-id fields.
|
|
30
|
+
function synthData(fields: any): any {
|
|
31
|
+
const o: any = {}
|
|
32
|
+
each(fields, (f: any) => {
|
|
33
|
+
if (f.req && f.name !== 'id') {
|
|
34
|
+
const t = String(f.type || '').toLowerCase()
|
|
35
|
+
o[f.name] =
|
|
36
|
+
(t.includes('number') || t.includes('integer') || t.includes('decimal')) ? 42
|
|
37
|
+
: t.includes('bool') ? true
|
|
38
|
+
: 'leantest'
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
return o
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
// The generated `test/Runner.lean` exe runs TWO lanes:
|
|
46
|
+
//
|
|
47
|
+
// - OFFLINE (always): a test-mode client seeded from the entity's generated
|
|
48
|
+
// `<Entity>TestData.json` answers operations from an in-memory store, so
|
|
49
|
+
// entity behaviour (list/load/create/load-back/remove) is verified with no
|
|
50
|
+
// server — the same guarantee the `test` feature gives the other targets.
|
|
51
|
+
// - LIVE (only when SDK_TEST_BASE is set): the same flow against a real
|
|
52
|
+
// server, exercising the curl transport end to end.
|
|
53
|
+
const Test = cmp(async function Test(props: any) {
|
|
54
|
+
const ctx$ = props.ctx$
|
|
55
|
+
const target = props.target
|
|
56
|
+
const model: Model = ctx$.model
|
|
57
|
+
|
|
58
|
+
const entity = getModelPath(model, `main.${KIT}.entity`)
|
|
59
|
+
|
|
60
|
+
// Per-entity OFFLINE (test-mode) blocks: seeded store, no server.
|
|
61
|
+
let offline = ''
|
|
62
|
+
each(entity, (e: any) => {
|
|
63
|
+
const ns = e.name.charAt(0).toUpperCase() + e.name.slice(1)
|
|
64
|
+
const Name = e.Name || (e.name.charAt(0).toUpperCase() + e.name.slice(1))
|
|
65
|
+
const ops = e.op || {}
|
|
66
|
+
if (!ops.list && !ops.load) return
|
|
67
|
+
offline += ` -- ${e.name}: offline (test-mode) entity behaviour
|
|
68
|
+
(do
|
|
69
|
+
let seedPath := "../.sdk/test/entity/${e.name}/${Name}TestData.json"
|
|
70
|
+
if !(← System.FilePath.pathExists seedPath) then
|
|
71
|
+
IO.println s!"skip - ${e.name}: no seed at {seedPath}"
|
|
72
|
+
else do
|
|
73
|
+
let seed ← SdkJson.jsonRead (← IO.FS.readFile seedPath)
|
|
74
|
+
let tclient ← Sdk.testSdk0 seed
|
|
75
|
+
let existing ← SdkRuntime.gp (← SdkRuntime.gp seed "existing") "${e.name}"
|
|
76
|
+
let ids ← keysof existing
|
|
77
|
+
-- list returns every seeded entity
|
|
78
|
+
let items ← ${ns}.list tclient (← emptyMap) (← emptyMap)
|
|
79
|
+
let n ← (match items with | .list lid => do pure (← listItems lid).size | _ => pure 0)
|
|
80
|
+
if n == ids.size then pass s!"${e.name}.list offline -> {n} seeded"
|
|
81
|
+
else fail s!"${e.name}.list offline: got {n}, want {ids.size}"
|
|
82
|
+
-- load the first seeded entity by id
|
|
83
|
+
if ids.size > 0 then do
|
|
84
|
+
let wid := ids[0]!
|
|
85
|
+
let m ← newMap #[("id", .str wid)]
|
|
86
|
+
let got ← ${ns}.load tclient m (← emptyMap)
|
|
87
|
+
let gid ← SdkRuntime.gpS got "id"
|
|
88
|
+
if gid == wid then pass s!"${e.name}.load offline (id={wid})"
|
|
89
|
+
else fail s!"${e.name}.load offline: got {gid}, want {wid}"
|
|
90
|
+
-- create -> load back -> remove, all in the store
|
|
91
|
+
let newmap ← SdkRuntime.gp (← SdkRuntime.gp seed "new") "${e.name}"
|
|
92
|
+
let nks ← keysof newmap
|
|
93
|
+
if nks.size > 0 then do
|
|
94
|
+
let payload ← SdkRuntime.gp newmap nks[0]!
|
|
95
|
+
let created ← ${ns}.create tclient payload (← emptyMap)
|
|
96
|
+
let cid ← SdkRuntime.gpS created "id"
|
|
97
|
+
if cid == "" then fail "${e.name}.create offline returned no id" else do
|
|
98
|
+
let m2 ← newMap #[("id", .str cid)]
|
|
99
|
+
let back ← ${ns}.load tclient m2 (← emptyMap)
|
|
100
|
+
if (← SdkRuntime.gpS back "id") == cid then
|
|
101
|
+
pass s!"${e.name}.create/load offline (id={cid})"
|
|
102
|
+
else fail s!"${e.name}.create/load offline mismatch"
|
|
103
|
+
let _ ← ${ns}.remove tclient m2 (← emptyMap)
|
|
104
|
+
let gone ← ${ns}.load tclient m2 (← emptyMap)
|
|
105
|
+
match gone with
|
|
106
|
+
| .map _ => fail s!"${e.name}.remove offline: still present"
|
|
107
|
+
| _ => pass s!"${e.name}.remove offline (id={cid})")
|
|
108
|
+
`
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
// Per-entity LIVE test blocks.
|
|
112
|
+
let blocks = ''
|
|
113
|
+
each(entity, (e: any) => {
|
|
114
|
+
const ns = e.name.charAt(0).toUpperCase() + e.name.slice(1)
|
|
115
|
+
const listOp = (e.op || {}).list
|
|
116
|
+
const createOp = (e.op || {}).create
|
|
117
|
+
const removeOp = (e.op || {}).remove
|
|
118
|
+
|
|
119
|
+
if (hasParamFreePoint(listOp)) {
|
|
120
|
+
blocks += ` -- ${e.name}: list smoke
|
|
121
|
+
(do
|
|
122
|
+
let items ← ${ns}.list client (← emptyMap) (← emptyMap)
|
|
123
|
+
match items with
|
|
124
|
+
| .list lid => pass s!"${e.name}.list -> {(← listItems lid).size} items"
|
|
125
|
+
| _ => fail "${e.name}.list did not return a list")
|
|
126
|
+
`
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Round-trip when create is param-free (creatable without an id); load and
|
|
130
|
+
// remove then use the id returned by create.
|
|
131
|
+
const loadOp = (e.op || {}).load
|
|
132
|
+
if (hasParamFreePoint(createOp) && loadOp && removeOp) {
|
|
133
|
+
const data = JSON.stringify(synthData(e.fields))
|
|
134
|
+
blocks += ` -- ${e.name}: create / load / remove round-trip
|
|
135
|
+
(do
|
|
136
|
+
let d ← SdkJson.jsonRead ${JSON.stringify(data)}
|
|
137
|
+
let created ← ${ns}.create client d (← emptyMap)
|
|
138
|
+
let nid ← SdkRuntime.gpS created "id"
|
|
139
|
+
if nid == "" then fail "${e.name}.create returned no id" else do
|
|
140
|
+
let m ← newMap #[("id", .str nid)]
|
|
141
|
+
let back ← ${ns}.load client m (← emptyMap)
|
|
142
|
+
let bid ← SdkRuntime.gpS back "id"
|
|
143
|
+
if bid == nid then pass s!"${e.name}.create/load round-trip (id={nid})"
|
|
144
|
+
else fail s!"${e.name}.load mismatch: {bid} != {nid}"
|
|
145
|
+
let _ ← ${ns}.remove client m (← emptyMap)
|
|
146
|
+
pass s!"${e.name}.remove (id={nid})")
|
|
147
|
+
`
|
|
148
|
+
}
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
// The live lane nests two levels deeper than the offline lane.
|
|
152
|
+
const liveBlocks = blocks.split('\n').map((l) => l ? ' ' + l : l).join('\n')
|
|
153
|
+
|
|
154
|
+
Folder({ name: 'test' }, () => {
|
|
155
|
+
File({ name: 'Runner.' + target.ext }, () => {
|
|
156
|
+
Content(`-- ${model.const.Name} SDK test runner (generated by @voxgig/sdkgen).
|
|
157
|
+
--
|
|
158
|
+
-- OFFLINE lane (always): a test-mode client seeded from the generated entity
|
|
159
|
+
-- test data answers operations from an in-memory store — no server needed.
|
|
160
|
+
-- LIVE lane (only when SDK_TEST_BASE is set): the same flow over real HTTP.
|
|
161
|
+
|
|
162
|
+
import VoxgigStruct
|
|
163
|
+
import SdkJson
|
|
164
|
+
import SdkRuntime
|
|
165
|
+
import SdkClient
|
|
166
|
+
|
|
167
|
+
open VoxgigStruct
|
|
168
|
+
|
|
169
|
+
initialize npass : IO.Ref Nat ← IO.mkRef 0
|
|
170
|
+
initialize nfail : IO.Ref Nat ← IO.mkRef 0
|
|
171
|
+
|
|
172
|
+
def pass (msg : String) : SIO Unit := do
|
|
173
|
+
npass.modify (· + 1)
|
|
174
|
+
IO.println s!"ok - {msg}"
|
|
175
|
+
|
|
176
|
+
def fail (msg : String) : SIO Unit := do
|
|
177
|
+
nfail.modify (· + 1)
|
|
178
|
+
IO.println s!"FAIL - {msg}"
|
|
179
|
+
|
|
180
|
+
def defaultBase : String := "http://localhost:8901"
|
|
181
|
+
|
|
182
|
+
def main : IO UInt32 := do
|
|
183
|
+
let liveBase ← IO.getEnv "SDK_TEST_BASE"
|
|
184
|
+
let ctx ← mkCtx
|
|
185
|
+
let offline : SIO Unit := do
|
|
186
|
+
${offline} offline.run ctx
|
|
187
|
+
match liveBase with
|
|
188
|
+
| none => IO.println "skip - live lane (set SDK_TEST_BASE to enable)"
|
|
189
|
+
| some base => do
|
|
190
|
+
let live : SIO Unit := do
|
|
191
|
+
let opts ← newMap #[("base", .str base)]
|
|
192
|
+
let client ← Sdk.newSdk opts
|
|
193
|
+
${liveBlocks} live.run ctx
|
|
194
|
+
let p ← npass.get
|
|
195
|
+
let f ← nfail.get
|
|
196
|
+
IO.println ""
|
|
197
|
+
IO.println s!"PASS {p} FAIL {f}"
|
|
198
|
+
if f > 0 then return 1 else return 0
|
|
199
|
+
`)
|
|
200
|
+
})
|
|
201
|
+
})
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
export {
|
|
206
|
+
Test
|
|
207
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import * as Path from 'node:path'
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
clone,
|
|
5
|
+
walk,
|
|
6
|
+
} from '@voxgig/struct'
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
function projectPath(suffix?: string): string {
|
|
10
|
+
return Path.normalize(Path.join(__dirname, '../../..', suffix ?? ''))
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
// A Lean 4 string literal. Lean strings are UTF-8, so non-ASCII passes through;
|
|
15
|
+
// only the structural characters need escaping. (Backticks are ordinary in Lean
|
|
16
|
+
// strings, so the config's `body`-style transform exprs embed verbatim.)
|
|
17
|
+
function leanString(s: string): string {
|
|
18
|
+
let out = '"'
|
|
19
|
+
for (const ch of String(s)) {
|
|
20
|
+
if (ch === '"') out += '\\"'
|
|
21
|
+
else if (ch === '\\') out += '\\\\'
|
|
22
|
+
else if (ch === '\n') out += '\\n'
|
|
23
|
+
else if (ch === '\t') out += '\\t'
|
|
24
|
+
else if (ch === '\r') out += '\\r'
|
|
25
|
+
else out += ch
|
|
26
|
+
}
|
|
27
|
+
return out + '"'
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
// Lean reserved words that cannot be bare identifiers.
|
|
32
|
+
const LEAN_RESERVED = new Set<string>([
|
|
33
|
+
'do', 'let', 'fun', 'match', 'with', 'if', 'then', 'else', 'by', 'end',
|
|
34
|
+
'namespace', 'section', 'open', 'import', 'def', 'partial', 'mutual',
|
|
35
|
+
'structure', 'inductive', 'class', 'instance', 'where', 'deriving', 'return',
|
|
36
|
+
'try', 'catch', 'for', 'in', 'while', 'have', 'show', 'from', 'set_option',
|
|
37
|
+
])
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
// A collision-free lower-camel Lean identifier for a model name.
|
|
41
|
+
function leanVarName(name: string): string {
|
|
42
|
+
let s = String(name).replace(/[^a-zA-Z0-9_]/g, '_')
|
|
43
|
+
if (s.length === 0) {
|
|
44
|
+
s = 'x'
|
|
45
|
+
}
|
|
46
|
+
s = s.charAt(0).toLowerCase() + s.slice(1)
|
|
47
|
+
if (!/^[a-z_]/.test(s)) {
|
|
48
|
+
s = 'e_' + s
|
|
49
|
+
}
|
|
50
|
+
return LEAN_RESERVED.has(s) ? s + '_' : s
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
// The lowercase-hyphenated package name (used for the lake package + repo).
|
|
55
|
+
function pkgName(model: any): string {
|
|
56
|
+
const org = (model.origin || 'voxgig-sdk').replace(/-sdk$/, '')
|
|
57
|
+
return `${org}-${model.name}-sdk`.toLowerCase().replace(/[^a-z0-9-]/g, '-')
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
// Remove `$`-suffixed model annotation keys (so the embedded config is clean).
|
|
62
|
+
function clean(o: any) {
|
|
63
|
+
return walk(clone(o), (k: any, v: any, p: any) => {
|
|
64
|
+
if (null != k && k.endsWith('$')) {
|
|
65
|
+
delete p[k]
|
|
66
|
+
}
|
|
67
|
+
return v
|
|
68
|
+
})
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
export {
|
|
73
|
+
clean,
|
|
74
|
+
leanString,
|
|
75
|
+
leanVarName,
|
|
76
|
+
pkgName,
|
|
77
|
+
projectPath,
|
|
78
|
+
}
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
File, Content,
|
|
22
22
|
} from '@voxgig/sdkgen'
|
|
23
23
|
|
|
24
|
-
import { canonToType, opTypeName, opRequestShape } from '@voxgig/sdkgen'
|
|
24
|
+
import { canonToType, opTypeName, opRequestShape, warnEntityTypeCollisions , deriveEntityNames } from '@voxgig/sdkgen'
|
|
25
25
|
|
|
26
26
|
import {
|
|
27
27
|
KIT,
|
|
@@ -41,14 +41,27 @@ function propKey(name: string): string {
|
|
|
41
41
|
|
|
42
42
|
const EntityTypes = cmp(function EntityTypes(props: any) {
|
|
43
43
|
const { target } = props
|
|
44
|
-
const { model } = props.ctx$
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
const { model, log } = props.ctx$
|
|
45
|
+
|
|
46
|
+
// only_active:false — getModelPath DROPS active:false entries by default,
|
|
47
|
+
// but the consumer scaffold (create-sdkgen Root.ts) iterates the RAW entity
|
|
48
|
+
// collection, so inactive entities still get generated entity code that
|
|
49
|
+
// references these typed names. The typed model must cover them too.
|
|
50
|
+
const entity = getModelPath(model, `main.${KIT}.entity`, { only_active: false, required: false })
|
|
51
|
+
// Emit for EVERY entity that gets generated entity code: the consumer
|
|
52
|
+
// scaffold (create-sdkgen Root.ts) iterates entities WITHOUT an active
|
|
53
|
+
// filter, so inactive entities still get class files referencing these
|
|
54
|
+
// typed names. Filter on `name` (always present), NOT `active` — parity
|
|
55
|
+
// with the go emitter's fix.
|
|
56
|
+
const entityList = deriveEntityNames(entity)
|
|
48
57
|
// Derive the PascalCase Name up-front — it is set LAZILY by names(), so an
|
|
49
58
|
// entity not yet named (e.g. a fieldless placeholder) would otherwise read
|
|
50
59
|
// `Name = undefined` below. Parity with the go emitter's fix.
|
|
51
|
-
|
|
60
|
+
|
|
61
|
+
// Surface duplicate generated type names (two entities with the same
|
|
62
|
+
// PascalCase Name) — they would redeclare a type in statically-typed
|
|
63
|
+
// targets. Detection only; renaming is a model-level decision.
|
|
64
|
+
warnEntityTypeCollisions(entity, log, LANG)
|
|
52
65
|
|
|
53
66
|
File({ name: model.name + '_types.' + (target.ext || LANG) }, () => {
|
|
54
67
|
|
|
@@ -4,7 +4,7 @@ import * as Path from 'node:path'
|
|
|
4
4
|
import {
|
|
5
5
|
cmp, each, camelify, names,
|
|
6
6
|
File, Content, Folder, Fragment, Line, FeatureHook, Slot,
|
|
7
|
-
entityClassName,
|
|
7
|
+
entityClassName, entityCollection,
|
|
8
8
|
} from '@voxgig/sdkgen'
|
|
9
9
|
|
|
10
10
|
import {
|
|
@@ -24,7 +24,7 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
24
24
|
// data-type name. The class is a module-local table (snake-cased file name),
|
|
25
25
|
// so this is used only for the local identifier — kept uniform with the other
|
|
26
26
|
// languages.
|
|
27
|
-
const entityColl =
|
|
27
|
+
const entityColl = entityCollection(model)
|
|
28
28
|
const cls = entityClassName(entity, entityColl)
|
|
29
29
|
|
|
30
30
|
const entrep = {
|
|
@@ -40,7 +40,7 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
40
40
|
|
|
41
41
|
File({ name: entity.name + '_entity.' + target.ext }, () => {
|
|
42
42
|
|
|
43
|
-
const opnames = Object.keys(entity.op)
|
|
43
|
+
const opnames = Object.keys(entity.op || {})
|
|
44
44
|
|
|
45
45
|
const opfrags =
|
|
46
46
|
(['load', 'list', 'create', 'update', 'remove']
|
|
@@ -55,7 +55,19 @@ const Main = cmp(async function Main(props: any) {
|
|
|
55
55
|
replace: {
|
|
56
56
|
...props.ctx$.stdrep,
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
// Load the LuaLS typed-model annotations module so it is part of
|
|
59
|
+
// the loaded program (module body is empty — no runtime effect) and
|
|
60
|
+
// does not depend on workspace-wide language-server scanning.
|
|
61
|
+
// NOTE: plain marker keys must EMBED the lua comment prefix
|
|
62
|
+
// (`-- #X`) — jostraca's bare `#X` form only matches `//`-style
|
|
63
|
+
// comment lines (cf. the `'-- #LoadOp'` keys in Entity_lua.ts).
|
|
64
|
+
'-- #TypesRequire': ({ indent }: any) => Content({ indent },
|
|
65
|
+
`-- Typed-model annotations (LuaLS ---@class); empty at runtime.\n` +
|
|
66
|
+
`require("${model.name}_types")`),
|
|
67
|
+
|
|
68
|
+
// Same embedded `-- ` prefix requirement as above (the bare
|
|
69
|
+
// '#BuildFeatures' key never matched the lua comment line).
|
|
70
|
+
'-- #BuildFeatures': ({ indent }: any) => {
|
|
59
71
|
each(feature, (feat: any) => {
|
|
60
72
|
const fname = feat.name.charAt(0).toUpperCase() + feat.name.slice(1)
|
|
61
73
|
Content({ indent }, ` -- feature: ${feat.name}
|
|
@@ -90,7 +102,7 @@ self._utility.feature_hook(self._rootctx, "${name}")
|
|
|
90
102
|
|
|
91
103
|
// Generate feature factory module
|
|
92
104
|
File({ name: 'features.' + target.ext }, () => {
|
|
93
|
-
Content(`--
|
|
105
|
+
Content(`-- ${model.const.Name} SDK feature factory
|
|
94
106
|
|
|
95
107
|
local BaseFeature = require("feature.base_feature")
|
|
96
108
|
`)
|
|
@@ -57,7 +57,7 @@ dependencies = {
|
|
|
57
57
|
`)
|
|
58
58
|
|
|
59
59
|
const seen = new Set<string>(['lua', 'dkjson'])
|
|
60
|
-
for (const d of collectDeps(model, target.name, target.deps)) {
|
|
60
|
+
for (const d of collectDeps(model, target.name, target.deps, ctx$.log)) {
|
|
61
61
|
if (seen.has(d.name)) continue
|
|
62
62
|
seen.add(d.name)
|
|
63
63
|
const v = d.source === 'target' ? (d.version || '0.0') : d.version
|
|
@@ -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,
|
|
@@ -63,7 +63,7 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
|
|
|
63
63
|
const idF = entityIdField(entity)
|
|
64
64
|
// Sanitise the local variable name — an entity whose lowercased name is a
|
|
65
65
|
// Lua keyword (e.g. `end`) would otherwise emit uncompilable code.
|
|
66
|
-
const eVar =
|
|
66
|
+
const eVar = exampleVarName(entity.name, 'lua')
|
|
67
67
|
|
|
68
68
|
Content(`
|
|
69
69
|
### ${entity.Name}
|
|
@@ -36,7 +36,12 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
|
|
|
36
36
|
const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
|
|
37
37
|
let testCallArg = ''
|
|
38
38
|
if (exampleEntity && isMatchOp) {
|
|
39
|
-
|
|
39
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
40
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
41
|
+
.sort((a: any, b: any) => (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
42
|
+
testCallArg = 0 < items.length
|
|
43
|
+
? `{ ${items.map((it: any) => `${luaKey(it.name)} = ${it.name === idF ? '"test01"' : luaLit(it.type)}`).join(', ')} }`
|
|
44
|
+
: ''
|
|
40
45
|
} else if (exampleEntity && ('create' === primaryOp || 'update' === primaryOp)) {
|
|
41
46
|
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
42
47
|
.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 @@ local 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
|
// Lua keyword (e.g. `end`) would otherwise emit uncompilable code.
|
|
48
|
-
const eVar =
|
|
48
|
+
const eVar = exampleVarName(eName.toLowerCase(), 'lua')
|
|
49
49
|
const opnames = entityOps(exampleEntity)
|
|
50
50
|
// Model-driven id key: `idF` is the MATCH key (null when none). `dataIdF`
|
|
51
51
|
// is the id on the RETURNED record's data type — an entity can key its match
|
|
@@ -108,7 +108,7 @@ end
|
|
|
108
108
|
if (nestedEntity) {
|
|
109
109
|
const neName = nom(nestedEntity, 'Name')
|
|
110
110
|
const neArticle = /^[aeiou]/i.test(neName) ? "an" : "a"
|
|
111
|
-
const neVar =
|
|
111
|
+
const neVar = exampleVarName(neName.toLowerCase(), 'lua')
|
|
112
112
|
|
|
113
113
|
// Model-driven match: every REQUIRED load-match key — the same shape
|
|
114
114
|
// 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,
|
|
@@ -176,7 +176,7 @@ same parameters as \`direct()\`.
|
|
|
176
176
|
const idF = entityIdField(ent)
|
|
177
177
|
// Sanitise the local variable name — an entity whose lowercased name is
|
|
178
178
|
// a Lua keyword (e.g. `end`) would otherwise emit uncompilable code.
|
|
179
|
-
const eVar =
|
|
179
|
+
const eVar = exampleVarName(ent.name, 'lua')
|
|
180
180
|
|
|
181
181
|
Content(`
|
|
182
182
|
---
|
|
@@ -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,
|
|
@@ -48,7 +48,7 @@ local client = ${ctor}
|
|
|
48
48
|
const eName = nom(exampleEntity, 'Name')
|
|
49
49
|
// Sanitise the local variable name — an entity whose lowercased name is a
|
|
50
50
|
// Lua keyword (e.g. `end`) would otherwise emit uncompilable code.
|
|
51
|
-
const eVar =
|
|
51
|
+
const eVar = exampleVarName(eName.toLowerCase(), 'lua')
|
|
52
52
|
const opnames = Object.keys(exampleEntity.op || {})
|
|
53
53
|
// Model-driven id key: null when the entity has no id-like field, in which
|
|
54
54
|
// case the load example takes no match argument.
|
|
@@ -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`)
|
|
@@ -342,6 +343,7 @@ const generateCreate: OpGen = (ctx, step, index) => {
|
|
|
342
343
|
|
|
343
344
|
const generateList: OpGen = (ctx, step, index) => {
|
|
344
345
|
const { entity, flow } = ctx
|
|
346
|
+
const hasDataId = null != entityDataIdField(entity)
|
|
345
347
|
const ref = step.input.ref ?? entity.name + '_ref01'
|
|
346
348
|
const entvar = step.input.entvar ?? ref + '_ent'
|
|
347
349
|
const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
|
|
@@ -387,7 +389,7 @@ const generateList: OpGen = (ctx, step, index) => {
|
|
|
387
389
|
const hasRefData = validRef && allSteps.some((s: any) => 'create' === s.op &&
|
|
388
390
|
((s.input.ref ?? entity.name + '_ref01') === validRef))
|
|
389
391
|
|
|
390
|
-
if ('ItemExists' === validator.apply && hasRefData) {
|
|
392
|
+
if ('ItemExists' === validator.apply && hasRefData && hasDataId) {
|
|
391
393
|
const refDataVar = validRef + '_data'
|
|
392
394
|
Content(`
|
|
393
395
|
local found_item = vs.select(
|
|
@@ -395,7 +397,7 @@ const generateList: OpGen = (ctx, step, index) => {
|
|
|
395
397
|
{ id = ${refDataVar}["id"] })
|
|
396
398
|
assert.is_false(vs.isempty(found_item))
|
|
397
399
|
`)
|
|
398
|
-
} else if ('ItemNotExists' === validator.apply && hasRefData) {
|
|
400
|
+
} else if ('ItemNotExists' === validator.apply && hasRefData && hasDataId) {
|
|
399
401
|
const refDataVar = validRef + '_data'
|
|
400
402
|
Content(`
|
|
401
403
|
local not_found_item = vs.select(
|
|
@@ -548,6 +550,9 @@ const generateLoad: OpGen = (ctx, step, index) => {
|
|
|
548
550
|
|
|
549
551
|
const generateRemove: OpGen = (ctx, step, index) => {
|
|
550
552
|
const { entity, flow } = ctx
|
|
553
|
+
if (null == entityDataIdField(entity)) {
|
|
554
|
+
return
|
|
555
|
+
}
|
|
551
556
|
const ref = step.input.ref ?? entity.name + '_ref01'
|
|
552
557
|
const entvar = step.input.entvar ?? ref + '_ent'
|
|
553
558
|
const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
|
|
@@ -24,7 +24,7 @@ const Test = cmp(function Test(props: any) {
|
|
|
24
24
|
|
|
25
25
|
// Generate exists test
|
|
26
26
|
File({ name: 'exists_test.' + target.ext }, () => {
|
|
27
|
-
Content(`--
|
|
27
|
+
Content(`-- ${model.const.Name} SDK exists test
|
|
28
28
|
|
|
29
29
|
local sdk = require("${model.name}_sdk")
|
|
30
30
|
|
|
@@ -8,6 +8,8 @@ local helpers = require("core.helpers")
|
|
|
8
8
|
-- Load utility registration (populates Utility._registrar)
|
|
9
9
|
require("utility.register")
|
|
10
10
|
|
|
11
|
+
-- #TypesRequire
|
|
12
|
+
|
|
11
13
|
-- Load features
|
|
12
14
|
local BaseFeature = require("feature.base_feature")
|
|
13
15
|
local features_factory = require("features")
|