@voxgig/apidef 2.4.1 → 3.1.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.
Files changed (108) hide show
  1. package/dist/apidef.d.ts +7 -2
  2. package/dist/apidef.js +190 -114
  3. package/dist/apidef.js.map +1 -1
  4. package/dist/builder/entity/entity.d.ts +3 -0
  5. package/dist/builder/entity/{apiEntity.js → entity.js} +12 -9
  6. package/dist/builder/entity/entity.js.map +1 -0
  7. package/dist/builder/entity/info.d.ts +3 -0
  8. package/dist/builder/entity/info.js +22 -0
  9. package/dist/builder/entity/info.js.map +1 -0
  10. package/dist/builder/entity.js +7 -21
  11. package/dist/builder/entity.js.map +1 -1
  12. package/dist/builder/flow/flowHeuristic01.js +21 -11
  13. package/dist/builder/flow/flowHeuristic01.js.map +1 -1
  14. package/dist/builder/flow.d.ts +2 -1
  15. package/dist/builder/flow.js +39 -12
  16. package/dist/builder/flow.js.map +1 -1
  17. package/dist/def.d.ts +62 -0
  18. package/dist/def.js +4 -0
  19. package/dist/def.js.map +1 -0
  20. package/dist/desc.d.ts +87 -0
  21. package/dist/desc.js +4 -0
  22. package/dist/desc.js.map +1 -0
  23. package/dist/guide/guide.d.ts +2 -1
  24. package/dist/guide/guide.js +161 -30
  25. package/dist/guide/guide.js.map +1 -1
  26. package/dist/guide/heuristic01.d.ts +2 -1
  27. package/dist/guide/heuristic01.js +1122 -234
  28. package/dist/guide/heuristic01.js.map +1 -1
  29. package/dist/model.d.ts +90 -0
  30. package/dist/model.js +4 -0
  31. package/dist/model.js.map +1 -0
  32. package/dist/parse.d.ts +4 -3
  33. package/dist/parse.js +40 -46
  34. package/dist/parse.js.map +1 -1
  35. package/dist/resolver.js +2 -1
  36. package/dist/resolver.js.map +1 -1
  37. package/dist/transform/args.d.ts +3 -0
  38. package/dist/transform/args.js +54 -0
  39. package/dist/transform/args.js.map +1 -0
  40. package/dist/transform/clean.d.ts +2 -2
  41. package/dist/transform/clean.js +28 -3
  42. package/dist/transform/clean.js.map +1 -1
  43. package/dist/transform/entity.d.ts +9 -1
  44. package/dist/transform/entity.js +57 -41
  45. package/dist/transform/entity.js.map +1 -1
  46. package/dist/transform/field.d.ts +1 -1
  47. package/dist/transform/field.js +89 -65
  48. package/dist/transform/field.js.map +1 -1
  49. package/dist/transform/flow.d.ts +3 -0
  50. package/dist/transform/flow.js +26 -0
  51. package/dist/transform/flow.js.map +1 -0
  52. package/dist/transform/flowstep.d.ts +3 -0
  53. package/dist/transform/flowstep.js +145 -0
  54. package/dist/transform/flowstep.js.map +1 -0
  55. package/dist/transform/operation.d.ts +3 -3
  56. package/dist/transform/operation.js +101 -296
  57. package/dist/transform/operation.js.map +1 -1
  58. package/dist/transform/select.d.ts +3 -0
  59. package/dist/transform/select.js +65 -0
  60. package/dist/transform/select.js.map +1 -0
  61. package/dist/transform/top.js +24 -2
  62. package/dist/transform/top.js.map +1 -1
  63. package/dist/transform.d.ts +1 -1
  64. package/dist/transform.js +4 -0
  65. package/dist/transform.js.map +1 -1
  66. package/dist/tsconfig.tsbuildinfo +1 -1
  67. package/dist/types.d.ts +115 -14
  68. package/dist/types.js +4 -2
  69. package/dist/types.js.map +1 -1
  70. package/dist/utility.d.ts +34 -2
  71. package/dist/utility.js +444 -6
  72. package/dist/utility.js.map +1 -1
  73. package/model/apidef.jsonic +76 -1
  74. package/model/guide.jsonic +14 -44
  75. package/package.json +19 -16
  76. package/src/apidef.ts +258 -122
  77. package/src/builder/entity/{apiEntity.ts → entity.ts} +18 -11
  78. package/src/builder/entity/info.ts +53 -0
  79. package/src/builder/entity.ts +9 -35
  80. package/src/builder/flow/flowHeuristic01.ts +46 -12
  81. package/src/builder/flow.ts +54 -13
  82. package/src/def.ts +91 -0
  83. package/src/desc.ts +154 -0
  84. package/src/guide/guide.ts +208 -134
  85. package/src/guide/heuristic01.ts +1653 -272
  86. package/src/model.ts +143 -0
  87. package/src/parse.ts +50 -59
  88. package/src/resolver.ts +3 -1
  89. package/src/schematron.ts.off +317 -0
  90. package/src/transform/args.ts +98 -0
  91. package/src/transform/clean.ts +45 -11
  92. package/src/transform/entity.ts +96 -50
  93. package/src/transform/field.ts +136 -75
  94. package/src/transform/flow.ts +59 -0
  95. package/src/transform/flowstep.ts +242 -0
  96. package/src/transform/operation.ts +119 -419
  97. package/src/transform/select.ts +119 -0
  98. package/src/transform/top.ts +46 -4
  99. package/src/transform.ts +8 -4
  100. package/src/types.ts +181 -5
  101. package/src/utility.ts +567 -9
  102. package/dist/builder/entity/apiEntity.d.ts +0 -3
  103. package/dist/builder/entity/apiEntity.js.map +0 -1
  104. package/dist/builder/entity/def.d.ts +0 -3
  105. package/dist/builder/entity/def.js +0 -19
  106. package/dist/builder/entity/def.js.map +0 -1
  107. package/src/builder/entity/def.ts +0 -44
  108. package/src/guide.ts.off +0 -136
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.flowHeuristic01 = flowHeuristic01;
4
4
  const struct_1 = require("@voxgig/struct");
