@voxgig/sdkgen 2.0.1 → 3.0.0
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 +22 -2
- package/dist/action/doctor.d.ts +14 -0
- package/dist/action/doctor.js +296 -0
- package/dist/action/doctor.js.map +1 -0
- package/dist/action/feature.js +48 -9
- package/dist/action/feature.js.map +1 -1
- package/dist/action/target.d.ts +6 -1
- package/dist/action/target.js +134 -22
- package/dist/action/target.js.map +1 -1
- package/dist/cmp/Entity.js +5 -0
- 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/Main.js +5 -1
- package/dist/cmp/Main.js.map +1 -1
- package/dist/cmp/ReadmeExplanation.js +1 -1
- package/dist/cmp/ReadmeExplanation.js.map +1 -1
- package/dist/cmp/ReadmeTop.js +16 -6
- package/dist/cmp/ReadmeTop.js.map +1 -1
- package/dist/cmp/Registered.d.ts +7 -0
- package/dist/cmp/Registered.js +70 -0
- package/dist/cmp/Registered.js.map +1 -0
- package/dist/cmp/Test.js +3 -1
- package/dist/cmp/Test.js.map +1 -1
- package/dist/helpers/dryrun.d.ts +10 -0
- package/dist/helpers/dryrun.js +35 -0
- package/dist/helpers/dryrun.js.map +1 -0
- package/dist/helpers/featureSource.d.ts +13 -0
- package/dist/helpers/featureSource.js +156 -0
- package/dist/helpers/featureSource.js.map +1 -0
- package/dist/helpers/naming.d.ts +9 -1
- package/dist/helpers/naming.js +66 -2
- package/dist/helpers/naming.js.map +1 -1
- package/dist/helpers/opExample.js +23 -3
- package/dist/helpers/opExample.js.map +1 -1
- package/dist/helpers/opShape.d.ts +11 -1
- package/dist/helpers/opShape.js +51 -0
- package/dist/helpers/opShape.js.map +1 -1
- package/dist/helpers/packageMeta.d.ts +8 -1
- package/dist/helpers/packageMeta.js +141 -10
- package/dist/helpers/packageMeta.js.map +1 -1
- package/dist/helpers/stdrep.d.ts +3 -0
- package/dist/helpers/stdrep.js +47 -0
- package/dist/helpers/stdrep.js.map +1 -0
- package/dist/helpers/testPolicy.d.ts +2 -0
- package/dist/helpers/testPolicy.js +46 -0
- package/dist/helpers/testPolicy.js.map +1 -0
- package/dist/sdkgen.d.ts +15 -6
- package/dist/sdkgen.js +45 -4
- package/dist/sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/model/sdkgen.aontu +125 -0
- package/package.json +8 -5
- package/project/.sdk/model/target/c.aontu +28 -3
- package/project/.sdk/model/target/clojure.aontu +24 -3
- package/project/.sdk/model/target/cpp.aontu +25 -3
- package/project/.sdk/model/target/csharp.aontu +25 -3
- package/project/.sdk/model/target/dart.aontu +15 -3
- package/project/.sdk/model/target/elixir.aontu +15 -3
- package/project/.sdk/model/target/go-cli.aontu +17 -1
- package/project/.sdk/model/target/go-mcp.aontu +17 -1
- package/project/.sdk/model/target/go.aontu +14 -4
- package/project/.sdk/model/target/haskell.aontu +24 -3
- package/project/.sdk/model/target/java.aontu +26 -3
- package/project/.sdk/model/target/js.aontu +15 -3
- package/project/.sdk/model/target/kotlin.aontu +26 -3
- package/project/.sdk/model/target/lean.aontu +25 -3
- package/project/.sdk/model/target/lua.aontu +15 -3
- package/project/.sdk/model/target/ocaml.aontu +24 -3
- package/project/.sdk/model/target/perl.aontu +15 -3
- package/project/.sdk/model/target/php.aontu +15 -3
- package/project/.sdk/model/target/py-data.aontu +16 -3
- package/project/.sdk/model/target/py.aontu +15 -3
- package/project/.sdk/model/target/rb.aontu +15 -3
- package/project/.sdk/model/target/rust.aontu +25 -3
- package/project/.sdk/model/target/scala.aontu +25 -3
- package/project/.sdk/model/target/swift.aontu +25 -3
- package/project/.sdk/model/target/ts.aontu +15 -3
- package/project/.sdk/model/target/zig.aontu +26 -3
- package/project/.sdk/src/cmp/c/Config_c.ts +10 -11
- package/project/.sdk/src/cmp/c/Entity_c.ts +5 -1
- package/project/.sdk/src/cmp/c/fragment/Entity.fragment.c +23 -5
- package/project/.sdk/src/cmp/c/fragment/EntityCreateOp.fragment.c +9 -2
- package/project/.sdk/src/cmp/c/fragment/EntityListOp.fragment.c +19 -2
- package/project/.sdk/src/cmp/c/fragment/EntityLoadOp.fragment.c +9 -2
- package/project/.sdk/src/cmp/c/fragment/EntityRemoveOp.fragment.c +12 -2
- package/project/.sdk/src/cmp/c/fragment/EntityUpdateOp.fragment.c +9 -2
- package/project/.sdk/src/cmp/c/fragment/Main.fragment.c +1 -0
- package/project/.sdk/src/cmp/clojure/TestEntity_clojure.ts +6 -3
- package/project/.sdk/src/cmp/clojure/fragment/Entity.fragment.clj +18 -1
- package/project/.sdk/src/cmp/clojure/fragment/EntityCreateOp.fragment.clj +2 -2
- package/project/.sdk/src/cmp/clojure/fragment/EntityLoadOp.fragment.clj +2 -2
- package/project/.sdk/src/cmp/clojure/fragment/EntityRemoveOp.fragment.clj +12 -8
- package/project/.sdk/src/cmp/clojure/fragment/EntityUpdateOp.fragment.clj +2 -2
- package/project/.sdk/src/cmp/cpp/Entity_cpp.ts +5 -1
- package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +24 -11
- package/project/.sdk/src/cmp/cpp/fragment/EntityCreateOp.fragment.cpp +8 -2
- package/project/.sdk/src/cmp/cpp/fragment/EntityListOp.fragment.cpp +18 -2
- package/project/.sdk/src/cmp/cpp/fragment/EntityLoadOp.fragment.cpp +8 -2
- package/project/.sdk/src/cmp/cpp/fragment/EntityRemoveOp.fragment.cpp +11 -2
- package/project/.sdk/src/cmp/cpp/fragment/EntityUpdateOp.fragment.cpp +8 -2
- package/project/.sdk/src/cmp/csharp/Package_csharp.ts +2 -1
- package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +6 -6
- package/project/.sdk/src/cmp/csharp/fragment/EntityBase.fragment.cs +38 -1
- package/project/.sdk/src/cmp/csharp/fragment/Main.fragment.cs +42 -33
- package/project/.sdk/src/cmp/dart/Config_dart.ts +6 -0
- package/project/.sdk/src/cmp/dart/Package_dart.ts +2 -1
- package/project/.sdk/src/cmp/dart/ReadmeEntity_dart.ts +13 -2
- package/project/.sdk/src/cmp/dart/ReadmeHowto_dart.ts +2 -1
- package/project/.sdk/src/cmp/dart/ReadmeInstall_dart.ts +3 -3
- package/project/.sdk/src/cmp/dart/ReadmeModel_dart.ts +1 -1
- package/project/.sdk/src/cmp/dart/ReadmeQuick_dart.ts +17 -6
- package/project/.sdk/src/cmp/dart/ReadmeRef_dart.ts +13 -2
- package/project/.sdk/src/cmp/dart/ReadmeTopQuick_dart.ts +13 -2
- package/project/.sdk/src/cmp/dart/TestDirect_dart.ts +3 -3
- package/project/.sdk/src/cmp/dart/TestEntity_dart.ts +8 -8
- package/project/.sdk/src/cmp/dart/fragment/EntityBase.fragment.dart +18 -1
- package/project/.sdk/src/cmp/dart/fragment/EntityCreateOp.fragment.dart +9 -1
- package/project/.sdk/src/cmp/dart/fragment/EntityLoadOp.fragment.dart +9 -1
- package/project/.sdk/src/cmp/dart/fragment/EntityRemoveOp.fragment.dart +15 -1
- package/project/.sdk/src/cmp/dart/fragment/EntityUpdateOp.fragment.dart +9 -1
- package/project/.sdk/src/cmp/dart/fragment/SdkError.fragment.dart +8 -0
- package/project/.sdk/src/cmp/elixir/Package_elixir.ts +3 -1
- package/project/.sdk/src/cmp/elixir/ReadmeInstall_elixir.ts +2 -2
- package/project/.sdk/src/cmp/elixir/ReadmeTopQuick_elixir.ts +7 -4
- package/project/.sdk/src/cmp/elixir/TestEntity_elixir.ts +11 -2
- package/project/.sdk/src/cmp/elixir/fragment/EntityCreateOp.fragment.ex +2 -1
- package/project/.sdk/src/cmp/elixir/fragment/EntityListOp.fragment.ex +1 -0
- package/project/.sdk/src/cmp/elixir/fragment/EntityLoadOp.fragment.ex +2 -1
- package/project/.sdk/src/cmp/elixir/fragment/EntityRemoveOp.fragment.ex +4 -1
- package/project/.sdk/src/cmp/elixir/fragment/EntityUpdateOp.fragment.ex +2 -1
- package/project/.sdk/src/cmp/go/EntityTypes_go.ts +38 -8
- package/project/.sdk/src/cmp/go/Entity_go.ts +2 -2
- package/project/.sdk/src/cmp/go/Main_go.ts +4 -5
- package/project/.sdk/src/cmp/go/Package_go.ts +8 -5
- package/project/.sdk/src/cmp/go/ReadmeExplanation_go.ts +2 -2
- package/project/.sdk/src/cmp/go/ReadmeHowto_go.ts +2 -2
- package/project/.sdk/src/cmp/go/ReadmeInstall_go.ts +4 -2
- package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +2 -2
- package/project/.sdk/src/cmp/go/ReadmeQuick_go.ts +2 -2
- package/project/.sdk/src/cmp/go/ReadmeTopQuick_go.ts +2 -2
- package/project/.sdk/src/cmp/go/ReadmeTopTest_go.ts +2 -2
- package/project/.sdk/src/cmp/go/TestDirect_go.ts +21 -15
- package/project/.sdk/src/cmp/go/TestEntity_go.ts +9 -9
- package/project/.sdk/src/cmp/go/Test_go.ts +2 -2
- package/project/.sdk/src/cmp/go/fragment/Entity.fragment.go +42 -1
- package/project/.sdk/src/cmp/go-cli/Main_go-cli.ts +4 -4
- package/project/.sdk/src/cmp/go-mcp/Main_go-mcp.ts +4 -4
- package/project/.sdk/src/cmp/haskell/Package_haskell.ts +2 -1
- package/project/.sdk/src/cmp/haskell/ReadmeEntity_haskell.ts +10 -5
- package/project/.sdk/src/cmp/haskell/ReadmeModel_haskell.ts +10 -8
- package/project/.sdk/src/cmp/haskell/ReadmeQuick_haskell.ts +14 -10
- package/project/.sdk/src/cmp/haskell/ReadmeRef_haskell.ts +21 -18
- package/project/.sdk/src/cmp/haskell/ReadmeTopQuick_haskell.ts +4 -4
- package/project/.sdk/src/cmp/haskell/Test_haskell.ts +23 -11
- package/project/.sdk/src/cmp/java/Package_java.ts +2 -1
- package/project/.sdk/src/cmp/java/ReadmeHowto_java.ts +2 -1
- package/project/.sdk/src/cmp/java/ReadmeInstall_java.ts +2 -2
- package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +1 -1
- package/project/.sdk/src/cmp/java/ReadmeQuick_java.ts +3 -3
- package/project/.sdk/src/cmp/java/TestDirect_java.ts +3 -3
- package/project/.sdk/src/cmp/java/TestEntity_java.ts +6 -6
- package/project/.sdk/src/cmp/java/fragment/EntityBase.fragment.java +34 -1
- package/project/.sdk/src/cmp/java/fragment/SdkError.fragment.java +12 -0
- package/project/.sdk/src/cmp/js/Main_js.ts +4 -1
- package/project/.sdk/src/cmp/js/Package_js.ts +7 -1
- package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +13 -2
- package/project/.sdk/src/cmp/js/ReadmeHowto_js.ts +2 -1
- package/project/.sdk/src/cmp/js/ReadmeQuick_js.ts +13 -2
- package/project/.sdk/src/cmp/js/ReadmeTopQuick_js.ts +13 -2
- package/project/.sdk/src/cmp/js/ReadmeTopTest_js.ts +2 -1
- package/project/.sdk/src/cmp/js/TestDirect_js.ts +3 -3
- package/project/.sdk/src/cmp/js/TestEntity_js.ts +8 -8
- package/project/.sdk/src/cmp/js/fragment/EntityBase.fragment.js +22 -1
- package/project/.sdk/src/cmp/js/fragment/EntityCreateOp.fragment.js +9 -1
- package/project/.sdk/src/cmp/js/fragment/EntityLoadOp.fragment.js +9 -1
- package/project/.sdk/src/cmp/js/fragment/EntityRemoveOp.fragment.js +15 -1
- package/project/.sdk/src/cmp/js/fragment/EntityUpdateOp.fragment.js +9 -1
- package/project/.sdk/src/cmp/js/fragment/SdkError.fragment.js +13 -0
- package/project/.sdk/src/cmp/kotlin/Package_kotlin.ts +2 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeHowto_kotlin.ts +2 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeInstall_kotlin.ts +2 -2
- package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +1 -1
- package/project/.sdk/src/cmp/kotlin/ReadmeQuick_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +6 -6
- package/project/.sdk/src/cmp/kotlin/fragment/EntityBase.fragment.kt +32 -1
- package/project/.sdk/src/cmp/lean/Package_lean.ts +3 -1
- package/project/.sdk/src/cmp/lean/Test_lean.ts +75 -21
- package/project/.sdk/src/cmp/lua/MainEntity_lua.ts +9 -4
- package/project/.sdk/src/cmp/lua/Package_lua.ts +4 -3
- package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +11 -3
- package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +9 -9
- package/project/.sdk/src/cmp/lua/fragment/Entity.fragment.lua +37 -1
- package/project/.sdk/src/cmp/lua/fragment/SdkError.fragment.lua +12 -0
- package/project/.sdk/src/cmp/ocaml/EntityOperation_ocaml.ts +30 -3
- package/project/.sdk/src/cmp/ocaml/Entity_ocaml.ts +11 -5
- package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +3 -1
- package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +10 -5
- package/project/.sdk/src/cmp/ocaml/ReadmeHowto_ocaml.ts +6 -2
- package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +10 -8
- package/project/.sdk/src/cmp/ocaml/ReadmeQuick_ocaml.ts +14 -13
- package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +20 -18
- package/project/.sdk/src/cmp/ocaml/ReadmeTopQuick_ocaml.ts +4 -4
- package/project/.sdk/src/cmp/ocaml/ReadmeTopTest_ocaml.ts +8 -2
- package/project/.sdk/src/cmp/ocaml/TestEntity_ocaml.ts +8 -5
- package/project/.sdk/src/cmp/perl/ReadmeHowto_perl.ts +2 -1
- package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +1 -1
- package/project/.sdk/src/cmp/perl/ReadmeQuick_perl.ts +3 -3
- package/project/.sdk/src/cmp/perl/ReadmeTopQuick_perl.ts +1 -1
- package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +3 -3
- package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +6 -6
- package/project/.sdk/src/cmp/perl/fragment/Entity.fragment.pm +36 -1
- package/project/.sdk/src/cmp/php/MainEntity_php.ts +21 -16
- package/project/.sdk/src/cmp/php/Package_php.ts +2 -2
- package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +6 -6
- package/project/.sdk/src/cmp/php/ReadmeHowto_php.ts +4 -3
- package/project/.sdk/src/cmp/php/ReadmeIntro_php.ts +2 -2
- package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +1 -1
- package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +12 -12
- package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +6 -6
- package/project/.sdk/src/cmp/php/ReadmeTopQuick_php.ts +4 -4
- package/project/.sdk/src/cmp/php/ReadmeTopTest_php.ts +2 -2
- package/project/.sdk/src/cmp/php/TestDirect_php.ts +3 -3
- package/project/.sdk/src/cmp/php/TestEntity_php.ts +17 -15
- package/project/.sdk/src/cmp/php/fragment/Entity.fragment.php +20 -1
- package/project/.sdk/src/cmp/php/fragment/SdkError.fragment.php +11 -0
- package/project/.sdk/src/cmp/py/Package_py.ts +4 -3
- package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +13 -2
- package/project/.sdk/src/cmp/py/ReadmeHowto_py.ts +2 -1
- package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +1 -1
- package/project/.sdk/src/cmp/py/ReadmeQuick_py.ts +17 -6
- package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +14 -3
- package/project/.sdk/src/cmp/py/ReadmeTopQuick_py.ts +13 -2
- package/project/.sdk/src/cmp/py/TestDirect_py.ts +3 -3
- package/project/.sdk/src/cmp/py/TestEntity_py.ts +9 -9
- package/project/.sdk/src/cmp/py/Test_py.ts +4 -1
- package/project/.sdk/src/cmp/py/fragment/Entity.fragment.py +29 -1
- package/project/.sdk/src/cmp/py/fragment/SdkError.fragment.py +11 -0
- package/project/.sdk/src/cmp/py-data/Main_py-data.ts +2 -1
- package/project/.sdk/src/cmp/rb/Package_rb.ts +4 -3
- package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +1 -1
- package/project/.sdk/src/cmp/rb/ReadmeHowto_rb.ts +2 -1
- package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +5 -5
- package/project/.sdk/src/cmp/rb/ReadmeTopQuick_rb.ts +1 -1
- package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +9 -9
- package/project/.sdk/src/cmp/rb/fragment/Entity.fragment.rb +31 -1
- package/project/.sdk/src/cmp/rb/fragment/SdkError.fragment.rb +10 -1
- package/project/.sdk/src/cmp/rust/Entity_rust.ts +5 -1
- package/project/.sdk/src/cmp/rust/Main_rust.ts +21 -0
- package/project/.sdk/src/cmp/rust/Package_rust.ts +2 -1
- package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +3 -3
- package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +12 -12
- package/project/.sdk/src/cmp/rust/fragment/Entity.fragment.rs +18 -0
- package/project/.sdk/src/cmp/rust/fragment/EntityCreateOp.fragment.rs +8 -2
- package/project/.sdk/src/cmp/rust/fragment/EntityListOp.fragment.rs +20 -3
- package/project/.sdk/src/cmp/rust/fragment/EntityLoadOp.fragment.rs +8 -2
- package/project/.sdk/src/cmp/rust/fragment/EntityRemoveOp.fragment.rs +10 -2
- package/project/.sdk/src/cmp/rust/fragment/EntityUpdateOp.fragment.rs +8 -2
- package/project/.sdk/src/cmp/rust/fragment/SdkError.fragment.rs +10 -0
- package/project/.sdk/src/cmp/scala/ReadmeHowto_scala.ts +2 -1
- package/project/.sdk/src/cmp/scala/ReadmeInstall_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +1 -1
- package/project/.sdk/src/cmp/scala/ReadmeQuick_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/fragment/EntityBase.fragment.scala +27 -1
- package/project/.sdk/src/cmp/swift/ReadmeHowto_swift.ts +2 -1
- package/project/.sdk/src/cmp/swift/ReadmeInstall_swift.ts +3 -3
- package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +1 -1
- package/project/.sdk/src/cmp/swift/ReadmeQuick_swift.ts +3 -3
- package/project/.sdk/src/cmp/swift/fragment/EntityBase.fragment.swift +34 -1
- package/project/.sdk/src/cmp/ts/EntityOperation_ts.ts +9 -1
- package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +18 -1
- package/project/.sdk/src/cmp/ts/Gitignore_ts.ts +5 -2
- package/project/.sdk/src/cmp/ts/Main_ts.ts +4 -1
- package/project/.sdk/src/cmp/ts/Package_ts.ts +10 -1
- package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +13 -2
- package/project/.sdk/src/cmp/ts/ReadmeHowto_ts.ts +2 -1
- package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +21 -6
- package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +52 -2
- package/project/.sdk/src/cmp/ts/ReadmeTopQuick_ts.ts +14 -3
- package/project/.sdk/src/cmp/ts/ReadmeTopTest_ts.ts +34 -2
- package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +64 -43
- package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +8 -8
- package/project/.sdk/src/cmp/ts/fragment/Direct.test.fragment.ts +2 -2
- package/project/.sdk/src/cmp/ts/fragment/Entity.test.fragment.ts +2 -2
- package/project/.sdk/src/cmp/ts/fragment/EntityBase.fragment.ts +25 -1
- package/project/.sdk/src/cmp/ts/fragment/EntityCreateOp.fragment.ts +10 -2
- package/project/.sdk/src/cmp/ts/fragment/EntityListOp.fragment.ts +1 -1
- package/project/.sdk/src/cmp/ts/fragment/EntityLoadOp.fragment.ts +10 -2
- package/project/.sdk/src/cmp/ts/fragment/EntityRemoveOp.fragment.ts +27 -3
- package/project/.sdk/src/cmp/ts/fragment/EntityUpdateOp.fragment.ts +10 -2
- package/project/.sdk/src/cmp/ts/fragment/SdkError.fragment.ts +15 -0
- package/project/.sdk/src/cmp/zig/Entity_zig.ts +5 -1
- package/project/.sdk/src/cmp/zig/Package_zig.ts +3 -1
- package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +39 -0
- package/project/.sdk/src/cmp/zig/fragment/EntityCreateOp.fragment.zig +2 -2
- package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +21 -2
- package/project/.sdk/src/cmp/zig/fragment/EntityLoadOp.fragment.zig +2 -2
- package/project/.sdk/src/cmp/zig/fragment/EntityRemoveOp.fragment.zig +5 -2
- package/project/.sdk/src/cmp/zig/fragment/EntityUpdateOp.fragment.zig +2 -2
- package/project/.sdk/tm/c/VERSION +1 -1
- package/project/.sdk/tm/c/core/helpers.c +1 -0
- package/project/.sdk/tm/c/core/sdk.h +22 -6
- package/project/.sdk/tm/c/tests/feature_harness.h +1 -0
- package/project/.sdk/tm/c/tests/primary_utility_test.c +4 -1
- package/project/.sdk/tm/c/utility/graphql.c +1 -1
- package/project/.sdk/tm/c/utility/make_url.c +1 -0
- package/project/.sdk/tm/c/utility/param.c +1 -0
- package/project/.sdk/tm/clojure/VERSION +1 -1
- package/project/.sdk/tm/cpp/VERSION +1 -1
- package/project/.sdk/tm/cpp/core/types.hpp +33 -8
- package/project/.sdk/tm/cpp/test/pipeline_test.cpp +5 -0
- package/project/.sdk/tm/cpp/test/runner_support.hpp +4 -4
- package/project/.sdk/tm/csharp/VERSION +1 -1
- package/project/.sdk/tm/csharp/core/Types.cs +6 -0
- package/project/.sdk/tm/csharp/test/FeatureHarness.cs +396 -0
- package/project/.sdk/tm/csharp/test/FeatureTest.cs +7 -385
- package/project/.sdk/tm/csharp/test/Runner.cs +4 -4
- package/project/.sdk/tm/dart/lib/utility/MakeErrorUtility.dart +4 -0
- package/project/.sdk/tm/dart/test/utility.dart +4 -4
- package/project/.sdk/tm/elixir/VERSION +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/entity_base.ex +26 -0
- package/project/.sdk/tm/go/VERSION +1 -1
- package/project/.sdk/tm/go/core/types.go +6 -0
- package/project/.sdk/tm/go/test/feature_harness_test.go +361 -0
- package/project/.sdk/tm/go/test/feature_test.go +7 -350
- package/project/.sdk/tm/go/test/pipeline_test.go +6 -0
- package/project/.sdk/tm/go/test/runner_test.go +16 -4
- package/project/.sdk/tm/haskell/VERSION +1 -1
- package/project/.sdk/tm/haskell/src/SdkFeatures.hs +28 -5
- package/project/.sdk/tm/haskell/src/SdkTypes.hs +14 -5
- package/project/.sdk/tm/java/VERSION +1 -1
- package/project/.sdk/tm/java/test/RunnerSupport.java +4 -4
- package/project/.sdk/tm/java/utility/MakeError.java +4 -0
- package/project/.sdk/tm/js/src/utility/MakeErrorUtility.js +4 -0
- package/project/.sdk/tm/js/test/utility.js +3 -3
- package/project/.sdk/tm/kotlin/VERSION +1 -1
- package/project/.sdk/tm/kotlin/core/Utility.kt +2 -0
- package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +3 -3
- package/project/.sdk/tm/lean/Makefile +25 -0
- package/project/.sdk/tm/lean/VERSION +1 -1
- package/project/.sdk/tm/lean/src/SdkUtility.lean +11 -9
- package/project/.sdk/tm/lean/test/TFeature.lean +27 -14
- package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +5 -2
- package/project/.sdk/tm/lua/test/runner.lua +4 -4
- package/project/.sdk/tm/lua/utility/make_error.lua +4 -0
- package/project/.sdk/tm/ocaml/VERSION +1 -1
- package/project/.sdk/tm/ocaml/sdk_types.ml +14 -5
- package/project/.sdk/tm/ocaml/test/t_pipeline.ml +5 -2
- package/project/.sdk/tm/perl/t/runner.pm +4 -4
- package/project/.sdk/tm/php/VERSION +1 -1
- package/project/.sdk/tm/php/test/Runner.php +4 -4
- package/project/.sdk/tm/php/utility/MakeError.php +5 -0
- package/project/.sdk/tm/py/pkg/utility/make_error.py +4 -0
- package/project/.sdk/tm/py/test/runner.py +19 -4
- package/project/.sdk/tm/rb/test/runner.rb +4 -4
- package/project/.sdk/tm/rb/utility/make_error.rb +4 -0
- package/project/.sdk/tm/rust/VERSION +1 -1
- package/project/.sdk/tm/rust/core/types.rs +22 -6
- package/project/.sdk/tm/rust/tests/common/mod.rs +6 -6
- package/project/.sdk/tm/rust/tests/pipeline_test.rs +6 -0
- package/project/.sdk/tm/rust/utility/make_error.rs +4 -0
- package/project/.sdk/tm/scala/VERSION +1 -1
- package/project/.sdk/tm/swift/VERSION +1 -1
- package/project/.sdk/tm/ts/src/tsconfig.json +1 -0
- package/project/.sdk/tm/ts/src/utility/MakeErrorUtility.ts +4 -0
- package/project/.sdk/tm/ts/test/tsconfig.json +1 -0
- package/project/.sdk/tm/ts/test/utility.ts +3 -3
- package/project/.sdk/tm/zig/VERSION +1 -1
- package/src/action/doctor.ts +410 -0
- package/src/action/feature.ts +54 -16
- package/src/action/target.ts +174 -25
- package/src/cmp/Entity.ts +7 -0
- package/src/cmp/Feature.ts +3 -1
- package/src/cmp/Main.ts +7 -1
- package/src/cmp/ReadmeExplanation.ts +2 -2
- package/src/cmp/ReadmeTop.ts +22 -9
- package/src/cmp/Registered.ts +100 -0
- package/src/cmp/Test.ts +4 -1
- package/src/helpers/dryrun.ts +57 -0
- package/src/helpers/featureSource.ts +208 -0
- package/src/helpers/naming.ts +73 -2
- package/src/helpers/opExample.ts +19 -2
- package/src/helpers/opShape.ts +65 -0
- package/src/helpers/packageMeta.ts +163 -10
- package/src/helpers/stdrep.ts +56 -0
- package/src/helpers/testPolicy.ts +52 -0
- package/src/sdkgen.ts +70 -4
- package/project/.sdk/tm/rust/feature/mod.rs +0 -24
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Replacement keys the GENERATOR owns, merged into the project's `ctx$.stdrep`.
|
|
2
|
+
//
|
|
3
|
+
// `stdrep` itself is built by the consumer's `Root.ts`
|
|
4
|
+
// (`names(ctx$.stdrep, model.Name, 'ProjectName')`), which lives outside this
|
|
5
|
+
// package and is frozen at project-init time — so a new placeholder cannot be
|
|
6
|
+
// added there without every existing project resyncing its root wiring. These
|
|
7
|
+
// are added here instead, immediately before the templates that use them are
|
|
8
|
+
// copied, so an old project gets them without touching its scaffold.
|
|
9
|
+
|
|
10
|
+
import { envName, packageVersion } from './packageMeta'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
// PROJECTENV — the env-var base for this SDK's `<BASE>_TEST_LIVE`,
|
|
14
|
+
// `<BASE>_APIKEY` and friends.
|
|
15
|
+
//
|
|
16
|
+
// NOT `PROJECTNAME`. That one is the camel-cased class name uppercased, which
|
|
17
|
+
// SWALLOWS a hyphen: `voxgig-solardemo` becomes `VOXGIGSOLARDEMO`, while every
|
|
18
|
+
// component-generated env var reads `VOXGIG_SOLARDEMO`. Both spellings used to
|
|
19
|
+
// reach the same generated SDK — `test/utility.ts` (a template) read one and
|
|
20
|
+
// `PlanetEntity.test.ts` (a component) the other — so setting either variable
|
|
21
|
+
// sent half the suite live and left the rest mocked, green either way.
|
|
22
|
+
function ensureStdrep(ctx$: any): any {
|
|
23
|
+
const stdrep = ctx$.stdrep = (ctx$.stdrep || {})
|
|
24
|
+
|
|
25
|
+
if (null == stdrep.PROJECTENV) {
|
|
26
|
+
stdrep.PROJECTENV = envName(ctx$.model)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return stdrep
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
// The substitutions `target add` applies when it copies a target's TEMPLATE
|
|
34
|
+
// tree (tm/<t>).
|
|
35
|
+
//
|
|
36
|
+
// ONE definition, because two consumers must agree exactly: `target add`
|
|
37
|
+
// writes the files, and `doctor` re-applies these to the scaffold before
|
|
38
|
+
// comparing, to tell a substitution artefact from a real hand-edit. When
|
|
39
|
+
// PROJECTVERSION was added to the writer alone, every project's VERSION file
|
|
40
|
+
// immediately read as an edited master.
|
|
41
|
+
function templateReplacements(model: any, tname: string): Record<string, string> {
|
|
42
|
+
return {
|
|
43
|
+
ProjectName: model?.const?.Name,
|
|
44
|
+
|
|
45
|
+
// The port's release version, read by its Makefile to build the
|
|
46
|
+
// `<target>/v<version>` tag. It comes from the same model field the
|
|
47
|
+
// generated manifest uses, so the tag and the package cannot disagree.
|
|
48
|
+
PROJECTVERSION: packageVersion(model, tname),
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
export {
|
|
54
|
+
ensureStdrep,
|
|
55
|
+
templateReplacements,
|
|
56
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// How strict the generated LIVE tests are.
|
|
2
|
+
//
|
|
3
|
+
// WHY THIS IS A MODEL DECISION
|
|
4
|
+
//
|
|
5
|
+
// The generated direct tests are deliberately lenient in live mode:
|
|
6
|
+
//
|
|
7
|
+
// if (setup.live) {
|
|
8
|
+
// // Live mode is lenient: synthetic IDs frequently 4xx.
|
|
9
|
+
// if (!result.ok || result.status < 200 || result.status >= 300) {
|
|
10
|
+
// return // <-- passes
|
|
11
|
+
// }
|
|
12
|
+
// } else {
|
|
13
|
+
// assert(result.ok === true)
|
|
14
|
+
// ...
|
|
15
|
+
// }
|
|
16
|
+
//
|
|
17
|
+
// That is CORRECT for sdkgen's default case — a fleet SDK generated against
|
|
18
|
+
// an arbitrary third-party public API, where synthetic IDs 4xx constantly and
|
|
19
|
+
// list response shapes vary wildly. Asserting there would mean permanent red.
|
|
20
|
+
//
|
|
21
|
+
// It is WRONG for a project that owns the server it tests against, and those
|
|
22
|
+
// projects had no way to say so. Measured on voxgig-solardemo-sdk: the live
|
|
23
|
+
// TypeScript suite reports 186 pass / 0 fail against the local test app —
|
|
24
|
+
// and 184 pass / 2 fail with the server STOPPED. Only the two entity `basic`
|
|
25
|
+
// flows noticed. A green live run said almost nothing.
|
|
26
|
+
//
|
|
27
|
+
// Gaps that announce themselves as a passing test suite are worse than the
|
|
28
|
+
// ones that break a build.
|
|
29
|
+
|
|
30
|
+
import { KIT } from '../types'
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
// True when live assertions should match the offline ones. Per-target
|
|
34
|
+
// override first, then the SDK-wide default, then false.
|
|
35
|
+
//
|
|
36
|
+
// main: kit: test: live: strict: true
|
|
37
|
+
// main: kit: target: go: test: live: strict: true
|
|
38
|
+
function liveStrict(model: any, target?: string): boolean {
|
|
39
|
+
const perTarget = null == target ? undefined :
|
|
40
|
+
model?.main?.[KIT]?.target?.[target]?.test?.live?.strict
|
|
41
|
+
|
|
42
|
+
if (null != perTarget) {
|
|
43
|
+
return true === perTarget
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return true === model?.main?.[KIT]?.test?.live?.strict
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
export {
|
|
51
|
+
liveStrict,
|
|
52
|
+
}
|
package/src/sdkgen.ts
CHANGED
|
@@ -45,15 +45,29 @@ import { ReadmeHowto } from './cmp/ReadmeHowto'
|
|
|
45
45
|
import { ReadmeExplanation } from './cmp/ReadmeExplanation'
|
|
46
46
|
import { ReadmeRef } from './cmp/ReadmeRef'
|
|
47
47
|
import { FeatureHook } from './cmp/FeatureHook'
|
|
48
|
+
import { registerComponent } from './cmp/Registered'
|
|
49
|
+
import type { RegisterOptions } from './cmp/Registered'
|
|
48
50
|
|
|
49
51
|
import { buildIdNames } from './helpers/buildIdNames'
|
|
50
52
|
import { getMatchEntries } from './helpers/getMatchEntries'
|
|
51
53
|
import { collectDeps } from './helpers/collectDeps'
|
|
52
54
|
import type { DepEntry } from './helpers/collectDeps'
|
|
53
55
|
import { canonToType, canonToDtype, canonKey } from './helpers/canonType'
|
|
54
|
-
import { OP_SUFFIX, opTypeName, opParams, opRequestShape, entityIdField, entityDataIdField, entityOps, entityPrimaryOp, pickExampleEntity, entityClassName, entityTypeCollisions, warnEntityTypeCollisions, deriveEntityNames, entityCollection } from './helpers/opShape'
|
|
55
|
-
import { isReservedName, safeVarName, exampleVarName, isRbCoreConstant, rbSafeTypeName, isSwiftSdkType, swiftSafeTypeName, jsProp, jsOptProp, jsKey } from './helpers/naming'
|
|
56
|
+
import { OP_SUFFIX, opTypeName, opParams, opActions, entityActions, entityPath, opRequestShape, entityIdField, entityDataIdField, entityOps, entityPrimaryOp, pickExampleEntity, entityClassName, entityTypeCollisions, warnEntityTypeCollisions, deriveEntityNames, entityCollection } from './helpers/opShape'
|
|
57
|
+
import { isReservedName, safeVarName, exampleVarName, phpEntityAccessor, entityCacheField, isRbCoreConstant, rbSafeTypeName, isSwiftSdkType, swiftSafeTypeName, jsProp, jsOptProp, jsKey } from './helpers/naming'
|
|
56
58
|
import { serverVariables, hasServerVariables } from './helpers/serverVars'
|
|
59
|
+
import { primaryOpCall, idLiteral, matchArg, dataArg, litFor } from './helpers/opExample'
|
|
60
|
+
import type { ExampleLang } from './helpers/opExample'
|
|
61
|
+
import { liveStrict } from './helpers/testPolicy'
|
|
62
|
+
import {
|
|
63
|
+
featureOf,
|
|
64
|
+
availableFeatures,
|
|
65
|
+
findFeatureSources,
|
|
66
|
+
featureExcludes,
|
|
67
|
+
fullsetExcludes,
|
|
68
|
+
srcFeatureExcludes,
|
|
69
|
+
} from './helpers/featureSource'
|
|
70
|
+
import type { FeatureSource } from './helpers/featureSource'
|
|
57
71
|
import {
|
|
58
72
|
packageName,
|
|
59
73
|
installCommand,
|
|
@@ -65,6 +79,11 @@ import {
|
|
|
65
79
|
nonAffiliation,
|
|
66
80
|
keywords,
|
|
67
81
|
envName,
|
|
82
|
+
envToken,
|
|
83
|
+
goModule,
|
|
84
|
+
goVersion,
|
|
85
|
+
goPackageIdent,
|
|
86
|
+
packageVersion,
|
|
68
87
|
repoInfo,
|
|
69
88
|
apiName,
|
|
70
89
|
langLabel,
|
|
@@ -85,6 +104,12 @@ import {
|
|
|
85
104
|
feature_add,
|
|
86
105
|
} from './action/feature'
|
|
87
106
|
|
|
107
|
+
import {
|
|
108
|
+
action_doctor,
|
|
109
|
+
doctor,
|
|
110
|
+
} from './action/doctor'
|
|
111
|
+
import type { DoctorReport } from './action/doctor'
|
|
112
|
+
|
|
88
113
|
|
|
89
114
|
|
|
90
115
|
// TODO: use shape
|
|
@@ -120,6 +145,7 @@ const { Jostraca } = JostracaModule
|
|
|
120
145
|
const ACTION_MAP: any = {
|
|
121
146
|
target: action_target,
|
|
122
147
|
feature: action_feature,
|
|
148
|
+
doctor: action_doctor,
|
|
123
149
|
}
|
|
124
150
|
|
|
125
151
|
|
|
@@ -190,6 +216,12 @@ function SdkGen(opts: SdkGenOptions) {
|
|
|
190
216
|
// at the scaffold source (create-sdkgen build/sdkgen.js: existing.txt =
|
|
191
217
|
// { write:true, merge:false }); see docs/explanation/regeneration-overwrite.md.
|
|
192
218
|
existing: opts.existing,
|
|
219
|
+
// Per-call, for the same reason the actions pass it: jostraca applies
|
|
220
|
+
// OptionsShape to `generate`'s own options first, so its
|
|
221
|
+
// `control.dryrun: false` default wins over the instance-level flag.
|
|
222
|
+
control: {
|
|
223
|
+
dryrun: !!opts.dryrun
|
|
224
|
+
},
|
|
193
225
|
}
|
|
194
226
|
|
|
195
227
|
const jres = await jostraca.generate(jopts, () => Root({ model }))
|
|
@@ -209,7 +241,7 @@ function SdkGen(opts: SdkGenOptions) {
|
|
|
209
241
|
}
|
|
210
242
|
|
|
211
243
|
|
|
212
|
-
async function action(args: string[]) {
|
|
244
|
+
async function action(args: string[]): Promise<any> {
|
|
213
245
|
const pargs = args.map(arg => Jsonic(arg))
|
|
214
246
|
|
|
215
247
|
const actname = args[0]
|
|
@@ -221,7 +253,7 @@ function SdkGen(opts: SdkGenOptions) {
|
|
|
221
253
|
|
|
222
254
|
const ctx = resolveActionContext()
|
|
223
255
|
|
|
224
|
-
await actionFunc(pargs, ctx)
|
|
256
|
+
return await actionFunc(pargs, ctx)
|
|
225
257
|
}
|
|
226
258
|
|
|
227
259
|
|
|
@@ -297,12 +329,19 @@ function SdkGen(opts: SdkGenOptions) {
|
|
|
297
329
|
}
|
|
298
330
|
}
|
|
299
331
|
|
|
332
|
+
// Has this project's `.sdk/` drifted from the scaffold? See action/doctor.
|
|
333
|
+
const check = async (): Promise<ActionResult> => {
|
|
334
|
+
const ctx = resolveActionContext()
|
|
335
|
+
return doctor(ctx)
|
|
336
|
+
}
|
|
337
|
+
|
|
300
338
|
|
|
301
339
|
|
|
302
340
|
return {
|
|
303
341
|
pino: pino as any,
|
|
304
342
|
generate,
|
|
305
343
|
action,
|
|
344
|
+
check,
|
|
306
345
|
target,
|
|
307
346
|
feature,
|
|
308
347
|
}
|
|
@@ -375,7 +414,11 @@ function clear(path: string) {
|
|
|
375
414
|
|
|
376
415
|
export type {
|
|
377
416
|
SdkGenOptions,
|
|
417
|
+
ExampleLang,
|
|
378
418
|
DepEntry,
|
|
419
|
+
FeatureSource,
|
|
420
|
+
DoctorReport,
|
|
421
|
+
RegisterOptions,
|
|
379
422
|
}
|
|
380
423
|
|
|
381
424
|
export type {
|
|
@@ -448,6 +491,7 @@ export {
|
|
|
448
491
|
ReadmeExplanation,
|
|
449
492
|
ReadmeRef,
|
|
450
493
|
FeatureHook,
|
|
494
|
+
registerComponent,
|
|
451
495
|
|
|
452
496
|
Jostraca,
|
|
453
497
|
SdkGen,
|
|
@@ -470,6 +514,9 @@ export {
|
|
|
470
514
|
OP_SUFFIX,
|
|
471
515
|
opTypeName,
|
|
472
516
|
opParams,
|
|
517
|
+
opActions,
|
|
518
|
+
entityActions,
|
|
519
|
+
entityPath,
|
|
473
520
|
opRequestShape,
|
|
474
521
|
entityIdField,
|
|
475
522
|
entityDataIdField,
|
|
@@ -484,12 +531,26 @@ export {
|
|
|
484
531
|
isReservedName,
|
|
485
532
|
safeVarName,
|
|
486
533
|
exampleVarName,
|
|
534
|
+
phpEntityAccessor,
|
|
535
|
+
entityCacheField,
|
|
487
536
|
isRbCoreConstant,
|
|
488
537
|
rbSafeTypeName,
|
|
489
538
|
isSwiftSdkType,
|
|
490
539
|
swiftSafeTypeName,
|
|
491
540
|
serverVariables,
|
|
492
541
|
hasServerVariables,
|
|
542
|
+
liveStrict,
|
|
543
|
+
primaryOpCall,
|
|
544
|
+
idLiteral,
|
|
545
|
+
matchArg,
|
|
546
|
+
dataArg,
|
|
547
|
+
litFor,
|
|
548
|
+
featureOf,
|
|
549
|
+
availableFeatures,
|
|
550
|
+
findFeatureSources,
|
|
551
|
+
featureExcludes,
|
|
552
|
+
fullsetExcludes,
|
|
553
|
+
srcFeatureExcludes,
|
|
493
554
|
jsProp,
|
|
494
555
|
jsOptProp,
|
|
495
556
|
jsKey,
|
|
@@ -504,6 +565,11 @@ export {
|
|
|
504
565
|
nonAffiliation,
|
|
505
566
|
keywords,
|
|
506
567
|
envName,
|
|
568
|
+
envToken,
|
|
569
|
+
goModule,
|
|
570
|
+
goVersion,
|
|
571
|
+
goPackageIdent,
|
|
572
|
+
packageVersion,
|
|
507
573
|
repoInfo,
|
|
508
574
|
apiName,
|
|
509
575
|
langLabel,
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// ProjectName SDK features (mirrors tm/go/feature). Each feature is a
|
|
2
|
-
// Feature trait object registered on the client; `support` carries the
|
|
3
|
-
// shared option readers (go feature_options.go).
|
|
4
|
-
|
|
5
|
-
pub mod support;
|
|
6
|
-
|
|
7
|
-
pub mod audit;
|
|
8
|
-
pub mod base;
|
|
9
|
-
pub mod cache;
|
|
10
|
-
pub mod clienttrack;
|
|
11
|
-
pub mod debug;
|
|
12
|
-
pub mod idempotency;
|
|
13
|
-
pub mod log;
|
|
14
|
-
pub mod metrics;
|
|
15
|
-
pub mod netsim;
|
|
16
|
-
pub mod paging;
|
|
17
|
-
pub mod proxy;
|
|
18
|
-
pub mod ratelimit;
|
|
19
|
-
pub mod rbac;
|
|
20
|
-
pub mod retry;
|
|
21
|
-
pub mod streaming;
|
|
22
|
-
pub mod telemetry;
|
|
23
|
-
pub mod test;
|
|
24
|
-
pub mod timeout;
|