@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
|
@@ -31,6 +31,38 @@ describe('PrimaryUtility', async () => {
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
|
|
34
|
+
// Sections deliberately left empty in the shared corpus
|
|
35
|
+
// (.sdk/test/primary/<name>.aontu carries a PENDING header). Everything
|
|
36
|
+
// else MUST contribute cases.
|
|
37
|
+
const PENDING = new Set([
|
|
38
|
+
'fetcher', 'makeFetchDef', 'makePoint', 'makeResult',
|
|
39
|
+
'featureAdd', 'featureHook', 'featureInit',
|
|
40
|
+
])
|
|
41
|
+
|
|
42
|
+
// Run one corpus section, failing loudly when it would run ZERO cases.
|
|
43
|
+
// A renamed section or a fixture that compiled to an empty `set` used to
|
|
44
|
+
// pass silently, which defeats the point of a shared oracle. (The guard
|
|
45
|
+
// lives here rather than in runner.ts, which is vendored verbatim from
|
|
46
|
+
// @voxgig/struct and must stay byte-identical to upstream.)
|
|
47
|
+
//
|
|
48
|
+
// EVERY corpus-backed test goes through here — a guard that only some
|
|
49
|
+
// sections opt into leaves the rest able to run zero assertions, which is
|
|
50
|
+
// the exact hole it was added to close.
|
|
51
|
+
async function runsection(name: string, subject: Function) {
|
|
52
|
+
const section = spec[name]
|
|
53
|
+
ok(null != section,
|
|
54
|
+
`test corpus section '${name}' missing — check the name against .sdk/test/primary/`)
|
|
55
|
+
ok(null != section.basic && Array.isArray(section.basic.set),
|
|
56
|
+
`test corpus section '${name}' has no basic.set list`)
|
|
57
|
+
if (0 === section.basic.set.length && !PENDING.has(name)) {
|
|
58
|
+
throw new Error(
|
|
59
|
+
`test corpus section '${name}' is EMPTY — zero cases would run; ` +
|
|
60
|
+
`add cases, or mark the fixture PENDING in .sdk/test/primary/`)
|
|
61
|
+
}
|
|
62
|
+
return runset(section.basic, subject)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
|
|
34
66
|
before(async () => {
|
|
35
67
|
const runner = await makeRunner(TEST_JSON_FILE, await SDK.test())
|
|
36
68
|
const run = await runner('primary')
|
|
@@ -61,24 +93,24 @@ describe('PrimaryUtility', async () => {
|
|
|
61
93
|
|
|
62
94
|
|
|
63
95
|
test('context-basic', async () => {
|
|
64
|
-
await
|
|
96
|
+
await runsection('makeContext', utility.makeContext)
|
|
65
97
|
})
|
|
66
98
|
|
|
67
99
|
|
|
68
100
|
test('method-basic', async () => {
|
|
69
|
-
await
|
|
101
|
+
await runsection('prepareMethod', utility.prepareMethod)
|
|
70
102
|
})
|
|
71
103
|
|
|
72
104
|
|
|
73
105
|
test('headers-basic', async () => {
|
|
74
|
-
await
|
|
106
|
+
await runsection('prepareHeaders', utility.prepareHeaders)
|
|
75
107
|
})
|
|
76
108
|
|
|
77
109
|
|
|
78
110
|
test('auth-basic', async () => {
|
|
79
111
|
const sdkopts = spec.prepareAuth?.DEF?.setup?.a || {}
|
|
80
112
|
const authClient = SDK.test({}, sdkopts)
|
|
81
|
-
await
|
|
113
|
+
await runsection('prepareAuth', (ctx: any) => {
|
|
82
114
|
ctx.client = authClient
|
|
83
115
|
fixctx(ctx)
|
|
84
116
|
return utility.prepareAuth(ctx)
|
|
@@ -87,17 +119,17 @@ describe('PrimaryUtility', async () => {
|
|
|
87
119
|
|
|
88
120
|
|
|
89
121
|
test('params-basic', async () => {
|
|
90
|
-
await
|
|
122
|
+
await runsection('prepareParams', utility.prepareParams)
|
|
91
123
|
})
|
|
92
124
|
|
|
93
125
|
|
|
94
126
|
test('query-basic', async () => {
|
|
95
|
-
await
|
|
127
|
+
await runsection('prepareQuery', utility.prepareQuery)
|
|
96
128
|
})
|
|
97
129
|
|
|
98
130
|
|
|
99
131
|
test('body-basic', async () => {
|
|
100
|
-
await
|
|
132
|
+
await runsection('prepareBody', (ctx: any) => {
|
|
101
133
|
fixctx(ctx)
|
|
102
134
|
return utility.prepareBody(ctx)
|
|
103
135
|
})
|
|
@@ -105,17 +137,17 @@ describe('PrimaryUtility', async () => {
|
|
|
105
137
|
|
|
106
138
|
|
|
107
139
|
test('findparam-basic', async () => {
|
|
108
|
-
await
|
|
140
|
+
await runsection('param', utility.param)
|
|
109
141
|
})
|
|
110
142
|
|
|
111
143
|
|
|
112
144
|
test('fullurl-basic', async () => {
|
|
113
|
-
await
|
|
145
|
+
await runsection('makeUrl', utility.makeUrl)
|
|
114
146
|
})
|
|
115
147
|
|
|
116
148
|
|
|
117
149
|
test('operator-basic', async () => {
|
|
118
|
-
await
|
|
150
|
+
await runsection('operator', (opmap: any) => ({
|
|
119
151
|
entity: opmap.entity || '_',
|
|
120
152
|
name: opmap.name || '_',
|
|
121
153
|
input: opmap.input || '_',
|
|
@@ -125,7 +157,7 @@ describe('PrimaryUtility', async () => {
|
|
|
125
157
|
|
|
126
158
|
|
|
127
159
|
test('options-basic', async () => {
|
|
128
|
-
await
|
|
160
|
+
await runsection('makeOptions', (vin: any) => {
|
|
129
161
|
const ctx = utility.makeContext({ options: vin.options, config: vin.config })
|
|
130
162
|
ctx.client = client
|
|
131
163
|
ctx.utility = utility
|
|
@@ -137,7 +169,7 @@ describe('PrimaryUtility', async () => {
|
|
|
137
169
|
test('spec-basic', async () => {
|
|
138
170
|
const sdkopts = spec.makeSpec?.DEF?.setup?.a || {}
|
|
139
171
|
const specClient = SDK.test({}, sdkopts)
|
|
140
|
-
await
|
|
172
|
+
await runsection('makeSpec', (ctx: any) => {
|
|
141
173
|
ctx.client = specClient
|
|
142
174
|
ctx.options = specClient.options()
|
|
143
175
|
return utility.makeSpec(ctx)
|
|
@@ -146,17 +178,17 @@ describe('PrimaryUtility', async () => {
|
|
|
146
178
|
|
|
147
179
|
|
|
148
180
|
test('reqform-basic', async () => {
|
|
149
|
-
await
|
|
181
|
+
await runsection('transformRequest', utility.transformRequest)
|
|
150
182
|
})
|
|
151
183
|
|
|
152
184
|
|
|
153
185
|
test('resform-basic', async () => {
|
|
154
|
-
await
|
|
186
|
+
await runsection('transformResponse', utility.transformResponse)
|
|
155
187
|
})
|
|
156
188
|
|
|
157
189
|
|
|
158
190
|
test('resbasic-basic', async () => {
|
|
159
|
-
await
|
|
191
|
+
await runsection('resultBasic', (ctx: any) => {
|
|
160
192
|
fixctx(ctx)
|
|
161
193
|
return utility.resultBasic(ctx)
|
|
162
194
|
})
|
|
@@ -164,7 +196,7 @@ describe('PrimaryUtility', async () => {
|
|
|
164
196
|
|
|
165
197
|
|
|
166
198
|
test('resheaders-basic', async () => {
|
|
167
|
-
await
|
|
199
|
+
await runsection('resultHeaders', (ctx: any) => {
|
|
168
200
|
// Convert plain headers map to forEach-based (browser Response API)
|
|
169
201
|
if (ctx.response?.headers && !ctx.response.headers.forEach) {
|
|
170
202
|
const h = ctx.response.headers
|
|
@@ -178,7 +210,7 @@ describe('PrimaryUtility', async () => {
|
|
|
178
210
|
|
|
179
211
|
|
|
180
212
|
test('resbody-basic', async () => {
|
|
181
|
-
await
|
|
213
|
+
await runsection('resultBody', async (ctx: any) => {
|
|
182
214
|
if (ctx.response && !ctx.response.json) {
|
|
183
215
|
const body = ctx.response.body
|
|
184
216
|
ctx.response.json = async () => body
|
|
@@ -200,7 +232,7 @@ describe('PrimaryUtility', async () => {
|
|
|
200
232
|
system: { fetch: mockFetch }
|
|
201
233
|
})
|
|
202
234
|
const reqUtility = reqClient.utility()
|
|
203
|
-
await
|
|
235
|
+
await runsection('makeRequest', async (ctx: any) => {
|
|
204
236
|
ctx.client = reqClient
|
|
205
237
|
ctx.utility = reqUtility
|
|
206
238
|
ctx.options = reqClient.options()
|
|
@@ -210,7 +242,7 @@ describe('PrimaryUtility', async () => {
|
|
|
210
242
|
|
|
211
243
|
|
|
212
244
|
test('response-basic', async () => {
|
|
213
|
-
await
|
|
245
|
+
await runsection('makeResponse', async (ctx: any) => {
|
|
214
246
|
fixctx(ctx)
|
|
215
247
|
// Add json() and forEach to response for proper TS handling
|
|
216
248
|
if (ctx.response && !ctx.response.json) {
|
|
@@ -229,7 +261,7 @@ describe('PrimaryUtility', async () => {
|
|
|
229
261
|
|
|
230
262
|
|
|
231
263
|
test('done-basic', async () => {
|
|
232
|
-
await
|
|
264
|
+
await runsection('done', (ctx: any) => {
|
|
233
265
|
fixctx(ctx)
|
|
234
266
|
return utility.done(ctx)
|
|
235
267
|
})
|
|
@@ -237,7 +269,7 @@ describe('PrimaryUtility', async () => {
|
|
|
237
269
|
|
|
238
270
|
|
|
239
271
|
test('error-basic', async () => {
|
|
240
|
-
await
|
|
272
|
+
await runsection('makeError', (...args: any[]) => {
|
|
241
273
|
const ctx = args[0]
|
|
242
274
|
fixctx(ctx)
|
|
243
275
|
return utility.makeError(...args)
|
|
@@ -424,6 +456,18 @@ describe('PrimaryUtility', async () => {
|
|
|
424
456
|
})
|
|
425
457
|
|
|
426
458
|
|
|
459
|
+
test('path-basic', async () => {
|
|
460
|
+
// preparePath shipped as an empty `set: []` — every port "passed" it while
|
|
461
|
+
// running zero cases. Now corpus-driven like every other section.
|
|
462
|
+
await runsection('preparePath', (ctx: any) => utility.preparePath(ctx))
|
|
463
|
+
})
|
|
464
|
+
|
|
465
|
+
|
|
466
|
+
test('clean-corpus', async () => {
|
|
467
|
+
await runsection('clean', (...args: any[]) => utility.clean(args[0], args[1]))
|
|
468
|
+
})
|
|
469
|
+
|
|
470
|
+
|
|
427
471
|
test('clean', () => {
|
|
428
472
|
const ctx = makeFullCtx()
|
|
429
473
|
const val = { key: 'secret123', name: 'test' }
|
|
@@ -3731,7 +3731,7 @@ fn validationModify(allocator: Allocator, _: JsonValue, key: []const u8, parent:
|
|
|
3731
3731
|
var bad = std.ArrayList([]const u8).init(allocator);
|
|
3732
3732
|
for (ckeys.array.data.items) |ck| {
|
|
3733
3733
|
if (ck != .string) continue;
|
|
3734
|
-
if (!((
|
|
3734
|
+
if (!((pval == .object) and (pval.object.get(ck.string) != null))) {
|
|
3735
3735
|
bad.append(ck.string) catch {};
|
|
3736
3736
|
}
|
|
3737
3737
|
}
|
package/src/cmp/Entity.ts
CHANGED
|
@@ -21,8 +21,12 @@ const Entity = cmp(function Entity(props: any) {
|
|
|
21
21
|
const Entity_sdk = requirePath(ctx$, `./cmp/${target.name}/Entity_${target.name}`)
|
|
22
22
|
Entity_sdk['Entity']({ target, entity, entitySDK })
|
|
23
23
|
|
|
24
|
+
// Log identifiers, not the model subtrees. `target` and `entity` are large
|
|
25
|
+
// aontu nodes and this fires once per entity per target (thousands of times
|
|
26
|
+
// for a big API x 22 targets), so passing them serialised the whole model
|
|
27
|
+
// fragment each time at default log level.
|
|
24
28
|
log.info({
|
|
25
|
-
point: 'generate-entity', target, entity,
|
|
29
|
+
point: 'generate-entity', target: target.name, entity: entity.name,
|
|
26
30
|
note: 'target:' + target.name + ', ' + 'entity: ' + entity.name
|
|
27
31
|
})
|
|
28
32
|
})
|
package/src/cmp/Feature.ts
CHANGED
|
@@ -19,7 +19,8 @@ const Feature = cmp(function Feature(props: any) {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
log.info({
|
|
22
|
-
|
|
22
|
+
// Identifiers only — see the note in Entity.ts.
|
|
23
|
+
point: 'generate-feature', target: target.name, feature: feature.name,
|
|
23
24
|
note: 'target:' + target.name + ', ' + 'feature: ' + feature.name
|
|
24
25
|
})
|
|
25
26
|
|
package/src/cmp/ReadmeErrors.ts
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import { entityIdField, pickExampleEntity } from '../helpers/opShape'
|
|
10
10
|
import { primaryOpCall } from '../helpers/opExample'
|
|
11
11
|
import type { ExampleLang, PrimaryCall } from '../helpers/opExample'
|
|
12
|
-
import { safeVarName } from '../helpers/naming'
|
|
12
|
+
import { safeVarName, exampleVarName } from '../helpers/naming'
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
// Error handling is one of the everyday developer tasks, so it gets its
|
|
@@ -241,7 +241,7 @@ const ReadmeErrors = cmp(function ReadmeErrors(props: any) {
|
|
|
241
241
|
const eName = ex.Name || (ex.name[0].toUpperCase() + ex.name.slice(1))
|
|
242
242
|
// Sanitise the variable name against the target's reserved words (a
|
|
243
243
|
// `Delete` entity must not bind `const delete = ...`).
|
|
244
|
-
const eLower =
|
|
244
|
+
const eLower = exampleVarName(eName.toLowerCase(), target.name)
|
|
245
245
|
const idF = entityIdField(ex)
|
|
246
246
|
const call = primaryOpCall(target.name as ExampleLang, eName, eLower, primaryOp, idF, ex)
|
|
247
247
|
Content(lang.entity(call, primaryOp))
|
|
@@ -11,7 +11,7 @@ import { requirePath } from '../utility'
|
|
|
11
11
|
import { entityIdField, pickExampleEntity } from '../helpers/opShape'
|
|
12
12
|
import { idLiteral, matchArg, dataArg } from '../helpers/opExample'
|
|
13
13
|
import type { ExampleLang } from '../helpers/opExample'
|
|
14
|
-
import { safeVarName } from '../helpers/naming'
|
|
14
|
+
import { safeVarName, exampleVarName } from '../helpers/naming'
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
function cap(s: string): string {
|
|
@@ -240,7 +240,7 @@ const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
|
|
|
240
240
|
eName = ex.Name || (ex.name[0].toUpperCase() + ex.name.slice(1))
|
|
241
241
|
// Sanitise against the target's reserved words (a `Delete` entity must
|
|
242
242
|
// not bind `const delete = ...`).
|
|
243
|
-
eLower =
|
|
243
|
+
eLower = exampleVarName(eName.toLowerCase(), target.name)
|
|
244
244
|
const idF = entityIdField(ex)
|
|
245
245
|
const isMatchOp = 'load' === primaryOp || 'remove' === primaryOp
|
|
246
246
|
// Type-correct example id literal (numeric when the id param is integer-
|
|
@@ -252,7 +252,7 @@ const ReadmeExplanation = cmp(function ReadmeExplanation(props: any) {
|
|
|
252
252
|
if ('list' === primaryOp) {
|
|
253
253
|
stateArg = 'go' === target.name ? 'nil' : ''
|
|
254
254
|
} else if (isMatchOp) {
|
|
255
|
-
stateArg = matchArg(lname, idF, idLit)
|
|
255
|
+
stateArg = matchArg(lname, ex, primaryOp as string, idF, idLit)
|
|
256
256
|
} else {
|
|
257
257
|
stateArg = dataArg(lname, ex, primaryOp as string, idF)
|
|
258
258
|
}
|
package/src/cmp/ReadmeTop.ts
CHANGED
|
@@ -10,7 +10,7 @@ import { requirePath } from '../utility'
|
|
|
10
10
|
|
|
11
11
|
import { entityPrimaryOp, entityIdField, opRequestShape } from '../helpers/opShape'
|
|
12
12
|
import { canonKey } from '../helpers/canonType'
|
|
13
|
-
import { safeVarName } from '../helpers/naming'
|
|
13
|
+
import { safeVarName, exampleVarName } from '../helpers/naming'
|
|
14
14
|
|
|
15
15
|
import {
|
|
16
16
|
installCommand as pkgInstall,
|
|
@@ -233,7 +233,7 @@ ${aboutMd.trim()}
|
|
|
233
233
|
: ' See the [Entities](#entities) table below for the full list.'
|
|
234
234
|
const exEnt = activeEntities[0]
|
|
235
235
|
const ex = exEnt.Name
|
|
236
|
-
const exLower =
|
|
236
|
+
const exLower = exampleVarName(ex.toLowerCase(), 'ts')
|
|
237
237
|
// The example call uses the entity's PRIMARY op — an op it actually
|
|
238
238
|
// exposes (prefer list -> the array, then load -> the record, else a
|
|
239
239
|
// create with its required fields). A create-only entity therefore never
|
package/src/helpers/canonType.ts
CHANGED
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
// Canonical type-sentinel -> language primitive type mapper.
|
|
2
2
|
//
|
|
3
|
-
// SOURCE OF TRUTH for the sentinel set: @voxgig/apidef
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
3
|
+
// SOURCE OF TRUTH for the sentinel set: @voxgig/apidef (`VALID_CANON` +
|
|
4
|
+
// `CANON_ONE`, exported from the package). VALID_CANON maps an OpenAPI type
|
|
5
|
+
// NAME -> a `$SENTINEL` string (e.g. 'string' -> `$STRING`). The model stores
|
|
6
|
+
// those sentinels on every `fields[].type` and op `points[].args.params[].type`.
|
|
7
|
+
// A multi-type (OpenAPI `type: [a, b]`) is stored as the ARRAY-shaped union
|
|
8
|
+
// sentinel `['`$ONE`', [member, ...]]` (see canonToType below).
|
|
8
9
|
//
|
|
9
10
|
// This table maps the SENTINEL the other way -> a concrete primitive type in
|
|
10
11
|
// each target language, so the typed-model generators (EntityTypes_<lang>.ts)
|
|
11
|
-
//
|
|
12
|
+
// and the README type columns (ReadmeRef_<lang>.ts / ReadmeEntity_<lang>.ts)
|
|
13
|
+
// can turn the model's field/param sentinels into real language types. It is
|
|
14
|
+
// the SINGLE mapping per language: components must not keep local copies.
|
|
12
15
|
//
|
|
13
|
-
// Kept as a small
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
//
|
|
16
|
+
// Kept as a small mirror here (rather than importing VALID_CANON at runtime)
|
|
17
|
+
// because apidef is a peer dependency and the table is the INVERSE direction.
|
|
18
|
+
//
|
|
19
|
+
// `ts/test/canonsync.test.ts` guards it two ways: the vocabulary and every
|
|
20
|
+
// language column are pinned LOCALLY (that check always runs), and the table
|
|
21
|
+
// is cross-checked against apidef's exported VALID_CANON/CANON_ONE when the
|
|
22
|
+
// installed apidef exports them. Note that the currently published apidef
|
|
23
|
+
// (6.3.1) does NOT export them, so the cross-check skips — do not rely on it
|
|
24
|
+
// alone; add a new sentinel to the local list in the same change.
|
|
18
25
|
//
|
|
19
26
|
// KNOWN GAPS (papered over sanely, documented for the port):
|
|
20
27
|
// - Unknown / missing sentinel -> the language's "any" (never throws).
|
|
@@ -25,30 +32,99 @@
|
|
|
25
32
|
// language's open record/map type.
|
|
26
33
|
// - No enum/format/nullability beyond the `req` flag.
|
|
27
34
|
|
|
28
|
-
// Target languages sdkgen supports (go-cli / go-mcp reuse 'go').
|
|
29
|
-
|
|
35
|
+
// Target languages sdkgen supports (go-cli / go-mcp reuse 'go'). The targets
|
|
36
|
+
// with a fully dynamic value model (clojure, haskell, ocaml, perl, zig) have
|
|
37
|
+
// no column: they emit no typed models and document types via the language's
|
|
38
|
+
// dynamic Value/map vocabulary.
|
|
39
|
+
type CanonLang =
|
|
40
|
+
| 'ts' | 'js' | 'py' | 'php' | 'rb' | 'lua' | 'go'
|
|
41
|
+
| 'csharp' | 'java' | 'kotlin' | 'scala' | 'swift' | 'dart'
|
|
42
|
+
| 'rust' | 'c' | 'cpp' | 'elixir'
|
|
30
43
|
|
|
31
44
|
// Bare sentinel key (backticks + leading `$` stripped, upper-cased)
|
|
32
45
|
// -> per-language primitive type name.
|
|
33
46
|
//
|
|
34
|
-
//
|
|
35
|
-
//
|
|
36
|
-
//
|
|
47
|
+
// Column notes:
|
|
48
|
+
// - kotlin: every type is nullable (`?`) — the kotlin emitter drops
|
|
49
|
+
// per-member optionality because the column is already-nullable.
|
|
50
|
+
// - java/scala: boxed JVM types (nullable), so optionality needs no marker.
|
|
51
|
+
// - rust/c/cpp/swift: `Value`/`voxgig_value*`/`VMap` are the vendored
|
|
52
|
+
// dynamic value types those runtimes ship.
|
|
37
53
|
const CANON_TYPE: Record<string, Record<CanonLang, string>> = {
|
|
38
|
-
STRING: {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
54
|
+
STRING: {
|
|
55
|
+
ts: 'string', js: 'string', py: 'str', php: 'string', rb: 'String',
|
|
56
|
+
lua: 'string', go: 'string', csharp: 'string', java: 'String',
|
|
57
|
+
kotlin: 'String?', scala: 'String', swift: 'String', dart: 'String',
|
|
58
|
+
rust: 'String', c: 'char*', cpp: 'std::string', elixir: 'String.t()',
|
|
59
|
+
},
|
|
60
|
+
INTEGER: {
|
|
61
|
+
ts: 'number', js: 'number', py: 'int', php: 'int', rb: 'Integer',
|
|
62
|
+
lua: 'number', go: 'int', csharp: 'long', java: 'Long',
|
|
63
|
+
kotlin: 'Long?', scala: 'java.lang.Long', swift: 'Int', dart: 'int',
|
|
64
|
+
rust: 'i64', c: 'int64_t', cpp: 'int64_t', elixir: 'integer()',
|
|
65
|
+
},
|
|
66
|
+
NUMBER: {
|
|
67
|
+
ts: 'number', js: 'number', py: 'float', php: 'float', rb: 'Float',
|
|
68
|
+
lua: 'number', go: 'float64', csharp: 'double', java: 'Double',
|
|
69
|
+
kotlin: 'Double?', scala: 'java.lang.Double', swift: 'Double', dart: 'num',
|
|
70
|
+
rust: 'f64', c: 'double', cpp: 'double', elixir: 'float()',
|
|
71
|
+
},
|
|
72
|
+
BOOLEAN: {
|
|
73
|
+
ts: 'boolean', js: 'boolean', py: 'bool', php: 'bool', rb: 'Boolean',
|
|
74
|
+
lua: 'boolean', go: 'bool', csharp: 'bool', java: 'Boolean',
|
|
75
|
+
kotlin: 'Boolean?', scala: 'java.lang.Boolean', swift: 'Bool', dart: 'bool',
|
|
76
|
+
rust: 'bool', c: 'bool', cpp: 'bool', elixir: 'boolean()',
|
|
77
|
+
},
|
|
78
|
+
NULL: {
|
|
79
|
+
ts: 'null', js: 'null', py: 'None', php: 'null', rb: 'NilClass',
|
|
80
|
+
lua: 'nil', go: 'any', csharp: 'object?', java: 'Object',
|
|
81
|
+
kotlin: 'Any?', scala: 'Object', swift: 'Value', dart: 'Object',
|
|
82
|
+
rust: 'Value', c: 'voxgig_value*', cpp: 'Value', elixir: 'nil',
|
|
83
|
+
},
|
|
84
|
+
ARRAY: {
|
|
85
|
+
ts: 'any[]', js: 'Array', py: 'list', php: 'array', rb: 'Array',
|
|
86
|
+
lua: 'table', go: '[]any', csharp: 'List<object?>', java: 'List<Object>',
|
|
87
|
+
kotlin: 'List<Any?>?', scala: 'java.util.List[Object]', swift: '[Value]',
|
|
88
|
+
dart: 'List<dynamic>', rust: 'Vec<Value>', c: 'voxgig_value*',
|
|
89
|
+
cpp: 'std::vector<Value>', elixir: 'list()',
|
|
90
|
+
},
|
|
91
|
+
OBJECT: {
|
|
92
|
+
ts: 'Record<string, any>', js: 'Object', py: 'dict', php: 'array',
|
|
93
|
+
rb: 'Hash', lua: 'table', go: 'map[string]any',
|
|
94
|
+
csharp: 'Dictionary<string, object?>', java: 'Map<String, Object>',
|
|
95
|
+
kotlin: 'Map<String, Any?>?', scala: 'java.util.Map[String, Object]',
|
|
96
|
+
swift: 'VMap', dart: 'Map<String, dynamic>',
|
|
97
|
+
rust: 'std::collections::HashMap<String, Value>', c: 'voxgig_value*',
|
|
98
|
+
cpp: 'std::map<std::string, Value>', elixir: 'map()',
|
|
99
|
+
},
|
|
100
|
+
ANY: {
|
|
101
|
+
ts: 'any', js: '*', py: 'Any', php: 'mixed', rb: 'Object',
|
|
102
|
+
lua: 'any', go: 'any', csharp: 'object?', java: 'Object',
|
|
103
|
+
kotlin: 'Any?', scala: 'Object', swift: 'Value', dart: 'dynamic',
|
|
104
|
+
rust: 'Value', c: 'voxgig_value*', cpp: 'Value', elixir: 'any()',
|
|
105
|
+
},
|
|
46
106
|
}
|
|
47
107
|
|
|
48
108
|
// Per-language fallback for unknown / missing sentinels.
|
|
49
109
|
// js uses JSDoc's `*` (any type); lua uses `any` (LuaLS).
|
|
50
110
|
const CANON_ANY: Record<CanonLang, string> = {
|
|
51
|
-
ts: 'any', js: '*', py: 'Any', php: 'mixed', rb: 'Object',
|
|
111
|
+
ts: 'any', js: '*', py: 'Any', php: 'mixed', rb: 'Object',
|
|
112
|
+
lua: 'any', go: 'any', csharp: 'object?', java: 'Object',
|
|
113
|
+
kotlin: 'Any?', scala: 'Object', swift: 'Value', dart: 'dynamic',
|
|
114
|
+
rust: 'Value', c: 'voxgig_value*', cpp: 'Value', elixir: 'any()',
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Union ($ONE) member separator for languages with a native union/sum type
|
|
118
|
+
// syntax. Languages absent here have no way to express an anonymous union in
|
|
119
|
+
// a type position, so a $ONE sentinel degrades to that language's "any".
|
|
120
|
+
// (php 8 unions exist but cannot combine with the `?` optional prefix the
|
|
121
|
+
// emitters use, so php deliberately degrades to `mixed`.)
|
|
122
|
+
const CANON_UNION_JOIN: Partial<Record<CanonLang, string>> = {
|
|
123
|
+
ts: ' | ',
|
|
124
|
+
js: '|',
|
|
125
|
+
py: ' | ',
|
|
126
|
+
lua: '|',
|
|
127
|
+
elixir: ' | ',
|
|
52
128
|
}
|
|
53
129
|
|
|
54
130
|
|
|
@@ -64,10 +140,29 @@ function canonKey(sentinel: unknown): string {
|
|
|
64
140
|
|
|
65
141
|
// Map a field/param type sentinel to a target-language primitive type.
|
|
66
142
|
// Unknown or missing sentinel -> that language's "any" (never throws).
|
|
143
|
+
//
|
|
144
|
+
// The union sentinel `['`$ONE`', [member, ...]]` (apidef CANON_ONE, produced
|
|
145
|
+
// for OpenAPI multi-types) renders as a joined member union in languages with
|
|
146
|
+
// union syntax (see CANON_UNION_JOIN); elsewhere it degrades to "any".
|
|
147
|
+
// Members may themselves be unions (handled recursively) or the literal
|
|
148
|
+
// 'Any' apidef emits for an unknown member name (canonKey maps it to ANY).
|
|
67
149
|
function canonToType(sentinel: unknown, lang: string): string {
|
|
68
150
|
const l = lang as CanonLang
|
|
69
151
|
const fallback = CANON_ANY[l] ?? 'any'
|
|
70
152
|
|
|
153
|
+
if (Array.isArray(sentinel)) {
|
|
154
|
+
if ('ONE' === canonKey(sentinel[0]) && Array.isArray(sentinel[1])) {
|
|
155
|
+
const join = CANON_UNION_JOIN[l]
|
|
156
|
+
if (null == join) {
|
|
157
|
+
return fallback
|
|
158
|
+
}
|
|
159
|
+
const members = sentinel[1].map((m: unknown) => canonToType(m, l))
|
|
160
|
+
const uniq = members.filter((m: string, i: number) => members.indexOf(m) === i)
|
|
161
|
+
return 0 === uniq.length ? fallback : uniq.join(join)
|
|
162
|
+
}
|
|
163
|
+
return fallback
|
|
164
|
+
}
|
|
165
|
+
|
|
71
166
|
const row = CANON_TYPE[canonKey(sentinel)]
|
|
72
167
|
if (null == row) {
|
|
73
168
|
return fallback
|
|
@@ -82,6 +177,7 @@ export {
|
|
|
82
177
|
canonKey,
|
|
83
178
|
CANON_TYPE,
|
|
84
179
|
CANON_ANY,
|
|
180
|
+
CANON_UNION_JOIN,
|
|
85
181
|
}
|
|
86
182
|
|
|
87
183
|
export type {
|
|
@@ -27,21 +27,53 @@ function collectDeps(
|
|
|
27
27
|
model: SdkModel,
|
|
28
28
|
targetName: string,
|
|
29
29
|
targetDeps: Record<string, ModelDep> | undefined,
|
|
30
|
+
log?: any,
|
|
30
31
|
): DepEntry[] {
|
|
31
32
|
const out: DepEntry[] = []
|
|
32
33
|
const feature = getModelPath(model, `main.${KIT}.feature`)
|
|
33
34
|
|
|
35
|
+
// Deduplicate by package name. Two features can require the same package
|
|
36
|
+
// (or a feature and the target itself can), and every Package_<lang>.ts
|
|
37
|
+
// renders one manifest line per entry — a duplicate key is a hard parse
|
|
38
|
+
// error in go.mod and Cargo.toml, and silently last-wins in package.json.
|
|
39
|
+
// FIRST occurrence wins, so the deterministic (sorted-key) feature order
|
|
40
|
+
// decides; a conflicting version is reported rather than silently dropped.
|
|
41
|
+
const seen: Record<string, DepEntry> = {}
|
|
42
|
+
|
|
43
|
+
const add = (dep: any, source: 'feature' | 'target', owner: string) => {
|
|
44
|
+
const name = dep.key$
|
|
45
|
+
if (null == name) return
|
|
46
|
+
|
|
47
|
+
const prev = seen[name]
|
|
48
|
+
if (null != prev) {
|
|
49
|
+
if (log?.warn && prev.version !== dep.version) {
|
|
50
|
+
log.warn({
|
|
51
|
+
point: 'dep-version-conflict', target: targetName, dep: name,
|
|
52
|
+
kept: prev.version, dropped: dep.version, from: owner,
|
|
53
|
+
note: `${targetName}: dependency ${name} declared twice with ` +
|
|
54
|
+
`different versions — keeping ${prev.version} (${prev.source}), ` +
|
|
55
|
+
`ignoring ${dep.version} (${source} ${owner})`,
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
return
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const entry: DepEntry = {
|
|
62
|
+
name,
|
|
63
|
+
version: dep.version,
|
|
64
|
+
source,
|
|
65
|
+
raw: dep,
|
|
66
|
+
}
|
|
67
|
+
seen[name] = entry
|
|
68
|
+
out.push(entry)
|
|
69
|
+
}
|
|
70
|
+
|
|
34
71
|
each(feature, (f: any) => {
|
|
35
72
|
const langDeps = f?.deps?.[targetName]
|
|
36
73
|
if (!langDeps) return
|
|
37
74
|
each(langDeps, (dep: any) => {
|
|
38
75
|
if (dep?.active) {
|
|
39
|
-
|
|
40
|
-
name: dep.key$,
|
|
41
|
-
version: dep.version,
|
|
42
|
-
source: 'feature',
|
|
43
|
-
raw: dep,
|
|
44
|
-
})
|
|
76
|
+
add(dep, 'feature', f.name)
|
|
45
77
|
}
|
|
46
78
|
})
|
|
47
79
|
})
|
|
@@ -49,12 +81,7 @@ function collectDeps(
|
|
|
49
81
|
if (targetDeps) {
|
|
50
82
|
each(targetDeps, (dep: any) => {
|
|
51
83
|
if (dep?.active !== false) {
|
|
52
|
-
|
|
53
|
-
name: dep.key$,
|
|
54
|
-
version: dep.version,
|
|
55
|
-
source: 'target',
|
|
56
|
-
raw: dep,
|
|
57
|
-
})
|
|
84
|
+
add(dep, 'target', targetName)
|
|
58
85
|
}
|
|
59
86
|
})
|
|
60
87
|
}
|