@voxgig/sdkgen 0.25.0 → 0.28.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 +6 -6
- package/dist/action/action.js +1 -2
- package/dist/action/action.js.map +1 -1
- package/dist/action/feature.js +4 -2
- package/dist/action/feature.js.map +1 -1
- package/dist/action/target.js +4 -2
- package/dist/action/target.js.map +1 -1
- package/dist/cmp/Entity.js +2 -1
- package/dist/cmp/Entity.js.map +1 -1
- package/dist/cmp/Feature.js +11 -9
- package/dist/cmp/Feature.js.map +1 -1
- package/dist/cmp/FeatureHook.js +2 -1
- package/dist/cmp/FeatureHook.js.map +1 -1
- package/dist/cmp/Main.js +6 -2
- package/dist/cmp/Main.js.map +1 -1
- package/dist/cmp/ReadmeEntity.js +2 -1
- package/dist/cmp/ReadmeEntity.js.map +1 -1
- package/dist/cmp/Test.d.ts +2 -0
- package/dist/cmp/Test.js +17 -0
- package/dist/cmp/Test.js.map +1 -0
- package/dist/sdkgen.d.ts +2 -1
- package/dist/sdkgen.js +17 -28
- package/dist/sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -1
- package/model/sdkgen.jsonic +9 -9
- package/package.json +8 -6
- package/project/.sdk/model/feature/log.jsonic +3 -3
- package/project/.sdk/model/feature/test.jsonic +8 -3
- package/project/.sdk/model/target/go.jsonic +19 -4
- package/project/.sdk/model/target/js.jsonic +2 -2
- package/project/.sdk/model/target/ts.jsonic +5 -5
- package/project/.sdk/src/cmp/go/Config_go.ts +119 -0
- package/project/.sdk/src/cmp/go/EntityOperation_go.ts +48 -0
- package/project/.sdk/src/cmp/go/Entity_go.ts +67 -0
- package/project/.sdk/src/cmp/go/MainEntity_go.ts +22 -0
- package/project/.sdk/src/cmp/go/Main_go.ts +209 -0
- package/project/.sdk/src/cmp/go/Package_go.ts +89 -0
- package/project/.sdk/src/cmp/go/TestDirect_go.ts +373 -0
- package/project/.sdk/src/cmp/go/TestEntity_go.ts +341 -0
- package/project/.sdk/src/cmp/go/Test_go.ts +37 -0
- package/project/.sdk/src/cmp/go/fragment/Entity.fragment.go +146 -0
- package/project/.sdk/src/cmp/go/fragment/EntityCreateOp.fragment.go +35 -0
- package/project/.sdk/src/cmp/go/fragment/EntityListOp.fragment.go +26 -0
- package/project/.sdk/src/cmp/go/fragment/EntityLoadOp.fragment.go +38 -0
- package/project/.sdk/src/cmp/go/fragment/EntityRemoveOp.fragment.go +38 -0
- package/project/.sdk/src/cmp/go/fragment/EntityUpdateOp.fragment.go +38 -0
- package/project/.sdk/src/cmp/go/fragment/Main.fragment.go +250 -0
- package/project/.sdk/src/cmp/go/fragment/SdkError.fragment.go +22 -0
- package/project/.sdk/src/cmp/go/tsconfig.json +15 -0
- package/project/.sdk/src/cmp/go/utility_go.ts +88 -0
- package/project/.sdk/src/cmp/js/Main_js.ts +3 -3
- package/project/.sdk/src/cmp/js/Quick_js.ts +1 -1
- package/project/.sdk/src/cmp/js/fragment/EntityCreateOp.fragment.js +6 -6
- package/project/.sdk/src/cmp/js/fragment/EntityListOp.fragment.js +6 -6
- package/project/.sdk/src/cmp/js/fragment/EntityLoadOp.fragment.js +6 -6
- package/project/.sdk/src/cmp/js/fragment/EntityRemoveOp.fragment.js +6 -6
- package/project/.sdk/src/cmp/js/fragment/EntityUpdateOp.fragment.js +6 -6
- package/project/.sdk/src/cmp/js/fragment/Main.fragment.js +85 -1
- package/project/.sdk/src/cmp/ts/Config_ts.ts +53 -6
- package/project/.sdk/src/cmp/ts/EntityOperation_ts.ts +3 -21
- package/project/.sdk/src/cmp/ts/Entity_ts.ts +3 -5
- package/project/.sdk/src/cmp/ts/Main_ts.ts +23 -13
- package/project/.sdk/src/cmp/ts/Package_ts.ts +30 -11
- package/project/.sdk/src/cmp/ts/SdkError_ts.ts +42 -0
- package/project/.sdk/src/cmp/ts/TestDirect_ts.ts +288 -0
- package/project/.sdk/src/cmp/ts/TestEntity_ts.ts +349 -2
- package/project/.sdk/src/cmp/ts/TestMain_ts.ts +0 -3
- package/project/.sdk/src/cmp/ts/Test_ts.ts +23 -3
- package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +38 -5
- package/project/.sdk/src/cmp/ts/fragment/Direct.test.fragment.ts +30 -0
- package/project/.sdk/src/cmp/ts/fragment/Entity.fragment.ts +50 -38
- package/project/.sdk/src/cmp/ts/fragment/Entity.test.fragment.ts +9 -7
- package/project/.sdk/src/cmp/ts/fragment/EntityCreateOp.fragment.ts +47 -31
- package/project/.sdk/src/cmp/ts/fragment/EntityListOp.fragment.ts +49 -31
- package/project/.sdk/src/cmp/ts/fragment/EntityLoadOp.fragment.ts +50 -33
- package/project/.sdk/src/cmp/ts/fragment/EntityRemoveOp.fragment.ts +51 -32
- package/project/.sdk/src/cmp/ts/fragment/EntityUpdateOp.fragment.ts +51 -31
- package/project/.sdk/src/cmp/ts/fragment/Main.fragment.ts +166 -34
- package/project/.sdk/src/cmp/ts/fragment/SdkError.fragment.ts +25 -0
- package/project/.sdk/src/cmp/ts/tsconfig.json +15 -0
- package/project/.sdk/src/cmp/ts/utility_ts.ts +55 -1
- package/project/.sdk/tm/go/Makefile +10 -0
- package/project/.sdk/tm/go/core/context.go +267 -0
- package/project/.sdk/tm/go/core/control.go +7 -0
- package/project/.sdk/tm/go/core/error.go +25 -0
- package/project/.sdk/tm/go/core/helpers.go +33 -0
- package/project/.sdk/tm/go/core/operation.go +61 -0
- package/project/.sdk/tm/go/core/response.go +55 -0
- package/project/.sdk/tm/go/core/result.go +73 -0
- package/project/.sdk/tm/go/core/spec.go +97 -0
- package/project/.sdk/tm/go/core/target.go +102 -0
- package/project/.sdk/tm/go/core/types.go +44 -0
- package/project/.sdk/tm/go/core/utility_type.go +54 -0
- package/project/.sdk/tm/go/feature/base_feature.go +40 -0
- package/project/.sdk/tm/go/feature/test_feature.go +196 -0
- package/project/.sdk/tm/go/src/feature/README.md +1 -0
- package/project/.sdk/tm/go/src/feature/base/.gitkeep +0 -0
- package/project/.sdk/tm/go/src/feature/test/.gitkeep +0 -0
- package/project/.sdk/tm/go/test/custom_utility_test.go +80 -0
- package/project/.sdk/tm/go/test/exists_test.go +16 -0
- package/project/.sdk/tm/go/test/primary_utility_test.go +899 -0
- package/project/.sdk/tm/go/test/runner_test.go +428 -0
- package/project/.sdk/tm/go/test/struct_runner_test.go +1094 -0
- package/project/.sdk/tm/go/test/struct_utility_test.go +1423 -0
- package/project/.sdk/tm/go/utility/clean.go +7 -0
- package/project/.sdk/tm/go/utility/done.go +20 -0
- package/project/.sdk/tm/go/utility/feature_add.go +10 -0
- package/project/.sdk/tm/go/utility/feature_hook.go +30 -0
- package/project/.sdk/tm/go/utility/feature_init.go +30 -0
- package/project/.sdk/tm/go/utility/fetcher.go +102 -0
- package/project/.sdk/tm/go/utility/make_context.go +7 -0
- package/project/.sdk/tm/go/utility/make_error.go +69 -0
- package/project/.sdk/tm/go/utility/make_fetch_def.go +44 -0
- package/project/.sdk/tm/go/utility/make_options.go +130 -0
- package/project/.sdk/tm/go/utility/make_request.go +59 -0
- package/project/.sdk/tm/go/utility/make_response.go +46 -0
- package/project/.sdk/tm/go/utility/make_result.go +55 -0
- package/project/.sdk/tm/go/utility/make_spec.go +68 -0
- package/project/.sdk/tm/go/utility/make_target.go +95 -0
- package/project/.sdk/tm/go/utility/make_url.go +41 -0
- package/project/.sdk/tm/go/utility/param.go +66 -0
- package/project/.sdk/tm/go/utility/prepare_auth.go +40 -0
- package/project/.sdk/tm/go/utility/prepare_body.go +14 -0
- package/project/.sdk/tm/go/utility/prepare_headers.go +22 -0
- package/project/.sdk/tm/go/utility/prepare_method.go +21 -0
- package/project/.sdk/tm/go/utility/prepare_params.go +41 -0
- package/project/.sdk/tm/go/utility/prepare_path.go +21 -0
- package/project/.sdk/tm/go/utility/prepare_query.go +47 -0
- package/project/.sdk/tm/go/utility/register.go +39 -0
- package/project/.sdk/tm/go/utility/result_basic.go +31 -0
- package/project/.sdk/tm/go/utility/result_body.go +17 -0
- package/project/.sdk/tm/go/utility/result_headers.go +22 -0
- package/project/.sdk/tm/go/utility/struct/go.mod +3 -0
- package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +4891 -0
- package/project/.sdk/tm/go/utility/transform_request.go +32 -0
- package/project/.sdk/tm/go/utility/transform_response.go +45 -0
- package/project/.sdk/tm/js/src/feature/log/LogFeature.js +2 -2
- package/project/.sdk/tm/ts/src/Context.ts +144 -0
- package/project/.sdk/tm/ts/src/Control.ts +20 -0
- package/project/.sdk/tm/ts/src/Operation.ts +24 -0
- package/project/.sdk/tm/ts/src/Response.ts +26 -0
- package/project/.sdk/tm/ts/src/Result.ts +30 -0
- package/project/.sdk/tm/ts/src/Spec.ts +40 -0
- package/project/.sdk/tm/ts/src/Target.ts +36 -0
- package/project/.sdk/tm/ts/src/feature/base/BaseFeature.ts +1 -1
- package/project/.sdk/tm/ts/src/feature/log/LogFeature.ts +2 -2
- package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +158 -104
- package/project/.sdk/tm/ts/src/types.ts +18 -78
- package/project/.sdk/tm/ts/src/utility/CleanUtility.ts +17 -31
- package/project/.sdk/tm/ts/src/utility/DoneUtility.ts +3 -4
- package/project/.sdk/tm/ts/src/utility/{AddfeatureUtility.ts → FeatureAddUtility.ts} +2 -2
- package/project/.sdk/tm/ts/src/utility/{FeaturehookUtility.ts → FeatureHookUtility.ts} +8 -5
- package/project/.sdk/tm/ts/src/utility/FeatureInitUtility.ts +15 -0
- package/project/.sdk/tm/ts/src/utility/FetcherUtility.ts +20 -2
- package/project/.sdk/tm/ts/src/utility/MakeContextUtility.ts +27 -0
- package/project/.sdk/tm/ts/src/utility/{ErrorUtility.ts → MakeErrorUtility.ts} +10 -6
- package/project/.sdk/tm/ts/src/utility/MakeFetchDefUtility.ts +46 -0
- package/project/.sdk/tm/ts/src/utility/{OptionsUtility.ts → MakeOptionsUtility.ts} +32 -7
- package/project/.sdk/tm/ts/src/utility/MakeRequestUtility.ts +66 -0
- package/project/.sdk/tm/ts/src/utility/MakeResponseUtility.ts +61 -0
- package/project/.sdk/tm/ts/src/utility/MakeResultUtility.ts +56 -0
- package/project/.sdk/tm/ts/src/utility/MakeSpecUtility.ts +61 -0
- package/project/.sdk/tm/ts/src/utility/MakeTargetUtility.ts +76 -0
- package/project/.sdk/tm/ts/src/utility/MakeUrlUtility.ts +61 -0
- package/project/.sdk/tm/ts/src/utility/{FindparamUtility.ts → ParamUtility.ts} +28 -8
- package/project/.sdk/tm/ts/src/utility/{AuthUtility.ts → PrepareAuthUtility.ts} +10 -4
- package/project/.sdk/tm/ts/src/utility/PrepareBodyUtility.ts +32 -0
- package/project/.sdk/tm/ts/src/utility/{HeadersUtility.ts → PrepareHeadersUtility.ts} +5 -7
- package/project/.sdk/tm/ts/src/utility/{MethodUtility.ts → PrepareMethodUtility.ts} +6 -6
- package/project/.sdk/tm/ts/src/utility/PrepareParamsUtility.ts +37 -0
- package/project/.sdk/tm/ts/src/utility/PreparePathUtility.ts +17 -0
- package/project/.sdk/tm/ts/src/utility/PrepareQueryUtility.ts +30 -0
- package/project/.sdk/tm/ts/src/utility/{ResbasicUtility.ts → ResultBasicUtility.ts} +12 -7
- package/project/.sdk/tm/ts/src/utility/ResultBodyUtility.ts +22 -0
- package/project/.sdk/tm/ts/src/utility/ResultHeadersUtility.ts +26 -0
- package/project/.sdk/tm/ts/src/utility/StructUtility.ts +1113 -525
- package/project/.sdk/tm/ts/src/utility/{ReqformUtility.ts → TransformRequestUtility.ts} +9 -7
- package/project/.sdk/tm/ts/src/utility/{ResformUtility.ts → TransformResponseUtility.ts} +11 -8
- package/project/.sdk/tm/ts/src/utility/Utility.ts +52 -65
- package/project/.sdk/tm/ts/test/exists.test.ts +0 -1
- package/project/.sdk/tm/ts/test/runner.ts +36 -13
- package/project/.sdk/tm/ts/test/utility/Custom.test.ts +30 -29
- package/project/.sdk/tm/ts/test/utility/PrimaryUtility.test.ts +385 -168
- package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +433 -189
- package/src/action/action.ts +1 -2
- package/src/action/feature.ts +7 -2
- package/src/action/target.ts +7 -7
- package/src/cmp/Entity.ts +7 -1
- package/src/cmp/Feature.ts +11 -9
- package/src/cmp/FeatureHook.ts +6 -1
- package/src/cmp/Main.ts +12 -2
- package/src/cmp/ReadmeEntity.ts +6 -1
- package/src/cmp/Test.ts +31 -0
- package/src/sdkgen.ts +19 -34
- package/src/types.ts +10 -1
- package/project/.sdk/src/cmp/ts/EntityTest_ts.ts +0 -180
- package/project/.sdk/tm/ts/src/utility/BodyUtility.ts +0 -29
- package/project/.sdk/tm/ts/src/utility/ContextUtility.ts +0 -67
- package/project/.sdk/tm/ts/src/utility/FullurlUtility.ts +0 -46
- package/project/.sdk/tm/ts/src/utility/InitfeatureUtility.ts +0 -13
- package/project/.sdk/tm/ts/src/utility/JoinurlUtility.ts +0 -15
- package/project/.sdk/tm/ts/src/utility/OperatorUtility.ts +0 -90
- package/project/.sdk/tm/ts/src/utility/ParamsUtility.ts +0 -37
- package/project/.sdk/tm/ts/src/utility/QueryUtility.ts +0 -27
- package/project/.sdk/tm/ts/src/utility/RequestUtility.ts +0 -66
- package/project/.sdk/tm/ts/src/utility/ResbodyUtility.ts +0 -19
- package/project/.sdk/tm/ts/src/utility/ResheadersUtility.ts +0 -23
- package/project/.sdk/tm/ts/src/utility/ResponseUtility.ts +0 -30
- package/project/.sdk/tm/ts/src/utility/ResultUtility.ts +0 -36
- package/project/.sdk/tm/ts/src/utility/SpecUtility.ts +0 -61
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
File,
|
|
3
|
+
Content,
|
|
4
|
+
File,
|
|
5
|
+
cmp,
|
|
6
|
+
each,
|
|
7
|
+
omap,
|
|
5
8
|
} from '@voxgig/sdkgen'
|
|
6
9
|
|
|
7
10
|
|
|
11
|
+
import {
|
|
12
|
+
KIT,
|
|
13
|
+
Model,
|
|
14
|
+
getModelPath,
|
|
15
|
+
nom,
|
|
16
|
+
} from '@voxgig/apidef'
|
|
17
|
+
|
|
8
18
|
|
|
9
19
|
const Package = cmp(async function Package(props: any) {
|
|
10
|
-
const
|
|
11
|
-
const
|
|
20
|
+
const ctx$ = props.ctx$
|
|
21
|
+
const target = props.target
|
|
22
|
+
|
|
23
|
+
const model: Model = ctx$.model
|
|
24
|
+
|
|
25
|
+
const feature = getModelPath(model, `main.${KIT}.feature`)
|
|
12
26
|
|
|
13
27
|
const only = (kind: string, deps: any) =>
|
|
14
28
|
omap(deps, ([k, v]: any) => [v.active && kind === v.kind ? k : undefined, v.version])
|
|
@@ -18,7 +32,9 @@ const Package = cmp(async function Package(props: any) {
|
|
|
18
32
|
each(feature, (feature: any) =>
|
|
19
33
|
omap(feature.deps?.[target.name], ([k, v]: any) =>
|
|
20
34
|
[v.active ? k : undefined, v]))
|
|
35
|
+
|
|
21
36
|
// TODO: sort by version; rules for version choice?
|
|
37
|
+
// TODO: non-node dep kinds
|
|
22
38
|
.reduce((a: any, deps: any) => (each(deps, (dep: any) =>
|
|
23
39
|
a[dep.kind][dep.key$] = dep.version), a),
|
|
24
40
|
{
|
|
@@ -28,6 +44,7 @@ const Package = cmp(async function Package(props: any) {
|
|
|
28
44
|
})
|
|
29
45
|
|
|
30
46
|
const sdkname = model.name
|
|
47
|
+
const SdkName = nom(model, 'Name')
|
|
31
48
|
const origin = null == model.origin ? '' : `@${model.origin}/`
|
|
32
49
|
const sdknamesuffix = model.origin?.endsWith('-sdk') ? '' : '-sdk'
|
|
33
50
|
|
|
@@ -36,13 +53,13 @@ const Package = cmp(async function Package(props: any) {
|
|
|
36
53
|
name: `${origin}${sdkname}${sdknamesuffix}`,
|
|
37
54
|
version: `0.0.1`,
|
|
38
55
|
description: 'DESCRIPTION',
|
|
39
|
-
main: `dist/${
|
|
56
|
+
main: `dist/${SdkName}SDK.js`,
|
|
40
57
|
type: 'commonjs',
|
|
41
|
-
types: `dist/${
|
|
58
|
+
types: `dist/${SdkName}SDK.d.ts`,
|
|
42
59
|
scripts: {
|
|
43
|
-
'test': 'node --enable-source-maps --test dist-test/**/*.test.js',
|
|
44
|
-
'test-some': 'node --enable-source-maps ' +
|
|
45
|
-
'--test-name-pattern=\"$
|
|
60
|
+
'test': 'node --enable-source-maps --test \'dist-test/**/*.test.js\'',
|
|
61
|
+
'test-some': 'node --enable-source-maps --experimental-test-isolation=none ' +
|
|
62
|
+
'--test-name-pattern=\"$TEST_PATTERN\" --test \'dist-test/**/*.test.js\'',
|
|
46
63
|
'test-utility': 'node --enable-source-maps --test test/utility/*.test.ts',
|
|
47
64
|
|
|
48
65
|
"watch": "tsc --build src test -w",
|
|
@@ -50,14 +67,16 @@ const Package = cmp(async function Package(props: any) {
|
|
|
50
67
|
"clean": "rm -rf node_modules yarn.lock package-lock.json",
|
|
51
68
|
"reset": "npm run clean && npm i && npm run build && npm test",
|
|
52
69
|
},
|
|
53
|
-
author: `${
|
|
70
|
+
author: `${SdkName}`,
|
|
71
|
+
|
|
72
|
+
// TODO: needs to be config
|
|
54
73
|
license: 'MIT',
|
|
74
|
+
|
|
55
75
|
dependencies: deps.prod,
|
|
56
76
|
peerDependencies: deps.peer,
|
|
57
77
|
devDependencies: deps.dev,
|
|
58
78
|
}
|
|
59
79
|
|
|
60
|
-
|
|
61
80
|
File({ name: 'package.json' }, () => {
|
|
62
81
|
Content(JSON.stringify(pkg, null, 2))
|
|
63
82
|
})
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
|
|
2
|
+
import * as Path from 'node:path'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
File,
|
|
7
|
+
Fragment,
|
|
8
|
+
cmp,
|
|
9
|
+
} from '@voxgig/sdkgen'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
import {
|
|
13
|
+
Model,
|
|
14
|
+
} from '@voxgig/apidef'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
const SdkError = cmp(async function SdkError(props: any) {
|
|
20
|
+
const ctx$ = props.ctx$
|
|
21
|
+
const target = props.target
|
|
22
|
+
|
|
23
|
+
const model: Model = ctx$.model
|
|
24
|
+
|
|
25
|
+
const ff = Path.normalize(__dirname + '/../../../src/cmp/ts/fragment/')
|
|
26
|
+
|
|
27
|
+
File({ name: model.const.Name + 'Error.' + target.ext }, () => {
|
|
28
|
+
|
|
29
|
+
Fragment({
|
|
30
|
+
from: ff + 'SdkError.fragment.ts',
|
|
31
|
+
|
|
32
|
+
replace: {
|
|
33
|
+
...ctx$.stdrep,
|
|
34
|
+
}
|
|
35
|
+
})
|
|
36
|
+
})
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
export {
|
|
41
|
+
SdkError
|
|
42
|
+
}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
|
|
2
|
+
import {
|
|
3
|
+
nom,
|
|
4
|
+
} from '@voxgig/apidef'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
import {
|
|
8
|
+
Content,
|
|
9
|
+
File,
|
|
10
|
+
Folder,
|
|
11
|
+
Fragment,
|
|
12
|
+
Slot,
|
|
13
|
+
cmp,
|
|
14
|
+
} from '@voxgig/sdkgen'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
projectPath
|
|
19
|
+
} from './utility_ts'
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
const TestDirect = cmp(function TestDirect(props: any) {
|
|
23
|
+
const ctx$ = props.ctx$
|
|
24
|
+
const model = ctx$.model
|
|
25
|
+
const stdrep = ctx$.stdrep
|
|
26
|
+
|
|
27
|
+
const target = props.target
|
|
28
|
+
const entity = props.entity
|
|
29
|
+
|
|
30
|
+
const ff = projectPath('src/cmp/ts/fragment/')
|
|
31
|
+
|
|
32
|
+
const PROJECTNAME = model.Name.toUpperCase()
|
|
33
|
+
const entidEnvVar = `${PROJECTNAME}_TEST_${entity.Name.toUpperCase()}_ENTID`
|
|
34
|
+
|
|
35
|
+
const opnames = Object.keys(entity.op)
|
|
36
|
+
const hasLoad = opnames.includes('load')
|
|
37
|
+
const hasList = opnames.includes('list')
|
|
38
|
+
|
|
39
|
+
if (!hasLoad && !hasList) {
|
|
40
|
+
return
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
Folder({ name: entity.name }, () => {
|
|
44
|
+
|
|
45
|
+
File({ name: nom(entity, 'Name') + 'Direct.test.' + target.name }, () => {
|
|
46
|
+
|
|
47
|
+
Fragment({
|
|
48
|
+
from: ff + 'Direct.test.fragment.ts',
|
|
49
|
+
replace: {
|
|
50
|
+
SdkName: nom(model.const, 'Name'),
|
|
51
|
+
EntityName: nom(entity, 'Name'),
|
|
52
|
+
entityname: entity.name,
|
|
53
|
+
...stdrep,
|
|
54
|
+
}
|
|
55
|
+
}, () => {
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
Slot({ name: 'directSetup' }, () => {
|
|
59
|
+
Content(`
|
|
60
|
+
function directSetup(mockres?: any) {
|
|
61
|
+
const calls: any[] = []
|
|
62
|
+
|
|
63
|
+
const env = envOverride({
|
|
64
|
+
'${entidEnvVar}': {},
|
|
65
|
+
'${PROJECTNAME}_TEST_LIVE': 'FALSE',
|
|
66
|
+
'${PROJECTNAME}_APIKEY': 'NONE',
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
const live = 'TRUE' === env.${PROJECTNAME}_TEST_LIVE
|
|
70
|
+
|
|
71
|
+
if (live) {
|
|
72
|
+
const client = new ${nom(model.const, 'Name')}SDK({
|
|
73
|
+
apikey: env.${PROJECTNAME}_APIKEY,
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
let idmap: any = env['${entidEnvVar}']
|
|
77
|
+
if ('string' === typeof idmap && idmap.startsWith('{')) {
|
|
78
|
+
idmap = JSON.parse(idmap)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return { client, calls, live, idmap }
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const mockFetch = async (url: string, init: any) => {
|
|
85
|
+
calls.push({ url, init })
|
|
86
|
+
return {
|
|
87
|
+
status: 200,
|
|
88
|
+
statusText: 'OK',
|
|
89
|
+
headers: {},
|
|
90
|
+
json: async () => (null != mockres ? mockres : { id: 'direct01' }),
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const client = new ${nom(model.const, 'Name')}SDK({
|
|
95
|
+
base: 'http://localhost:8080',
|
|
96
|
+
system: { fetch: mockFetch },
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
return { client, calls, live, idmap: {} as any }
|
|
100
|
+
}
|
|
101
|
+
`)
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
Slot({ name: 'direct' }, () => {
|
|
106
|
+
|
|
107
|
+
if (hasLoad) {
|
|
108
|
+
generateDirectLoad(model, entity)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (hasList) {
|
|
112
|
+
generateDirectList(model, entity)
|
|
113
|
+
}
|
|
114
|
+
})
|
|
115
|
+
|
|
116
|
+
})
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
function generateDirectLoad(model: any, entity: any) {
|
|
123
|
+
const loadOp = entity.op.load
|
|
124
|
+
const loadTarget = loadOp.targets[0]
|
|
125
|
+
|
|
126
|
+
if (null == loadTarget) {
|
|
127
|
+
return
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const loadPath = (loadTarget.parts || []).join('/')
|
|
131
|
+
const loadParams = loadTarget.args?.params || []
|
|
132
|
+
|
|
133
|
+
// Get list info for live mode bootstrapping
|
|
134
|
+
const listOp = entity.op.list
|
|
135
|
+
const listTarget = listOp?.targets?.[0]
|
|
136
|
+
const listPath = listTarget ? (listTarget.parts || []).join('/') : ''
|
|
137
|
+
const listParams = listTarget?.args?.params || []
|
|
138
|
+
const hasList = null != listTarget
|
|
139
|
+
|
|
140
|
+
// Ancestor params (not 'id') for live mode
|
|
141
|
+
const ancestorParams = loadParams.filter((p: any) => p.name !== 'id')
|
|
142
|
+
|
|
143
|
+
const paramAsserts = loadParams.map((p: any, i: number) =>
|
|
144
|
+
' assert(calls[0].url.includes(\'direct0' + (i + 1) + '\'))\n').join('')
|
|
145
|
+
|
|
146
|
+
// Build live list params
|
|
147
|
+
const liveListParams = listParams.map((p: any) => {
|
|
148
|
+
const key = p.name === 'id'
|
|
149
|
+
? entity.name + '01'
|
|
150
|
+
: p.name.replace(/_id$/, '') + '01'
|
|
151
|
+
return { name: p.name, key }
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
// Build live ancestor params for load
|
|
155
|
+
const liveAncestorParams = ancestorParams.map((p: any) => {
|
|
156
|
+
const key = p.name.replace(/_id$/, '') + '01'
|
|
157
|
+
return { name: p.name, key }
|
|
158
|
+
})
|
|
159
|
+
|
|
160
|
+
let liveParamsBlock = ''
|
|
161
|
+
if (hasList) {
|
|
162
|
+
const listParamLines = liveListParams.map((lp: any) =>
|
|
163
|
+
` ${lp.name}: setup.idmap['${lp.key}'],`).join('\n')
|
|
164
|
+
const ancestorParamLines = liveAncestorParams.map((lp: any) =>
|
|
165
|
+
` params.${lp.name} = setup.idmap['${lp.key}']`).join('\n')
|
|
166
|
+
|
|
167
|
+
liveParamsBlock = ` if (setup.live) {
|
|
168
|
+
const listResult: any = await client.direct({
|
|
169
|
+
path: '${listPath}',
|
|
170
|
+
method: 'GET',
|
|
171
|
+
params: {
|
|
172
|
+
${listParamLines}
|
|
173
|
+
},
|
|
174
|
+
})
|
|
175
|
+
assert(listResult.ok === true)
|
|
176
|
+
const listData = listResult.data
|
|
177
|
+
if (!Array.isArray(listData) || listData.length === 0) {
|
|
178
|
+
return // skip: no entities to load in live mode
|
|
179
|
+
}
|
|
180
|
+
params.id = listData[0].id
|
|
181
|
+
${ancestorParamLines}
|
|
182
|
+
} else {
|
|
183
|
+
${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i + 1}'`).join('\n')}
|
|
184
|
+
}`
|
|
185
|
+
} else {
|
|
186
|
+
liveParamsBlock = ` if (!setup.live) {
|
|
187
|
+
${loadParams.map((p: any, i: number) => ` params.${p.name} = 'direct0${i + 1}'`).join('\n')}
|
|
188
|
+
}`
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
Content(`
|
|
192
|
+
test('direct-load-${entity.name}', async () => {
|
|
193
|
+
const setup = directSetup({ id: 'direct01' })
|
|
194
|
+
const { client, calls } = setup
|
|
195
|
+
|
|
196
|
+
const params: any = {}
|
|
197
|
+
${liveParamsBlock}
|
|
198
|
+
|
|
199
|
+
const result: any = await client.direct({
|
|
200
|
+
path: '${loadPath}',
|
|
201
|
+
method: 'GET',
|
|
202
|
+
params,
|
|
203
|
+
})
|
|
204
|
+
|
|
205
|
+
assert(result.ok === true)
|
|
206
|
+
assert(result.status === 200)
|
|
207
|
+
assert(null != result.data)
|
|
208
|
+
|
|
209
|
+
if (!setup.live) {
|
|
210
|
+
assert(result.data.id === 'direct01')
|
|
211
|
+
assert(calls.length === 1)
|
|
212
|
+
assert(calls[0].init.method === 'GET')
|
|
213
|
+
${paramAsserts} }
|
|
214
|
+
})
|
|
215
|
+
`)
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
function generateDirectList(model: any, entity: any) {
|
|
220
|
+
const listOp = entity.op.list
|
|
221
|
+
const listTarget = listOp.targets[0]
|
|
222
|
+
|
|
223
|
+
if (null == listTarget) {
|
|
224
|
+
return
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
const listPath = (listTarget.parts || []).join('/')
|
|
228
|
+
const listParams = listTarget.args?.params || []
|
|
229
|
+
|
|
230
|
+
// Build live params
|
|
231
|
+
const liveParams = listParams.map((p: any) => {
|
|
232
|
+
const key = p.name === 'id'
|
|
233
|
+
? entity.name + '01'
|
|
234
|
+
: p.name.replace(/_id$/, '') + '01'
|
|
235
|
+
return { name: p.name, key }
|
|
236
|
+
})
|
|
237
|
+
|
|
238
|
+
const paramAsserts = listParams.map((p: any, i: number) =>
|
|
239
|
+
' assert(calls[0].url.includes(\'direct0' + (i + 1) + '\'))\n').join('')
|
|
240
|
+
|
|
241
|
+
let paramsBlock = ''
|
|
242
|
+
if (listParams.length > 0) {
|
|
243
|
+
const liveLines = liveParams.map((lp: any) =>
|
|
244
|
+
` params.${lp.name} = setup.idmap['${lp.key}']`).join('\n')
|
|
245
|
+
const mockLines = listParams.map((p: any, i: number) =>
|
|
246
|
+
` params.${p.name} = 'direct0${i + 1}'`).join('\n')
|
|
247
|
+
|
|
248
|
+
paramsBlock = ` const params: any = {}
|
|
249
|
+
if (setup.live) {
|
|
250
|
+
${liveLines}
|
|
251
|
+
} else {
|
|
252
|
+
${mockLines}
|
|
253
|
+
}
|
|
254
|
+
`
|
|
255
|
+
} else {
|
|
256
|
+
paramsBlock = ` const params: any = {}
|
|
257
|
+
`
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
Content(`
|
|
261
|
+
test('direct-list-${entity.name}', async () => {
|
|
262
|
+
const setup = directSetup([{ id: 'direct01' }, { id: 'direct02' }])
|
|
263
|
+
const { client, calls } = setup
|
|
264
|
+
|
|
265
|
+
${paramsBlock}
|
|
266
|
+
const result: any = await client.direct({
|
|
267
|
+
path: '${listPath}',
|
|
268
|
+
method: 'GET',
|
|
269
|
+
params,
|
|
270
|
+
})
|
|
271
|
+
|
|
272
|
+
assert(result.ok === true)
|
|
273
|
+
assert(result.status === 200)
|
|
274
|
+
assert(Array.isArray(result.data))
|
|
275
|
+
|
|
276
|
+
if (!setup.live) {
|
|
277
|
+
assert(result.data.length === 2)
|
|
278
|
+
assert(calls.length === 1)
|
|
279
|
+
assert(calls[0].init.method === 'GET')
|
|
280
|
+
${paramAsserts} }
|
|
281
|
+
})
|
|
282
|
+
`)
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
export {
|
|
287
|
+
TestDirect
|
|
288
|
+
}
|