@voxgig/apidef 1.9.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.
Files changed (73) hide show
  1. package/dist/apidef.d.ts +3 -29
  2. package/dist/apidef.js +65 -186
  3. package/dist/apidef.js.map +1 -1
  4. package/dist/builder/entity/apiEntity.d.ts +3 -0
  5. package/dist/builder/entity/apiEntity.js +51 -0
  6. package/dist/builder/entity/apiEntity.js.map +1 -0
  7. package/dist/builder/entity/def.d.ts +3 -0
  8. package/dist/builder/entity/def.js +19 -0
  9. package/dist/builder/entity/def.js.map +1 -0
  10. package/dist/builder/entity.d.ts +2 -0
  11. package/dist/builder/entity.js +30 -0
  12. package/dist/builder/entity.js.map +1 -0
  13. package/dist/builder/flow/flowHeuristic01.d.ts +2 -0
  14. package/dist/builder/flow/flowHeuristic01.js +153 -0
  15. package/dist/builder/flow/flowHeuristic01.js.map +1 -0
  16. package/dist/builder/flow.d.ts +2 -0
  17. package/dist/builder/flow.js +41 -0
  18. package/dist/builder/flow.js.map +1 -0
  19. package/dist/guide/heuristic01.d.ts +2 -0
  20. package/dist/guide/heuristic01.js +119 -0
  21. package/dist/guide/heuristic01.js.map +1 -0
  22. package/dist/guide.d.ts +2 -0
  23. package/dist/guide.js +60 -0
  24. package/dist/guide.js.map +1 -0
  25. package/dist/parse.d.ts +1 -1
  26. package/dist/parse.js +5 -4
  27. package/dist/parse.js.map +1 -1
  28. package/dist/resolver.d.ts +2 -0
  29. package/dist/resolver.js +62 -0
  30. package/dist/resolver.js.map +1 -0
  31. package/dist/transform/entity.js +25 -4
  32. package/dist/transform/entity.js.map +1 -1
  33. package/dist/transform/field.js +4 -84
  34. package/dist/transform/field.js.map +1 -1
  35. package/dist/transform/operation.d.ts +2 -2
  36. package/dist/transform/operation.js +60 -30
  37. package/dist/transform/operation.js.map +1 -1
  38. package/dist/transform/top.d.ts +2 -2
  39. package/dist/transform/top.js +5 -4
  40. package/dist/transform/top.js.map +1 -1
  41. package/dist/transform.d.ts +1 -1
  42. package/dist/transform.js +20 -10
  43. package/dist/transform.js.map +1 -1
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/dist/types.d.ts +691 -0
  46. package/dist/types.js +39 -0
  47. package/dist/types.js.map +1 -0
  48. package/dist/utility.d.ts +5 -0
  49. package/dist/utility.js +84 -0
  50. package/dist/utility.js.map +1 -0
  51. package/model/apidef.jsonic +28 -24
  52. package/package.json +9 -7
  53. package/src/apidef.ts +94 -271
  54. package/src/builder/entity/apiEntity.ts +88 -0
  55. package/src/builder/entity/def.ts +44 -0
  56. package/src/builder/entity.ts +54 -0
  57. package/src/builder/flow/flowHeuristic01.ts +200 -0
  58. package/src/builder/flow.ts +61 -0
  59. package/src/guide/heuristic01.ts +178 -0
  60. package/src/guide.ts +87 -0
  61. package/src/parse.ts +6 -4
  62. package/src/resolver.ts +91 -0
  63. package/src/transform/entity.ts +36 -10
  64. package/src/transform/field.ts +9 -92
  65. package/src/transform/operation.ts +112 -46
  66. package/src/transform/top.ts +11 -9
  67. package/src/transform.ts +22 -11
  68. package/src/types.ts +89 -0
  69. package/src/utility.ts +161 -0
  70. package/dist/transform/manual.d.ts +0 -3
  71. package/dist/transform/manual.js +0 -12
  72. package/dist/transform/manual.js.map +0 -1
  73. package/src/transform/manual.ts +0 -29
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flowHeuristic01 = flowHeuristic01;
4
+ const struct_1 = require("@voxgig/struct");
5
+ const jostraca_1 = require("jostraca");
6
+ async function flowHeuristic01(ctx) {
7
+ let entity = ctx.model.main.api.guide.entity;
8
+ const flows = [];
9
+ (0, jostraca_1.each)(entity, (entity) => {
10
+ flows.push(resolveBasicEntityFlow(ctx, entity));
11
+ });
12
+ return flows;
13
+ }
14
+ function resolveBasicEntityFlow(ctx, entity) {
15
+ const { apimodel, model } = ctx;
16
+ const apiEntity = apimodel.main.api.entity[entity.name];
17
+ const flow = {
18
+ name: 'Basic' + apiEntity.Name + 'Flow'
19
+ };
20
+ const refs = [
21
+ `${apiEntity.name}01`,
22
+ `${apiEntity.name}02`,
23
+ `${apiEntity.name}03`,
24
+ ];
25
+ const idmap = refs.reduce((a, ref) => (a[ref] = ref.toUpperCase(), a), {});
26
+ flow.model = {
27
+ name: flow.name,
28
+ active: true,
29
+ param: {
30
+ [`${model.NAME}_TEST_${apiEntity.NAME}_ENTID`]: idmap,
31
+ [`${model.NAME}_TEST_LIVE`]: "FALSE",
32
+ [`${model.NAME}_TEST_EXPLAIN`]: "FALSE",
33
+ },
34
+ test: { entity: { [apiEntity.name]: {} } },
35
+ step: []
36
+ };
37
+ (0, jostraca_1.names)(flow, flow.name);
38
+ const data = flow.model.test.entity[apiEntity.name];
39
+ refs.map((ref, i) => {
40
+ const id = idmap[ref];
41
+ const ent = data[id] = {};
42
+ let num = (i * (0, struct_1.size)(apiEntity.field) * 10);
43
+ (0, jostraca_1.each)(apiEntity.field, (field) => {
44
+ ent[field.name] =
45
+ 'number' === field.type ? num :
46
+ 'boolean' === field.type ? 0 === num % 2 :
47
+ 'object' === field.type ? {} :
48
+ 'array' === field.type ? [] :
49
+ 's' + (num.toString(16));
50
+ num++;
51
+ });
52
+ ent.id = id;
53
+ });
54
+ const steps = flow.model.step;
55
+ let num = 0;
56
+ let name;
57
+ const am = {};
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
+ });
78
+ name = `load_${apiEntity.name}${num}`;
79
+ steps.push({
80
+ name,
81
+ kind: 'entity',
82
+ entity: `${apiEntity.name}`,
83
+ action: 'load',
84
+ match: {
85
+ id: `\`dm$=p.${model.NAME}_TEST_${apiEntity.NAME}_ENTID.${apiEntity.name}01\``,
86
+ ...am,
87
+ },
88
+ valid: {
89
+ '`$OPEN`': true,
90
+ id: `\`dm$=s.${name}.match.id\``,
91
+ ...am,
92
+ }
93
+ });
94
+ }
95
+ if (apiEntity.op.update && apiEntity.op.load) {
96
+ num++;
97
+ name = `update_${apiEntity.name}${num}`;
98
+ const id = idmap[`${apiEntity.name}01`];
99
+ const loadref = `load_${apiEntity.name}${num - 1}`;
100
+ const reqdata = makeUpdateData(name, apiEntity, flow, id);
101
+ const valid = makeUpdateValid(name, apiEntity, flow, id, reqdata);
102
+ steps.push({
103
+ name,
104
+ ref: loadref,
105
+ action: 'update',
106
+ reqdata,
107
+ valid: {
108
+ '`$OPEN`': true,
109
+ id: `\`dm$=s.${loadref}.match.id\``,
110
+ ...am,
111
+ ...valid
112
+ }
113
+ });
114
+ num++;
115
+ name = `load_${apiEntity.name}${num}`;
116
+ steps.push({
117
+ name,
118
+ kind: 'entity',
119
+ entity: `${apiEntity.name}`,
120
+ action: 'load',
121
+ match: {
122
+ id: `\`dm$=p.${model.NAME}_TEST_${apiEntity.NAME}_ENTID.${apiEntity.name}01\``,
123
+ ...am,
124
+ },
125
+ valid: {
126
+ '`$OPEN`': true,
127
+ id: `\`dm$=s.${loadref}.match.id\``,
128
+ ...am,
129
+ ...valid
130
+ }
131
+ });
132
+ }
133
+ return flow;
134
+ }
135
+ function makeUpdateData(name, apiEntity, flow, id) {
136
+ const ud = {};
137
+ const data = flow.model.test.entity[apiEntity.name];
138
+ const dataFields = (0, jostraca_1.each)(apiEntity.field).filter(f => 'id' !== f.name && !f.name.includes('_id'));
139
+ const stringFields = (0, jostraca_1.each)(dataFields).filter(f => 'string' === f.type);
140
+ if (0 < (0, struct_1.size)(stringFields)) {
141
+ const f = stringFields[0];
142
+ ud[f.name] = data[id][f.name] + '-`$WHEN`';
143
+ }
144
+ return ud;
145
+ }
146
+ function makeUpdateValid(name, apiEntity, flow, id, reqdata) {
147
+ const vd = {};
148
+ (0, jostraca_1.each)(reqdata, (n) => {
149
+ vd[n.key$] = `\`dm$=s.${name}.reqdata.${n.key$}\``;
150
+ });
151
+ return vd;
152
+ }
153
+ //# sourceMappingURL=flowHeuristic01.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowHeuristic01.js","sourceRoot":"","sources":["../../../src/builder/flow/flowHeuristic01.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare function makeFlowBuilder(ctx: any): Promise<() => void>;
2
+ export { makeFlowBuilder };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.makeFlowBuilder = makeFlowBuilder;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const jostraca_1 = require("jostraca");
9
+ const utility_1 = require("../utility");
10
+ const flowHeuristic01_1 = require("./flow/flowHeuristic01");
11
+ async function makeFlowBuilder(ctx) {
12
+ let flows = [];
13
+ if ('heuristic01' === ctx.opts.strategy) {
14
+ flows = await (0, flowHeuristic01_1.flowHeuristic01)(ctx);
15
+ }
16
+ else {
17
+ throw new Error('Unknown guide strategy: ' + ctx.opts.strategy);
18
+ }
19
+ return function flowBuilder() {
20
+ (0, jostraca_1.Folder)({ name: 'flow' }, () => {
21
+ const barrel = [
22
+ '# Flows\n'
23
+ ];
24
+ (0, jostraca_1.each)(flows, (flow) => {
25
+ let flowfile = node_path_1.default.join(ctx.opts.folder, 'flow', (null == ctx.opts.outprefix ? '' : ctx.opts.outprefix) +
26
+ flow.Name + '.jsonic');
27
+ let flowModelSrc = (0, utility_1.formatJsonSrc)(JSON.stringify(flow.model, null, 2));
28
+ let flowsrc = `# ${flow.Name}
29
+
30
+ main: sdk: flow: ${flow.Name}:
31
+ ` + flowModelSrc;
32
+ barrel.push(`@"${node_path_1.default.basename(flowfile)}"`);
33
+ (0, jostraca_1.File)({ name: node_path_1.default.basename(flowfile) }, () => (0, jostraca_1.Content)(flowsrc));
34
+ });
35
+ (0, jostraca_1.File)({
36
+ name: (null == ctx.opts.outprefix ? '' : ctx.opts.outprefix) + 'flow-index.jsonic'
37
+ }, () => (0, jostraca_1.Content)(barrel.join('\n')));
38
+ });
39
+ };
40
+ }
41
+ //# sourceMappingURL=flow.js.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,2 @@
1
+ declare function heuristic01(ctx: any): Promise<Record<string, any>>;
2
+ export { heuristic01 };
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.heuristic01 = heuristic01;
4
+ const jostraca_1 = require("jostraca");
5
+ const utility_1 = require("../utility");
6
+ async function heuristic01(ctx) {
7
+ let guide = ctx.model.main.api.guide;
8
+ const entityDescs = resolveEntityDescs(ctx);
9
+ // console.log('entityDescs')
10
+ // console.dir(entityDescs, { depth: null })
11
+ guide = {
12
+ control: guide.control,
13
+ entity: entityDescs,
14
+ };
15
+ return guide;
16
+ }
17
+ const METHOD_IDOP = {
18
+ get: 'load',
19
+ post: 'create',
20
+ put: 'update',
21
+ patch: 'update',
22
+ delete: 'remove',
23
+ };
24
+ function resolveEntityDescs(ctx) {
25
+ const entityDescs = {};
26
+ const paths = ctx.def.paths;
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_-]+)\}$/);
31
+ if (m) {
32
+ const entdesc = resolveEntity(entityDescs, pathstr, m[1], m[2]);
33
+ (0, jostraca_1.each)(pathdef, (mdef, method) => {
34
+ const opname = METHOD_IDOP[method];
35
+ if (null == opname)
36
+ return;
37
+ const transform = {
38
+ // reqform: '`reqdata`',
39
+ // resform: '`body`',
40
+ };
41
+ const resokdef = mdef.responses[200] || mdef.responses[201];
42
+ const resbody = resokdef?.content?.['application/json']?.schema;
43
+ if (resbody) {
44
+ if (resbody[entdesc.origname]) {
45
+ transform.resform = '`body.' + entdesc.origname + '`';
46
+ }
47
+ else if (resbody[entdesc.name]) {
48
+ transform.resform = '`body.' + entdesc.name + '`';
49
+ }
50
+ }
51
+ const reqdef = mdef.requestBody?.content?.['application/json']?.schema?.properties;
52
+ if (reqdef) {
53
+ if (reqdef[entdesc.origname]) {
54
+ transform.reqform = { [entdesc.origname]: '`reqdata`' };
55
+ }
56
+ else if (reqdef[entdesc.origname]) {
57
+ transform.reqform = { [entdesc.origname]: '`reqdata`' };
58
+ }
59
+ }
60
+ const op = entdesc.path[pathstr].op;
61
+ op[opname] = {
62
+ // TODO: in actual guide, remove "standard" method ops since redundant
63
+ method,
64
+ };
65
+ if (0 < Object.entries(transform).length) {
66
+ op[opname].transform = transform;
67
+ }
68
+ });
69
+ }
70
+ });
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_-]+)$/);
75
+ if (m) {
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 + '`';
87
+ }
88
+ else if (resbody[entdesc.name]) {
89
+ transform.resform = '`body.' + entdesc.name + '`';
90
+ }
91
+ }
92
+ if (0 < Object.entries(transform).length) {
93
+ op.transform = transform;
94
+ }
95
+ }
96
+ }
97
+ });
98
+ return entityDescs;
99
+ }
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';
113
+ }
114
+ }
115
+ entdesc.path = (entdesc.path || {});
116
+ entdesc.path[pathStr] = { op: {} };
117
+ return entdesc;
118
+ }
119
+ //# sourceMappingURL=heuristic01.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heuristic01.js","sourceRoot":"","sources":["../../src/guide/heuristic01.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ declare function resolveGuide(ctx: any): Promise<() => void>;
2
+ export { resolveGuide };
package/dist/guide.js ADDED
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.resolveGuide = resolveGuide;
7
+ const node_path_1 = __importDefault(require("node:path"));
8
+ const jostraca_1 = require("jostraca");
9
+ const heuristic01_1 = require("./guide/heuristic01");
10
+ async function resolveGuide(ctx) {
11
+ let guide = ctx.model.main.api.guide;
12
+ if ('heuristic01' === ctx.opts.strategy) {
13
+ guide = await (0, heuristic01_1.heuristic01)(ctx);
14
+ }
15
+ else {
16
+ throw new Error('Unknown guide strategy: ' + ctx.opts.strategy);
17
+ }
18
+ guide = cleanGuide(guide);
19
+ ctx.model.main.api.guide = guide;
20
+ const guideFile = node_path_1.default.join(ctx.opts.folder, (null == ctx.opts.outprefix ? '' : ctx.opts.outprefix) + 'guide.jsonic');
21
+ const guideBlocks = [
22
+ '# Guide',
23
+ '',
24
+ 'main: api: guide: { ',
25
+ '',
26
+ ];
27
+ guideBlocks.push(...(0, jostraca_1.each)(guide.entity, (entity, entityname) => {
28
+ guideBlocks.push(`\nentity: ${entityname}: {`);
29
+ (0, jostraca_1.each)(entity.path, (path, pathname) => {
30
+ guideBlocks.push(` path: '${pathname}': op: {`);
31
+ (0, jostraca_1.each)(path.op, (op, opname) => {
32
+ guideBlocks.push(` '${opname}': method: ${op.method}`);
33
+ if (op.transform?.reqform) {
34
+ guideBlocks.push(` '${opname}': transform: reqform: ${JSON.stringify(op.transform.reqform)}`);
35
+ }
36
+ });
37
+ guideBlocks.push(` }`);
38
+ });
39
+ guideBlocks.push(`}`);
40
+ }));
41
+ guideBlocks.push('}');
42
+ const guideSrc = guideBlocks.join('\n');
43
+ return () => {
44
+ (0, jostraca_1.File)({ name: node_path_1.default.basename(guideFile) }, () => (0, jostraca_1.Content)(guideSrc));
45
+ };
46
+ }
47
+ function cleanGuide(guide) {
48
+ const clean = {
49
+ control: guide.control,
50
+ entity: {}
51
+ };
52
+ (0, jostraca_1.each)(guide.entity, (entity, name) => {
53
+ let ent = clean.entity[name] = clean.entity[name] = { name, path: {} };
54
+ (0, jostraca_1.each)(entity.path, (path, pathname) => {
55
+ ent.path[pathname] = path;
56
+ });
57
+ });
58
+ return clean;
59
+ }
60
+ //# sourceMappingURL=guide.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guide.js","sourceRoot":"","sources":["../src/guide.ts"],"names":[],"mappings":"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"}
package/dist/parse.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare function parse(kind: string, source: any): Promise<any>;
1
+ declare function parse(kind: string, source: any, meta?: any): Promise<any>;
2
2
  export { parse };
