@voxgig/apidef 2.0.0 → 2.0.2
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.js +0 -19
- package/dist/apidef.js.map +1 -1
- package/dist/builder/flow/flowHeuristic01.js +37 -9
- package/dist/builder/flow/flowHeuristic01.js.map +1 -1
- package/dist/builder/flow.js +3 -3
- package/dist/builder/flow.js.map +1 -1
- package/dist/guide/heuristic01.js +51 -110
- package/dist/guide/heuristic01.js.map +1 -1
- package/dist/guide.js +2 -4
- package/dist/guide.js.map +1 -1
- package/dist/transform/entity.js +21 -2
- package/dist/transform/entity.js.map +1 -1
- package/dist/transform/operation.js +46 -27
- package/dist/transform/operation.js.map +1 -1
- package/dist/transform.js +1 -2
- package/dist/transform.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.js +3 -2
- package/dist/types.js.map +1 -1
- package/dist/utility.d.ts +2 -1
- package/dist/utility.js +61 -36
- package/dist/utility.js.map +1 -1
- package/package.json +4 -4
- package/src/apidef.ts +0 -31
- package/src/builder/flow/flowHeuristic01.ts +44 -9
- package/src/builder/flow.ts +4 -3
- package/src/guide/heuristic01.ts +76 -123
- package/src/guide.ts +2 -6
- package/src/transform/entity.ts +26 -3
- package/src/transform/operation.ts +90 -38
- package/src/transform.ts +1 -2
- package/src/types.ts +3 -2
- package/src/utility.ts +79 -1
- package/src/builder/flow/flowHeuristic01.ts~ +0 -45
package/dist/apidef.js
CHANGED
|
@@ -64,8 +64,6 @@ function ApiDef(opts) {
|
|
|
64
64
|
opts.strategy = opts.strategy || 'heuristic01';
|
|
65
65
|
async function generate(spec) {
|
|
66
66
|
const start = Date.now();
|
|
67
|
-
// console.log('APIDEF GENERATE')
|
|
68
|
-
// console.dir(spec, { depth: null })
|
|
69
67
|
const model = (0, types_1.OpenModelShape)(spec.model);
|
|
70
68
|
const build = (0, types_1.OpenBuildShape)(spec.build);
|
|
71
69
|
(0, jostraca_1.names)(model, model.name);
|
|
@@ -108,26 +106,10 @@ function ApiDef(opts) {
|
|
|
108
106
|
operation: operation_1.operationTransform,
|
|
109
107
|
field: field_1.fieldTransform,
|
|
110
108
|
});
|
|
111
|
-
// log.debug({
|
|
112
|
-
// point: 'transform', spec: transformSpec,
|
|
113
|
-
// note: log.levelVal <= 20 ? inspect(transformSpec) : ''
|
|
114
|
-
// })
|
|
115
|
-
// const processResult = await processTransforms(ctx, transforms, apimodel, def)
|
|
116
|
-
// if (!processResult.ok) {
|
|
117
|
-
// log.error({
|
|
118
|
-
// fail: 'process', point: 'transform-result',
|
|
119
|
-
// result: processResult, note: processResult.msg,
|
|
120
|
-
// err: processResult.results[0]?.err
|
|
121
|
-
// })
|
|
122
|
-
// return { ok: false, name: 'apidef', processResult }
|
|
123
|
-
// }
|
|
124
109
|
const builders = await (0, resolver_1.resolveElements)(ctx, 'builder', 'standard', {
|
|
125
110
|
entity: entity_2.makeEntityBuilder,
|
|
126
111
|
flow: flow_1.makeFlowBuilder,
|
|
127
112
|
});
|
|
128
|
-
// const entityBuilder = resolveEntity(apimodel, spec, opts)
|
|
129
|
-
// const entityBuilder = await resolveEntity(ctx)
|
|
130
|
-
// const flowBuilder = await resolveFlows(ctx)
|
|
131
113
|
const jostraca = (0, jostraca_1.Jostraca)({
|
|
132
114
|
now: spec.now,
|
|
133
115
|
fs: () => fs,
|
|
@@ -148,7 +130,6 @@ function ApiDef(opts) {
|
|
|
148
130
|
model: jmodel,
|
|
149
131
|
existing: { txt: { merge: true } }
|
|
150
132
|
}, root);
|
|
151
|
-
// console.log('JRES', jres)
|
|
152
133
|
log.info({ point: 'generate-end', note: 'success', break: true });
|
|
153
134
|
return {
|
|
154
135
|
ok: true,
|
package/dist/apidef.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apidef.js","sourceRoot":"","sources":["../src/apidef.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"apidef.js","sourceRoot":"","sources":["../src/apidef.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ function resolveBasicEntityFlow(ctx, entity) {
|
|
|
15
15
|
const { apimodel, model } = ctx;
|
|
16
16
|
const apiEntity = apimodel.main.api.entity[entity.name];
|
|
17
17
|
const flow = {
|
|
18
|
-
name: 'Basic' + apiEntity.Name
|
|
18
|
+
name: 'Basic' + apiEntity.Name + 'Flow'
|
|
19
19
|
};
|
|
20
20
|
const refs = [
|
|
21
21
|
`${apiEntity.name}01`,
|
|
@@ -24,15 +24,18 @@ function resolveBasicEntityFlow(ctx, entity) {
|
|
|
24
24
|
];
|
|
25
25
|
const idmap = refs.reduce((a, ref) => (a[ref] = ref.toUpperCase(), a), {});
|
|
26
26
|
flow.model = {
|
|
27
|
-
name: flow.
|
|
27
|
+
name: flow.name,
|
|
28
|
+
active: true,
|
|
28
29
|
param: {
|
|
29
|
-
[`${model.NAME}_TEST_${apiEntity.NAME}_ENTID`]: idmap
|
|
30
|
+
[`${model.NAME}_TEST_${apiEntity.NAME}_ENTID`]: idmap,
|
|
31
|
+
[`${model.NAME}_TEST_LIVE`]: "FALSE",
|
|
32
|
+
[`${model.NAME}_TEST_EXPLAIN`]: "FALSE",
|
|
30
33
|
},
|
|
31
|
-
test: { entity: { [apiEntity.
|
|
34
|
+
test: { entity: { [apiEntity.name]: {} } },
|
|
32
35
|
step: []
|
|
33
36
|
};
|
|
34
37
|
(0, jostraca_1.names)(flow, flow.name);
|
|
35
|
-
const data = flow.model.test.entity[apiEntity.
|
|
38
|
+
const data = flow.model.test.entity[apiEntity.name];
|
|
36
39
|
refs.map((ref, i) => {
|
|
37
40
|
const id = idmap[ref];
|
|
38
41
|
const ent = data[id] = {};
|
|
@@ -51,7 +54,27 @@ function resolveBasicEntityFlow(ctx, entity) {
|
|
|
51
54
|
const steps = flow.model.step;
|
|
52
55
|
let num = 0;
|
|
53
56
|
let name;
|
|
57
|
+
const am = {};
|
|
54
58
|
if (apiEntity.op.load) {
|
|
59
|
+
// Get additional required match properties
|
|
60
|
+
(0, jostraca_1.each)(apiEntity.op.load.param, (param) => {
|
|
61
|
+
if (param.required) {
|
|
62
|
+
let ancestorName = param.name;
|
|
63
|
+
let ancestorEntity = apimodel.main.api.entity[ancestorName];
|
|
64
|
+
if (null == ancestorEntity) {
|
|
65
|
+
ancestorName = ancestorName.replace('_id', '');
|
|
66
|
+
ancestorEntity = apimodel.main.api.entity[ancestorName];
|
|
67
|
+
}
|
|
68
|
+
if (ancestorEntity && ancestorName !== apiEntity.name) {
|
|
69
|
+
flow.model.param[`${model.NAME}_TEST_${ancestorEntity.NAME}_ENTID`] = {
|
|
70
|
+
[ancestorEntity.name + '01']: ancestorEntity.NAME + '01'
|
|
71
|
+
};
|
|
72
|
+
am[param.name] =
|
|
73
|
+
`\`dm$=p.${model.NAME}_TEST_${ancestorEntity.NAME}_ENTID.${ancestorEntity.name}01\``;
|
|
74
|
+
data[`${apiEntity.NAME}01`][param.name] = ancestorEntity.NAME + '01';
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
55
78
|
name = `load_${apiEntity.name}${num}`;
|
|
56
79
|
steps.push({
|
|
57
80
|
name,
|
|
@@ -59,11 +82,13 @@ function resolveBasicEntityFlow(ctx, entity) {
|
|
|
59
82
|
entity: `${apiEntity.name}`,
|
|
60
83
|
action: 'load',
|
|
61
84
|
match: {
|
|
62
|
-
id: `\`dm$=p.${model.NAME}_TEST_${apiEntity.NAME}_ENTID.${apiEntity.name}01
|
|
85
|
+
id: `\`dm$=p.${model.NAME}_TEST_${apiEntity.NAME}_ENTID.${apiEntity.name}01\``,
|
|
86
|
+
...am,
|
|
63
87
|
},
|
|
64
88
|
valid: {
|
|
65
89
|
'`$OPEN`': true,
|
|
66
|
-
id: `\`dm$=s.${name}.match.id
|
|
90
|
+
id: `\`dm$=s.${name}.match.id\``,
|
|
91
|
+
...am,
|
|
67
92
|
}
|
|
68
93
|
});
|
|
69
94
|
}
|
|
@@ -82,6 +107,7 @@ function resolveBasicEntityFlow(ctx, entity) {
|
|
|
82
107
|
valid: {
|
|
83
108
|
'`$OPEN`': true,
|
|
84
109
|
id: `\`dm$=s.${loadref}.match.id\``,
|
|
110
|
+
...am,
|
|
85
111
|
...valid
|
|
86
112
|
}
|
|
87
113
|
});
|
|
@@ -93,11 +119,13 @@ function resolveBasicEntityFlow(ctx, entity) {
|
|
|
93
119
|
entity: `${apiEntity.name}`,
|
|
94
120
|
action: 'load',
|
|
95
121
|
match: {
|
|
96
|
-
id: `\`dm$=p.${model.NAME}_TEST_${apiEntity.NAME}_ENTID.${apiEntity.name}01
|
|
122
|
+
id: `\`dm$=p.${model.NAME}_TEST_${apiEntity.NAME}_ENTID.${apiEntity.name}01\``,
|
|
123
|
+
...am,
|
|
97
124
|
},
|
|
98
125
|
valid: {
|
|
99
126
|
'`$OPEN`': true,
|
|
100
127
|
id: `\`dm$=s.${loadref}.match.id\``,
|
|
128
|
+
...am,
|
|
101
129
|
...valid
|
|
102
130
|
}
|
|
103
131
|
});
|
|
@@ -106,7 +134,7 @@ function resolveBasicEntityFlow(ctx, entity) {
|
|
|
106
134
|
}
|
|
107
135
|
function makeUpdateData(name, apiEntity, flow, id) {
|
|
108
136
|
const ud = {};
|
|
109
|
-
const data = flow.model.test.entity[apiEntity.
|
|
137
|
+
const data = flow.model.test.entity[apiEntity.name];
|
|
110
138
|
const dataFields = (0, jostraca_1.each)(apiEntity.field).filter(f => 'id' !== f.name && !f.name.includes('_id'));
|
|
111
139
|
const stringFields = (0, jostraca_1.each)(dataFields).filter(f => 'string' === f.type);
|
|
112
140
|
if (0 < (0, struct_1.size)(stringFields)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flowHeuristic01.js","sourceRoot":"","sources":["../../../src/builder/flow/flowHeuristic01.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"flowHeuristic01.js","sourceRoot":"","sources":["../../../src/builder/flow/flowHeuristic01.ts"],"names":[],"mappings":"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"}
|
package/dist/builder/flow.js
CHANGED
|
@@ -23,11 +23,11 @@ async function makeFlowBuilder(ctx) {
|
|
|
23
23
|
];
|
|
24
24
|
(0, jostraca_1.each)(flows, (flow) => {
|
|
25
25
|
let flowfile = node_path_1.default.join(ctx.opts.folder, 'flow', (null == ctx.opts.outprefix ? '' : ctx.opts.outprefix) +
|
|
26
|
-
flow.Name + '
|
|
26
|
+
flow.Name + '.jsonic');
|
|
27
27
|
let flowModelSrc = (0, utility_1.formatJsonSrc)(JSON.stringify(flow.model, null, 2));
|
|
28
|
-
let flowsrc = `# ${flow.Name}
|
|
28
|
+
let flowsrc = `# ${flow.Name}
|
|
29
29
|
|
|
30
|
-
main: sdk: flow: ${flow.Name}
|
|
30
|
+
main: sdk: flow: ${flow.Name}:
|
|
31
31
|
` + flowModelSrc;
|
|
32
32
|
barrel.push(`@"${node_path_1.default.basename(flowfile)}"`);
|
|
33
33
|
(0, jostraca_1.File)({ name: node_path_1.default.basename(flowfile) }, () => (0, jostraca_1.Content)(flowsrc));
|
package/dist/builder/flow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/builder/flow.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/builder/flow.ts"],"names":[],"mappings":";;;;;AA2DE,0CAAe;AA1DjB,0DAA4B;AAE5B,uCAAsD;AAEtD,wCAEmB;AAGnB,4DAAwD;AAGxD,KAAK,UAAU,eAAe,CAAC,GAAQ;IACrC,IAAI,KAAK,GAAU,EAAE,CAAA;IAErB,IAAI,aAAa,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC,KAAK,GAAG,MAAM,IAAA,iCAAe,EAAC,GAAG,CAAC,CAAA;IACpC,CAAC;SACI,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjE,CAAC;IAGD,OAAO,SAAS,WAAW;QAEzB,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE;YAC5B,MAAM,MAAM,GAAG;gBACb,WAAW;aACZ,CAAA;YAED,IAAA,eAAI,EAAC,KAAK,EAAE,CAAC,IAAS,EAAE,EAAE;gBACxB,IAAI,QAAQ,GACV,mBAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAC/B,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;oBACtD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,CAAA;gBAE1B,IAAI,YAAY,GAAG,IAAA,uBAAa,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAErE,IAAI,OAAO,GAAG,KAAK,IAAI,CAAC,IAAI;;mBAEjB,IAAI,CAAC,IAAI;CAC3B,GAAG,YAAY,CAAA;gBAER,MAAM,CAAC,IAAI,CAAC,KAAK,mBAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;gBAE5C,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,mBAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAA,kBAAO,EAAC,OAAO,CAAC,CAAC,CAAA;YACjE,CAAC,CAAC,CAAA;YAEF,IAAA,eAAI,EAAC;gBACH,IAAI,EAAE,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,mBAAmB;aACnF,EAAE,GAAG,EAAE,CAAC,IAAA,kBAAO,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.heuristic01 = heuristic01;
|
|
4
4
|
const jostraca_1 = require("jostraca");
|
|
5
|
+
const utility_1 = require("../utility");
|
|
5
6
|
async function heuristic01(ctx) {
|
|
6
7
|
let guide = ctx.model.main.api.guide;
|
|
7
8
|
const entityDescs = resolveEntityDescs(ctx);
|
|
@@ -23,23 +24,12 @@ const METHOD_IDOP = {
|
|
|
23
24
|
function resolveEntityDescs(ctx) {
|
|
24
25
|
const entityDescs = {};
|
|
25
26
|
const paths = ctx.def.paths;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
// Analyze paths ending in .../foo/{foo}
|
|
28
|
+
(0, jostraca_1.each)(paths, (pathdef, pathstr) => {
|
|
29
|
+
// Look for rightmmost /entname/{entid}.
|
|
30
|
+
const m = pathstr.match(/\/([a-zA-Z0-1_-]+)\/\{([a-zA-Z0-1_-]+)\}$/);
|
|
29
31
|
if (m) {
|
|
30
|
-
|
|
31
|
-
let entname = depluralize(origentname);
|
|
32
|
-
let entdesc = (entityDescs[entname] = entityDescs[entname] || { name: entname });
|
|
33
|
-
entdesc.plural = origentname;
|
|
34
|
-
(0, jostraca_1.names)(entdesc, entname);
|
|
35
|
-
entdesc.alias = entdesc.alias || {};
|
|
36
|
-
if ('id' != m[2]) {
|
|
37
|
-
entdesc.alias.id = m[2];
|
|
38
|
-
entdesc.alias[m[2]] = 'id';
|
|
39
|
-
}
|
|
40
|
-
entdesc.path = (entdesc.path || {});
|
|
41
|
-
const op = {};
|
|
42
|
-
entdesc.path[pathname] = { op };
|
|
32
|
+
const entdesc = resolveEntity(entityDescs, pathstr, m[1], m[2]);
|
|
43
33
|
(0, jostraca_1.each)(pathdef, (mdef, method) => {
|
|
44
34
|
const opname = METHOD_IDOP[method];
|
|
45
35
|
if (null == opname)
|
|
@@ -51,24 +41,23 @@ function resolveEntityDescs(ctx) {
|
|
|
51
41
|
const resokdef = mdef.responses[200] || mdef.responses[201];
|
|
52
42
|
const resbody = resokdef?.content?.['application/json']?.schema;
|
|
53
43
|
if (resbody) {
|
|
54
|
-
if (resbody[
|
|
55
|
-
|
|
56
|
-
// transform.resform = '`body."'+origentname+'"`'
|
|
57
|
-
transform.resform = '`body.' + origentname + '`';
|
|
44
|
+
if (resbody[entdesc.origname]) {
|
|
45
|
+
transform.resform = '`body.' + entdesc.origname + '`';
|
|
58
46
|
}
|
|
59
|
-
else if (resbody[
|
|
60
|
-
transform.resform = '`body.' +
|
|
47
|
+
else if (resbody[entdesc.name]) {
|
|
48
|
+
transform.resform = '`body.' + entdesc.name + '`';
|
|
61
49
|
}
|
|
62
50
|
}
|
|
63
51
|
const reqdef = mdef.requestBody?.content?.['application/json']?.schema?.properties;
|
|
64
52
|
if (reqdef) {
|
|
65
|
-
if (reqdef[
|
|
66
|
-
transform.reqform = { [
|
|
53
|
+
if (reqdef[entdesc.origname]) {
|
|
54
|
+
transform.reqform = { [entdesc.origname]: '`reqdata`' };
|
|
67
55
|
}
|
|
68
|
-
else if (reqdef[
|
|
69
|
-
transform.reqform = { [
|
|
56
|
+
else if (reqdef[entdesc.origname]) {
|
|
57
|
+
transform.reqform = { [entdesc.origname]: '`reqdata`' };
|
|
70
58
|
}
|
|
71
59
|
}
|
|
60
|
+
const op = entdesc.path[pathstr].op;
|
|
72
61
|
op[opname] = {
|
|
73
62
|
// TODO: in actual guide, remove "standard" method ops since redundant
|
|
74
63
|
method,
|
|
@@ -79,100 +68,52 @@ function resolveEntityDescs(ctx) {
|
|
|
79
68
|
});
|
|
80
69
|
}
|
|
81
70
|
});
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
71
|
+
// Analyze paths ending in .../foo
|
|
72
|
+
(0, jostraca_1.each)(paths, (pathdef, pathstr) => {
|
|
73
|
+
// Look for rightmmost /entname.
|
|
74
|
+
const m = pathstr.match(/\/([a-zA-Z0-1_-]+)$/);
|
|
85
75
|
if (m) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const resbody = resokdef?.content?.['application/json']?.schema;
|
|
98
|
-
if (resbody) {
|
|
99
|
-
if (resbody[origentname]) {
|
|
100
|
-
// TODO: use quotes when @voxgig/struct updated to support them
|
|
101
|
-
// transform.resform = '`body."'+origentname+'"`'
|
|
102
|
-
transform.resform = '`body.' + origentname + '`';
|
|
103
|
-
}
|
|
104
|
-
else if (resbody[entname]) {
|
|
105
|
-
transform.resform = '`body.' + entname + '`';
|
|
106
|
-
}
|
|
76
|
+
const entdesc = resolveEntity(entityDescs, pathstr, m[1]);
|
|
77
|
+
if (pathdef.get) {
|
|
78
|
+
const op = { list: { method: 'get' } };
|
|
79
|
+
entdesc.path[pathstr] = { op };
|
|
80
|
+
const transform = {};
|
|
81
|
+
const mdef = pathdef.get;
|
|
82
|
+
const resokdef = mdef.responses[200] || mdef.responses[201];
|
|
83
|
+
const resbody = resokdef?.content?.['application/json']?.schema;
|
|
84
|
+
if (resbody) {
|
|
85
|
+
if (resbody[entdesc.origname]) {
|
|
86
|
+
transform.resform = '`body.' + entdesc.origname + '`';
|
|
107
87
|
}
|
|
108
|
-
if (
|
|
109
|
-
|
|
88
|
+
else if (resbody[entdesc.name]) {
|
|
89
|
+
transform.resform = '`body.' + entdesc.name + '`';
|
|
110
90
|
}
|
|
111
91
|
}
|
|
92
|
+
if (0 < Object.entries(transform).length) {
|
|
93
|
+
op.transform = transform;
|
|
94
|
+
}
|
|
112
95
|
}
|
|
113
96
|
}
|
|
114
97
|
});
|
|
115
98
|
return entityDescs;
|
|
116
99
|
}
|
|
117
|
-
function
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
'
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
'people': 'person',
|
|
131
|
-
'data': 'datum',
|
|
132
|
-
'criteria': 'criterion',
|
|
133
|
-
'phenomena': 'phenomenon',
|
|
134
|
-
'indices': 'index',
|
|
135
|
-
'matrices': 'matrix',
|
|
136
|
-
'vertices': 'vertex',
|
|
137
|
-
'analyses': 'analysis',
|
|
138
|
-
'axes': 'axis',
|
|
139
|
-
'crises': 'crisis',
|
|
140
|
-
'diagnoses': 'diagnosis',
|
|
141
|
-
'oases': 'oasis',
|
|
142
|
-
'theses': 'thesis',
|
|
143
|
-
'appendices': 'appendix'
|
|
144
|
-
};
|
|
145
|
-
if (irregulars[word]) {
|
|
146
|
-
return irregulars[word];
|
|
147
|
-
}
|
|
148
|
-
// Rules for regular plurals (applied in order)
|
|
149
|
-
// -ies -> -y (cities -> city)
|
|
150
|
-
if (word.endsWith('ies') && word.length > 3) {
|
|
151
|
-
return word.slice(0, -3) + 'y';
|
|
152
|
-
}
|
|
153
|
-
// -ves -> -f or -fe (wolves -> wolf, knives -> knife)
|
|
154
|
-
if (word.endsWith('ves')) {
|
|
155
|
-
const stem = word.slice(0, -3);
|
|
156
|
-
// Check if it should be -fe (like knife, wife, life)
|
|
157
|
-
if (['kni', 'wi', 'li'].includes(stem)) {
|
|
158
|
-
return stem + 'fe';
|
|
100
|
+
function resolveEntity(entityDescs, pathStr, pathName, pathParam) {
|
|
101
|
+
let origentname = (0, jostraca_1.snakify)(pathName);
|
|
102
|
+
let entname = (0, utility_1.depluralize)(origentname);
|
|
103
|
+
let entdesc = (entityDescs[entname] = entityDescs[entname] || { name: entname });
|
|
104
|
+
entdesc.plural = origentname;
|
|
105
|
+
entdesc.origname = origentname;
|
|
106
|
+
(0, jostraca_1.names)(entdesc, entname);
|
|
107
|
+
entdesc.alias = entdesc.alias || {};
|
|
108
|
+
if (null != pathParam) {
|
|
109
|
+
const pathParamCanon = (0, jostraca_1.snakify)(pathParam);
|
|
110
|
+
if ('id' != pathParamCanon) {
|
|
111
|
+
entdesc.alias.id = pathParamCanon;
|
|
112
|
+
entdesc.alias[pathParamCanon] = 'id';
|
|
159
113
|
}
|
|
160
|
-
return stem + 'f';
|
|
161
|
-
}
|
|
162
|
-
// -oes -> -o (potatoes -> potato)
|
|
163
|
-
if (word.endsWith('oes')) {
|
|
164
|
-
return word.slice(0, -2);
|
|
165
|
-
}
|
|
166
|
-
// -ses, -xes, -zes, -shes, -ches -> remove -es (boxes -> box)
|
|
167
|
-
if (word.endsWith('ses') || word.endsWith('xes') || word.endsWith('zes') ||
|
|
168
|
-
word.endsWith('shes') || word.endsWith('ches')) {
|
|
169
|
-
return word.slice(0, -2);
|
|
170
|
-
}
|
|
171
|
-
// -s -> remove -s (cats -> cat)
|
|
172
|
-
if (word.endsWith('s') && !word.endsWith('ss')) {
|
|
173
|
-
return word.slice(0, -1);
|
|
174
114
|
}
|
|
175
|
-
|
|
176
|
-
|
|
115
|
+
entdesc.path = (entdesc.path || {});
|
|
116
|
+
entdesc.path[pathStr] = { op: {} };
|
|
117
|
+
return entdesc;
|
|
177
118
|
}
|
|
178
119
|
//# sourceMappingURL=heuristic01.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heuristic01.js","sourceRoot":"","sources":["../../src/guide/heuristic01.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"heuristic01.js","sourceRoot":"","sources":["../../src/guide/heuristic01.ts"],"names":[],"mappings":"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"}
|
package/dist/guide.js
CHANGED
|
@@ -8,7 +8,6 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
8
8
|
const jostraca_1 = require("jostraca");
|
|
9
9
|
const heuristic01_1 = require("./guide/heuristic01");
|
|
10
10
|
async function resolveGuide(ctx) {
|
|
11
|
-
// console.log('GUIDE CTX', ctx)
|
|
12
11
|
let guide = ctx.model.main.api.guide;
|
|
13
12
|
if ('heuristic01' === ctx.opts.strategy) {
|
|
14
13
|
guide = await (0, heuristic01_1.heuristic01)(ctx);
|
|
@@ -26,9 +25,9 @@ async function resolveGuide(ctx) {
|
|
|
26
25
|
'',
|
|
27
26
|
];
|
|
28
27
|
guideBlocks.push(...(0, jostraca_1.each)(guide.entity, (entity, entityname) => {
|
|
29
|
-
guideBlocks.push(`\nentity: ${entityname}:
|
|
28
|
+
guideBlocks.push(`\nentity: ${entityname}: {`);
|
|
30
29
|
(0, jostraca_1.each)(entity.path, (path, pathname) => {
|
|
31
|
-
guideBlocks.push(` '${pathname}': op: {`);
|
|
30
|
+
guideBlocks.push(` path: '${pathname}': op: {`);
|
|
32
31
|
(0, jostraca_1.each)(path.op, (op, opname) => {
|
|
33
32
|
guideBlocks.push(` '${opname}': method: ${op.method}`);
|
|
34
33
|
if (op.transform?.reqform) {
|
|
@@ -41,7 +40,6 @@ async function resolveGuide(ctx) {
|
|
|
41
40
|
}));
|
|
42
41
|
guideBlocks.push('}');
|
|
43
42
|
const guideSrc = guideBlocks.join('\n');
|
|
44
|
-
// console.log(guideSrc)
|
|
45
43
|
return () => {
|
|
46
44
|
(0, jostraca_1.File)({ name: node_path_1.default.basename(guideFile) }, () => (0, jostraca_1.Content)(guideSrc));
|
|
47
45
|
};
|
package/dist/guide.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../src/guide.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"guide.js","sourceRoot":"","sources":["../src/guide.ts"],"names":[],"mappings":";;;;;AAqFE,oCAAY;AApFd,0DAA4B;AAE5B,uCAA8C;AAG9C,qDAAiD;AAGjD,KAAK,UAAU,YAAY,CAAC,GAAQ;IAClC,IAAI,KAAK,GAAwB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAA;IAEzD,IAAI,aAAa,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACxC,KAAK,GAAG,MAAM,IAAA,yBAAW,EAAC,GAAG,CAAC,CAAA;IAChC,CAAC;SACI,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACjE,CAAC;IAED,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAEzB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;IAEhC,MAAM,SAAS,GACb,mBAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EACvB,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC,CAAA;IAE5E,MAAM,WAAW,GAAG;QAClB,SAAS;QACT,EAAE;QACF,sBAAsB;QACtB,EAAE;KACH,CAAA;IAGD,WAAW,CAAC,IAAI,CAAC,GAAG,IAAA,eAAI,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE;QAC5D,WAAW,CAAC,IAAI,CAAC,aAAa,UAAU,KAAK,CAAC,CAAA;QAE9C,IAAA,eAAI,EAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;YACnC,WAAW,CAAC,IAAI,CAAC,YAAY,QAAQ,UAAU,CAAC,CAAA;YAEhD,IAAA,eAAI,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE;gBAC3B,WAAW,CAAC,IAAI,CAAC,QAAQ,MAAM,cAAc,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;gBACzD,IAAI,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC;oBAC1B,WAAW,CAAC,IAAI,CACd,QAAQ,MAAM,0BAA0B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;gBACnF,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC,CAAC,CAAC,CAAA;IAEH,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAErB,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEvC,OAAO,GAAG,EAAE;QACV,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,mBAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAA,kBAAO,EAAC,QAAQ,CAAC,CAAC,CAAA;IAEnE,CAAC,CAAA;AACH,CAAC;AAGD,SAAS,UAAU,CAAC,KAA0B;IAC5C,MAAM,KAAK,GAAwB;QACjC,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,EAAE;KACX,CAAA;IAED,IAAA,eAAI,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,MAAW,EAAE,IAAY,EAAE,EAAE;QAC/C,IAAI,GAAG,GAAQ,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;QAE3E,IAAA,eAAI,EAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAS,EAAE,QAAgB,EAAE,EAAE;YAChD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;QAC3B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAA;AACd,CAAC"}
|
package/dist/transform/entity.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.entityTransform = void 0;
|
|
4
4
|
const jostraca_1 = require("jostraca");
|
|
5
5
|
const transform_1 = require("../transform");
|
|
6
|
+
const utility_1 = require("../utility");
|
|
6
7
|
const entityTransform = async function (ctx) {
|
|
7
8
|
const { apimodel, model, def } = ctx;
|
|
8
9
|
const guide = model.main.api.guide;
|
|
@@ -17,10 +18,13 @@ const entityTransform = async function (ctx) {
|
|
|
17
18
|
id: {
|
|
18
19
|
name: 'id',
|
|
19
20
|
field: 'id',
|
|
20
|
-
}
|
|
21
|
+
},
|
|
22
|
+
ancestors: []
|
|
21
23
|
};
|
|
22
24
|
(0, transform_1.fixName)(entityModel, guideEntity.key$);
|
|
23
|
-
|
|
25
|
+
let ancestors = [];
|
|
26
|
+
let ancestorsDone = false;
|
|
27
|
+
(0, jostraca_1.each)(guideEntity.path, (guidePath, pathStr) => {
|
|
24
28
|
const path = guidePath.key$;
|
|
25
29
|
const pathdef = def.paths[path];
|
|
26
30
|
if (null == pathdef) {
|
|
@@ -32,7 +36,22 @@ const entityTransform = async function (ctx) {
|
|
|
32
36
|
guidePath.params$ = guidePath.parts$
|
|
33
37
|
.filter((p) => p.startsWith('{'))
|
|
34
38
|
.map((p) => p.substring(1, p.length - 1));
|
|
39
|
+
if (!ancestorsDone) {
|
|
40
|
+
// Find all path sections matching /foo/{..param..} and build ancestors array
|
|
41
|
+
const paramRegex = /\/([a-zA-Z0-9_-]+)\/\{[a-zA-Z0-9_-]+\}/g;
|
|
42
|
+
let m;
|
|
43
|
+
while ((m = paramRegex.exec(pathStr)) !== null) {
|
|
44
|
+
// Skip if this is the last section (the entity itself)
|
|
45
|
+
const remainingPath = pathStr.substring(m.index + m[0].length);
|
|
46
|
+
if (remainingPath.length > 0) {
|
|
47
|
+
const ancestorName = (0, utility_1.depluralize)((0, jostraca_1.snakify)(m[1]));
|
|
48
|
+
ancestors.push(ancestorName);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ancestorsDone = true;
|
|
52
|
+
}
|
|
35
53
|
});
|
|
54
|
+
entityModel.ancestors = ancestors;
|
|
36
55
|
msg += guideEntity.name + ' ';
|
|
37
56
|
});
|
|
38
57
|
return { ok: true, msg };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/transform/entity.ts"],"names":[],"mappings":";;;AAEA,
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/transform/entity.ts"],"names":[],"mappings":"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"}
|