@voxgig/sdkgen 4.22.0 → 4.24.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 +18 -2
- package/dist/action/doctor.d.ts +1 -1
- package/dist/action/doctor.js +12 -10
- package/dist/action/doctor.js.map +1 -1
- package/dist/action/edition.js +4 -0
- package/dist/action/edition.js.map +1 -1
- package/dist/action/feature.js +5 -1
- package/dist/action/feature.js.map +1 -1
- package/dist/action/remove.d.ts +16 -0
- package/dist/action/remove.js +345 -0
- package/dist/action/remove.js.map +1 -0
- package/dist/action/target.js +6 -1
- package/dist/action/target.js.map +1 -1
- package/dist/cmp/ReadmeTop.js +1 -1
- package/dist/cmp/ReadmeTop.js.map +1 -1
- package/dist/cmp/ReadmeUnions.js +1 -1
- package/dist/cmp/ReadmeUnions.js.map +1 -1
- package/dist/cmp/Test.js +1 -1
- package/dist/cmp/Test.js.map +1 -1
- package/dist/helpers/buildIdNames.d.ts +3 -1
- package/dist/helpers/buildIdNames.js +15 -7
- package/dist/helpers/buildIdNames.js.map +1 -1
- package/dist/helpers/canonSpec.js +2 -2
- package/dist/helpers/canonSpec.js.map +1 -1
- package/dist/helpers/getMatchEntries.js +2 -2
- package/dist/helpers/getMatchEntries.js.map +1 -1
- package/dist/helpers/modelNames.js +5 -1
- package/dist/helpers/modelNames.js.map +1 -1
- package/dist/helpers/opShape.js +33 -33
- package/dist/helpers/opShape.js.map +1 -1
- package/dist/helpers/pointPath.js +5 -10
- package/dist/helpers/pointPath.js.map +1 -1
- package/dist/helpers/resolved.js +2 -29
- package/dist/helpers/resolved.js.map +1 -1
- package/dist/sdkgen.d.ts +2 -2
- package/dist/sdkgen.js +5 -3
- package/dist/sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utility.js +15 -7
- package/dist/utility.js.map +1 -1
- package/package.json +3 -3
- package/project/.sdk/src/cmp/c/EntityTypes_c.ts +4 -4
- package/project/.sdk/src/cmp/c/ReadmeEntity_c.ts +3 -3
- package/project/.sdk/src/cmp/c/ReadmeModel_c.ts +3 -3
- package/project/.sdk/src/cmp/c/ReadmeRef_c.ts +5 -5
- package/project/.sdk/src/cmp/c/Schema_c.ts +1 -1
- package/project/.sdk/src/cmp/c/TestDirect_c.ts +12 -12
- package/project/.sdk/src/cmp/clojure/ReadmeEntity_clojure.ts +3 -3
- package/project/.sdk/src/cmp/clojure/ReadmeModel_clojure.ts +3 -3
- package/project/.sdk/src/cmp/clojure/ReadmeRef_clojure.ts +5 -5
- package/project/.sdk/src/cmp/clojure/Schema_clojure.ts +1 -1
- package/project/.sdk/src/cmp/cpp/EntityTypes_cpp.ts +3 -3
- package/project/.sdk/src/cmp/cpp/ReadmeEntity_cpp.ts +3 -3
- package/project/.sdk/src/cmp/cpp/ReadmeModel_cpp.ts +3 -3
- package/project/.sdk/src/cmp/cpp/ReadmeRef_cpp.ts +5 -5
- package/project/.sdk/src/cmp/cpp/Schema_cpp.ts +1 -1
- package/project/.sdk/src/cmp/cpp/TestDirect_cpp.ts +14 -14
- package/project/.sdk/src/cmp/cpp/TestEntity_cpp.ts +51 -50
- package/project/.sdk/src/cmp/csharp/EntityTypes_csharp.ts +4 -4
- package/project/.sdk/src/cmp/csharp/ReadmeEntity_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/ReadmeModel_csharp.ts +3 -3
- package/project/.sdk/src/cmp/csharp/ReadmeRef_csharp.ts +5 -5
- package/project/.sdk/src/cmp/csharp/Schema_csharp.ts +1 -1
- package/project/.sdk/src/cmp/csharp/TestDirect_csharp.ts +30 -30
- package/project/.sdk/src/cmp/csharp/TestEntity_csharp.ts +66 -65
- package/project/.sdk/src/cmp/elixir/EntityTypes_elixir.ts +4 -4
- package/project/.sdk/src/cmp/elixir/ReadmeEntity_elixir.ts +3 -3
- package/project/.sdk/src/cmp/elixir/ReadmeModel_elixir.ts +3 -3
- package/project/.sdk/src/cmp/elixir/ReadmeRef_elixir.ts +4 -4
- package/project/.sdk/src/cmp/elixir/Schema_elixir.ts +1 -1
- package/project/.sdk/src/cmp/go/EntityTypes_go.ts +4 -4
- package/project/.sdk/src/cmp/go/ReadmeEntity_go.ts +3 -3
- package/project/.sdk/src/cmp/go/ReadmeModel_go.ts +3 -3
- package/project/.sdk/src/cmp/go/ReadmeRef_go.ts +5 -5
- package/project/.sdk/src/cmp/go/Schema_go.ts +1 -1
- package/project/.sdk/src/cmp/go/TestDirect_go.ts +38 -38
- package/project/.sdk/src/cmp/go/TestEntity_go.ts +75 -74
- package/project/.sdk/src/cmp/go/utility_go.ts +5 -5
- package/project/.sdk/src/cmp/java/EntityTypes_java.ts +4 -4
- package/project/.sdk/src/cmp/java/ReadmeEntity_java.ts +3 -3
- package/project/.sdk/src/cmp/java/ReadmeModel_java.ts +3 -3
- package/project/.sdk/src/cmp/java/ReadmeRef_java.ts +5 -5
- package/project/.sdk/src/cmp/java/Schema_java.ts +1 -1
- package/project/.sdk/src/cmp/java/TestDirect_java.ts +30 -30
- package/project/.sdk/src/cmp/java/TestEntity_java.ts +69 -68
- package/project/.sdk/src/cmp/js/EntityTypes_js.ts +5 -5
- package/project/.sdk/src/cmp/js/ReadmeEntity_js.ts +3 -3
- package/project/.sdk/src/cmp/js/ReadmeModel_js.ts +3 -3
- package/project/.sdk/src/cmp/js/ReadmeRef_js.ts +5 -5
- package/project/.sdk/src/cmp/js/Schema_js.ts +1 -1
- package/project/.sdk/src/cmp/js/TestDirect_js.ts +27 -27
- package/project/.sdk/src/cmp/js/TestEntity_js.ts +66 -69
- package/project/.sdk/src/cmp/js/TestLive_js.ts +3 -3
- package/project/.sdk/src/cmp/js/utility_js.ts +5 -5
- package/project/.sdk/src/cmp/kotlin/EntityTypes_kotlin.ts +4 -4
- package/project/.sdk/src/cmp/kotlin/ReadmeEntity_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/ReadmeModel_kotlin.ts +3 -3
- package/project/.sdk/src/cmp/kotlin/ReadmeRef_kotlin.ts +5 -5
- package/project/.sdk/src/cmp/kotlin/Schema_kotlin.ts +1 -1
- package/project/.sdk/src/cmp/kotlin/TestDirect_kotlin.ts +30 -30
- package/project/.sdk/src/cmp/kotlin/TestEntity_kotlin.ts +67 -66
- package/project/.sdk/src/cmp/lua/EntityTypes_lua.ts +5 -5
- package/project/.sdk/src/cmp/lua/ReadmeEntity_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/ReadmeModel_lua.ts +3 -3
- package/project/.sdk/src/cmp/lua/ReadmeQuick_lua.ts +4 -4
- package/project/.sdk/src/cmp/lua/ReadmeRef_lua.ts +5 -5
- package/project/.sdk/src/cmp/lua/Schema_lua.ts +1 -1
- package/project/.sdk/src/cmp/lua/TestDirect_lua.ts +25 -25
- package/project/.sdk/src/cmp/lua/TestEntity_lua.ts +66 -65
- package/project/.sdk/src/cmp/ocaml/ReadmeEntity_ocaml.ts +3 -3
- package/project/.sdk/src/cmp/ocaml/ReadmeModel_ocaml.ts +3 -3
- package/project/.sdk/src/cmp/ocaml/ReadmeRef_ocaml.ts +5 -5
- package/project/.sdk/src/cmp/ocaml/Schema_ocaml.ts +1 -1
- package/project/.sdk/src/cmp/perl/ReadmeEntity_perl.ts +3 -3
- package/project/.sdk/src/cmp/perl/ReadmeModel_perl.ts +3 -3
- package/project/.sdk/src/cmp/perl/ReadmeRef_perl.ts +5 -5
- package/project/.sdk/src/cmp/perl/Schema_perl.ts +1 -1
- package/project/.sdk/src/cmp/perl/TestDirect_perl.ts +25 -25
- package/project/.sdk/src/cmp/perl/TestEntity_perl.ts +60 -59
- package/project/.sdk/src/cmp/php/EntityTypes_php.ts +4 -4
- package/project/.sdk/src/cmp/php/ReadmeEntity_php.ts +3 -3
- package/project/.sdk/src/cmp/php/ReadmeModel_php.ts +3 -3
- package/project/.sdk/src/cmp/php/ReadmeQuick_php.ts +4 -4
- package/project/.sdk/src/cmp/php/ReadmeRef_php.ts +5 -5
- package/project/.sdk/src/cmp/php/Schema_php.ts +1 -1
- package/project/.sdk/src/cmp/php/TestDirect_php.ts +25 -25
- package/project/.sdk/src/cmp/php/TestEntity_php.ts +66 -65
- package/project/.sdk/src/cmp/py/EntityTypes_py.ts +4 -4
- package/project/.sdk/src/cmp/py/ReadmeEntity_py.ts +3 -3
- package/project/.sdk/src/cmp/py/ReadmeModel_py.ts +3 -3
- package/project/.sdk/src/cmp/py/ReadmeRef_py.ts +5 -5
- package/project/.sdk/src/cmp/py/Schema_py.ts +1 -1
- package/project/.sdk/src/cmp/py/TestDirect_py.ts +25 -25
- package/project/.sdk/src/cmp/py/TestEntity_py.ts +66 -65
- package/project/.sdk/src/cmp/py-data/Main_py-data.ts +4 -4
- package/project/.sdk/src/cmp/rb/EntityTypes_rb.ts +4 -4
- package/project/.sdk/src/cmp/rb/ReadmeEntity_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/ReadmeModel_rb.ts +3 -3
- package/project/.sdk/src/cmp/rb/ReadmeQuick_rb.ts +4 -4
- package/project/.sdk/src/cmp/rb/ReadmeRef_rb.ts +5 -5
- package/project/.sdk/src/cmp/rb/Schema_rb.ts +1 -1
- package/project/.sdk/src/cmp/rb/TestDirect_rb.ts +25 -25
- package/project/.sdk/src/cmp/rb/TestEntity_rb.ts +66 -65
- package/project/.sdk/src/cmp/rust/EntityTypes_rust.ts +4 -4
- package/project/.sdk/src/cmp/rust/ReadmeEntity_rust.ts +3 -3
- package/project/.sdk/src/cmp/rust/ReadmeModel_rust.ts +3 -3
- package/project/.sdk/src/cmp/rust/ReadmeRef_rust.ts +5 -5
- package/project/.sdk/src/cmp/rust/Schema_rust.ts +1 -1
- package/project/.sdk/src/cmp/rust/TestDirect_rust.ts +18 -18
- package/project/.sdk/src/cmp/rust/TestEntity_rust.ts +63 -62
- package/project/.sdk/src/cmp/scala/EntityTypes_scala.ts +4 -4
- package/project/.sdk/src/cmp/scala/ReadmeEntity_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/ReadmeModel_scala.ts +3 -3
- package/project/.sdk/src/cmp/scala/ReadmeRef_scala.ts +5 -5
- package/project/.sdk/src/cmp/scala/Schema_scala.ts +1 -1
- package/project/.sdk/src/cmp/scala/TestDirect_scala.ts +14 -14
- package/project/.sdk/src/cmp/scala/TestEntity_scala.ts +60 -59
- package/project/.sdk/src/cmp/swift/EntityTypes_swift.ts +4 -4
- package/project/.sdk/src/cmp/swift/ReadmeEntity_swift.ts +3 -3
- package/project/.sdk/src/cmp/swift/ReadmeModel_swift.ts +3 -3
- package/project/.sdk/src/cmp/swift/ReadmeRef_swift.ts +5 -5
- package/project/.sdk/src/cmp/swift/Schema_swift.ts +1 -1
- package/project/.sdk/src/cmp/ts/EntityTypes_ts.ts +5 -5
- package/project/.sdk/src/cmp/ts/ReadmeEntity_ts.ts +3 -3
- package/project/.sdk/src/cmp/ts/ReadmeModel_ts.ts +3 -3
- package/project/.sdk/src/cmp/ts/ReadmeQuick_ts.ts +1 -1
- package/project/.sdk/src/cmp/ts/ReadmeRef_ts.ts +5 -5
- package/project/.sdk/src/cmp/ts/Schema_ts.ts +1 -1
- package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +40 -40
- package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +72 -75
- package/project/.sdk/src/cmp/ts/TestLive_ts.ts +3 -3
- package/project/.sdk/src/cmp/ts/utility_ts.ts +5 -5
- package/project/.sdk/src/cmp/zig/ReadmeEntity_zig.ts +3 -3
- package/project/.sdk/src/cmp/zig/ReadmeModel_zig.ts +3 -3
- package/project/.sdk/src/cmp/zig/ReadmeRef_zig.ts +5 -5
- package/project/.sdk/src/cmp/zig/Schema_zig.ts +1 -1
- package/project/.sdk/tm/c/core/context.c +3 -1
- package/project/.sdk/tm/c/feature/paging.c +37 -3
- package/project/.sdk/tm/c/feature/test.c +71 -31
- package/project/.sdk/tm/c/utility/prepare_query.c +2 -1
- package/project/.sdk/tm/c/utility/transform_request.c +25 -3
- package/project/.sdk/tm/clojure/src/sdk/core.clj +21 -7
- package/project/.sdk/tm/clojure/src/sdk/features.clj +74 -22
- package/project/.sdk/tm/cpp/core/types.hpp +1 -1
- package/project/.sdk/tm/cpp/feature/paging.hpp +36 -3
- package/project/.sdk/tm/cpp/feature/test.hpp +58 -19
- package/project/.sdk/tm/cpp/utility/pipeline.hpp +16 -4
- package/project/.sdk/tm/csharp/core/Context.cs +1 -1
- package/project/.sdk/tm/csharp/feature/PagingFeature.cs +58 -4
- package/project/.sdk/tm/csharp/feature/TestFeature.cs +23 -25
- package/project/.sdk/tm/csharp/utility/Fetcher.cs +19 -12
- package/project/.sdk/tm/csharp/utility/PrepareQuery.cs +1 -1
- package/project/.sdk/tm/csharp/utility/TransformRequest.cs +23 -3
- package/project/.sdk/tm/elixir/lib/projectname/context.ex +1 -1
- package/project/.sdk/tm/elixir/lib/projectname/feature/paging.ex +52 -10
- package/project/.sdk/tm/elixir/lib/projectname/feature/test.ex +58 -22
- package/project/.sdk/tm/elixir/lib/projectname/utility.ex +30 -9
- package/project/.sdk/tm/go/core/context.go +13 -13
- package/project/.sdk/tm/go/feature/paging_feature.go +40 -2
- package/project/.sdk/tm/go/feature/test_feature.go +3 -15
- package/project/.sdk/tm/go/test/feature_corpus_test.go +1 -0
- package/project/.sdk/tm/go/test/feature_test.go +54 -0
- package/project/.sdk/tm/go/utility/fetcher.go +41 -20
- package/project/.sdk/tm/go/utility/prepare_query.go +1 -1
- package/project/.sdk/tm/go/utility/transform_request.go +22 -3
- package/project/.sdk/tm/java/core/Context.java +2 -1
- package/project/.sdk/tm/java/feature/PagingFeature.java +46 -4
- package/project/.sdk/tm/java/feature/TestFeature.java +21 -19
- package/project/.sdk/tm/java/test/FeatureCorpusTest.java +3 -0
- package/project/.sdk/tm/java/test/FeatureTest.java +42 -0
- package/project/.sdk/tm/java/utility/Fetcher.java +36 -28
- package/project/.sdk/tm/java/utility/PrepareQuery.java +1 -1
- package/project/.sdk/tm/java/utility/TransformRequest.java +18 -3
- package/project/.sdk/tm/js/src/Context.js +7 -2
- package/project/.sdk/tm/js/src/feature/paging/PagingFeature.js +24 -6
- package/project/.sdk/tm/js/src/feature/test/TestFeature.js +7 -5
- package/project/.sdk/tm/js/src/utility/PrepareQueryUtility.js +1 -1
- package/project/.sdk/tm/js/test/feature/Corpus.test.js +4 -0
- package/project/.sdk/tm/js/test/live-entity.js +29 -29
- package/project/.sdk/tm/js/test/live-scenarios.js +4 -4
- package/project/.sdk/tm/kotlin/core/Context.kt +1 -1
- package/project/.sdk/tm/kotlin/feature/PagingFeature.kt +36 -4
- package/project/.sdk/tm/kotlin/feature/TestFeature.kt +19 -18
- package/project/.sdk/tm/kotlin/utility/Fetcher.kt +33 -24
- package/project/.sdk/tm/kotlin/utility/Prepare.kt +1 -1
- package/project/.sdk/tm/kotlin/utility/ResultTransform.kt +18 -3
- package/project/.sdk/tm/lua/core/context.lua +8 -1
- package/project/.sdk/tm/lua/core/control.lua +3 -0
- package/project/.sdk/tm/lua/feature/paging_feature.lua +44 -5
- package/project/.sdk/tm/lua/feature/test_feature.lua +32 -14
- package/project/.sdk/tm/lua/utility/prepare_query.lua +2 -1
- package/project/.sdk/tm/lua/utility/transform_request.lua +19 -3
- package/project/.sdk/tm/ocaml/sdk_features.ml +78 -25
- package/project/.sdk/tm/ocaml/sdk_runtime.ml +23 -8
- package/project/.sdk/tm/perl/core/context.pm +2 -1
- package/project/.sdk/tm/perl/feature/paging_feature.pm +31 -5
- package/project/.sdk/tm/perl/feature/test_feature.pm +52 -20
- package/project/.sdk/tm/perl/feature/timeout_feature.pm +17 -13
- package/project/.sdk/tm/perl/t/feature_corpus.t +14 -1
- package/project/.sdk/tm/perl/utility/fetcher.pm +15 -1
- package/project/.sdk/tm/perl/utility/prepare_query.pm +1 -0
- package/project/.sdk/tm/perl/utility/transform_request.pm +13 -3
- package/project/.sdk/tm/php/core/Context.php +5 -1
- package/project/.sdk/tm/php/core/Control.php +5 -0
- package/project/.sdk/tm/php/feature/PagingFeature.php +26 -5
- package/project/.sdk/tm/php/feature/TestFeature.php +27 -42
- package/project/.sdk/tm/php/test/FeatureCorpusTest.php +17 -1
- package/project/.sdk/tm/php/test/FeatureTest.php +44 -0
- package/project/.sdk/tm/php/utility/Fetcher.php +17 -3
- package/project/.sdk/tm/php/utility/PrepareQuery.php +1 -1
- package/project/.sdk/tm/php/utility/TransformRequest.php +15 -3
- package/project/.sdk/tm/py/pkg/core/context.py +2 -1
- package/project/.sdk/tm/py/pkg/feature/paging_feature.py +29 -4
- package/project/.sdk/tm/py/pkg/feature/test_feature.py +29 -12
- package/project/.sdk/tm/py/pkg/utility/fetcher.py +63 -65
- package/project/.sdk/tm/py/pkg/utility/prepare_query.py +2 -1
- package/project/.sdk/tm/py/pkg/utility/transform_request.py +11 -3
- package/project/.sdk/tm/py/test/test_feature.py +27 -0
- package/project/.sdk/tm/py/test/test_feature_corpus.py +11 -1
- package/project/.sdk/tm/rb/core/context.rb +1 -1
- package/project/.sdk/tm/rb/feature/paging_feature.rb +27 -5
- package/project/.sdk/tm/rb/feature/test_feature.rb +39 -11
- package/project/.sdk/tm/rb/test/feature_corpus_test.rb +12 -1
- package/project/.sdk/tm/rb/test/feature_test.rb +38 -0
- package/project/.sdk/tm/rb/utility/fetcher.rb +49 -3
- package/project/.sdk/tm/rb/utility/prepare_query.rb +1 -1
- package/project/.sdk/tm/rb/utility/transform_request.rb +10 -3
- package/project/.sdk/tm/rust/core/context.rs +2 -6
- package/project/.sdk/tm/rust/feature/paging.rs +44 -3
- package/project/.sdk/tm/rust/feature/secrets.rs +1 -1
- package/project/.sdk/tm/rust/feature/test.rs +74 -37
- package/project/.sdk/tm/rust/utility/fetcher.rs +41 -14
- package/project/.sdk/tm/rust/utility/prepare_query.rs +1 -1
- package/project/.sdk/tm/rust/utility/transform_request.rs +31 -5
- package/project/.sdk/tm/scala/core/Context.scala +2 -1
- package/project/.sdk/tm/scala/feature/PagingFeature.scala +41 -4
- package/project/.sdk/tm/scala/feature/TestFeature.scala +21 -18
- package/project/.sdk/tm/scala/utility/Fetcher.scala +34 -13
- package/project/.sdk/tm/scala/utility/Prepare.scala +1 -1
- package/project/.sdk/tm/scala/utility/Transform.scala +19 -3
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/core/Context.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/PagingFeature.swift +31 -4
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/TestFeature.swift +22 -15
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Fetcher.swift +22 -3
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +1 -1
- package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/ResultUtil.swift +14 -3
- package/project/.sdk/tm/ts/src/Context.ts +7 -2
- package/project/.sdk/tm/ts/src/feature/paging/PagingFeature.ts +19 -3
- package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +3 -0
- package/project/.sdk/tm/ts/src/utility/PrepareQueryUtility.ts +1 -1
- package/project/.sdk/tm/ts/test/feature/Corpus.test.ts +1 -0
- package/project/.sdk/tm/ts/test/live-entity.ts +26 -26
- package/project/.sdk/tm/ts/test/live-scenarios.ts +3 -3
- package/project/.sdk/tm/zig/core/context.zig +1 -1
- package/project/.sdk/tm/zig/core/utility.zig +19 -5
- package/project/.sdk/tm/zig/feature/paging.zig +34 -4
- package/project/.sdk/tm/zig/feature/test.zig +65 -30
- package/project/sdkgen-package.json +1 -1
- package/src/action/doctor.ts +12 -9
- package/src/action/edition.ts +8 -0
- package/src/action/feature.ts +7 -1
- package/src/action/remove.ts +492 -0
- package/src/action/target.ts +8 -1
- package/src/cmp/ReadmeTop.ts +1 -1
- package/src/cmp/ReadmeUnions.ts +1 -1
- package/src/cmp/Test.ts +1 -1
- package/src/helpers/buildIdNames.ts +17 -7
- package/src/helpers/canonSpec.ts +2 -2
- package/src/helpers/getMatchEntries.ts +2 -2
- package/src/helpers/modelNames.ts +6 -1
- package/src/helpers/opShape.ts +33 -33
- package/src/helpers/pointPath.ts +5 -10
- package/src/helpers/resolved.ts +3 -14
- package/src/sdkgen.ts +3 -1
- package/src/utility.ts +16 -7
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { flowSteps } from '@voxgig/sdkgen'
|
|
1
2
|
|
|
2
3
|
import {
|
|
3
4
|
flatten,
|
|
@@ -92,10 +93,10 @@ const TestEntity = cmp(function TestEntity(props: any) {
|
|
|
92
93
|
const idnames = buildIdNames(entity, basicflow)
|
|
93
94
|
const idnamesStr = idnames.map(n => `"${n}"`).join(', ')
|
|
94
95
|
|
|
95
|
-
const allSteps = Object.values(basicflow
|
|
96
|
-
const updateStep = allSteps.find((s: any) => s.
|
|
97
|
-
const updateData = updateStep?.
|
|
98
|
-
? Object.entries(updateStep.
|
|
96
|
+
const allSteps = Object.values(flowSteps(basicflow)) as any[]
|
|
97
|
+
const updateStep = allSteps.find((s: any) => s.o === 'update')
|
|
98
|
+
const updateData = updateStep?.d
|
|
99
|
+
? Object.entries(updateStep.d).filter(([k]: any) => k !== 'id' && !k.endsWith('$'))
|
|
99
100
|
: []
|
|
100
101
|
const aliases = updateData.map(([k, v]: any) => [k, v])
|
|
101
102
|
|
|
@@ -167,7 +168,7 @@ ${hasList ? `
|
|
|
167
168
|
$setup = ${entity.name}_basic_setup(null);
|
|
168
169
|
// Per-op sdk-test-control.json skip.
|
|
169
170
|
$_live = !empty($setup["live"]);
|
|
170
|
-
foreach ([${(Array.from(new Set((allSteps as any[]).map((s: any) => s.
|
|
171
|
+
foreach ([${(Array.from(new Set((allSteps as any[]).map((s: any) => s.o).filter(Boolean)))).map(o => `"${o}"`).join(', ')}] as $_op) {
|
|
171
172
|
[$_shouldSkip, $_reason] = Runner::is_control_skipped("entityOp", "${entity.name}." . $_op, $_live ? "live" : "unit");
|
|
172
173
|
if ($_shouldSkip) {
|
|
173
174
|
$this->markTestSkipped($_reason ?? "skipped via sdk-test-control.json");
|
|
@@ -185,7 +186,7 @@ ${hasList ? `
|
|
|
185
186
|
`)
|
|
186
187
|
|
|
187
188
|
// Check if the flow has a create step
|
|
188
|
-
const flowHasCreate = allSteps.some((s: any) => s.
|
|
189
|
+
const flowHasCreate = allSteps.some((s: any) => s.o === 'create')
|
|
189
190
|
if (!flowHasCreate) {
|
|
190
191
|
Content(` // Bootstrap entity data from existing test data.
|
|
191
192
|
$${entity.name}_ref01_data_raw = Vs::items(Helpers::to_map(
|
|
@@ -199,16 +200,16 @@ ${hasList ? `
|
|
|
199
200
|
}
|
|
200
201
|
|
|
201
202
|
// Model-driven step iteration
|
|
202
|
-
each(basicflow
|
|
203
|
+
each(flowSteps(basicflow), (step: any, index: any) => {
|
|
203
204
|
// Never emit a REMOVE (or its removed-item verify LIST) without a
|
|
204
205
|
// preceding CREATE: a coherent CRUD flow only removes what it created,
|
|
205
206
|
// so a create-less remove would mutate pre-existing (live) data.
|
|
206
207
|
if (!flowHasCreate) {
|
|
207
|
-
if ('remove' === step.
|
|
208
|
-
if ('list' === step.
|
|
209
|
-
(step.
|
|
208
|
+
if ('remove' === step.o) { return }
|
|
209
|
+
if ('list' === step.o &&
|
|
210
|
+
(step.v || []).some((v: any) => 'ItemNotExists' === v.apply)) { return }
|
|
210
211
|
}
|
|
211
|
-
const opgen: OpGen = GENERATE_OP[step.
|
|
212
|
+
const opgen: OpGen = GENERATE_OP[step.o]
|
|
212
213
|
if (opgen) {
|
|
213
214
|
opgen(genCtx, step, index)
|
|
214
215
|
Content('\n')
|
|
@@ -316,18 +317,18 @@ ${hasList ? `
|
|
|
316
317
|
|
|
317
318
|
const generateCreate: OpGen = (ctx, step, index) => {
|
|
318
319
|
const { entity, flow, accessor } = ctx
|
|
319
|
-
const ref = step.
|
|
320
|
-
const entvar = step.
|
|
321
|
-
const datavar = step.
|
|
320
|
+
const ref = step.i.ref ?? entity.name + '_ref01'
|
|
321
|
+
const entvar = step.i.entvar ?? ref + '_ent'
|
|
322
|
+
const datavar = step.i.datavar ?? (ref + '_data' + (step.i.suffix ?? ''))
|
|
322
323
|
|
|
323
|
-
const priorSteps = Object.values(flow
|
|
324
|
+
const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
|
|
324
325
|
const needsEnt = !priorSteps.some((s: any) =>
|
|
325
|
-
['create', 'list', 'load', 'update', 'remove'].includes(s.
|
|
326
|
+
['create', 'list', 'load', 'update', 'remove'].includes(s.o))
|
|
326
327
|
|
|
327
328
|
const hasDatvar = priorSteps.some((s: any) => {
|
|
328
|
-
if ('create' === s.
|
|
329
|
-
const priorRef = s.
|
|
330
|
-
const priorDatvar = s.
|
|
329
|
+
if ('create' === s.o) {
|
|
330
|
+
const priorRef = s.i.ref ?? entity.name + '_ref01'
|
|
331
|
+
const priorDatvar = s.i.datavar ?? (priorRef + '_data' + (s.i.suffix ?? ''))
|
|
331
332
|
return priorDatvar === datavar
|
|
332
333
|
}
|
|
333
334
|
return false
|
|
@@ -371,14 +372,14 @@ const generateCreate: OpGen = (ctx, step, index) => {
|
|
|
371
372
|
const generateList: OpGen = (ctx, step, index) => {
|
|
372
373
|
const { entity, flow, accessor } = ctx
|
|
373
374
|
const hasDataId = null != entityDataIdField(entity)
|
|
374
|
-
const ref = step.
|
|
375
|
-
const entvar = step.
|
|
376
|
-
const matchvar = step.
|
|
377
|
-
const listvar = step.
|
|
375
|
+
const ref = step.i.ref ?? entity.name + '_ref01'
|
|
376
|
+
const entvar = step.i.entvar ?? ref + '_ent'
|
|
377
|
+
const matchvar = step.i.matchvar ?? (ref + '_match' + (step.i.suffix ?? ''))
|
|
378
|
+
const listvar = step.i.listvar ?? (ref + '_list' + (step.i.suffix ?? ''))
|
|
378
379
|
|
|
379
|
-
const priorSteps = Object.values(flow
|
|
380
|
+
const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
|
|
380
381
|
const needsEnt = !priorSteps.some((s: any) =>
|
|
381
|
-
['create', 'list', 'load', 'update', 'remove'].includes(s.
|
|
382
|
+
['create', 'list', 'load', 'update', 'remove'].includes(s.o))
|
|
382
383
|
|
|
383
384
|
Content(` // LIST
|
|
384
385
|
`)
|
|
@@ -408,12 +409,12 @@ const generateList: OpGen = (ctx, step, index) => {
|
|
|
408
409
|
`)
|
|
409
410
|
|
|
410
411
|
// Handle validators
|
|
411
|
-
const allSteps = Object.values(flow
|
|
412
|
-
if (step.
|
|
413
|
-
for (const validator of step.
|
|
412
|
+
const allSteps = Object.values(flowSteps(flow)) as any[]
|
|
413
|
+
if (step.v) {
|
|
414
|
+
for (const validator of step.v) {
|
|
414
415
|
const validRef = validator.def?.ref
|
|
415
|
-
const hasRefData = validRef && allSteps.some((s: any) => 'create' === s.
|
|
416
|
-
((s.
|
|
416
|
+
const hasRefData = validRef && allSteps.some((s: any) => 'create' === s.o &&
|
|
417
|
+
((s.i.ref ?? entity.name + '_ref01') === validRef))
|
|
417
418
|
|
|
418
419
|
if ('ItemExists' === validator.apply && hasRefData && hasDataId) {
|
|
419
420
|
const refDataVar = validRef + '_data'
|
|
@@ -439,16 +440,16 @@ const generateList: OpGen = (ctx, step, index) => {
|
|
|
439
440
|
|
|
440
441
|
const generateUpdate: OpGen = (ctx, step, index) => {
|
|
441
442
|
const { entity, flow, accessor } = ctx
|
|
442
|
-
const ref = step.
|
|
443
|
-
const entvar = step.
|
|
444
|
-
const datavar = step.
|
|
445
|
-
const resdatavar = step.
|
|
446
|
-
const markdefvar = step.
|
|
447
|
-
const srcdatavar = step.
|
|
448
|
-
|
|
449
|
-
const priorSteps = Object.values(flow
|
|
443
|
+
const ref = step.i.ref ?? entity.name + '_ref01'
|
|
444
|
+
const entvar = step.i.entvar ?? ref + '_ent'
|
|
445
|
+
const datavar = step.i.datavar ?? (ref + '_data' + (step.i.suffix ?? ''))
|
|
446
|
+
const resdatavar = step.i.resdatavar ?? (ref + '_resdata' + (step.i.suffix ?? ''))
|
|
447
|
+
const markdefvar = step.i.markdefvar ?? (ref + '_markdef' + (step.i.suffix ?? ''))
|
|
448
|
+
const srcdatavar = step.i.srcdatavar ?? (ref + '_data' + (step.i.suffix ?? ''))
|
|
449
|
+
|
|
450
|
+
const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
|
|
450
451
|
const needsEnt = !priorSteps.some((s: any) =>
|
|
451
|
-
['create', 'list', 'load', 'update', 'remove'].includes(s.
|
|
452
|
+
['create', 'list', 'load', 'update', 'remove'].includes(s.o))
|
|
452
453
|
|
|
453
454
|
const hasEntIdU = null != entity.id
|
|
454
455
|
|
|
@@ -465,8 +466,8 @@ const generateUpdate: OpGen = (ctx, step, index) => {
|
|
|
465
466
|
`)
|
|
466
467
|
}
|
|
467
468
|
|
|
468
|
-
if (step.
|
|
469
|
-
const dataEntries = Object.entries(step.
|
|
469
|
+
if (step.d) {
|
|
470
|
+
const dataEntries = Object.entries(step.d).filter(([k]: any) => k !== 'id' && !k.endsWith('$'))
|
|
470
471
|
for (const [key] of dataEntries) {
|
|
471
472
|
Content(` "${key}" => $setup["idmap"]["${key}"],
|
|
472
473
|
`)
|
|
@@ -476,10 +477,10 @@ const generateUpdate: OpGen = (ctx, step, index) => {
|
|
|
476
477
|
Content(` ];
|
|
477
478
|
`)
|
|
478
479
|
|
|
479
|
-
if (step.
|
|
480
|
-
for (const spec of step.
|
|
481
|
-
if ('TextFieldMark' === spec.apply && null != step.
|
|
482
|
-
const fieldname = step.
|
|
480
|
+
if (step.s) {
|
|
481
|
+
for (const spec of step.s) {
|
|
482
|
+
if ('TextFieldMark' === spec.apply && null != step.i.textfield) {
|
|
483
|
+
const fieldname = step.i.textfield
|
|
483
484
|
const fieldvalue = spec.def?.mark ?? `Mark01-${ref}`
|
|
484
485
|
Content(`
|
|
485
486
|
$${markdefvar}_name = "${fieldname}";
|
|
@@ -500,9 +501,9 @@ const generateUpdate: OpGen = (ctx, step, index) => {
|
|
|
500
501
|
`)
|
|
501
502
|
}
|
|
502
503
|
|
|
503
|
-
if (step.
|
|
504
|
-
for (const spec of step.
|
|
505
|
-
if ('TextFieldMark' === spec.apply && null != step.
|
|
504
|
+
if (step.s) {
|
|
505
|
+
for (const spec of step.s) {
|
|
506
|
+
if ('TextFieldMark' === spec.apply && null != step.i.textfield) {
|
|
506
507
|
Content(` $this->assertEquals($${resdatavar}[$${markdefvar}_name], $${markdefvar}_value);
|
|
507
508
|
`)
|
|
508
509
|
}
|
|
@@ -513,23 +514,23 @@ const generateUpdate: OpGen = (ctx, step, index) => {
|
|
|
513
514
|
|
|
514
515
|
const generateLoad: OpGen = (ctx, step, index) => {
|
|
515
516
|
const { entity, flow, accessor } = ctx
|
|
516
|
-
const ref = step.
|
|
517
|
-
const entvar = step.
|
|
518
|
-
const matchvar = step.
|
|
519
|
-
const datavar = step.
|
|
520
|
-
const srcdatavar = step.
|
|
517
|
+
const ref = step.i.ref ?? entity.name + '_ref01'
|
|
518
|
+
const entvar = step.i.entvar ?? ref + '_ent'
|
|
519
|
+
const matchvar = step.i.matchvar ?? (ref + '_match' + (step.i.suffix ?? ''))
|
|
520
|
+
const datavar = step.i.datavar ?? (ref + '_data' + (step.i.suffix ?? ''))
|
|
521
|
+
const srcdatavar = step.i.srcdatavar ?? (ref + '_data' + (step.i.suffix ?? ''))
|
|
521
522
|
|
|
522
|
-
const priorSteps = Object.values(flow
|
|
523
|
+
const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
|
|
523
524
|
const hasEntVar = priorSteps.some((s: any) =>
|
|
524
|
-
['create', 'list', 'load', 'update', 'remove'].includes(s.
|
|
525
|
+
['create', 'list', 'load', 'update', 'remove'].includes(s.o))
|
|
525
526
|
|
|
526
|
-
const flowHasCreate = Object.values(flow
|
|
527
|
+
const flowHasCreate = Object.values(flowSteps(flow)).some((s: any) => (s as any).o === 'create')
|
|
527
528
|
const preambleRef = entity.name + '_ref01'
|
|
528
529
|
const hasSrcData = (!flowHasCreate && srcdatavar === (preambleRef + '_data')) ||
|
|
529
530
|
priorSteps.some((s: any) => {
|
|
530
|
-
if ('create' === s.
|
|
531
|
-
const priorRef = s.
|
|
532
|
-
const priorDatvar = s.
|
|
531
|
+
if ('create' === s.o) {
|
|
532
|
+
const priorRef = s.i.ref ?? entity.name + '_ref01'
|
|
533
|
+
const priorDatvar = s.i.datavar ?? (priorRef + '_data' + (s.i.suffix ?? ''))
|
|
533
534
|
return priorDatvar === srcdatavar
|
|
534
535
|
}
|
|
535
536
|
return false
|
|
@@ -576,14 +577,14 @@ const generateRemove: OpGen = (ctx, step, index) => {
|
|
|
576
577
|
if (null == entityDataIdField(entity)) {
|
|
577
578
|
return
|
|
578
579
|
}
|
|
579
|
-
const ref = step.
|
|
580
|
-
const entvar = step.
|
|
581
|
-
const matchvar = step.
|
|
582
|
-
const srcdatavar = step.
|
|
580
|
+
const ref = step.i.ref ?? entity.name + '_ref01'
|
|
581
|
+
const entvar = step.i.entvar ?? ref + '_ent'
|
|
582
|
+
const matchvar = step.i.matchvar ?? (ref + '_match' + (step.i.suffix ?? ''))
|
|
583
|
+
const srcdatavar = step.i.srcdatavar ?? (ref + '_data')
|
|
583
584
|
|
|
584
|
-
const priorSteps = Object.values(flow
|
|
585
|
+
const priorSteps = Object.values(flowSteps(flow)).slice(0, Number(index)) as any[]
|
|
585
586
|
const needsEnt = !priorSteps.some((s: any) =>
|
|
586
|
-
['create', 'list', 'load', 'update', 'remove'].includes(s.
|
|
587
|
+
['create', 'list', 'load', 'update', 'remove'].includes(s.o))
|
|
587
588
|
|
|
588
589
|
Content(` // REMOVE
|
|
589
590
|
`)
|
|
@@ -105,8 +105,8 @@ const EntityTypes = cmp(function EntityTypes(props: any) {
|
|
|
105
105
|
|
|
106
106
|
Content(`# Typed models for the ${model.const.Name} SDK.
|
|
107
107
|
#
|
|
108
|
-
# GENERATED from the API model: main.${KIT}.entity.<e>.fields
|
|
109
|
-
# params (op.<name>.points[].
|
|
108
|
+
# GENERATED from the API model: main.${KIT}.entity.<e>.fields{} and per-op
|
|
109
|
+
# params (op.<name>.points[].g.params[]). Field/param types come from the
|
|
110
110
|
# canonical type sentinels via @voxgig/sdkgen canonToType (source of truth:
|
|
111
111
|
# @voxgig/apidef VALID_CANON). Do not edit by hand.
|
|
112
112
|
#
|
|
@@ -124,13 +124,13 @@ from typing import TypedDict, Any
|
|
|
124
124
|
entityList.forEach((ent: any) => {
|
|
125
125
|
const Name = ent.Name
|
|
126
126
|
const fields = (ent.fields ? each(ent.fields) : [])
|
|
127
|
-
.filter((f: any) => f.
|
|
127
|
+
.filter((f: any) => f.a !== false)
|
|
128
128
|
|
|
129
129
|
Content(`
|
|
130
130
|
|
|
131
131
|
`)
|
|
132
132
|
emitTypedDict(Name, fields.map((f: any) => ({
|
|
133
|
-
name: f.
|
|
133
|
+
name: f.n, type: f.t, optional: false === f.r,
|
|
134
134
|
})), log)
|
|
135
135
|
|
|
136
136
|
const ops = ent.op || {}
|
|
@@ -53,7 +53,7 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
|
|
|
53
53
|
|
|
54
54
|
publishedEntities.map((entity: any) => {
|
|
55
55
|
const opnames = Object.keys(entity.op || {})
|
|
56
|
-
const fields = entity.fields ||
|
|
56
|
+
const fields = Object.values(entity.fields || {})
|
|
57
57
|
// Model-driven id key: null when this entity has no id-like field.
|
|
58
58
|
const idF = entityIdField(entity)
|
|
59
59
|
// Sanitise the local variable name — an entity whose lowercased name is a
|
|
@@ -101,8 +101,8 @@ const ReadmeEntity = cmp(function ReadmeEntity(props: any) {
|
|
|
101
101
|
`)
|
|
102
102
|
|
|
103
103
|
each(fields, (field: any) => {
|
|
104
|
-
const desc = field.
|
|
105
|
-
Content(`| \`${field.
|
|
104
|
+
const desc = field.sh || ''
|
|
105
|
+
Content(`| \`${field.n}\` | \`${canonToType(field.t, target.name)}\` | ${desc} |
|
|
106
106
|
`)
|
|
107
107
|
})
|
|
108
108
|
|
|
@@ -117,13 +117,13 @@ On error, \`ok\` is \`False\` and \`err\` contains the error value.
|
|
|
117
117
|
|
|
118
118
|
`)
|
|
119
119
|
each(entityList, (ent: any) => {
|
|
120
|
-
const fields = ent.fields ||
|
|
120
|
+
const fields = Object.values(ent.fields || {})
|
|
121
121
|
const opnames = Object.keys(ent.op || {})
|
|
122
122
|
const ops = ent.op || {}
|
|
123
123
|
const points = each(ops).map((op: any) =>
|
|
124
124
|
op.points ? each(op.points) : []
|
|
125
125
|
).flat()
|
|
126
|
-
const path = points.length > 0 ? (points[0] as any).
|
|
126
|
+
const path = points.length > 0 ? (points[0] as any).o || '' : ''
|
|
127
127
|
|
|
128
128
|
Content(`#### ${ent.Name}
|
|
129
129
|
|
|
@@ -131,7 +131,7 @@ On error, \`ok\` is \`False\` and \`err\` contains the error value.
|
|
|
131
131
|
| --- | --- |
|
|
132
132
|
`)
|
|
133
133
|
each(fields, (field: any) => {
|
|
134
|
-
Content(`| \`${field.
|
|
134
|
+
Content(`| \`${field.n}\` | ${field.sh || ''} |
|
|
135
135
|
`)
|
|
136
136
|
})
|
|
137
137
|
|
|
@@ -167,7 +167,7 @@ Prepare a fetch definition without sending. Returns the \`fetchdef\` and raises
|
|
|
167
167
|
|
|
168
168
|
publishedEntities.map((ent: any) => {
|
|
169
169
|
const opnames = Object.keys(ent.op || {})
|
|
170
|
-
const fields = ent.fields ||
|
|
170
|
+
const fields = Object.values(ent.fields || {})
|
|
171
171
|
// Model-driven id key: null when this entity has no id-like field, in
|
|
172
172
|
// which case load/remove match on no argument and update omits the id.
|
|
173
173
|
const idF = entityIdField(ent)
|
|
@@ -202,9 +202,9 @@ ${eVar} = client.${ent.Name}()
|
|
|
202
202
|
| --- | --- | --- | --- |
|
|
203
203
|
`)
|
|
204
204
|
each(fields, (field: any) => {
|
|
205
|
-
const req = field.
|
|
206
|
-
const desc = field.
|
|
207
|
-
Content(`| \`${field.
|
|
205
|
+
const req = field.r ? 'Yes' : 'No'
|
|
206
|
+
const desc = field.sh || ''
|
|
207
|
+
Content(`| \`${field.n}\` | \`${canonToType(field.t, target.name)}\` | ${req} | ${desc} |
|
|
208
208
|
`)
|
|
209
209
|
})
|
|
210
210
|
|
|
@@ -231,7 +231,7 @@ ${eVar} = client.${ent.Name}()
|
|
|
231
231
|
if (fop.active === false) return '-'
|
|
232
232
|
return 'Yes'
|
|
233
233
|
})
|
|
234
|
-
Content(`| \`${field.
|
|
234
|
+
Content(`| \`${field.n}\` | ${cols.join(' | ')} |
|
|
235
235
|
`)
|
|
236
236
|
})
|
|
237
237
|
|
|
@@ -25,7 +25,7 @@ const Schema = cmp(async function Schema(props: any) {
|
|
|
25
25
|
Content(`# ${model.const.Name} ${target.Name} SDK: generated schemas. Do not edit.
|
|
26
26
|
#
|
|
27
27
|
# Generated from the model: \`main.kit.optspec\` and each feature's
|
|
28
|
-
# \`config.options\` for OPTSPEC; entity \`fields
|
|
28
|
+
# \`config.options\` for OPTSPEC; entity \`fields{}.type\` for ENTITYSPEC.
|
|
29
29
|
|
|
30
30
|
from __future__ import annotations
|
|
31
31
|
|
|
@@ -31,10 +31,10 @@ function normalizePathParams(
|
|
|
31
31
|
// original name was renamed to another param's current name (e.g. badge
|
|
32
32
|
// load: param 'group_id' has orig 'id', and another param has name 'id').
|
|
33
33
|
const param = params.find((p: any) =>
|
|
34
|
-
p.
|
|
34
|
+
p.n === snaked || p.n === depluralized) ||
|
|
35
35
|
params.find((p: any) =>
|
|
36
|
-
p.
|
|
37
|
-
if (param) return '{' + param.
|
|
36
|
+
p.or === snaked || p.or === depluralized)
|
|
37
|
+
if (param) return '{' + param.n + '}'
|
|
38
38
|
|
|
39
39
|
if (rename) {
|
|
40
40
|
for (const [origCamel, renamedTo] of Object.entries(rename)) {
|
|
@@ -42,10 +42,10 @@ function normalizePathParams(
|
|
|
42
42
|
const origSnaked = snakify(origCamel)
|
|
43
43
|
const origDepluralized = depluralize(origSnaked)
|
|
44
44
|
const renamedParam = params.find(
|
|
45
|
-
(p: any) => p.
|
|
46
|
-
p.
|
|
45
|
+
(p: any) => p.or === origSnaked || p.n === origSnaked ||
|
|
46
|
+
p.or === origDepluralized || p.n === origDepluralized
|
|
47
47
|
)
|
|
48
|
-
if (renamedParam) return '{' + renamedParam.
|
|
48
|
+
if (renamedParam) return '{' + renamedParam.n + '}'
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
}
|
|
@@ -99,8 +99,8 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
99
99
|
const listOp = entity.op?.list
|
|
100
100
|
|
|
101
101
|
const loadPoint = loadOp?.points?.[0]
|
|
102
|
-
const loadPath = loadPoint ? normalizePathParams(pointParts(loadPoint), loadPoint?.
|
|
103
|
-
const allLoadParams = loadPoint?.
|
|
102
|
+
const loadPath = loadPoint ? normalizePathParams(pointParts(loadPoint), loadPoint?.g?.params || [], loadPoint?.r?.param) : ''
|
|
103
|
+
const allLoadParams = loadPoint?.g?.params || []
|
|
104
104
|
// Some upstream OpenAPI specs declare a parameter as `in: path` even when
|
|
105
105
|
// that path has no `{name}` placeholder for it. Only path params that
|
|
106
106
|
// actually appear in the URL template should drive direct-test path-param
|
|
@@ -112,7 +112,7 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
112
112
|
_pathPlaceholders.add(part.slice(1, -1))
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
-
const _renameMap = (loadPoint?.
|
|
115
|
+
const _renameMap = (loadPoint?.r?.param || {}) as Record<string, string>
|
|
116
116
|
const _renamedPlaceholders = new Set<string>()
|
|
117
117
|
for (const ph of _pathPlaceholders) {
|
|
118
118
|
_renamedPlaceholders.add(ph)
|
|
@@ -121,26 +121,26 @@ const TestDirect = cmp(function TestDirect(props: any) {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
const loadParams = allLoadParams.filter((p: any) =>
|
|
124
|
-
_renamedPlaceholders.has(p.
|
|
124
|
+
_renamedPlaceholders.has(p.n) || _renamedPlaceholders.has(p.or))
|
|
125
125
|
|
|
126
126
|
const listPoint = listOp?.points?.[0]
|
|
127
|
-
const listPath = listPoint ? normalizePathParams(pointParts(listPoint), listPoint?.
|
|
128
|
-
const listParams = listPoint?.
|
|
127
|
+
const listPath = listPoint ? normalizePathParams(pointParts(listPoint), listPoint?.g?.params || [], listPoint?.r?.param) : ''
|
|
128
|
+
const listParams = listPoint?.g?.params || []
|
|
129
129
|
|
|
130
|
-
const loadQuery = loadPoint?.
|
|
130
|
+
const loadQuery = loadPoint?.g?.query || []
|
|
131
131
|
const loadLiveQueryEntries = loadQuery
|
|
132
|
-
.filter((q: any) => q.
|
|
132
|
+
.filter((q: any) => q.r && undefined !== q.ex && null !== q.ex)
|
|
133
133
|
const loadLiveQueryLines = loadLiveQueryEntries
|
|
134
|
-
.map((q: any) => ` query["${q.
|
|
134
|
+
.map((q: any) => ` query["${q.n}"] = ${JSON.stringify(q.ex)}`)
|
|
135
135
|
.join('\n')
|
|
136
136
|
|
|
137
137
|
// Path params with spec-provided examples — when ALL load params have
|
|
138
138
|
// spec examples, prefer them over list-bootstrap.
|
|
139
139
|
const loadAllHaveExamples =
|
|
140
140
|
loadParams.length > 0 &&
|
|
141
|
-
loadParams.every((p: any) => undefined !== p.
|
|
141
|
+
loadParams.every((p: any) => undefined !== p.ex && null !== p.ex)
|
|
142
142
|
const loadExampleLines = loadAllHaveExamples
|
|
143
|
-
? loadParams.map((p: any) => ` params["${p.
|
|
143
|
+
? loadParams.map((p: any) => ` params["${p.n}"] = ${JSON.stringify(p.ex)}`).join('\n')
|
|
144
144
|
: ''
|
|
145
145
|
|
|
146
146
|
const entidEnvVar = `${PROJECTNAME}_TEST_${envToken(entity.name)}_ENTID`
|
|
@@ -165,9 +165,9 @@ class Test${entity.Name}Direct:
|
|
|
165
165
|
if (hasList && listPoint) {
|
|
166
166
|
// Track idmap keys this list test consumes in live mode.
|
|
167
167
|
const listLiveIdKeys: string[] = listParams.map((lp: any) => {
|
|
168
|
-
return lp.
|
|
168
|
+
return lp.n === 'id'
|
|
169
169
|
? entity.name + '01'
|
|
170
|
-
: lp.
|
|
170
|
+
: lp.n.replace(/_id$/, '') + '01'
|
|
171
171
|
})
|
|
172
172
|
const listSkipBlock = listLiveIdKeys.length > 0
|
|
173
173
|
? ` if setup["live"]:
|
|
@@ -197,13 +197,13 @@ ${listSkipBlock} client = setup["client"]
|
|
|
197
197
|
Content(` params = {}
|
|
198
198
|
`)
|
|
199
199
|
for (const lp of listParams) {
|
|
200
|
-
const key = lp.
|
|
200
|
+
const key = lp.n === 'id'
|
|
201
201
|
? entity.name + '01'
|
|
202
|
-
: lp.
|
|
202
|
+
: lp.n.replace(/_id$/, '') + '01'
|
|
203
203
|
Content(` if setup["live"]:
|
|
204
|
-
params["${lp.
|
|
204
|
+
params["${lp.n}"] = setup["idmap"]["${key}"]
|
|
205
205
|
else:
|
|
206
|
-
params["${lp.
|
|
206
|
+
params["${lp.n}"] = "direct01"
|
|
207
207
|
`)
|
|
208
208
|
}
|
|
209
209
|
Content(`
|
|
@@ -281,7 +281,7 @@ ${loadLiveQueryLines ? loadLiveQueryLines + '\n' : ''}${loadExampleLines}
|
|
|
281
281
|
else:
|
|
282
282
|
`)
|
|
283
283
|
for (let i = 0; i < loadParams.length; i++) {
|
|
284
|
-
Content(` params["${loadParams[i].
|
|
284
|
+
Content(` params["${loadParams[i].n}"] = "direct0${i + 1}"
|
|
285
285
|
`)
|
|
286
286
|
}
|
|
287
287
|
} else if (loadParams.length > 0) {
|
|
@@ -293,7 +293,7 @@ ${loadLiveQueryLines}
|
|
|
293
293
|
Content(` if not setup["live"]:
|
|
294
294
|
`)
|
|
295
295
|
for (let i = 0; i < loadParams.length; i++) {
|
|
296
|
-
Content(` params["${loadParams[i].
|
|
296
|
+
Content(` params["${loadParams[i].n}"] = "direct0${i + 1}"
|
|
297
297
|
`)
|
|
298
298
|
}
|
|
299
299
|
} else if (loadLiveQueryLines) {
|