@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
|
@@ -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,
|
|
@@ -14,13 +14,15 @@ const MainEntity = cmp(async function MainEntity(props: any) {
|
|
|
14
14
|
|
|
15
15
|
// Return the collision-free class TYPE (entityClassName); the accessor METHOD
|
|
16
16
|
// name (entity.Name) is unchanged so callers still write client.<Name>().
|
|
17
|
-
const cls = entityClassName(entity,
|
|
17
|
+
const cls = entityClassName(entity, entityCollection(model))
|
|
18
18
|
|
|
19
19
|
Content(`
|
|
20
20
|
// Entity access: \`client.${entity.Name}().list()\` / \`client.${entity.Name}().load({ id })\`.
|
|
21
|
-
|
|
21
|
+
// The argument is the entity OPTIONS object (passed to the entity
|
|
22
|
+
// constructor as entopts), not initial entity data.
|
|
23
|
+
${entity.Name}(entopts?: Record<string, any>) {
|
|
22
24
|
const self = this
|
|
23
|
-
return new ${cls}(self,
|
|
25
|
+
return new ${cls}(self, entopts)
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
`)
|
|
@@ -4,7 +4,7 @@ import * as Path from 'node:path'
|
|
|
4
4
|
import {
|
|
5
5
|
cmp, each, names, cmap,
|
|
6
6
|
List, File, Content, Copy, Folder, Fragment, Line, FeatureHook,
|
|
7
|
-
entityClassName,
|
|
7
|
+
entityClassName, entityCollection,
|
|
8
8
|
} from '@voxgig/sdkgen'
|
|
9
9
|
|
|
10
10
|
|
|
@@ -57,7 +57,7 @@ const Main = cmp(async function Main(props: any) {
|
|
|
57
57
|
Line(`// ${model.const.Name} ${target.Name} SDK\n`)
|
|
58
58
|
|
|
59
59
|
List({ item: entity }, ({ item }: any) => {
|
|
60
|
-
const cls = entityClassName(item,
|
|
60
|
+
const cls = entityClassName(item, entityCollection(model))
|
|
61
61
|
return Line(`import { ${cls} } from './entity/${cls}'`)
|
|
62
62
|
})
|
|
63
63
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, each, Content, canonToType, entityIdField, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, each, Content, canonToType, entityIdField, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -46,7 +46,7 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
|
|
|
46
46
|
// Model-driven id key: null when this entity has no id-like field.
|
|
47
47
|
const idF = entityIdField(entity)
|
|
48
48
|
// Variable-safe lowercase name (a `Delete` entity must not bind `delete`).
|
|
49
|
-
const eVar =
|
|
49
|
+
const eVar = exampleVarName(entity.name, target.name)
|
|
50
50
|
|
|
51
51
|
Content(`
|
|
52
52
|
### ${entity.Name}
|
|
@@ -108,7 +108,7 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
|
|
|
108
108
|
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
109
109
|
const loadArg = 0 < loadItems.length
|
|
110
110
|
? `{ ${loadItems.map((it: any) =>
|
|
111
|
-
`${it.name}: ${exampleValue(entity, entity.op && entity.op.load, it.name,
|
|
111
|
+
`${jsKey(it.name)}: ${exampleValue(entity, entity.op && entity.op.load, it.name,
|
|
112
112
|
it.name === idF ? entity.name + '_id' : it.name)}`).join(', ')} }`
|
|
113
113
|
: ''
|
|
114
114
|
Content(`#### Example: Load
|
|
@@ -143,7 +143,7 @@ const ${eVar}s = await client.${entity.Name}().list()
|
|
|
143
143
|
const ${eVar} = await client.${entity.Name}().create({
|
|
144
144
|
`)
|
|
145
145
|
createItems.map((it: any) => {
|
|
146
|
-
Content(` ${it.name}: ${exampleValue(entity, entity.op && entity.op.create, it.name, 'example_' + it.name)},
|
|
146
|
+
Content(` ${jsKey(it.name)}: ${exampleValue(entity, entity.op && entity.op.create, it.name, 'example_' + it.name)},
|
|
147
147
|
`)
|
|
148
148
|
})
|
|
149
149
|
Content(`})
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, Content, isAuthActive, envName, entityIdField, entityDataIdField, pickExampleEntity, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, Content, isAuthActive, envName, entityIdField, entityDataIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -20,7 +20,7 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
|
|
|
20
20
|
const { entity: exampleEntity, primaryOp } = pickExampleEntity(entity)
|
|
21
21
|
const eName = exampleEntity ? nom(exampleEntity, 'Name') : 'Entity'
|
|
22
22
|
// Variable-safe lowercase name (a `Delete` entity must not bind `delete`).
|
|
23
|
-
const eVar =
|
|
23
|
+
const eVar = exampleVarName(eName.toLowerCase(), 'ts')
|
|
24
24
|
|
|
25
25
|
const primaryOpDef = exampleEntity && primaryOp && exampleEntity.op && exampleEntity.op[primaryOp]
|
|
26
26
|
const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
|
|
@@ -35,7 +35,17 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
|
|
|
35
35
|
if (!exampleEntity || !primaryOp) return ''
|
|
36
36
|
if ('list' === primaryOp) return ''
|
|
37
37
|
if (isMatchOp) {
|
|
38
|
-
|
|
38
|
+
// Every REQUIRED match key (id first), not just idF — a composite-match
|
|
39
|
+
// entity (e.g. Umbrella's FlatPermission, database_id + id) needs them all
|
|
40
|
+
// to satisfy the typed <Name>LoadMatch. Mirrors ReadmeTopTest.
|
|
41
|
+
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
42
|
+
.filter((it: any) => !it.optional || it.name === idF)
|
|
43
|
+
.sort((a: any, b: any) => (a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
44
|
+
if (0 === items.length) return ''
|
|
45
|
+
const pairs = items.map((it: any) =>
|
|
46
|
+
`${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name,
|
|
47
|
+
it.name === idF ? idPlaceholder : 'example_' + it.name)}`)
|
|
48
|
+
return `{ ${pairs.join(', ')} }`
|
|
39
49
|
}
|
|
40
50
|
// create / update: a body of the required writable fields.
|
|
41
51
|
const items = opRequestShape(exampleEntity, primaryOp).items
|
|
@@ -43,7 +53,7 @@ const ReadmeHowto = cmp(function ReadmeHowto(props: any) {
|
|
|
43
53
|
const required = items.filter((it: any) => !it.optional)
|
|
44
54
|
const chosen = required.length ? required : items.slice(0, 3)
|
|
45
55
|
const pairs = chosen.map((it: any) =>
|
|
46
|
-
`${it.name}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`)
|
|
56
|
+
`${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`)
|
|
47
57
|
return `{ ${pairs.join(', ')} }`
|
|
48
58
|
}
|
|
49
59
|
const testCallArg = primaryArg('test01')
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, each, Content, isAuthActive, packageName, envName, opRequestShape, entityIdField, entityDataIdField, entityOps, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, each, Content, isAuthActive, packageName, envName, opRequestShape, entityIdField, entityDataIdField, entityOps, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -48,7 +48,7 @@ const client = ${ctor}
|
|
|
48
48
|
const eName = nom(exampleEntity, 'Name')
|
|
49
49
|
// Variable-safe lowercase name — a `Delete`/`Class` entity must not bind a
|
|
50
50
|
// reserved word (`const delete = ...` is a TS1109 syntax error).
|
|
51
|
-
const eVar =
|
|
51
|
+
const eVar = exampleVarName(eName.toLowerCase(), 'ts')
|
|
52
52
|
const article = /^[aeiou]/i.test(eName) ? 'an' : 'a'
|
|
53
53
|
const opnames = entityOps(exampleEntity)
|
|
54
54
|
// Model-driven id key: `idF` is the entity's id-like MATCH field name, or
|
|
@@ -78,7 +78,7 @@ for (const ${eVar} of ${eVar}s) {
|
|
|
78
78
|
|
|
79
79
|
if (nestedEntity) {
|
|
80
80
|
const neName = nom(nestedEntity, 'Name')
|
|
81
|
-
const neVar =
|
|
81
|
+
const neVar = exampleVarName(neName.toLowerCase(), 'ts')
|
|
82
82
|
const neArticle = /^[aeiou]/i.test(neName) ? 'an' : 'a'
|
|
83
83
|
const loadOp = nestedEntity.op && nestedEntity.op.load
|
|
84
84
|
|
|
@@ -94,7 +94,7 @@ for (const ${eVar} of ${eVar}s) {
|
|
|
94
94
|
const parentParam = parentItem && parentItem.name
|
|
95
95
|
const parentName = parentParam ? parentParam.replace(/_id$/, '') : 'its parent'
|
|
96
96
|
const neMatchLines = neRequired.map((it: any) =>
|
|
97
|
-
` ${it.name}: ${exampleValue(nestedEntity, loadOp, it.name,
|
|
97
|
+
` ${jsKey(it.name)}: ${exampleValue(nestedEntity, loadOp, it.name,
|
|
98
98
|
it.name === neIdF ? 'example_id' : 'example_' + it.name)},`)
|
|
99
99
|
|
|
100
100
|
Content(`### 3. Load ${neArticle} ${neName.toLowerCase()}
|
|
@@ -124,7 +124,7 @@ ${neMatchLines.join('\n')}
|
|
|
124
124
|
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
125
125
|
const loadArg = 0 < loadRequired.length
|
|
126
126
|
? `{ ${loadRequired.map((it: any) =>
|
|
127
|
-
`${it.name}: ${exampleValue(exampleEntity, exampleEntity.op && exampleEntity.op.load, it.name,
|
|
127
|
+
`${jsKey(it.name)}: ${exampleValue(exampleEntity, exampleEntity.op && exampleEntity.op.load, it.name,
|
|
128
128
|
it.name === idF ? 'example_id' : 'example_' + it.name)}`).join(', ')} }`
|
|
129
129
|
: ''
|
|
130
130
|
|
|
@@ -169,15 +169,33 @@ try {
|
|
|
169
169
|
? (required.length ? required : items.slice(0, 2))
|
|
170
170
|
: required.concat(optional).slice(0, Math.max(2, required.length))
|
|
171
171
|
return chosen.map((it: any) =>
|
|
172
|
-
` ${it.name}: ${exampleValue(exampleEntity, exampleEntity.op[opname], it.name, 'example_' + it.name)},`)
|
|
172
|
+
` ${jsKey(it.name)}: ${exampleValue(exampleEntity, exampleEntity.op[opname], it.name, 'example_' + it.name)},`)
|
|
173
173
|
}
|
|
174
174
|
|
|
175
175
|
// The id VALUE for an update/remove match. When the entity's DATA type
|
|
176
176
|
// carries the id (dataIdF) AND a `created` record exists, take it off the
|
|
177
177
|
// returned record; otherwise use a type-correct literal — reading
|
|
178
178
|
// `created.id` off an id-less data type is a TS2339.
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
// Type of the data field we would read off `created` (e.g. number for an
|
|
180
|
+
// integer id). null when unknown.
|
|
181
|
+
const dataFields: any[] = exampleEntity.fields ? each(exampleEntity.fields) : []
|
|
182
|
+
const dataIdType = dataIdF
|
|
183
|
+
? (dataFields.find((f: any) => f && f.name === dataIdF) || {}).type
|
|
184
|
+
: null
|
|
185
|
+
// `created.<dataIdF>` is only usable as an op's id-match value when its
|
|
186
|
+
// type matches that op's id PARAM type. An id that is integer in the data
|
|
187
|
+
// type but string in the match path (a spec quirk seen on management
|
|
188
|
+
// APIs) would be a TS2322 otherwise — fall back to a type-correct literal.
|
|
189
|
+
const usesCreatedId = (opname: string): boolean => {
|
|
190
|
+
if (null == dataIdF || !opnames.includes('create')) {
|
|
191
|
+
return false
|
|
192
|
+
}
|
|
193
|
+
const matchItem = opRequestShape(exampleEntity, opname).items
|
|
194
|
+
.find((it: any) => it.name === idF)
|
|
195
|
+
const matchType = matchItem ? matchItem.type : null
|
|
196
|
+
return null == matchType || null == dataIdType || matchType === dataIdType
|
|
197
|
+
}
|
|
198
|
+
const idValueFor = (opname: string): string => usesCreatedId(opname)
|
|
181
199
|
? `created.${dataIdF}!`
|
|
182
200
|
: exampleValue(exampleEntity, exampleEntity.op[opname], idF as string, 'example_id')
|
|
183
201
|
|
|
@@ -198,7 +216,7 @@ const created = await client.${eName}().create({${createBody}})
|
|
|
198
216
|
// type carries one, else a literal), plus a couple of patch fields.
|
|
199
217
|
const updateLines = (idF ? [` ${idF}: ${idValueFor('update')},`] : []).concat(exampleFields('update'))
|
|
200
218
|
const updateBody = updateLines.length ? '\n' + updateLines.join('\n') + '\n' : ''
|
|
201
|
-
Content(`// Update${
|
|
219
|
+
Content(`// Update${usesCreatedId('update') ? ' — the id comes straight off the returned entity' : ''}
|
|
202
220
|
const updated = await client.${eName}().update({${updateBody}})
|
|
203
221
|
|
|
204
222
|
`)
|
|
@@ -211,8 +229,8 @@ const updated = await client.${eName}().update({${updateBody}})
|
|
|
211
229
|
.sort((a: any, b: any) =>
|
|
212
230
|
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
213
231
|
.map((it: any) => it.name === idF
|
|
214
|
-
? ` ${it.name}: ${idValueFor('remove')},`
|
|
215
|
-
: ` ${it.name}: ${exampleValue(exampleEntity, exampleEntity.op.remove, it.name, 'example_' + it.name)},`)
|
|
232
|
+
? ` ${jsKey(it.name)}: ${idValueFor('remove')},`
|
|
233
|
+
: ` ${jsKey(it.name)}: ${exampleValue(exampleEntity, exampleEntity.op.remove, it.name, 'example_' + it.name)},`)
|
|
216
234
|
Content(`// Remove
|
|
217
235
|
await client.${eName}().remove(${removeLines.length ? `{\n${removeLines.join('\n')}\n}` : ''})
|
|
218
236
|
`)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, each, Content, canonToType, File, isAuthActive, entityIdField, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, each, Content, canonToType, File, isAuthActive, entityIdField, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -185,7 +185,7 @@ Alias for \`${model.Name}SDK.test()\`.
|
|
|
185
185
|
// which case load/remove match on no argument and update omits the id.
|
|
186
186
|
const idF = entityIdField(ent)
|
|
187
187
|
// Variable-safe lowercase name (a `Delete` entity must not bind `delete`).
|
|
188
|
-
const eVar =
|
|
188
|
+
const eVar = exampleVarName(ent.name, target.name)
|
|
189
189
|
|
|
190
190
|
Content(`
|
|
191
191
|
---
|
|
@@ -281,7 +281,7 @@ ${info.desc}
|
|
|
281
281
|
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
282
282
|
const arg = 0 < matchItems.length
|
|
283
283
|
? `{ ${matchItems.map((it: any) =>
|
|
284
|
-
`${it.name}: ${exampleValue(ent, ent.op && ent.op[opname], it.name,
|
|
284
|
+
`${jsKey(it.name)}: ${exampleValue(ent, ent.op && ent.op[opname], it.name,
|
|
285
285
|
it.name === idF ? ent.name + '_id' : it.name)}`).join(', ')} }`
|
|
286
286
|
: ''
|
|
287
287
|
Content(`\`\`\`ts
|
|
@@ -308,7 +308,7 @@ const results = await client.${ent.Name}().${opname}()
|
|
|
308
308
|
const result = await client.${ent.Name}().create({
|
|
309
309
|
`)
|
|
310
310
|
createItems.map((it: any) => {
|
|
311
|
-
Content(` ${it.name}: ${exampleValue(ent, ent.op && ent.op.create, it.name, 'example_' + it.name)},
|
|
311
|
+
Content(` ${jsKey(it.name)}: ${exampleValue(ent, ent.op && ent.op.create, it.name, 'example_' + it.name)},
|
|
312
312
|
`)
|
|
313
313
|
})
|
|
314
314
|
Content(`})
|
|
@@ -324,7 +324,7 @@ const result = await client.${ent.Name}().create({
|
|
|
324
324
|
.sort((a: any, b: any) =>
|
|
325
325
|
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
326
326
|
const updateLines = updateItems.map((it: any) =>
|
|
327
|
-
` ${it.name}: ${exampleValue(ent, ent.op && ent.op.update, it.name,
|
|
327
|
+
` ${jsKey(it.name)}: ${exampleValue(ent, ent.op && ent.op.update, it.name,
|
|
328
328
|
it.name === idF ? ent.name + '_id' : it.name)},\n`).join('')
|
|
329
329
|
Content(`\`\`\`ts
|
|
330
330
|
const result = await client.${ent.Name}().update({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, Content, isAuthActive, packageName, envName, entityIdField, entityOps, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, Content, isAuthActive, packageName, envName, entityIdField, entityOps, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -30,7 +30,7 @@ const client = ${ctor}
|
|
|
30
30
|
|
|
31
31
|
if (exampleEntity) {
|
|
32
32
|
const eName = nom(exampleEntity, 'Name')
|
|
33
|
-
const eVar =
|
|
33
|
+
const eVar = exampleVarName(eName.toLowerCase(), 'ts')
|
|
34
34
|
const opnames = entityOps(exampleEntity)
|
|
35
35
|
|
|
36
36
|
let hasCall = false
|
|
@@ -58,7 +58,7 @@ for (const ${eVar} of ${eVar}s) {
|
|
|
58
58
|
|
|
59
59
|
if (nestedEntity) {
|
|
60
60
|
const neName = nom(nestedEntity, 'Name')
|
|
61
|
-
const neVar =
|
|
61
|
+
const neVar = exampleVarName(neName.toLowerCase(), 'ts')
|
|
62
62
|
const loadOp = nestedEntity.op && nestedEntity.op.load
|
|
63
63
|
|
|
64
64
|
// Every REQUIRED load-match key (parent keys first, own id last) — the
|
|
@@ -70,7 +70,7 @@ for (const ${eVar} of ${eVar}s) {
|
|
|
70
70
|
.sort((a: any, b: any) =>
|
|
71
71
|
(a.name === neIdF ? 1 : 0) - (b.name === neIdF ? 1 : 0))
|
|
72
72
|
.map((it: any) =>
|
|
73
|
-
` ${it.name}: ${exampleValue(nestedEntity, loadOp, it.name,
|
|
73
|
+
` ${jsKey(it.name)}: ${exampleValue(nestedEntity, loadOp, it.name,
|
|
74
74
|
it.name === neIdF ? 'example_id' : 'example_' + it.name)},`)
|
|
75
75
|
|
|
76
76
|
Content(`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, Content, entityIdField, pickExampleEntity, opRequestShape, safeVarName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, Content, entityIdField, pickExampleEntity, opRequestShape, safeVarName, exampleVarName, jsKey } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -25,7 +25,7 @@ const client = ${model.const.Name}SDK.test()
|
|
|
25
25
|
if (exampleEntity && primaryOp) {
|
|
26
26
|
const eName = nom(exampleEntity, 'Name')
|
|
27
27
|
// A list() result is an array — name the variable accordingly.
|
|
28
|
-
const eVar =
|
|
28
|
+
const eVar = exampleVarName(eName.toLowerCase(), 'ts') +
|
|
29
29
|
('list' === primaryOp ? 's' : '')
|
|
30
30
|
const primaryOpDef = exampleEntity.op && exampleEntity.op[primaryOp]
|
|
31
31
|
const idF = entityIdField(exampleEntity)
|
|
@@ -39,7 +39,7 @@ const client = ${model.const.Name}SDK.test()
|
|
|
39
39
|
(a.name === idF ? 0 : 1) - (b.name === idF ? 0 : 1))
|
|
40
40
|
arg = 0 < items.length
|
|
41
41
|
? `{ ${items.map((it: any) =>
|
|
42
|
-
`${it.name}: ${exampleValue(exampleEntity, primaryOpDef, it.name,
|
|
42
|
+
`${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name,
|
|
43
43
|
it.name === idF ? 'test01' : 'example_' + it.name)}`).join(', ')} }`
|
|
44
44
|
: ''
|
|
45
45
|
} else if ('create' === primaryOp || 'update' === primaryOp) {
|
|
@@ -48,7 +48,7 @@ const client = ${model.const.Name}SDK.test()
|
|
|
48
48
|
const required = items.filter((it: any) => !it.optional)
|
|
49
49
|
const chosen = required.length ? required : items.slice(0, 3)
|
|
50
50
|
arg = `{ ${chosen.map((it: any) =>
|
|
51
|
-
`${it.name}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`).join(', ')} }`
|
|
51
|
+
`${jsKey(it.name)}: ${exampleValue(exampleEntity, primaryOpDef, it.name, 'example_' + it.name)}`).join(', ')} }`
|
|
52
52
|
}
|
|
53
53
|
Content(`const ${eVar} = await client.${eName}().${primaryOp}(${arg})
|
|
54
54
|
// ${eVar} is ${'list' === primaryOp ? `an array of bare ${eName} records` : `a bare ${eName}`} populated with mock data
|
|
@@ -17,6 +17,8 @@ import {
|
|
|
17
17
|
cmp,
|
|
18
18
|
snakify,
|
|
19
19
|
isAuthActive,
|
|
20
|
+
jsProp,
|
|
21
|
+
jsOptProp,
|
|
20
22
|
} from '@voxgig/sdkgen'
|
|
21
23
|
|
|
22
24
|
|
|
@@ -47,7 +49,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
47
49
|
apikey: env.${PROJECTNAME}_APIKEY,`
|
|
48
50
|
: ''
|
|
49
51
|
|
|
50
|
-
const opnames = Object.keys(entity.op)
|
|
52
|
+
const opnames = Object.keys(entity.op || {})
|
|
51
53
|
const hasLoad = opnames.includes('load')
|
|
52
54
|
const hasList = opnames.includes('list')
|
|
53
55
|
|
|
@@ -149,7 +151,7 @@ function unwrapListData(data: any): any[] | null {
|
|
|
149
151
|
|
|
150
152
|
|
|
151
153
|
function generateDirectLoad(model: Model, entity: ModelEntity) {
|
|
152
|
-
const loadOp = entity.op
|
|
154
|
+
const loadOp = entity.op?.load
|
|
153
155
|
const loadPoint: ModelPoint | undefined = loadOp?.points?.[0]
|
|
154
156
|
|
|
155
157
|
if (null == loadPoint) {
|
|
@@ -192,11 +194,11 @@ function generateDirectLoad(model: Model, entity: ModelEntity) {
|
|
|
192
194
|
.filter((q: any) => q.reqd && undefined !== q.example && null !== q.example)
|
|
193
195
|
const hasLiveQuery = liveQueryEntries.length > 0
|
|
194
196
|
const liveQueryLines = liveQueryEntries
|
|
195
|
-
.map((q: any) => ` query
|
|
197
|
+
.map((q: any) => ` ${jsProp('query', q.name)} = ${JSON.stringify(q.example)}`)
|
|
196
198
|
.join('\n')
|
|
197
199
|
|
|
198
200
|
// Get list info for live mode bootstrapping
|
|
199
|
-
const listOp = entity.op
|
|
201
|
+
const listOp = entity.op?.list
|
|
200
202
|
const listPoint = listOp?.points?.[0]
|
|
201
203
|
const listParams = listPoint?.args?.params || []
|
|
202
204
|
const listPath = listPoint ? normalizePathParams(listPoint.parts || [], listParams, listPoint.rename?.param) : ''
|
|
@@ -245,12 +247,12 @@ function generateDirectLoad(model: Model, entity: ModelEntity) {
|
|
|
245
247
|
let liveParamsBlock = ''
|
|
246
248
|
if (allLoadParamsHaveExamples) {
|
|
247
249
|
const exampleLines = loadParams.map(
|
|
248
|
-
(p: any) => ` params
|
|
250
|
+
(p: any) => ` ${jsProp('params', p.name)} = ${JSON.stringify(p.example)}`
|
|
249
251
|
).join('\n')
|
|
250
252
|
liveParamsBlock = ` if (setup.live) {
|
|
251
253
|
${liveQueryPrefix}${exampleLines}
|
|
252
254
|
} else {
|
|
253
|
-
${loadParams.map((p: any, i: number) => ` params
|
|
255
|
+
${loadParams.map((p: any, i: number) => ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')}
|
|
254
256
|
}`
|
|
255
257
|
}
|
|
256
258
|
else if (hasList) {
|
|
@@ -262,7 +264,7 @@ ${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i +
|
|
|
262
264
|
const listParamLines = liveListParams.map((lp: any) =>
|
|
263
265
|
` ${lp.name}: setup.idmap['${lp.key}'],`).join('\n')
|
|
264
266
|
const ancestorParamLines = liveAncestorParams.map((lp: any) =>
|
|
265
|
-
` params
|
|
267
|
+
` ${jsProp('params', lp.name)} = setup.idmap['${lp.key}']`).join('\n')
|
|
266
268
|
// Try every load-path param name as the candidate field on listData[0].
|
|
267
269
|
// Some APIs name the path param differently from the response field
|
|
268
270
|
// (e.g. path uses {id} while response has mal_id), so we attempt the
|
|
@@ -286,14 +288,14 @@ ${listParamLines}
|
|
|
286
288
|
if (null == listArr || listArr.length === 0) {
|
|
287
289
|
return // skip: no entities to load in live mode
|
|
288
290
|
}
|
|
289
|
-
const candidateId = listArr[0]
|
|
291
|
+
const candidateId = ${jsOptProp('listArr[0]', idParamName)} ?? listArr[0]?.id
|
|
290
292
|
if (null == candidateId) {
|
|
291
293
|
return // skip: list response shape does not expose load identifier
|
|
292
294
|
}
|
|
293
|
-
params
|
|
295
|
+
${jsProp('params', idParamName)} = candidateId
|
|
294
296
|
${ancestorParamLines}
|
|
295
297
|
} else {
|
|
296
|
-
${loadParams.map((p: any, i: number) => ` params
|
|
298
|
+
${loadParams.map((p: any, i: number) => ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')}
|
|
297
299
|
}`
|
|
298
300
|
} else if (hasLiveQuery || loadParams.length > 0) {
|
|
299
301
|
// Synthetic-only fallback: if there are load params with no examples
|
|
@@ -306,7 +308,7 @@ ${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i +
|
|
|
306
308
|
liveParamsBlock = ` if (setup.live) {
|
|
307
309
|
${liveQueryPrefix.replace(/\n$/, '')}
|
|
308
310
|
} else {
|
|
309
|
-
${loadParams.map((p: any, i: number) => ` params
|
|
311
|
+
${loadParams.map((p: any, i: number) => ` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')}
|
|
310
312
|
}`
|
|
311
313
|
} else {
|
|
312
314
|
liveParamsBlock = ''
|
|
@@ -354,7 +356,7 @@ ${paramAsserts} }
|
|
|
354
356
|
|
|
355
357
|
|
|
356
358
|
function generateDirectList(model: Model, entity: ModelEntity) {
|
|
357
|
-
const listOp = entity.op
|
|
359
|
+
const listOp = entity.op?.list
|
|
358
360
|
const listPoint: ModelPoint | undefined = listOp?.points?.[0]
|
|
359
361
|
|
|
360
362
|
if (null == listPoint) {
|
|
@@ -369,7 +371,7 @@ function generateDirectList(model: Model, entity: ModelEntity) {
|
|
|
369
371
|
const listQuery = listPoint.args?.query || []
|
|
370
372
|
const liveQueryLines = listQuery
|
|
371
373
|
.filter((q: any) => q.reqd && undefined !== q.example && null !== q.example)
|
|
372
|
-
.map((q: any) => ` query
|
|
374
|
+
.map((q: any) => ` ${jsProp('query', q.name)} = ${JSON.stringify(q.example)}`)
|
|
373
375
|
.join('\n')
|
|
374
376
|
|
|
375
377
|
// Build live params
|
|
@@ -388,10 +390,10 @@ function generateDirectList(model: Model, entity: ModelEntity) {
|
|
|
388
390
|
const liveLines = [
|
|
389
391
|
liveQueryLines,
|
|
390
392
|
liveParams.map((lp: any) =>
|
|
391
|
-
` params
|
|
393
|
+
` ${jsProp('params', lp.name)} = setup.idmap['${lp.key}']`).join('\n'),
|
|
392
394
|
].filter(Boolean).join('\n')
|
|
393
395
|
const mockLines = listParams.map((p: any, i: number) =>
|
|
394
|
-
` params
|
|
396
|
+
` ${jsProp('params', p.name)} = 'direct0${i + 1}'`).join('\n')
|
|
395
397
|
|
|
396
398
|
paramsBlock = ` const params: any = {}
|
|
397
399
|
const query: any = {}
|
|
@@ -30,6 +30,7 @@ import {
|
|
|
30
30
|
cmp,
|
|
31
31
|
each,
|
|
32
32
|
isAuthActive,
|
|
33
|
+
entityDataIdField,
|
|
33
34
|
} from '@voxgig/sdkgen'
|
|
34
35
|
|
|
35
36
|
|
|
@@ -314,6 +315,7 @@ const generateCreate: OpGen = (ctx, step, index) => {
|
|
|
314
315
|
|
|
315
316
|
const generateList: OpGen = (ctx, step, index) => {
|
|
316
317
|
const { entity, flow } = ctx
|
|
318
|
+
const hasDataId = null != entityDataIdField(entity)
|
|
317
319
|
const ref = step.input.ref ?? entity.name + '_ref01'
|
|
318
320
|
const entvar = step.input.entvar ?? ref + '_ent'
|
|
319
321
|
const matchvar = step.input.matchvar ?? (ref + '_match' + (step.input.suffix ?? ''))
|
|
@@ -348,12 +350,18 @@ const generateList: OpGen = (ctx, step, index) => {
|
|
|
348
350
|
const hasRefData = validRef && allSteps.some(s => 'create' === s.op &&
|
|
349
351
|
((s.input.ref ?? entity.name + '_ref01') === validRef))
|
|
350
352
|
|
|
351
|
-
|
|
353
|
+
// Guard on a DATA id field (entityDataIdField), NOT entity.id (the load-MATCH
|
|
354
|
+
// key): an entity can have a match id in its path while its RESPONSE record
|
|
355
|
+
// has no `id` field (e.g. Multichannel's Template — data fields meta/status/…,
|
|
356
|
+
// no id). Then `${validRef}_data.id` is undefined and select(list, { id:
|
|
357
|
+
// undefined }) spuriously matches id-less records, so ItemExists/ItemNotExists
|
|
358
|
+
// are meaningless. Emit them only when `.id` is a real data field.
|
|
359
|
+
if ('ItemExists' === validator.apply && hasRefData && hasDataId) {
|
|
352
360
|
Content(`
|
|
353
361
|
assert(!isempty(select(${listvar}, { id: ${validRef}_data.id })))
|
|
354
362
|
`)
|
|
355
363
|
}
|
|
356
|
-
else if ('ItemNotExists' === validator.apply && hasRefData) {
|
|
364
|
+
else if ('ItemNotExists' === validator.apply && hasRefData && hasDataId) {
|
|
357
365
|
Content(`
|
|
358
366
|
assert(isempty(select(${listvar}, { id: ${validRef}_data.id })))
|
|
359
367
|
`)
|
|
@@ -524,6 +532,14 @@ const generateRemove: OpGen = (ctx, step, index) => {
|
|
|
524
532
|
const needsEnt = !priorSteps.some(s =>
|
|
525
533
|
['create', 'list', 'load', 'update', 'remove'].includes(s.op))
|
|
526
534
|
|
|
535
|
+
// "Remove what you created" needs the created record's id. An entity with
|
|
536
|
+
// no DATA id field (entityDataIdField null — e.g. Multichannel's Template)
|
|
537
|
+
// returns records without `.id`, so `${srcdatavar}.id` is absent (a py
|
|
538
|
+
// KeyError; a silent nil elsewhere). Skip the flow-remove step for those —
|
|
539
|
+
// the remove op is still exercised by the direct() test.
|
|
540
|
+
if (null == entityDataIdField(entity)) {
|
|
541
|
+
return
|
|
542
|
+
}
|
|
527
543
|
Content(`
|
|
528
544
|
// REMOVE
|
|
529
545
|
`)
|
|
@@ -93,14 +93,32 @@ pub fn make_config() Value {
|
|
|
93
93
|
pub fn make_feature(name: []const u8) Feature {
|
|
94
94
|
`)
|
|
95
95
|
|
|
96
|
+
// The factory must be able to instantiate any built-in feature by name,
|
|
97
|
+
// not just the ones the current API model configures — a caller can enable
|
|
98
|
+
// a shipped feature (e.g. netsim) purely through runtime options even when
|
|
99
|
+
// the API def does not list it. The built-in set mirrors the feature
|
|
100
|
+
// templates in tm/zig/feature/ (excluding `base`, the fallback, and
|
|
101
|
+
// `support`, a helper module). Any model feature not already built in is
|
|
102
|
+
// appended so bespoke features still resolve.
|
|
103
|
+
const builtinFeatures = [
|
|
104
|
+
'audit', 'cache', 'clienttrack', 'debug', 'idempotency', 'log',
|
|
105
|
+
'metrics', 'netsim', 'paging', 'proxy', 'ratelimit', 'rbac',
|
|
106
|
+
'retry', 'streaming', 'telemetry', 'test', 'timeout',
|
|
107
|
+
]
|
|
108
|
+
|
|
109
|
+
const featureNames: string[] = [...builtinFeatures]
|
|
96
110
|
each(feature, (f: any) => {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
Content(` if (std.mem.eql(u8, name, "${f.name}")) return @import("../feature/${f.name}.zig").${fname}Feature.make();
|
|
100
|
-
`)
|
|
111
|
+
if (f.name !== 'base' && !featureNames.includes(f.name)) {
|
|
112
|
+
featureNames.push(f.name)
|
|
101
113
|
}
|
|
102
114
|
})
|
|
103
115
|
|
|
116
|
+
featureNames.forEach((name: string) => {
|
|
117
|
+
const fname = name.charAt(0).toUpperCase() + name.slice(1)
|
|
118
|
+
Content(` if (std.mem.eql(u8, name, "${name}")) return @import("../feature/${name}.zig").${fname}Feature.make();
|
|
119
|
+
`)
|
|
120
|
+
})
|
|
121
|
+
|
|
104
122
|
Content(` return @import("../feature/base.zig").BaseFeature.make();
|
|
105
123
|
}
|
|
106
124
|
`)
|
|
@@ -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 {
|
|
@@ -20,7 +20,7 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
20
20
|
const { model, stdrep } = props.ctx$
|
|
21
21
|
const { target, entity } = props
|
|
22
22
|
|
|
23
|
-
const entityColl =
|
|
23
|
+
const entityColl = entityCollection(model)
|
|
24
24
|
const cls = entityClassName(entity, entityColl)
|
|
25
25
|
|
|
26
26
|
const entrep = {
|
|
@@ -34,7 +34,7 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
34
34
|
|
|
35
35
|
File({ name: zigVarName(entity.name) + '.' + target.ext }, () => {
|
|
36
36
|
|
|
37
|
-
const opnames = Object.keys(entity.op)
|
|
37
|
+
const opnames = Object.keys(entity.op || {})
|
|
38
38
|
|
|
39
39
|
// For each CRUD op: if the spec defines it, splice in the real
|
|
40
40
|
// implementation. Otherwise emit a stub returning the unsupported_op
|
|
@@ -48,7 +48,7 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
48
48
|
({ indent }: any) => {
|
|
49
49
|
const arg = ('create' === opname || 'update' === opname) ?
|
|
50
50
|
'reqdata' : 'reqmatch'
|
|
51
|
-
Content({ indent }, `pub fn ${opname}(self:
|
|
51
|
+
Content({ indent }, `pub fn ${opname}(self: *${cls}, _${arg}: Value, _ctrl: Value) OpResult {
|
|
52
52
|
_ = _${arg};
|
|
53
53
|
_ = _ctrl;
|
|
54
54
|
return .{ .err = h.unsupported_op("${opname}", self.name) };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
import { cmp, Content, entityClassName } from '@voxgig/sdkgen'
|
|
2
|
+
import { cmp, Content, entityClassName, entityCollection } from '@voxgig/sdkgen'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
5
|
KIT,
|
|
@@ -16,7 +16,7 @@ const MainEntity = cmp(async function MainEntity(props: any) {
|
|
|
16
16
|
const { entity } = props
|
|
17
17
|
const { model } = props.ctx$
|
|
18
18
|
|
|
19
|
-
const entityColl =
|
|
19
|
+
const entityColl = entityCollection(model)
|
|
20
20
|
const cls = entityClassName(entity, entityColl)
|
|
21
21
|
const method = zigVarName(entity.name)
|
|
22
22
|
const mod = zigVarName(entity.name)
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
import { Config } from './Config_zig'
|
|
22
22
|
import { Gitignore } from './Gitignore_zig'
|
|
23
23
|
import { MainEntity } from './MainEntity_zig'
|
|
24
|
+
import { Package } from './Package_zig'
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
const Main = cmp(async function Main(props: any) {
|
|
@@ -30,16 +31,21 @@ const Main = cmp(async function Main(props: any) {
|
|
|
30
31
|
|
|
31
32
|
const entity: ModelEntity = getModelPath(model, `main.${KIT}.entity`)
|
|
32
33
|
|
|
34
|
+
// build.zig.zon — the package manifest, stamped with the model package name.
|
|
35
|
+
Package({ target })
|
|
36
|
+
|
|
33
37
|
Gitignore({})
|
|
34
38
|
|
|
35
39
|
// Copy tm/zig files with replacements. The tm src/ subtree only stages the
|
|
36
40
|
// per-feature custom-source dirs (target add), so it is excluded here
|
|
37
|
-
// exactly like the go/rust targets.
|
|
38
|
-
// (
|
|
39
|
-
//
|
|
41
|
+
// exactly like the go/rust targets. build.zig.zon is generated by Package
|
|
42
|
+
// (above), so it is excluded from the verbatim copy. The SDK source lives at
|
|
43
|
+
// the tree root (core/, feature/, utility/, entity/, test/) — Zig's
|
|
44
|
+
// idiomatic src/ is not used, to keep the exclude rule identical to the
|
|
45
|
+
// reference targets.
|
|
40
46
|
Copy({
|
|
41
47
|
from: 'tm/' + target.name,
|
|
42
|
-
exclude: [/src
|
|
48
|
+
exclude: [/src\//, /build\.zig\.zon$/],
|
|
43
49
|
replace: {
|
|
44
50
|
...props.ctx$.stdrep,
|
|
45
51
|
}
|