package/dist/parse.js CHANGED
@@ -3,16 +3,17 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.parse = parse;
5
5
  const openapi_core_1 = require("@redocly/openapi-core");
6
- async function parse(kind, source) {
6
+ // Parse an API definition source into a JSON sructure.
7
+ async function parse(kind, source, meta) {
7
8
  if ('OpenAPI' === kind) {
8
- return parseOpenAPI(source);
9
+ return parseOpenAPI(source, meta);
9
10
  }
10
11
  else {
11
12
  throw new Error('@voxgig/apidef-parse: unknown kind: ' + kind);
12
13
  }
13
14
  }
14
- async function parseOpenAPI(source) {
15
- const config = await (0, openapi_core_1.createConfig)({});
15
+ async function parseOpenAPI(source, meta) {
16
+ const config = await (0, openapi_core_1.createConfig)(meta?.config || {});
16
17
  let bundle;
17
18
  bundle = await (0, openapi_core_1.bundleFromString)({
18
19
  source,
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":";AAAA,4CAA4C;;AAgC1C,sBAAK;AA9BP,wDAAsE;AAGtE,KAAK,UAAU,KAAK,CAAC,IAAY,EAAE,MAAW;IAC5C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC,MAAM,CAAC,CAAA;IAC7B,CAAC;SACI,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,IAAI,CAAC,CAAA;IAChE,CAAC;AACH,CAAC;AAGD,KAAK,UAAU,YAAY,CAAC,MAAW;IACrC,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAY,EAAC,EAAE,CAAC,CAAA;IACrC,IAAI,MAAM,CAAA;IAEV,MAAM,GAAG,MAAM,IAAA,+BAAgB,EAAC;QAC9B,MAAM;QACN,MAAM;QACN,WAAW,EAAE,IAAI;KAClB,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAA;IAEhC,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":";AAAA,4CAA4C;;AAkC1C,sBAAK;AAhCP,wDAAsE;AAItE,uDAAuD;AACvD,KAAK,UAAU,KAAK,CAAC,IAAY,EAAE,MAAW,EAAE,IAAU;IACxD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;IACnC,CAAC;SACI,CAAC;QACJ,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,IAAI,CAAC,CAAA;IAChE,CAAC;AACH,CAAC;AAGD,KAAK,UAAU,YAAY,CAAC,MAAW,EAAE,IAAU;IACjD,MAAM,MAAM,GAAG,MAAM,IAAA,2BAAY,EAAC,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC,CAAA;IACrD,IAAI,MAAM,CAAA;IAEV,MAAM,GAAG,MAAM,IAAA,+BAAgB,EAAC;QAC9B,MAAM;QACN,MAAM;QACN,WAAW,EAAE,IAAI;KAClB,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAA;IAEhC,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,2 @@
1
+ declare function resolveElements(ctx: any, kind: string, subkind: string, standard: Record<string, any>): Promise<any>;
2
+ export { resolveElements, };
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ /* Copyright (c) 2024-2025 Voxgig, MIT License */
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.resolveElements = resolveElements;
8
+ const node_path_1 = __importDefault(require("node:path"));
9
+ async function resolveElements(ctx, kind, subkind, standard) {
10
+ const { log, model } = ctx;
11
+ // TODO: model access should be via a utility that generates
12
+ // useful errors when the target is missing
13
+ const control = model.main.api.guide.control[kind][subkind];
14
+ const target = kind + '.' + subkind;
15
+ const elementNames = control.order
16
+ .split(/\s*,\s*/)
17
+ .map((t) => t.trim())
18
+ .filter((elem) => '' != elem);
19
+ log.info({
20
+ point: 'element', note: target + ': order: ' + elementNames.join(';'),
21
+ order: elementNames
22
+ });
23
+ const elementResults = [];
24
+ for (const en of elementNames) {
25
+ log.debug({ point: 'element', note: target + ': ' + en });
26
+ const element = await resolveElement(en, control, target, standard, ctx);
27
+ const result = await element(ctx);
28
+ elementResults.push(result);
29
+ }
30
+ return elementResults;
31
+ }
32
+ async function resolveElement(en, control, target, standard, ctx) {
33
+ const { log } = ctx;
34
+ let element = standard[en];
35
+ if (element) {
36
+ return element;
37
+ }
38
+ const elemdef = control.element[en];
39
+ if (null == elemdef) {
40
+ const err = new Error('Unknown element: ' + en);
41
+ log.error({ what: 'element', element: target + ': ' + en, fail: 'unknown', err });
42
+ throw err;
43
+ }
44
+ if (!en.startsWith('custom')) {
45
+ const err = new Error('Custom element name must start with "custom": ' + en);
46
+ log.error({ what: 'element', element: target + ': ' + en, fail: 'prefix', err });
47
+ throw err;
48
+ }
49
+ const customtpath = node_path_1.default.join(ctx.defpath, elemdef.load);
50
+ try {
51
+ const elementModule = require(customtpath);
52
+ element = elementModule[en];
53
+ }
54
+ catch (e) {
55
+ const err = new Error('Custom element not found: ' +
56
+ customtpath + ': ' + e.message);
57
+ log.error({ what: 'element', element: target + ': ' + en, fail: 'require', err });
58
+ throw err;
59
+ }
60
+ return element;
61
+ }
62
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
@@ -3,22 +3,28 @@ 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 entityTransform = async function (ctx, guide, tspec, model, def) {
6
+ const utility_1 = require("../utility");
7
+ const entityTransform = async function (ctx) {
8
+ const { apimodel, model, def } = ctx;
9
+ const guide = model.main.api.guide;
7
10
  let msg = '';
8
11
  (0, jostraca_1.each)(guide.entity, (guideEntity) => {
9
12
  const entityName = guideEntity.key$;
10
13
  ctx.log.debug({ point: 'guide-entity', note: entityName });
11
- const entityModel = model.main.api.entity[entityName] = {
14
+ const entityModel = apimodel.main.api.entity[entityName] = {
12
15
  op: {},
13
16
  field: {},
14
17
  cmd: {},
15
18
  id: {
16
19
  name: 'id',
17
20
  field: 'id',
18
- }
21
+ },
22
+ ancestors: []
19
23
  };
20
24
  (0, transform_1.fixName)(entityModel, guideEntity.key$);
21
- (0, jostraca_1.each)(guideEntity.path, (guidePath) => {
25
+ let ancestors = [];
26
+ let ancestorsDone = false;
27
+ (0, jostraca_1.each)(guideEntity.path, (guidePath, pathStr) => {
22
28
  const path = guidePath.key$;
23
29
  const pathdef = def.paths[path];
24
30
  if (null == pathdef) {
@@ -30,7 +36,22 @@ const entityTransform = async function (ctx, guide, tspec, model, def) {
30
36
  guidePath.params$ = guidePath.parts$
31
37
  .filter((p) => p.startsWith('{'))
32
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
+ }
33
53
  });
54
+ entityModel.ancestors = ancestors;
34
55
  msg += guideEntity.name + ' ';
35
56
  });
36
57
  return { ok: true, msg };
@@ -1 +1 @@
1
- {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/transform/entity.ts"],"names":[],"mappings":";;;AAEA,uCAA+B;AAI/B,4CAAsC;AAGtC,MAAM,eAAe,GAAc,KAAK,WACtC,GAAiB,EACjB,KAAY,EACZ,KAAoB,EACpB,KAAU,EACV,GAAQ;IAER,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,IAAA,eAAI,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,WAAgB,EAAE,EAAE;QACtC,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAA;QACnC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;QAE1D,MAAM,WAAW,GAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG;YAC3D,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,EAAE;YACT,GAAG,EAAE,EAAE;YACP,EAAE,EAAE;gBACF,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,IAAI;aACZ;SACF,CAAA;QAED,IAAA,mBAAO,EAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAA;QAEtC,IAAA,eAAI,EAAC,WAAW,CAAC,IAAI,EAAE,CAAC,SAAc,EAAE,EAAE;YACxC,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAA;YAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YAE/B,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,IAAI;oBAClD,YAAY,GAAG,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,CAAA;YAC1C,CAAC;YAED,wBAAwB;YACxB,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,MAAM;iBACjC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;iBACxC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;QAErD,CAAC,CAAC,CAAA;QAEF,GAAG,IAAI,WAAW,CAAC,IAAI,GAAG,GAAG,CAAA;IAC/B,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;AAC1B,CAAC,CAAA;AAIC,0CAAe"}
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/transform/entity.ts"],"names":[],"mappings":"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"}