5
5
  const jostraca_1 = require("jostraca");
6
+ const struct_2 = require("@voxgig/struct");
7
+ const types_1 = require("../../types");
8
+ const utility_1 = require("../../utility");
6
9
  async function flowHeuristic01(ctx) {
7
10
  let entity = ctx.guide.entity;
8
11
  const flows = [];
@@ -13,9 +16,10 @@ async function flowHeuristic01(ctx) {
13
16
  }
14
17
  function resolveBasicEntityFlow(ctx, entity) {
15
18
  const { apimodel, model } = ctx;
16
- const apiEntity = apimodel.main.api.entity[entity.name];
19
+ const kit = apimodel.main[types_1.KIT];
20
+ const apiEntity = kit.entity[entity.name];
17
21
  const flow = {
18
- name: 'Basic' + apiEntity.Name + 'Flow'
22
+ name: 'Basic' + (0, utility_1.nom)(apiEntity, 'Name') + 'Flow'
19
23
  };
20
24
  const refs = [
21
25
  `${apiEntity.name}01`,
@@ -27,7 +31,7 @@ function resolveBasicEntityFlow(ctx, entity) {
27
31
  name: flow.name,
28
32
  active: true,
29
33
  param: {
30
- [`${model.NAME}_TEST_${apiEntity.NAME}_ENTID`]: idmap,
34
+ [`${model.NAME}_TEST_${(0, utility_1.nom)(apiEntity, 'NAME')}_ENTID`]: idmap,
31
35
  [`${model.NAME}_TEST_LIVE`]: "FALSE",
32
36
  [`${model.NAME}_TEST_EXPLAIN`]: "FALSE",
33
37
  },
@@ -39,8 +43,8 @@ function resolveBasicEntityFlow(ctx, entity) {
39
43
  refs.map((ref, i) => {
40
44
  const id = idmap[ref];
41
45
  const ent = data[id] = {};
42
- let num = (i * (0, struct_1.size)(apiEntity.field) * 10);
43
- (0, jostraca_1.each)(apiEntity.field, (field) => {
46
+ let num = (i * (0, struct_1.size)(apiEntity.fields) * 10);
47
+ (0, jostraca_1.each)(apiEntity.fields, (field) => {
44
48
  ent[field.name] =
45
49
  'number' === field.type ? num :
46
50
  'boolean' === field.type ? 0 === num % 2 :
@@ -55,9 +59,11 @@ function resolveBasicEntityFlow(ctx, entity) {
55
59
  let num = 0;
56
60
  let name;
57
61
  const am = {};
58
- if (apiEntity.op.load) {
62
+ const entop = apiEntity.op ?? {};
63
+ if (entop.load) {
64
+ const alt = findMainLoadAlt(entop.load);
59
65
  // Get additional required match properties
60
- (0, jostraca_1.each)(apiEntity.op.load.param, (param) => {
66
+ (0, jostraca_1.each)(alt?.args.param, (param) => {
61
67
  if (param.required) {
62
68
  let ancestorName = param.name;
63
69
  let ancestorEntity = apimodel.main.api.entity[ancestorName];
@@ -71,7 +77,7 @@ function resolveBasicEntityFlow(ctx, entity) {
71
77
  };
72
78
  am[param.name] =
73
79
  `\`dm$=p.${model.NAME}_TEST_${ancestorEntity.NAME}_ENTID.${ancestorEntity.name}01\``;
74
- data[`${apiEntity.NAME}01`][param.name] = ancestorEntity.NAME + '01';
80
+ data[`${(0, utility_1.nom)(apiEntity, 'NAME')}01`][param.name] = ancestorEntity.NAME + '01';
75
81
  }
76
82
  }
77
83
  });
@@ -82,7 +88,7 @@ function resolveBasicEntityFlow(ctx, entity) {
82
88
  entity: `${apiEntity.name}`,
83
89
  action: 'load',
84
90
  match: {
85
- id: `\`dm$=p.${model.NAME}_TEST_${apiEntity.NAME}_ENTID.${apiEntity.name}01\``,
91
+ id: `\`dm$=p.${model.NAME}_TEST_${(0, utility_1.nom)(apiEntity, 'NAME')}_ENTID.${apiEntity.name}01\``,
86
92
  ...am,
87
93
  },
88
94
  valid: {
@@ -92,7 +98,7 @@ function resolveBasicEntityFlow(ctx, entity) {
92
98
  }
93
99
  });
94
100
  }
95
- if (apiEntity.op.update && apiEntity.op.load) {
101
+ if (entop.update && entop.load) {
96
102
  num++;
97
103
  name = `update_${apiEntity.name}${num}`;
98
104
  const id = idmap[`${apiEntity.name}01`];
@@ -119,7 +125,7 @@ function resolveBasicEntityFlow(ctx, entity) {
119
125
  entity: `${apiEntity.name}`,
120
126
  action: 'load',
121
127
  match: {
122
- id: `\`dm$=p.${model.NAME}_TEST_${apiEntity.NAME}_ENTID.${apiEntity.name}01\``,
128
+ id: `\`dm$=p.${model.NAME}_TEST_${(0, utility_1.nom)(apiEntity, 'NAME')}_ENTID.${apiEntity.name}01\``,
123
129
  ...am,
124
130
  },
125
131
  valid: {
@@ -132,6 +138,10 @@ function resolveBasicEntityFlow(ctx, entity) {
132
138
  }
133
139
  return flow;
134
140
  }
141
+ function findMainLoadAlt(op) {
142
+ let cands = op.alts.filter(a => '{id}' === (0, struct_2.getelem)(a.parts, -1));
143
+ return cands[0];
144
+ }
135
145
  function makeUpdateData(name, apiEntity, flow, id) {
136
146
  const ud = {};
137
147
  const data = flow.model.test.entity[apiEntity.name];
@@ -1 +1 @@
1
- {"version":3,"file":"flowHeuristic01.js","sourceRoot":"","sources":["../../../src/builder/flow/flowHeuristic01.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flowHeuristic01.js","sourceRoot":"","sources":["../../../src/builder/flow/flowHeuristic01.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- declare function makeFlowBuilder(ctx: any): Promise<() => void>;
1
+ import { ApiDefContext } from '../types';
2
+ declare function makeFlowBuilder(ctx: ApiDefContext): Promise<Function>;
2
3
  export { makeFlowBuilder };
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ // TODO: move this to sdkgen
2
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
5
  };
@@ -6,36 +7,62 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
7
  exports.makeFlowBuilder = makeFlowBuilder;
7
8
  const node_path_1 = __importDefault(require("node:path"));
8
9
  const jostraca_1 = require("jostraca");
10
+ const types_1 = require("../types");
9
11
  const utility_1 = require("../utility");
10
- const flowHeuristic01_1 = require("./flow/flowHeuristic01");
11
12
  async function makeFlowBuilder(ctx) {
12
- let flows = [];
13
+ const { apimodel, opts } = ctx;
14
+ const flows = apimodel.main[types_1.KIT].flow;
15
+ let flowBuilder = () => {
16
+ ctx.warn({
17
+ step: 'flow',
18
+ note: 'Unable to generate flow definitions as flows were not resolved.'
19
+ });
20
+ };
21
+ /*
13
22
  if ('heuristic01' === ctx.opts.strategy) {
14
- flows = await (0, flowHeuristic01_1.flowHeuristic01)(ctx);
23
+ try {
24
+ flows = await flowHeuristic01(ctx)
25
+ }
26
+ catch (err: any) {
27
+ err.foo = { x: 1, y: [2] }
28
+ err.foo.z = err.foo
29
+ ctx.warn({
30
+ step: 'flow',
31
+ note: 'Unable to resolve flows due to unexpected error: ' + err.message,
32
+ err,
33
+ })
34
+ return flowBuilder
35
+ }
15
36
  }
16
37
  else {
17
- throw new Error('Unknown guide strategy: ' + ctx.opts.strategy);
38
+ ctx.warn({
39
+ step: 'flow',
40
+ note: 'Unable to resolve flows: unknown guide strategy: ' + ctx.opts.strategy
41
+ })
42
+ return flowBuilder
18
43
  }
19
- return function flowBuilder() {
44
+ */
45
+ flowBuilder = () => {
20
46
  (0, jostraca_1.Folder)({ name: 'flow' }, () => {
21
47
  const barrel = [
22
48
  '# Flows\n'
23
49
  ];
24
50
  (0, jostraca_1.each)(flows, (flow) => {
25
51
  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}
52
+ flow.name + '.jsonic');
53
+ let flowModelSrc = (0, utility_1.formatJsonSrc)(JSON.stringify(flow, null, 2));
54
+ let flowsrc = `# ${(0, utility_1.nom)(flow, 'Name')}
29
55
 
30
- main: sdk: flow: ${flow.Name}:
56
+ main: ${types_1.KIT}: flow: ${flow.name}:
31
57
  ` + flowModelSrc;
32
58
  barrel.push(`@"${node_path_1.default.basename(flowfile)}"`);
33
59
  (0, jostraca_1.File)({ name: node_path_1.default.basename(flowfile) }, () => (0, jostraca_1.Content)(flowsrc));
34
60
  });
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')));
61
+ const barrelFile = (null == ctx.opts.outprefix ? '' : ctx.opts.outprefix) + 'flow-index.jsonic';
62
+ const barrelContent = barrel.join('\n');
63
+ (0, jostraca_1.File)({ name: barrelFile }, () => (0, jostraca_1.Content)(barrelContent));
38
64
  });
39
65
  };
66
+ return flowBuilder;
40
67
  }
41
68
  //# sourceMappingURL=flow.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/builder/flow.ts"],"names":[],"mappings":";AACA,4BAA4B;;;;;AAmG1B,0CAAe;AAhGjB,0DAA4B;AAE5B,uCAAsD;AAGtD,oCAGiB;AAGjB,wCAGmB;AAMnB,KAAK,UAAU,eAAe,CAAC,GAAkB;IAC/C,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;IAE9B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAG,CAAC,CAAC,IAAI,CAAA;IAErC,IAAI,WAAW,GAAG,GAAG,EAAE;QACrB,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,iEAAiE;SACxE,CAAC,CAAA;IACJ,CAAC,CAAA;IAED;;;;;;;;;;;;;;;;;;;;;;;MAuBE;IAEF,WAAW,GAAG,GAAG,EAAE;QAEjB,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,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gBAE/D,IAAI,OAAO,GAAG,KAAK,IAAA,aAAG,EAAC,IAAI,EAAE,MAAM,CAAC;;QAEpC,WAAG,WAAW,IAAI,CAAC,IAAI;CAC9B,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,MAAM,UAAU,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,mBAAmB,CAAA;YAE/F,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAEvC,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,IAAA,kBAAO,EAAC,aAAa,CAAC,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,OAAO,WAAW,CAAA;AACpB,CAAC"}
package/dist/def.d.ts ADDED
@@ -0,0 +1,62 @@
1
+ type PathDef = {
2
+ summary?: string;
3
+ description?: string;
4
+ get?: MethodDef;
5
+ put?: MethodDef;
6
+ post?: MethodDef;
7
+ delete?: MethodDef;
8
+ options?: MethodDef;
9
+ head?: MethodDef;
10
+ patch?: MethodDef;
11
+ trace?: MethodDef;
12
+ servers?: ServerDef[];
13
+ parameters?: ParameterDef[];
14
+ tags?: any;
15
+ };
16
+ type MethodDef = {
17
+ tags?: string[];
18
+ summary?: string;
19
+ description?: string;
20
+ operationId?: string;
21
+ parameters?: ParameterDef[];
22
+ deprecated?: boolean;
23
+ servers?: ServerDef[];
24
+ };
25
+ type ServerDef = {
26
+ url: string;
27
+ description?: string;
28
+ variables?: Record<string, ServerVariableDef>;
29
+ };
30
+ type ServerVariableDef = {
31
+ enum?: string[];
32
+ default: string;
33
+ description?: string;
34
+ };
35
+ type ParameterDef = {
36
+ name: string;
37
+ in: "query" | "header" | "path" | "cookie";
38
+ description?: string;
39
+ required?: boolean;
40
+ deprecated?: boolean;
41
+ schema?: SchemaDef;
42
+ nullable?: boolean;
43
+ example?: any;
44
+ };
45
+ type SchemaDef = {
46
+ title?: string;
47
+ description?: string;
48
+ type?: string;
49
+ format?: string;
50
+ enum?: any[];
51
+ items?: SchemaDef;
52
+ properties?: Record<string, SchemaDef>;
53
+ required?: string[];
54
+ additionalProperties?: boolean | SchemaDef;
55
+ allOf?: SchemaDef[];
56
+ oneOf?: SchemaDef[];
57
+ anyOf?: SchemaDef[];
58
+ nullable?: boolean;
59
+ default?: any;
60
+ example?: any;
61
+ };
62
+ export type { PathDef, MethodDef, ServerDef, ServerVariableDef, ParameterDef, SchemaDef, };
package/dist/def.js ADDED
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ /* Copyright (c) 2024-2025 Voxgig, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=def.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"def.js","sourceRoot":"","sources":["../src/def.ts"],"names":[],"mappings":";AAAA,iDAAiD"}
package/dist/desc.d.ts ADDED
@@ -0,0 +1,87 @@
1
+ import type { PathMatch } from './utility';
2
+ import type { MethodName } from './types';
3
+ import type { ParameterDef } from './def';
4
+ type CmpDesc = {
5
+ namedesc?: any;
6
+ path_rate: number;
7
+ method_rate: number;
8
+ };
9
+ type BasicMethodDesc = {
10
+ name: MethodName;
11
+ def: Record<string, any>;
12
+ path: string;
13
+ };
14
+ type MethodDesc = {
15
+ path: string;
16
+ method: string;
17
+ summary: string;
18
+ tags: string[];
19
+ parameters: any[];
20
+ responses: Record<string, any>;
21
+ requestBody: Record<string, any>;
22
+ MethodEntity: MethodEntityDesc;
23
+ };
24
+ type MethodEntityDesc = {
25
+ ref: string;
26
+ cmp: string | null;
27
+ origcmp: string | null;
28
+ origcmpref: string | null;
29
+ why_cmp: string[];
30
+ cmpoccur: number;
31
+ path_rate: number;
32
+ method_rate: number;
33
+ entname: string;
34
+ why_op: string[];
35
+ rename: Record<string, any>;
36
+ why_rename: Record<string, any>;
37
+ rename_orig: string[];
38
+ opname: string;
39
+ why_opname: string[];
40
+ pm?: any;
41
+ };
42
+ type EntityDesc = {
43
+ name: string;
44
+ origname: string;
45
+ plural: string;
46
+ path: Record<string, EntityPathDesc>;
47
+ alias: Record<string, string>;
48
+ cmp: CmpDesc;
49
+ };
50
+ type EntityPathDesc = {
51
+ op: Record<string, any>;
52
+ pm: PathMatch;
53
+ rename: {
54
+ param: Record<string, string>;
55
+ };
56
+ why_rename: {
57
+ why_param: Record<string, string[]>;
58
+ };
59
+ action: Record<string, {
60
+ why_action: string[];
61
+ }>;
62
+ why_action: Record<string, string[]>;
63
+ why_ent: string[];
64
+ why_path: string[];
65
+ };
66
+ type PathDesc = {
67
+ orig: string;
68
+ method: MethodName;
69
+ parts: string[];
70
+ rename: {
71
+ param?: Record<string, any>;
72
+ };
73
+ op: Record<string, {
74
+ method: any;
75
+ transform: {
76
+ req?: any;
77
+ res?: any;
78
+ };
79
+ }>;
80
+ def: {
81
+ parameters?: ParameterDef[];
82
+ };
83
+ };
84
+ type OpDesc = {
85
+ paths: PathDesc[];
86
+ };
87
+ export type { CmpDesc, BasicMethodDesc, MethodDesc, MethodEntityDesc, EntityDesc, EntityPathDesc, PathDesc, OpDesc, };
package/dist/desc.js ADDED
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ /* Copyright (c) 2024-2025 Voxgig, MIT License */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ //# sourceMappingURL=desc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"desc.js","sourceRoot":"","sources":["../src/desc.ts"],"names":[],"mappings":";AAAA,iDAAiD"}
@@ -1,2 +1,3 @@
1
- declare function buildGuide(ctx: any): Promise<any>;
1
+ import { ApiDefContext } from '../types';
2
+ declare function buildGuide(ctx: ApiDefContext): Promise<any>;
2
3
  export { buildGuide };
@@ -12,11 +12,11 @@ const heuristic01_1 = require("./heuristic01");
12
12
  const utility_1 = require("../utility");
13
13
  // Log non-fatal wierdness.
14
14
  const dlog = (0, utility_1.getdlog)('apidef', __filename);
15
+ const aontu = new aontu_1.Aontu();
15
16
  async function buildGuide(ctx) {
17
+ const log = ctx.log;
16
18
  const errs = [];
17
- // console.log(ctx)
18
19
  const folder = node_path_1.default.resolve(ctx.opts.folder);
19
- // console.log('GUIDE folder', folder)
20
20
  try {
21
21
  const basejres = await buildBaseGuide(ctx);
22
22
  }
@@ -25,61 +25,126 @@ async function buildGuide(ctx) {
25
25
  }
26
26
  handleErrors(ctx, errs);
27
27
  let src = '';
28
- let guidePath = node_path_1.default.join(folder, 'guide', (null == ctx.opts.outprefix ? '' : ctx.opts.outprefix) + 'guide.jsonic');
28
+ let guidepath = node_path_1.default.join(folder, 'guide', (null == ctx.opts.outprefix ? '' : ctx.opts.outprefix) + 'guide.jsonic');
29
+ log.info({
30
+ point: 'generate-guide',
31
+ note: (0, utility_1.relativizePath)(guidepath),
32
+ guidepath,
33
+ });
29
34
  try {
30
- src = ctx.fs.readFileSync(guidePath, 'utf8');
35
+ src = ctx.fs.readFileSync(guidepath, 'utf8');
31
36
  }
32
37
  catch (err) {
33
38
  errs.push(err);
34
39
  }
35
40
  handleErrors(ctx, errs);
36
- const opts = {
37
- path: guidePath
38
- };
39
- const guideRoot = (0, aontu_1.Aontu)(src, opts);
40
- errs.push(...guideRoot.err);
41
- handleErrors(ctx, errs);
42
- let genctx = new aontu_1.Context({ root: guideRoot });
43
- const guideModel = guideRoot.gen(genctx);
44
- errs.push(...genctx.err);
45
- handleErrors(ctx, errs);
46
- return guideModel;
41
+ if (0 === errs.length) {
42
+ const opts = {
43
+ path: guidepath,
44
+ fs: ctx.fs,
45
+ errs,
46
+ };
47
+ const guideModel = aontu.generate(src, opts);
48
+ // console.log('GUIDE-MODEL', guideModel, errs)
49
+ // console.dir(guideModel, { depth: null })
50
+ handleErrors(ctx, errs);
51
+ return guideModel;
52
+ }
47
53
  }
48
54
  function handleErrors(ctx, errs) {
49
55
  if (0 < errs.length) {
50
- let topmsg = [];
56
+ const topmsg = [];
57
+ const stacks = [];
51
58
  for (let err of errs) {
52
- topmsg.push((err?.message?.split('\n')[0]) || '');
53
- ctx.log.error({ err });
59
+ err = err instanceof Error ? err :
60
+ err.err instanceof Error ? err.err :
61
+ Array.isArray(err.err) && null != err.err[0] ? err.err[0] :
62
+ err;
63
+ const msg = 'string' === typeof err?.message ? err.message :
64
+ err instanceof Error ? err.message : '' + err;
65
+ topmsg.push(msg);
66
+ stacks.push('' + err.stack);
54
67
  }
55
- throw new Error('SUMMARY: ' + topmsg.join('; '));
68
+ const summary = new Error(`SUMMARY (${errs.length} errors): ` + topmsg.join(' | '));
69
+ summary.stack = stacks.join('\n');
70
+ ctx.log.error(summary);
71
+ summary.errs = () => errs;
72
+ throw summary;
56
73
  }
57
74
  }
58
75
  async function buildBaseGuide(ctx) {
59
- let baseguide = {};
76
+ let baseguide;
60
77
  if ('heuristic01' === ctx.opts.strategy) {
61
78
  baseguide = await (0, heuristic01_1.heuristic01)(ctx);
62
79
  }
63
80
  else {
64
81
  throw new Error('Unknown guide strategy: ' + ctx.opts.strategy);
65
82
  }
83
+ // console.dir(baseguide, { depth: null })
66
84
  const guideBlocks = [
67
85
  '# Guide',
68
86
  '',
69
87
  'guide: {',
70
88
  ];
71
- (0, struct_1.items)(baseguide.entity).map(([entityname, entity]) => {
89
+ const metrics = baseguide.metrics;
90
+ // TODO: these should influence the IS_ENTCMP_METHOD_RATE etc. values
91
+ const epr = 0 < metrics.count.path ? (metrics.count.entity / metrics.count.path).toFixed(3) : -1;
92
+ const emr = 0 < metrics.count.method ? (metrics.count.entity / metrics.count.method).toFixed(3) : -1;
93
+ ctx.log.info({
94
+ point: 'metrics',
95
+ metrics,
96
+ note: `epr=${epr} emr=${emr} ` +
97
+ `(entity=${metrics.count.entity} ` +
98
+ `paths=${metrics.count.path} methods=${metrics.count.method})`
99
+ });
100
+ validateBaseBuide(ctx, baseguide);
101
+ const sw = (s) => ctx.opts.why?.show ? s : '';
102
+ const qs = (v) => JSON.stringify(v);
103
+ const qt = (v) => '(' + qs(v) + ')';
104
+ guideBlocks.push(` metrics: count: entity: ${metrics.count.entity}
105
+ metrics: count: path: ${metrics.count.path}
106
+ metrics: count: method: ${metrics.count.method}`);
107
+ // NOTE: items(...) sorts the iteration elements, so the generated model code
108
+ // is deterministic.
109
+ (0, struct_1.items)(baseguide.entity).map(([entname, entity]) => {
72
110
  guideBlocks.push(`
73
- entity: ${entityname}: {` +
74
- (0 < entity.why_name.length ? ' # name:' + entity.why_name.join(';') : ''));
75
- (0, struct_1.items)(entity.path).map(([pathname, path]) => {
76
- guideBlocks.push(` path: '${pathname}': op: {` +
77
- (0 < path.why_ent.length ? ' # ent:' + path.why_ent.join(';') : ''));
111
+ entity: ${entname}: {`
112
+ // sw(0 < entity.why_name.length ? ' # name:' + entity.why_name.join(';') : '')
113
+ );
114
+ // NOTE: items(...) sorts the paths
115
+ (0, struct_1.items)(entity.path).map(([pathstr, path]) => {
116
+ (0, utility_1.debugpath)(pathstr, null, 'BASE-GUIDE', entname, pathstr, (0, utility_1.formatJSONIC)(path, { hsepd: 0, $: true, color: true }));
117
+ guideBlocks.push(` path: ${qs(pathstr)}: {` +
118
+ sw(0 < path.why_path.length ?
119
+ ' # ent=' + entname + ';' +
120
+ (entity.orig !== entname && null != entity.orig ? 'orig=' + entity.orig + ';' : '') +
121
+ path.why_path.join(';') : ''));
122
+ if (!(0, struct_1.isempty)(path.action)) {
123
+ (0, struct_1.items)(path.action).map(([actname, actdesc]) => {
124
+ guideBlocks.push(` action: ${qs(actname)}: {}` +
125
+ sw(0 < actdesc.why_action.length ?
126
+ ' # ' + actdesc.why_action.join(';') : ''));
127
+ });
128
+ }
129
+ if (!(0, struct_1.isempty)(path.rename?.param)) {
130
+ (0, struct_1.items)(path.rename.param).map(([psrc, rp]) => {
131
+ guideBlocks.push(` rename: param: ${qs(psrc)}: *${qs(rp.target)}` +
132
+ sw(0 < rp.why_rename.length ?
133
+ ' # ' + rp.why_rename.join(';') : ''));
134
+ });
135
+ }
78
136
  (0, struct_1.items)(path.op).map(([opname, op]) => {
79
- guideBlocks.push(` '${opname}': method: ${op.method}` +
80
- (0 < op.why_op.length ? ' # ' + op.why_op : ''));
81
- if (op.transform?.reqform) {
82
- guideBlocks.push(` '${opname}': transform: reqform: ${JSON.stringify(op.transform.reqform)}`);
137
+ guideBlocks.push(` op: ${opname}: method: *${op.method}` +
138
+ sw(0 < op.why_op.length ? ' # ' + op.why_op : ''));
139
+ if (null != op.transform.req) {
140
+ guideBlocks.push(
141
+ // ` op: ${opname}: transform: res: *${qt(op.transform.res)}|top`)
142
+ ` op: ${opname}: transform: res: *${qt(op.transform.res)}|top`);
143
+ }
144
+ if (null != op.transform.res) {
145
+ guideBlocks.push(
146
+ // ` op: ${opname}: transform: res: *${qt(op.transform.res)}|top`)
147
+ ` op: ${opname}: transform: res: *${qt(op.transform.res)}|top`);
83
148
  }
84
149
  });
85
150
  guideBlocks.push(` }`);
@@ -104,4 +169,70 @@ async function buildBaseGuide(ctx) {
104
169
  }, root);
105
170
  return jres;
106
171
  }
172
+ function validateBaseBuide(ctx, baseguide) {
173
+ const srcm = {};
174
+ // Each orig path.
175
+ (0, jostraca_1.each)(ctx.def.paths, (pdef) => {
176
+ const pathStr = pdef.key$;
177
+ // Each orig method.
178
+ (0, jostraca_1.each)(pdef, (mdef) => {
179
+ if (mdef.key$.match(/^get|post|put|patch|delete|head|options$/i)) {
180
+ let key = pathStr + ' ' + mdef.key$.toUpperCase();
181
+ let desc = (srcm[key] = (srcm[key] || { c: 0 }));
182
+ desc.c++;
183
+ }
184
+ });
185
+ });
186
+ const genm = {};
187
+ // Each entity.
188
+ (0, jostraca_1.each)(baseguide.entity, (entm) => {
189
+ if ((0, struct_1.isempty)(entm.path)) {
190
+ ctx.warn({
191
+ note: `No paths defined for entity=${entm.name}`,
192
+ entm,
193
+ });
194
+ }
195
+ // Each path.
196
+ (0, jostraca_1.each)(entm.path, (pathm, pathStr) => {
197
+ if ((0, struct_1.isempty)(pathm.op)) {
198
+ ctx.warn({
199
+ note: `No operations defined for entity=${entm.name} path=${pathStr}`,
200
+ path: pathStr,
201
+ entm,
202
+ pathm,
203
+ });
204
+ }
205
+ // Each op.
206
+ (0, jostraca_1.each)(pathm.op, (odef) => {
207
+ let key = pathStr + ' ' + odef.method;
208
+ let desc = (genm[key] = (genm[key] || { c: 0 }));
209
+ desc.c++;
210
+ });
211
+ });
212
+ });
213
+ const srcp = Object.keys(srcm).sort()
214
+ .reduce((a, k) => (a.push(k + ':c=' + srcm[k].c), a), []);
215
+ const genp = Object.keys(genm).sort()
216
+ .reduce((a, k) => (a.push(k + ':c=' + genm[k].c), a), []);
217
+ // Check that all paths have been assigned to entities.
218
+ if (srcp.join(';') !== genp.join(';')) {
219
+ console.log(' ', 'SRC-PATH'.padEnd(60, ' '), 'GEN-PATH');
220
+ for (let i = 0, j = 0; i < srcp.length || j < genp.length; i++, j++) {
221
+ let srcps = srcp[i];
222
+ let genps = genp[j];
223
+ let prefix = ' ';
224
+ if (srcps !== genps) {
225
+ prefix = ' *** ';
226
+ if (srcps === genp[j + 1]) {
227
+ j++;
228
+ }
229
+ else if (genps === srcp[i + 1]) {
230
+ i++;
231
+ }
232
+ }
233
+ console.log(prefix, srcps.padEnd(60, ' '), genps);
234
+ }
235
+ throw new Error('PATH MISMATCH');
236
+ }
237
+ }
107
238
  //# sourceMappingURL=guide.js.map