@voxgig/apidef 3.3.1 → 3.5.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/dist/apidef.d.ts +1 -1
- package/dist/builder/flow/flowHeuristic01.js +4 -4
- package/dist/builder/flow/flowHeuristic01.js.map +1 -1
- package/dist/guide/heuristic01.js +9 -14
- package/dist/guide/heuristic01.js.map +1 -1
- package/dist/model.d.ts +4 -4
- package/dist/transform/args.js +8 -7
- package/dist/transform/args.js.map +1 -1
- package/dist/transform/clean.js +2 -1
- package/dist/transform/clean.js.map +1 -1
- package/dist/transform/field.js +10 -10
- package/dist/transform/field.js.map +1 -1
- package/dist/transform/flowstep.js +20 -14
- package/dist/transform/flowstep.js.map +1 -1
- package/dist/transform/operation.js +5 -5
- package/dist/transform/operation.js.map +1 -1
- package/dist/transform/select.js +12 -12
- package/dist/transform/select.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/model/apidef.jsonic +3 -2
- package/model/guide.jsonic +5 -1
- package/package.json +4 -4
- package/src/apidef.ts +1 -1
- package/src/builder/flow/flowHeuristic01.ts +5 -5
- package/src/guide/heuristic01.ts +10 -20
- package/src/model.ts +5 -5
- package/src/transform/args.ts +9 -8
- package/src/transform/clean.ts +2 -1
- package/src/transform/field.ts +11 -11
- package/src/transform/flowstep.ts +21 -14
- package/src/transform/operation.ts +6 -6
- package/src/transform/select.ts +13 -13
- package/src/types.ts +1 -1
|
@@ -86,9 +86,9 @@ function resolveOp(opname, gent) {
|
|
|
86
86
|
if (opdesc) {
|
|
87
87
|
mop = {
|
|
88
88
|
name: opname,
|
|
89
|
-
|
|
89
|
+
targets: opdesc.paths.map((p) => {
|
|
90
90
|
const parts = applyRename(p);
|
|
91
|
-
const
|
|
91
|
+
const mtarget = {
|
|
92
92
|
orig: p.orig,
|
|
93
93
|
parts,
|
|
94
94
|
rename: p.rename,
|
|
@@ -99,9 +99,9 @@ function resolveOp(opname, gent) {
|
|
|
99
99
|
exist: []
|
|
100
100
|
}
|
|
101
101
|
};
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return
|
|
102
|
+
mtarget.transform.req = mtarget.transform.req ?? '`reqdata`';
|
|
103
|
+
mtarget.transform.res = mtarget.transform.res ?? '`body`';
|
|
104
|
+
return mtarget;
|
|
105
105
|
})
|
|
106
106
|
};
|
|
107
107
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/transform/operation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/transform/operation.ts"],"names":[],"mappings":"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"}
|
package/dist/transform/select.js
CHANGED
|
@@ -9,12 +9,12 @@ const selectTransform = async function (ctx) {
|
|
|
9
9
|
let msg = 'select ';
|
|
10
10
|
(0, jostraca_1.each)(kit.entity, (ment, _entname) => {
|
|
11
11
|
(0, jostraca_1.each)(ment.op, (mop, _opname) => {
|
|
12
|
-
(0, jostraca_1.each)(mop.
|
|
13
|
-
const pdef = def.paths[
|
|
14
|
-
resolveSelect(guide, ment, mop,
|
|
12
|
+
(0, jostraca_1.each)(mop.targets, (mtarget) => {
|
|
13
|
+
const pdef = def.paths[mtarget.orig];
|
|
14
|
+
resolveSelect(guide, ment, mop, mtarget, pdef);
|
|
15
15
|
});
|
|
16
|
-
if (null != mop.
|
|
17
|
-
|
|
16
|
+
if (null != mop.targets && 0 < mop.targets.length) {
|
|
17
|
+
sortTargets(guide, ment, mop);
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
msg += ment.name + ' ';
|
|
@@ -22,10 +22,10 @@ const selectTransform = async function (ctx) {
|
|
|
22
22
|
return { ok: true, msg };
|
|
23
23
|
};
|
|
24
24
|
exports.selectTransform = selectTransform;
|
|
25
|
-
function resolveSelect(guide, ment, _mop,
|
|
26
|
-
const select =
|
|
27
|
-
const margs =
|
|
28
|
-
const argkinds = ['
|
|
25
|
+
function resolveSelect(guide, ment, _mop, mtarget, _pdef) {
|
|
26
|
+
const select = mtarget.select;
|
|
27
|
+
const margs = mtarget.args;
|
|
28
|
+
const argkinds = ['params', 'query', 'header', 'cookie'];
|
|
29
29
|
argkinds.map((kind) => {
|
|
30
30
|
(0, jostraca_1.each)(margs[kind], (marg) => {
|
|
31
31
|
if (!select.exist.includes(marg.name)) {
|
|
@@ -35,7 +35,7 @@ function resolveSelect(guide, ment, _mop, malt, _pdef) {
|
|
|
35
35
|
});
|
|
36
36
|
select.exist.sort();
|
|
37
37
|
const gent = guide.entity[ment.name];
|
|
38
|
-
const gpath = gent.path[
|
|
38
|
+
const gpath = gent.path[mtarget.orig];
|
|
39
39
|
if (gpath.action) {
|
|
40
40
|
const actname = Object.keys(gpath.action)[0];
|
|
41
41
|
if (null != actname) {
|
|
@@ -43,8 +43,8 @@ function resolveSelect(guide, ment, _mop, malt, _pdef) {
|
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
-
function
|
|
47
|
-
mop.
|
|
46
|
+
function sortTargets(_guide, _ment, mop) {
|
|
47
|
+
mop.targets.sort((a, b) => {
|
|
48
48
|
// longest exist len first
|
|
49
49
|
let order = b.select.exist.length - a.select.exist.length;
|
|
50
50
|
if (0 === order) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/transform/select.ts"],"names":[],"mappings":";;;AAEA,uCAA+B;AAK/B,oCAA8B;AAqB9B,MAAM,eAAe,GAAc,KAAK,WACtC,GAAQ;IAER,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAA;IACpC,MAAM,GAAG,GAAa,QAAQ,CAAC,IAAI,CAAC,WAAG,CAAC,CAAA;IAExC,IAAI,GAAG,GAAG,SAAS,CAAA;IAEnB,IAAA,eAAI,EAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAiB,EAAE,QAAgB,EAAE,EAAE;QACvD,IAAA,eAAI,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAY,EAAE,OAAe,EAAE,EAAE;YAC9C,IAAA,eAAI,EAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/transform/select.ts"],"names":[],"mappings":";;;AAEA,uCAA+B;AAK/B,oCAA8B;AAqB9B,MAAM,eAAe,GAAc,KAAK,WACtC,GAAQ;IAER,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAA;IACpC,MAAM,GAAG,GAAa,QAAQ,CAAC,IAAI,CAAC,WAAG,CAAC,CAAA;IAExC,IAAI,GAAG,GAAG,SAAS,CAAA;IAEnB,IAAA,eAAI,EAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAiB,EAAE,QAAgB,EAAE,EAAE;QACvD,IAAA,eAAI,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAY,EAAE,OAAe,EAAE,EAAE;YAC9C,IAAA,eAAI,EAAC,GAAG,CAAC,OAAO,EAAE,CAAC,OAAoB,EAAE,EAAE;gBACzC,MAAM,IAAI,GAAY,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;gBAC7C,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAA;YAChD,CAAC,CAAC,CAAA;YACF,IAAI,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClD,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;YAC/B,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAA;IACxB,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;AAC1B,CAAC,CAAA;AAkEC,0CAAe;AA/DjB,SAAS,aAAa,CACpB,KAAY,EACZ,IAAiB,EACjB,IAAa,EACb,OAAoB,EACpB,KAAc;IAEd,MAAM,MAAM,GAAQ,OAAO,CAAC,MAAM,CAAA;IAClC,MAAM,KAAK,GAAQ,OAAO,CAAC,IAAI,CAAA;IAE/B,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAExD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE;QAC5B,IAAA,eAAI,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAc,EAAE,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAA;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAErC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAE5C,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;QAC1B,CAAC;IACH,CAAC;AAEH,CAAC;AAGD,SAAS,WAAW,CAClB,MAAa,EACb,KAAkB,EAClB,GAAY;IAEZ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAc,EAAE,CAAc,EAAE,EAAE;QAClD,0BAA0B;QAC1B,IAAI,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAA;QACzD,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YAChB,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACzD,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAChD,CAAC,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/C,CAAC;YAED,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;gBAChB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC7C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC7C,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACtC,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACrC,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1102,4 +1102,4 @@ type GuidePathOp = {
|
|
|
1102
1102
|
export { KIT, OpenControlShape, OpenModelShape, OpenBuildShape, };
|
|
1103
1103
|
export type { Guide, GuideMetrics, GuideEntity, GuidePath, GuidePathAction, GuideRenameParam, GuidePathOp, KitModel, MethodName, TypeName, Log, FsUtil, ApiDefOptions, ApiDefResult, Control, Model, Build, ApiModel, ApiDefContext, Warner, Metrics, };
|
|
1104
1104
|
export type { CmpDesc, BasicMethodDesc, MethodDesc, MethodEntityDesc, EntityDesc, EntityPathDesc, PathDesc, OpDesc, } from './desc';
|
|
1105
|
-
export type { OpName, ModelEntityRelations, ModelOpMap, ModelFieldOp, ModelField, ModelArg,
|
|
1105
|
+
export type { OpName, ModelEntityRelations, ModelOpMap, ModelFieldOp, ModelField, ModelArg, ModelTarget, ModelOp, ModelEntity, } from './model';
|
package/model/apidef.jsonic
CHANGED
|
@@ -29,8 +29,9 @@ main: kit: entity: &: {
|
|
|
29
29
|
|
|
30
30
|
op: &: {
|
|
31
31
|
name: string
|
|
32
|
+
input: *'data'
|
|
32
33
|
|
|
33
|
-
|
|
34
|
+
targets: [ &: {
|
|
34
35
|
|
|
35
36
|
active: *true
|
|
36
37
|
|
|
@@ -41,7 +42,7 @@ main: kit: entity: &: {
|
|
|
41
42
|
parts: [ &: string ]
|
|
42
43
|
|
|
43
44
|
args: {
|
|
44
|
-
|
|
45
|
+
params: [ &: {
|
|
45
46
|
active: *true
|
|
46
47
|
kind: string
|
|
47
48
|
name: string
|
package/model/guide.jsonic
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voxgig/apidef",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"main": "dist/apidef.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/apidef.d.ts",
|
|
@@ -42,13 +42,13 @@
|
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@hapi/code": "^9.0.3",
|
|
44
44
|
"@types/js-yaml": "^4.0.9",
|
|
45
|
-
"@types/node": "25.
|
|
45
|
+
"@types/node": "25.5.0",
|
|
46
46
|
"json-schema-to-ts": "^3.1.1",
|
|
47
47
|
"typescript": "^5.9.3"
|
|
48
48
|
},
|
|
49
49
|
"peerDependencies": {
|
|
50
|
-
"aontu": ">=0.
|
|
51
|
-
"memfs": ">=4.56.
|
|
50
|
+
"aontu": ">=0.37.0",
|
|
51
|
+
"memfs": ">=4.56.11"
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
54
|
"@redocly/openapi-core": "1.34.6",
|
package/src/apidef.ts
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
import type {
|
|
18
18
|
ModelEntity,
|
|
19
19
|
ModelOp,
|
|
20
|
-
|
|
20
|
+
ModelTarget,
|
|
21
21
|
} from '../../model'
|
|
22
22
|
|
|
23
23
|
import {
|
|
@@ -105,10 +105,10 @@ function resolveBasicEntityFlow(ctx: any, entity: any) {
|
|
|
105
105
|
|
|
106
106
|
if (entop.load) {
|
|
107
107
|
|
|
108
|
-
const
|
|
108
|
+
const target = findMainLoadTarget(entop.load)
|
|
109
109
|
|
|
110
110
|
// Get additional required match properties
|
|
111
|
-
each(
|
|
111
|
+
each(target?.args.params, (param: any) => {
|
|
112
112
|
if (param.required) {
|
|
113
113
|
let ancestorName = param.name
|
|
114
114
|
let ancestorEntity = apimodel.main.api.entity[ancestorName]
|
|
@@ -196,8 +196,8 @@ function resolveBasicEntityFlow(ctx: any, entity: any) {
|
|
|
196
196
|
}
|
|
197
197
|
|
|
198
198
|
|
|
199
|
-
function
|
|
200
|
-
let cands = op.
|
|
199
|
+
function findMainLoadTarget(op: ModelOp): ModelTarget | undefined {
|
|
200
|
+
let cands = op.targets.filter(a => '{id}' === getelem(a.parts, -1))
|
|
201
201
|
return cands[0]
|
|
202
202
|
}
|
|
203
203
|
|
package/src/guide/heuristic01.ts
CHANGED
|
@@ -375,26 +375,16 @@ function ResolveEntityComponent(spec: TaskSpec) {
|
|
|
375
375
|
let cleanxrefs = cmpxrefs
|
|
376
376
|
.map(xref => {
|
|
377
377
|
|
|
378
|
-
//
|
|
379
|
-
|
|
380
|
-
const
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
xref.cmp === lastPartCanon + '_response'
|
|
389
|
-
|| xref.cmp === lastPartCanon + '_request'
|
|
390
|
-
|| origcmpLower === lastPartLower + 'response'
|
|
391
|
-
|| origcmpLower === lastPartLower + 'request'
|
|
392
|
-
)
|
|
393
|
-
) {
|
|
394
|
-
let cparts = xref.cmp.split('_')
|
|
395
|
-
|
|
396
|
-
// rec-canonize to deal with plural before removed suffix
|
|
397
|
-
xref.cmp = canonize(cparts.slice(0, cparts.length - 1).join('_'))
|
|
378
|
+
// Remove known schema suffixes: _response, _request
|
|
379
|
+
const knownSuffixes = ['_response', '_request']
|
|
380
|
+
for (const suffix of knownSuffixes) {
|
|
381
|
+
if (xref.cmp.endsWith(suffix)) {
|
|
382
|
+
let cparts = xref.cmp.split('_')
|
|
383
|
+
|
|
384
|
+
// re-canonize to deal with plural before removed suffix
|
|
385
|
+
xref.cmp = canonize(cparts.slice(0, cparts.length - 1).join('_'))
|
|
386
|
+
break
|
|
387
|
+
}
|
|
398
388
|
}
|
|
399
389
|
|
|
400
390
|
return xref
|
package/src/model.ts
CHANGED
|
@@ -62,8 +62,8 @@ type ModelArg = {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
|
|
65
|
-
//
|
|
66
|
-
type
|
|
65
|
+
// Target implementation of an operation
|
|
66
|
+
type ModelTarget = {
|
|
67
67
|
orig: string
|
|
68
68
|
method: MethodName
|
|
69
69
|
parts: string[]
|
|
@@ -74,7 +74,7 @@ type ModelAlt = {
|
|
|
74
74
|
cookie: Record<string, string>
|
|
75
75
|
}>
|
|
76
76
|
args: Partial<{
|
|
77
|
-
|
|
77
|
+
params: ModelArg[]
|
|
78
78
|
query: ModelArg[]
|
|
79
79
|
header: ModelArg[]
|
|
80
80
|
cookie: ModelArg[]
|
|
@@ -93,7 +93,7 @@ type ModelAlt = {
|
|
|
93
93
|
// Operation definition
|
|
94
94
|
type ModelOp = {
|
|
95
95
|
name: OpName
|
|
96
|
-
|
|
96
|
+
targets: ModelTarget[]
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
|
|
@@ -143,7 +143,7 @@ export type {
|
|
|
143
143
|
ModelFieldOp,
|
|
144
144
|
ModelField,
|
|
145
145
|
ModelArg,
|
|
146
|
-
|
|
146
|
+
ModelTarget,
|
|
147
147
|
ModelOp,
|
|
148
148
|
ModelEntity,
|
|
149
149
|
ModelEntityFlow,
|
package/src/transform/args.ts
CHANGED
|
@@ -21,7 +21,7 @@ import type {
|
|
|
21
21
|
OpName,
|
|
22
22
|
ModelOp,
|
|
23
23
|
ModelEntity,
|
|
24
|
-
|
|
24
|
+
ModelTarget,
|
|
25
25
|
ModelArg,
|
|
26
26
|
} from '../model'
|
|
27
27
|
|
|
@@ -38,16 +38,16 @@ const argsTransform: Transform = async function(
|
|
|
38
38
|
|
|
39
39
|
each(kit.entity, (ment: ModelEntity, entname: string) => {
|
|
40
40
|
each(ment.op, (mop: ModelOp, opname: OpName) => {
|
|
41
|
-
each(mop.
|
|
41
|
+
each(mop.targets, (mtarget: ModelTarget) => {
|
|
42
42
|
const argdefs: ParameterDef[] = []
|
|
43
43
|
|
|
44
|
-
const pathdef: PathDef = def.paths[
|
|
44
|
+
const pathdef: PathDef = def.paths[mtarget.orig]
|
|
45
45
|
argdefs.push(...(pathdef.parameters ?? []))
|
|
46
46
|
|
|
47
|
-
const opdef: MethodDef = (pathdef as any)[
|
|
47
|
+
const opdef: MethodDef = (pathdef as any)[mtarget.method.toLowerCase()]
|
|
48
48
|
argdefs.push(...(opdef.parameters ?? []))
|
|
49
49
|
|
|
50
|
-
resolveArgs(ment, mop,
|
|
50
|
+
resolveArgs(ment, mop, mtarget, argdefs)
|
|
51
51
|
})
|
|
52
52
|
|
|
53
53
|
})
|
|
@@ -67,11 +67,11 @@ const ARG_KIND: Record<string, ModelArg["kind"]> = {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
function resolveArgs(ment: ModelEntity, mop: ModelOp,
|
|
70
|
+
function resolveArgs(ment: ModelEntity, mop: ModelOp, mtarget: ModelTarget, argdefs: ParameterDef[]) {
|
|
71
71
|
each(argdefs, (argdef: ParameterDef) => {
|
|
72
72
|
const orig = depluralize(snakify(argdef.name))
|
|
73
73
|
const kind = ARG_KIND[argdef.in] ?? 'query'
|
|
74
|
-
const name =
|
|
74
|
+
const name = mtarget.rename[kind]?.[orig] ?? orig
|
|
75
75
|
const marg: ModelArg = {
|
|
76
76
|
name,
|
|
77
77
|
orig,
|
|
@@ -85,7 +85,8 @@ function resolveArgs(ment: ModelEntity, mop: ModelOp, malt: ModelAlt, argdefs: P
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
// insert sorted by name
|
|
88
|
-
|
|
88
|
+
const argsKey = (marg.kind === 'param' ? 'params' : marg.kind) as keyof typeof mtarget.args
|
|
89
|
+
let kindargs = (mtarget.args[argsKey] = mtarget.args[argsKey] ?? [])
|
|
89
90
|
kindargs.push(marg)
|
|
90
91
|
kindargs.sort((a: ModelArg, b: ModelArg) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)
|
|
91
92
|
})
|
package/src/transform/clean.ts
CHANGED
|
@@ -40,7 +40,7 @@ const cleanTransform: Transform = async function(
|
|
|
40
40
|
return v
|
|
41
41
|
},
|
|
42
42
|
|
|
43
|
-
(k: any,
|
|
43
|
+
(k: any, v: any, _p: any, ancestors: any) => {
|
|
44
44
|
const pi = cur[ancestors.length - 1]
|
|
45
45
|
if (undefined !== pi) {
|
|
46
46
|
const vi = pi[k]
|
|
@@ -48,6 +48,7 @@ const cleanTransform: Transform = async function(
|
|
|
48
48
|
delete pi[k]
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
|
+
return v
|
|
51
52
|
}
|
|
52
53
|
)
|
|
53
54
|
|
package/src/transform/field.ts
CHANGED
|
@@ -20,7 +20,7 @@ import type {
|
|
|
20
20
|
OpName,
|
|
21
21
|
ModelOp,
|
|
22
22
|
ModelEntity,
|
|
23
|
-
|
|
23
|
+
ModelTarget,
|
|
24
24
|
ModelField,
|
|
25
25
|
} from '../model'
|
|
26
26
|
|
|
@@ -43,10 +43,10 @@ const fieldTransform: Transform = async function(
|
|
|
43
43
|
for (let opname of opFieldPrecedence) {
|
|
44
44
|
const mop = ment.op[opname]
|
|
45
45
|
if (mop) {
|
|
46
|
-
const
|
|
46
|
+
const mtargets = mop.targets
|
|
47
47
|
|
|
48
|
-
for (let
|
|
49
|
-
const opfields = resolveOpFields(ment, mop,
|
|
48
|
+
for (let mtarget of mtargets) {
|
|
49
|
+
const opfields = resolveOpFields(ment, mop, mtarget, def)
|
|
50
50
|
|
|
51
51
|
for (let opfield of opfields) {
|
|
52
52
|
if (!seen[opfield.name]) {
|
|
@@ -54,7 +54,7 @@ const fieldTransform: Transform = async function(
|
|
|
54
54
|
seen[opfield.name] = opfield
|
|
55
55
|
}
|
|
56
56
|
else {
|
|
57
|
-
mergeField(ment, mop,
|
|
57
|
+
mergeField(ment, mop, mtarget, def, seen[opfield.name], opfield)
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -76,11 +76,11 @@ const fieldTransform: Transform = async function(
|
|
|
76
76
|
function resolveOpFields(
|
|
77
77
|
ment: ModelEntity,
|
|
78
78
|
mop: ModelOp,
|
|
79
|
-
|
|
79
|
+
mtarget: ModelTarget,
|
|
80
80
|
def: any
|
|
81
81
|
): ModelField[] {
|
|
82
82
|
const mfields: ModelField[] = []
|
|
83
|
-
const fielddefs = findFieldDefs(ment, mop,
|
|
83
|
+
const fielddefs = findFieldDefs(ment, mop, mtarget, def)
|
|
84
84
|
|
|
85
85
|
for (let fielddef of fielddefs) {
|
|
86
86
|
const fieldname = (fielddef as any).key$ as string
|
|
@@ -100,13 +100,13 @@ function resolveOpFields(
|
|
|
100
100
|
function findFieldDefs(
|
|
101
101
|
_ment: ModelEntity,
|
|
102
102
|
mop: ModelOp,
|
|
103
|
-
|
|
103
|
+
mtarget: ModelTarget,
|
|
104
104
|
def: any
|
|
105
105
|
): SchemaDef[] {
|
|
106
106
|
const fielddefs: SchemaDef[] = []
|
|
107
|
-
const pathdef = def.paths[
|
|
107
|
+
const pathdef = def.paths[mtarget.orig]
|
|
108
108
|
|
|
109
|
-
const method =
|
|
109
|
+
const method = mtarget.method.toLowerCase()
|
|
110
110
|
const opdef: any = pathdef[method]
|
|
111
111
|
|
|
112
112
|
if (opdef) {
|
|
@@ -160,7 +160,7 @@ function findFieldDefs(
|
|
|
160
160
|
function mergeField(
|
|
161
161
|
ment: ModelEntity,
|
|
162
162
|
mop: ModelOp,
|
|
163
|
-
|
|
163
|
+
mtarget: ModelTarget,
|
|
164
164
|
def: any,
|
|
165
165
|
exisingField: ModelField,
|
|
166
166
|
newField: ModelField
|
|
@@ -123,10 +123,17 @@ const createStep: MakeFlowStep = (
|
|
|
123
123
|
args: Record<string, any>
|
|
124
124
|
) => {
|
|
125
125
|
if (null != opmap.update) {
|
|
126
|
-
// Use last
|
|
127
|
-
const
|
|
126
|
+
// Use last target as most generic
|
|
127
|
+
const target = getelem(opmap.update.targets, -1)
|
|
128
128
|
const step = newFlowStep('create', args)
|
|
129
129
|
|
|
130
|
+
each(target.args.params, (param: any) => {
|
|
131
|
+
// id should not be here in the first place
|
|
132
|
+
if ('id' !== param.name) {
|
|
133
|
+
step.match[param.name] = args.input?.[param.name] ?? param.name.replace(/_id/, '') + '01'
|
|
134
|
+
}
|
|
135
|
+
})
|
|
136
|
+
|
|
130
137
|
flow.step.push(step)
|
|
131
138
|
}
|
|
132
139
|
}
|
|
@@ -139,11 +146,11 @@ const listStep: MakeFlowStep = (
|
|
|
139
146
|
args: Record<string, any>
|
|
140
147
|
) => {
|
|
141
148
|
if (null != opmap.list) {
|
|
142
|
-
// Use last
|
|
143
|
-
const
|
|
149
|
+
// Use last target as most generic
|
|
150
|
+
const target = getelem(opmap.list.targets, -1)
|
|
144
151
|
const step = newFlowStep('list', args)
|
|
145
152
|
|
|
146
|
-
each(
|
|
153
|
+
each(target.args.params, (param: any) => {
|
|
147
154
|
step.match[param.name] = args.input?.[param.name] ?? param.name.replace(/_id/, '') + '01'
|
|
148
155
|
})
|
|
149
156
|
|
|
@@ -159,11 +166,11 @@ const updateStep: MakeFlowStep = (
|
|
|
159
166
|
args: Record<string, any>
|
|
160
167
|
) => {
|
|
161
168
|
if (null != opmap.update) {
|
|
162
|
-
// Use last
|
|
163
|
-
const
|
|
169
|
+
// Use last target as most generic
|
|
170
|
+
const target = getelem(opmap.update.targets, -1)
|
|
164
171
|
const step = newFlowStep('update', args)
|
|
165
172
|
|
|
166
|
-
each(
|
|
173
|
+
each(target.args.params, (param: any) => {
|
|
167
174
|
if ('id' === param.name) {
|
|
168
175
|
step.data.id = args.input?.id ?? ent.name + '01'
|
|
169
176
|
}
|
|
@@ -184,11 +191,11 @@ const loadStep: MakeFlowStep = (
|
|
|
184
191
|
args: Record<string, any>
|
|
185
192
|
) => {
|
|
186
193
|
if (null != opmap.load) {
|
|
187
|
-
// Use last
|
|
188
|
-
const
|
|
194
|
+
// Use last target as most generic
|
|
195
|
+
const target = getelem(opmap.load.targets, -1)
|
|
189
196
|
const step = newFlowStep('load', args)
|
|
190
197
|
|
|
191
|
-
each(
|
|
198
|
+
each(target.args.params, (param: any) => {
|
|
192
199
|
if ('id' === param.name) {
|
|
193
200
|
step.match.id = args.input?.id ?? ent.name + '01'
|
|
194
201
|
}
|
|
@@ -209,11 +216,11 @@ const removeStep: MakeFlowStep = (
|
|
|
209
216
|
args: Record<string, any>
|
|
210
217
|
) => {
|
|
211
218
|
if (null != opmap.remove) {
|
|
212
|
-
// Use last
|
|
213
|
-
const
|
|
219
|
+
// Use last target as most generic
|
|
220
|
+
const target = getelem(opmap.remove.targets, -1)
|
|
214
221
|
const step = newFlowStep('remove', args)
|
|
215
222
|
|
|
216
|
-
each(
|
|
223
|
+
each(target.args.params, (param: any) => {
|
|
217
224
|
if ('id' === param.name) {
|
|
218
225
|
step.match.id = args.input?.id ?? ent.name + '01'
|
|
219
226
|
}
|
|
@@ -19,7 +19,7 @@ import type {
|
|
|
19
19
|
OpName,
|
|
20
20
|
ModelOpMap,
|
|
21
21
|
ModelOp,
|
|
22
|
-
|
|
22
|
+
ModelTarget,
|
|
23
23
|
} from '../model'
|
|
24
24
|
|
|
25
25
|
|
|
@@ -136,10 +136,10 @@ function resolveOp(opname: OpName, gent: GuideEntity): undefined | ModelOp {
|
|
|
136
136
|
if (opdesc) {
|
|
137
137
|
mop = {
|
|
138
138
|
name: opname,
|
|
139
|
-
|
|
139
|
+
targets: opdesc.paths.map((p: PathDesc) => {
|
|
140
140
|
const parts = applyRename(p)
|
|
141
141
|
|
|
142
|
-
const
|
|
142
|
+
const mtarget: ModelTarget = {
|
|
143
143
|
orig: p.orig,
|
|
144
144
|
parts,
|
|
145
145
|
rename: p.rename,
|
|
@@ -151,10 +151,10 @@ function resolveOp(opname: OpName, gent: GuideEntity): undefined | ModelOp {
|
|
|
151
151
|
}
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
mtarget.transform.req = mtarget.transform.req ?? '`reqdata`'
|
|
155
|
+
mtarget.transform.res = mtarget.transform.res ?? '`body`'
|
|
156
156
|
|
|
157
|
-
return
|
|
157
|
+
return mtarget
|
|
158
158
|
})
|
|
159
159
|
}
|
|
160
160
|
}
|
package/src/transform/select.ts
CHANGED
|
@@ -20,7 +20,7 @@ import type {
|
|
|
20
20
|
OpName,
|
|
21
21
|
ModelOp,
|
|
22
22
|
ModelEntity,
|
|
23
|
-
|
|
23
|
+
ModelTarget,
|
|
24
24
|
ModelArg,
|
|
25
25
|
} from '../model'
|
|
26
26
|
|
|
@@ -36,12 +36,12 @@ const selectTransform: Transform = async function(
|
|
|
36
36
|
|
|
37
37
|
each(kit.entity, (ment: ModelEntity, _entname: string) => {
|
|
38
38
|
each(ment.op, (mop: ModelOp, _opname: OpName) => {
|
|
39
|
-
each(mop.
|
|
40
|
-
const pdef: PathDef = def.paths[
|
|
41
|
-
resolveSelect(guide, ment, mop,
|
|
39
|
+
each(mop.targets, (mtarget: ModelTarget) => {
|
|
40
|
+
const pdef: PathDef = def.paths[mtarget.orig]
|
|
41
|
+
resolveSelect(guide, ment, mop, mtarget, pdef)
|
|
42
42
|
})
|
|
43
|
-
if (null != mop.
|
|
44
|
-
|
|
43
|
+
if (null != mop.targets && 0 < mop.targets.length) {
|
|
44
|
+
sortTargets(guide, ment, mop)
|
|
45
45
|
}
|
|
46
46
|
})
|
|
47
47
|
|
|
@@ -56,13 +56,13 @@ function resolveSelect(
|
|
|
56
56
|
guide: Guide,
|
|
57
57
|
ment: ModelEntity,
|
|
58
58
|
_mop: ModelOp,
|
|
59
|
-
|
|
59
|
+
mtarget: ModelTarget,
|
|
60
60
|
_pdef: PathDef
|
|
61
61
|
) {
|
|
62
|
-
const select: any =
|
|
63
|
-
const margs: any =
|
|
62
|
+
const select: any = mtarget.select
|
|
63
|
+
const margs: any = mtarget.args
|
|
64
64
|
|
|
65
|
-
const argkinds = ['
|
|
65
|
+
const argkinds = ['params', 'query', 'header', 'cookie']
|
|
66
66
|
|
|
67
67
|
argkinds.map((kind: string) => {
|
|
68
68
|
each(margs[kind], (marg: ModelArg) => {
|
|
@@ -75,7 +75,7 @@ function resolveSelect(
|
|
|
75
75
|
select.exist.sort()
|
|
76
76
|
|
|
77
77
|
const gent = guide.entity[ment.name]
|
|
78
|
-
const gpath = gent.path[
|
|
78
|
+
const gpath = gent.path[mtarget.orig]
|
|
79
79
|
|
|
80
80
|
if (gpath.action) {
|
|
81
81
|
const actname = Object.keys(gpath.action)[0]
|
|
@@ -88,12 +88,12 @@ function resolveSelect(
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
|
|
91
|
-
function
|
|
91
|
+
function sortTargets(
|
|
92
92
|
_guide: Guide,
|
|
93
93
|
_ment: ModelEntity,
|
|
94
94
|
mop: ModelOp,
|
|
95
95
|
) {
|
|
96
|
-
mop.
|
|
96
|
+
mop.targets.sort((a: ModelTarget, b: ModelTarget) => {
|
|
97
97
|
// longest exist len first
|
|
98
98
|
let order = b.select.exist.length - a.select.exist.length
|
|
99
99
|
if (0 === order) {
|