@voxgig/apidef 3.0.2 → 3.1.1

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 (74) hide show
  1. package/dist/apidef.d.ts +5 -4
  2. package/dist/apidef.js +12 -21
  3. package/dist/apidef.js.map +1 -1
  4. package/dist/builder/entity/info.js +1 -1
  5. package/dist/builder/entity/info.js.map +1 -1
  6. package/dist/builder/flow.js +29 -27
  7. package/dist/builder/flow.js.map +1 -1
  8. package/dist/desc.d.ts +11 -13
  9. package/dist/guide/guide.js +1 -1
  10. package/dist/guide/guide.js.map +1 -1
  11. package/dist/guide/heuristic01.js +4 -2
  12. package/dist/guide/heuristic01.js.map +1 -1
  13. package/dist/model.d.ts +42 -7
  14. package/dist/parse.d.ts +3 -1
  15. package/dist/parse.js +35 -2
  16. package/dist/parse.js.map +1 -1
  17. package/dist/resolver.js +2 -1
  18. package/dist/resolver.js.map +1 -1
  19. package/dist/transform/args.d.ts +2 -2
  20. package/dist/transform/args.js +9 -13
  21. package/dist/transform/args.js.map +1 -1
  22. package/dist/transform/clean.d.ts +2 -2
  23. package/dist/transform/clean.js +2 -1
  24. package/dist/transform/clean.js.map +1 -1
  25. package/dist/transform/entity.d.ts +3 -3
  26. package/dist/transform/entity.js.map +1 -1
  27. package/dist/transform/field.d.ts +2 -2
  28. package/dist/transform/field.js +2 -3
  29. package/dist/transform/field.js.map +1 -1
  30. package/dist/transform/flow.d.ts +3 -0
  31. package/dist/transform/flow.js +26 -0
  32. package/dist/transform/flow.js.map +1 -0
  33. package/dist/transform/flowstep.d.ts +3 -0
  34. package/dist/transform/flowstep.js +145 -0
  35. package/dist/transform/flowstep.js.map +1 -0
  36. package/dist/transform/operation.d.ts +2 -2
  37. package/dist/transform/operation.js +15 -8
  38. package/dist/transform/operation.js.map +1 -1
  39. package/dist/transform/select.d.ts +2 -2
  40. package/dist/transform/select.js +28 -7
  41. package/dist/transform/select.js.map +1 -1
  42. package/dist/transform/top.d.ts +0 -9
  43. package/dist/transform/top.js +13 -0
  44. package/dist/transform/top.js.map +1 -1
  45. package/dist/transform.d.ts +1 -1
  46. package/dist/tsconfig.tsbuildinfo +1 -1
  47. package/dist/types.d.ts +9 -1
  48. package/dist/types.js.map +1 -1
  49. package/dist/utility.d.ts +5 -1
  50. package/dist/utility.js +64 -1
  51. package/dist/utility.js.map +1 -1
  52. package/model/apidef.jsonic +8 -7
  53. package/package.json +7 -7
  54. package/src/apidef.ts +15 -22
  55. package/src/builder/entity/info.ts +1 -1
  56. package/src/builder/flow.ts +16 -9
  57. package/src/desc.ts +28 -17
  58. package/src/guide/guide.ts +2 -1
  59. package/src/guide/heuristic01.ts +5 -3
  60. package/src/model.ts +51 -6
  61. package/src/parse.ts +50 -3
  62. package/src/resolver.ts +3 -1
  63. package/src/transform/args.ts +11 -15
  64. package/src/transform/clean.ts +4 -5
  65. package/src/transform/entity.ts +4 -7
  66. package/src/transform/field.ts +7 -25
  67. package/src/transform/flow.ts +59 -0
  68. package/src/transform/flowstep.ts +242 -0
  69. package/src/transform/operation.ts +27 -31
  70. package/src/transform/select.ts +44 -15
  71. package/src/transform/top.ts +11 -42
  72. package/src/transform.ts +4 -4
  73. package/src/types.ts +2 -6
  74. package/src/utility.ts +87 -1
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.flowstepTransform = void 0;
4
+ const jostraca_1 = require("jostraca");
5
+ const struct_1 = require("@voxgig/struct");
6
+ const types_1 = require("../types");
7
+ const flowstepTransform = async function (ctx) {
8
+ const { apimodel, guide } = ctx;
9
+ const kit = apimodel.main[types_1.KIT];
10
+ let msg = '';
11
+ (0, jostraca_1.each)(kit.flow, (flow, flowname) => {
12
+ ctx.log.debug({ point: 'flowstep', note: flowname });
13
+ const ent = kit.entity[flow.entity];
14
+ const opmap = ent.op;
15
+ // TODO: spec parameter passed into each step func, used semantically by generator
16
+ // validation: part of spec, semantic name and params, up to generator how to use it
17
+ const ref01 = ent.name + '_ref01';
18
+ createStep(opmap, flow, ent, { input: { ref: ref01 } });
19
+ listStep(opmap, flow, ent, { valid: [{ apply: 'ItemExists', def: { ref: ref01 } }] });
20
+ const mark01 = 'Mark01-' + ref01;
21
+ const firsttf = firstTextField(ent);
22
+ updateStep(opmap, flow, ent, {
23
+ input: {
24
+ ref: ref01,
25
+ textfield: firsttf?.name,
26
+ suffix: '_up0',
27
+ srcdatavar: ref01 + '_data'
28
+ },
29
+ spec: [{
30
+ apply: 'TextFieldMark',
31
+ def: { mark: mark01 }
32
+ }]
33
+ });
34
+ loadStep(opmap, flow, ent, {
35
+ input: {
36
+ ref: ref01,
37
+ suffix: '_dt0',
38
+ srcdatavar: ref01 + '_data'
39
+ },
40
+ valid: [{
41
+ apply: 'TextFieldMark',
42
+ def: { mark: mark01 }
43
+ }]
44
+ });
45
+ removeStep(opmap, flow, ent, {
46
+ input: { ref: ref01, suffix: '_rm0' }
47
+ });
48
+ if (null != opmap.remove) {
49
+ listStep(opmap, flow, ent, {
50
+ input: { suffix: '_rt0' },
51
+ valid: [{ apply: 'ItemNotExists', def: { ref: ref01 } }]
52
+ });
53
+ }
54
+ msg += flowname + ' ';
55
+ });
56
+ return { ok: true, msg };
57
+ };
58
+ exports.flowstepTransform = flowstepTransform;
59
+ function newFlowStep(opname, args) {
60
+ return {
61
+ op: opname,
62
+ input: args.input ?? {},
63
+ match: args.match ?? {},
64
+ data: args.data ?? {},
65
+ spec: args.spec ?? [],
66
+ valid: args.valid ?? [],
67
+ };
68
+ }
69
+ const createStep = (opmap, flow, ent, args) => {
70
+ if (null != opmap.update) {
71
+ // Use last alt as most generic
72
+ const alt = (0, struct_1.getelem)(opmap.update.alts, -1);
73
+ const step = newFlowStep('create', args);
74
+ flow.step.push(step);
75
+ }
76
+ };
77
+ const listStep = (opmap, flow, ent, args) => {
78
+ if (null != opmap.list) {
79
+ // Use last alt as most generic
80
+ const alt = (0, struct_1.getelem)(opmap.list.alts, -1);
81
+ const step = newFlowStep('list', args);
82
+ (0, jostraca_1.each)(alt.args.param, (param) => {
83
+ step.match[param.name] = args.input?.[param.name] ?? param.name.replace(/_id/, '') + '01';
84
+ });
85
+ flow.step.push(step);
86
+ }
87
+ };
88
+ const updateStep = (opmap, flow, ent, args) => {
89
+ if (null != opmap.update) {
90
+ // Use last alt as most generic
91
+ const alt = (0, struct_1.getelem)(opmap.update.alts, -1);
92
+ const step = newFlowStep('update', args);
93
+ (0, jostraca_1.each)(alt.args.param, (param) => {
94
+ if ('id' === param.name) {
95
+ step.data.id = args.input?.id ?? ent.name + '01';
96
+ }
97
+ else {
98
+ step.data[param.name] = args.input?.[param.name] ?? param.name.replace(/_id/, '') + '01';
99
+ }
100
+ });
101
+ flow.step.push(step);
102
+ }
103
+ };
104
+ const loadStep = (opmap, flow, ent, args) => {
105
+ if (null != opmap.load) {
106
+ // Use last alt as most generic
107
+ const alt = (0, struct_1.getelem)(opmap.load.alts, -1);
108
+ const step = newFlowStep('load', args);
109
+ (0, jostraca_1.each)(alt.args.param, (param) => {
110
+ if ('id' === param.name) {
111
+ step.match.id = args.input?.id ?? ent.name + '01';
112
+ }
113
+ else {
114
+ step.match[param.name] = args.input?.[param.name] ?? param.name.replace(/_id/, '') + '01';
115
+ }
116
+ });
117
+ flow.step.push(step);
118
+ }
119
+ };
120
+ const removeStep = (opmap, flow, ent, args) => {
121
+ if (null != opmap.remove) {
122
+ // Use last alt as most generic
123
+ const alt = (0, struct_1.getelem)(opmap.remove.alts, -1);
124
+ const step = newFlowStep('remove', args);
125
+ (0, jostraca_1.each)(alt.args.param, (param) => {
126
+ if ('id' === param.name) {
127
+ step.match.id = args.input?.id ?? ent.name + '01';
128
+ }
129
+ else {
130
+ step.match[param.name] = args.input?.[param.name] ?? param.name.replace(/_id/, '') + '01';
131
+ }
132
+ });
133
+ flow.step.push(step);
134
+ }
135
+ };
136
+ function firstTextField(ent) {
137
+ const fields = (0, jostraca_1.each)(ent.fields);
138
+ for (let fI = 0; fI < fields.length; fI++) {
139
+ const field = fields[fI];
140
+ if ('`$STRING`' === field.type && 'id' !== field.name) {
141
+ return field;
142
+ }
143
+ }
144
+ }
145
+ //# sourceMappingURL=flowstep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flowstep.js","sourceRoot":"","sources":["../../src/transform/flowstep.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { TransformResult } from '../transform';
2
- declare const operationTransform: (ctx: any) => Promise<TransformResult>;
1
+ import type { Transform } from '../transform';
2
+ declare const operationTransform: Transform;
3
3
  export { operationTransform, };
@@ -14,14 +14,14 @@ const operationTransform = async function (ctx) {
14
14
  list: undefined,
15
15
  create: undefined,
16
16
  update: undefined,
17
- delete: undefined,
17
+ remove: undefined,
18
18
  patch: undefined,
19
19
  };
20
20
  resolveLoad(opm, gent);
21
21
  resolveList(opm, gent);
22
22
  resolveCreate(opm, gent);
23
23
  resolveUpdate(opm, gent);
24
- resolveDelete(opm, gent);
24
+ resolveRemove(opm, gent);
25
25
  resolvePatch(opm, gent);
26
26
  kit.entity[entname].op = opm;
27
27
  msg += gent.name + ' ';
@@ -30,16 +30,18 @@ const operationTransform = async function (ctx) {
30
30
  };
31
31
  exports.operationTransform = operationTransform;
32
32
  function collectOps(gent) {
33
+ ;
33
34
  gent.opm$ = gent.opm$ ?? {};
34
35
  (0, jostraca_1.each)(gent.paths$, (pathdesc) => {
35
36
  (0, jostraca_1.each)(pathdesc.op, (gop, opname) => {
37
+ ;
36
38
  gent.opm$[opname] = gent.opm$[opname] ?? { paths: [] };
37
39
  const oppathdesc = {
38
40
  orig: pathdesc.orig,
39
41
  parts: pathdesc.parts,
40
42
  rename: pathdesc.rename,
41
43
  method: gop.method,
42
- op: pathdesc.op,
44
+ op: gop,
43
45
  def: pathdesc.def,
44
46
  };
45
47
  gent.opm$[opname].paths.push(oppathdesc);
@@ -62,8 +64,8 @@ function resolveUpdate(opm, gent) {
62
64
  const opdesc = opm.update = resolveOp('update', gent);
63
65
  return opdesc;
64
66
  }
65
- function resolveDelete(opm, gent) {
66
- const opdesc = opm.delete = resolveOp('delete', gent);
67
+ function resolveRemove(opm, gent) {
68
+ const opdesc = opm.remove = resolveOp('remove', gent);
67
69
  return opdesc;
68
70
  }
69
71
  function resolvePatch(opm, gent) {
@@ -82,18 +84,23 @@ function resolveOp(opname, gent) {
82
84
  let mop = undefined;
83
85
  let opdesc = gent.opm$[opname];
84
86
  if (opdesc) {
85
- // console.dir(opdesc, { depth: null })
86
87
  mop = {
87
88
  name: opname,
88
- alts: opdesc.paths.map(p => {
89
+ alts: opdesc.paths.map((p) => {
89
90
  const parts = applyRename(p);
90
91
  const malt = {
91
92
  orig: p.orig,
92
93
  parts,
94
+ rename: p.rename,
93
95
  method: p.method,
94
96
  args: {},
95
- select: {}
97
+ transform: opdesc.transform ?? {},
98
+ select: {
99
+ exist: []
100
+ }
96
101
  };
102
+ malt.transform.req = malt.transform.req ?? '`reqdata`';
103
+ malt.transform.res = malt.transform.res ?? '`body`';
97
104
  return malt;
98
105
  })
99
106
  };
@@ -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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"}
@@ -1,3 +1,3 @@
1
- import type { TransformResult } from '../transform';
2
- declare const selectTransform: (ctx: any) => Promise<TransformResult>;
1
+ import type { Transform } from '../transform';
2
+ declare const selectTransform: Transform;
3
3
  export { selectTransform, };
@@ -7,33 +7,35 @@ const selectTransform = async function (ctx) {
7
7
  const { apimodel, def, guide } = ctx;
8
8
  const kit = apimodel.main[types_1.KIT];
9
9
  let msg = 'select ';
10
- (0, jostraca_1.each)(kit.entity, (ment, entname) => {
11
- (0, jostraca_1.each)(ment.op, (mop, opname) => {
10
+ (0, jostraca_1.each)(kit.entity, (ment, _entname) => {
11
+ (0, jostraca_1.each)(ment.op, (mop, _opname) => {
12
12
  (0, jostraca_1.each)(mop.alts, (malt) => {
13
13
  const pdef = def.paths[malt.orig];
14
14
  resolveSelect(guide, ment, mop, malt, pdef);
15
15
  });
16
+ if (null != mop.alts && 0 < mop.alts.length) {
17
+ sortAlts(guide, ment, mop);
18
+ }
16
19
  });
17
20
  msg += ment.name + ' ';
18
21
  });
19
22
  return { ok: true, msg };
20
23
  };
21
24
  exports.selectTransform = selectTransform;
22
- function resolveSelect(guide, ment, mop, malt, pdef) {
25
+ function resolveSelect(guide, ment, _mop, malt, _pdef) {
23
26
  const select = malt.select;
24
27
  const margs = malt.args;
25
28
  const argkinds = ['param', 'query', 'header', 'cookie'];
26
29
  argkinds.map((kind) => {
27
30
  (0, jostraca_1.each)(margs[kind], (marg) => {
28
- select[kind] = (select[kind] ?? {});
29
- if (marg.req) {
30
- select[kind][marg.name] = true;
31
+ if (!select.exist.includes(marg.name)) {
32
+ select.exist.push(marg.name);
31
33
  }
32
34
  });
33
35
  });
36
+ select.exist.sort();
34
37
  const gent = guide.entity[ment.name];
35
38
  const gpath = gent.path[malt.orig];
36
- // console.log('GPATH', gpath)
37
39
  if (gpath.action) {
38
40
  const actname = Object.keys(gpath.action)[0];
39
41
  if (null != actname) {
@@ -41,4 +43,23 @@ function resolveSelect(guide, ment, mop, malt, pdef) {
41
43
  }
42
44
  }
43
45
  }
46
+ function sortAlts(_guide, _ment, mop) {
47
+ mop.alts.sort((a, b) => {
48
+ // longest exist len first
49
+ let order = b.select.exist.length - a.select.exist.length;
50
+ if (0 === order) {
51
+ if (null != a.select.$action && null != b.select.$action) {
52
+ order = a.select.$action < b.select.$action ? -1 :
53
+ a.select.$action > b.select.$action ? 1 : 0;
54
+ }
55
+ if (0 === order) {
56
+ const a_exist_str = a.select.exist.join('\t');
57
+ const b_exist_str = b.select.exist.join('\t');
58
+ order = a_exist_str < b_exist_str ? -1 :
59
+ a_exist_str > b_exist_str ? 1 : 0;
60
+ }
61
+ }
62
+ return order;
63
+ });
64
+ }
44
65
  //# sourceMappingURL=select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/transform/select.ts"],"names":[],"mappings":";;;AAEA,uCAAwC;AAOxC,oCAA8B;AAuB9B,MAAM,eAAe,GAAG,KAAK,WAC3B,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,OAAe,EAAE,EAAE;QACtD,IAAA,eAAI,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAY,EAAE,MAAc,EAAE,EAAE;YAC7C,IAAA,eAAI,EAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAc,EAAE,EAAE;gBAChC,MAAM,IAAI,GAAY,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAC1C,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;YAC7C,CAAC,CAAC,CAAA;QACJ,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;AAoCC,0CAAe;AAjCjB,SAAS,aAAa,CAAC,KAAY,EAAE,IAAiB,EAAE,GAAY,EAAE,IAAc,EAAE,IAAa;IACjG,MAAM,MAAM,GAAQ,IAAI,CAAC,MAAM,CAAA;IAC/B,MAAM,KAAK,GAAQ,IAAI,CAAC,IAAI,CAAA;IAE5B,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAEvD,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE;QAC5B,IAAA,eAAI,EAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAc,EAAE,EAAE;YACnC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;YAEnC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YAChC,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAElC,8BAA8B;IAE9B,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"}
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../../src/transform/select.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,3 @@
1
1
  import type { TransformResult } from '../transform';
2
- import type { GuidePath, PathDesc, OpDesc } from '../desc';
3
- import type { OpName } from '../model';
4
- type GuideEntity = {
5
- name: string;
6
- path: Record<string, GuidePath>;
7
- paths$: PathDesc[];
8
- opm$: Record<OpName, OpDesc>;
9
- };
10
2
  declare const topTransform: (ctx: any) => Promise<TransformResult>;
11
3
  export { topTransform };
12
- export type { GuideEntity, };
@@ -3,6 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.topTransform = void 0;
4
4
  const struct_1 = require("@voxgig/struct");
5
5
  const types_1 = require("../types");
6
+ // Guide* => from guide model
7
+ // *Desc => internal working descriptiuon
8
+ // *Def => API spec definition
9
+ // Model* => Generated SDK Model
10
+ // type GuideEntity = {
11
+ // name: string,
12
+ // path: Record<string, GuidePath>
13
+ // paths$: PathDesc[]
14
+ // opm$: Record<OpName, OpDesc>
15
+ // }
6
16
  const topTransform = async function (ctx) {
7
17
  const { apimodel, def } = ctx;
8
18
  const kit = apimodel.main[types_1.KIT];
@@ -17,4 +27,7 @@ const topTransform = async function (ctx) {
17
27
  return { ok: true, msg: 'top' };
18
28
  };
19
29
  exports.topTransform = topTransform;
30
+ // export type {
31
+ // GuideEntity,
32
+ // }
20
33
  //# sourceMappingURL=top.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"top.js","sourceRoot":"","sources":["../../src/transform/top.ts"],"names":[],"mappings":";;;AAGA,2CAAwC;AAExC,oCAA8B;AAgE9B,MAAM,YAAY,GAAG,KAAK,WACxB,GAAQ;IAER,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IAC7B,MAAM,GAAG,GAAa,QAAQ,CAAC,IAAI,CAAC,WAAG,CAAC,CAAA;IAExC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACnB,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAA;IAEpC,cAAc;IACd,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,KAAK,GAAG,IAAA,gBAAO,EAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC/E,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;AACjC,CAAC,CAAA;AAIC,oCAAY"}
1
+ {"version":3,"file":"top.js","sourceRoot":"","sources":["../../src/transform/top.ts"],"names":[],"mappings":";;;AACA,2CAAwC;AAExC,oCAA8B;AAmB9B,6BAA6B;AAC7B,yCAAyC;AACzC,8BAA8B;AAC9B,gCAAgC;AAGhC,uBAAuB;AACvB,kBAAkB;AAClB,oCAAoC;AAEpC,uBAAuB;AACvB,iCAAiC;AACjC,IAAI;AAGJ,MAAM,YAAY,GAAG,KAAK,WACxB,GAAQ;IAER,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IAC7B,MAAM,GAAG,GAAa,QAAQ,CAAC,IAAI,CAAC,WAAG,CAAC,CAAA;IAExC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACnB,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,EAAE,CAAA;IAEpC,cAAc;IACd,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,GAAG,KAAK,GAAG,IAAA,gBAAO,EAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;SAC/E,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAA;AACjC,CAAC,CAAA;AAIC,oCAAY;AAId,gBAAgB;AAChB,iBAAiB;AACjB,IAAI"}
@@ -15,7 +15,7 @@ type TransformResult = {
15
15
  err?: any;
16
16
  transform?: any;
17
17
  };
18
- type Transform = (ctx: TransformCtx, guide: Guide, tspec: TransformSpec, apimodel: any, def: any) => Promise<TransformResult>;
18
+ type Transform = (ctx: TransformCtx) => Promise<TransformResult>;
19
19
  declare const OPKIND: any;
20
20
  declare const GuideShape: {
21
21
  <V>(root?: V | undefined, ctx?: import("gubu").Context): V & {
@@ -1 +1 @@
1
- {"root":["../src/apidef.ts","../src/def.ts","../src/desc.ts","../src/model.ts","../src/parse.ts","../src/resolver.ts","../src/transform.ts","../src/types.ts","../src/utility.ts","../src/builder/entity.ts","../src/builder/flow.ts","../src/builder/entity/entity.ts","../src/builder/entity/info.ts","../src/builder/flow/flowheuristic01.ts","../src/guide/guide.ts","../src/guide/heuristic01.ts","../src/transform/args.ts","../src/transform/clean.ts","../src/transform/entity.ts","../src/transform/field.ts","../src/transform/operation.ts","../src/transform/select.ts","../src/transform/top.ts"],"version":"5.9.3"}
1
+ {"root":["../src/apidef.ts","../src/def.ts","../src/desc.ts","../src/model.ts","../src/parse.ts","../src/resolver.ts","../src/transform.ts","../src/types.ts","../src/utility.ts","../src/builder/entity.ts","../src/builder/flow.ts","../src/builder/entity/entity.ts","../src/builder/entity/info.ts","../src/builder/flow/flowheuristic01.ts","../src/guide/guide.ts","../src/guide/heuristic01.ts","../src/transform/args.ts","../src/transform/clean.ts","../src/transform/entity.ts","../src/transform/field.ts","../src/transform/flow.ts","../src/transform/flowstep.ts","../src/transform/operation.ts","../src/transform/select.ts","../src/transform/top.ts"],"version":"5.9.3"}
package/dist/types.d.ts CHANGED
@@ -986,7 +986,15 @@ declare const OpenBuildShape: {
986
986
  };
987
987
  };
988
988
  type Build = ReturnType<typeof BuildShape>;
989
- type ApiModel = {};
989
+ type ApiModel = {
990
+ main: {
991
+ kit: {
992
+ info: Record<string, any>;
993
+ entity: Record<string, any>;
994
+ flow: Record<string, any>;
995
+ };
996
+ };
997
+ };
990
998
  type KitModel = {
991
999
  info: Record<string, any>;
992
1000
  entity: Record<string, any>;
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;AAK5C,+BAAsC;AAGtC,MAAM,GAAG,GAAG,KAAK,CAAA;AA6Of,kBAAG;AA7ML,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC;IACxB,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf;CACF,CAAC,CAAA;AACF,MAAM,gBAAgB,GAAG,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAsMpE,4CAAgB;AAhMlB,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC;IACtB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,IAAI,EAAE;QACJ,CAAC,GAAG,CAAC,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,GAAG,EAAE;YACH,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;SACX;KACF;CACF,CAAC,CAAA;AACF,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAqL9D,wCAAc;AAhLhB,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC;IACtB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,EAAE;QACP,EAAE,EAAE,IAAA,UAAG,GAAE;QACT,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,EAAE;QACb,KAAK,EAAE;YACL,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI;SACV;KACF;CACF,CAAC,CAAA;AACF,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,UAAU,CAAC,CAAC,CAAA;AA8J3C,wCAAc"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,4CAA4C;;;AAK5C,+BAAsC;AAGtC,MAAM,GAAG,GAAG,KAAK,CAAA;AAyOf,kBAAG;AAzML,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC;IACxB,IAAI,EAAE;QACJ,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,IAAI;QACX,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI;KACf;CACF,CAAC,CAAA;AACF,MAAM,gBAAgB,GAAG,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAkMpE,4CAAgB;AA5LlB,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC;IACtB,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,IAAI,EAAE;QACJ,CAAC,GAAG,CAAC,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,GAAG,EAAE;YACH,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;SACX;KACF;CACF,CAAC,CAAA;AACF,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAiL9D,wCAAc;AA5KhB,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC;IACtB,IAAI,EAAE;QACJ,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,EAAE;QACR,KAAK,EAAE,EAAE;QACT,GAAG,EAAE,EAAE;QACP,GAAG,EAAE,EAAE;QACP,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,EAAE;QACP,EAAE,EAAE,IAAA,UAAG,GAAE;QACT,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,EAAE;QACb,KAAK,EAAE;YACL,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI;YACT,GAAG,EAAE,IAAI;SACV;KACF;CACF,CAAC,CAAA;AACF,MAAM,cAAc,GAAG,IAAA,WAAI,EAAC,IAAA,WAAI,EAAC,UAAU,CAAC,CAAC,CAAA;AA0J3C,wCAAc"}
package/dist/utility.d.ts CHANGED
@@ -36,5 +36,9 @@ declare function findPathsWithPrefix(ctx: any, pathStr: string, opts?: {
36
36
  param?: boolean;
37
37
  }): number;
38
38
  declare function nom(v: any, format: string): string;
39
+ declare function relativizePath(path: string): string;
40
+ declare function getModelPath(model: any, path: string, flags?: {
41
+ required?: boolean;
42
+ }): any;
39
43
  export type { PathMatch };
40
- export { nom, getdlog, loadFile, formatJsonSrc, depluralize, find, capture, pathMatch, makeWarner, formatJSONIC, validator, canonize, debugpath, findPathsWithPrefix, writeFileSyncWarn, warnOnError, };
44
+ export { nom, getdlog, loadFile, formatJsonSrc, depluralize, find, capture, pathMatch, makeWarner, formatJSONIC, validator, canonize, debugpath, findPathsWithPrefix, writeFileSyncWarn, warnOnError, relativizePath, getModelPath, };
package/dist/utility.js CHANGED
@@ -19,6 +19,8 @@ exports.debugpath = debugpath;
19
19
  exports.findPathsWithPrefix = findPathsWithPrefix;
20
20
  exports.writeFileSyncWarn = writeFileSyncWarn;
21
21
  exports.warnOnError = warnOnError;
22
+ exports.relativizePath = relativizePath;
23
+ exports.getModelPath = getModelPath;
22
24
  const node_path_1 = __importDefault(require("node:path"));
23
25
  const jostraca_1 = require("jostraca");
24
26
  const util_1 = require("@voxgig/util");
@@ -42,7 +44,7 @@ function writeFileSyncWarn(warn, fs, path, text) {
42
44
  catch (err) {
43
45
  warn({
44
46
  err,
45
- note: 'Unable to save file: ' + path
47
+ note: 'Unable to save file: ' + relativizePath(path)
46
48
  });
47
49
  }
48
50
  }
@@ -631,6 +633,8 @@ function findPathsWithPrefix(ctx, pathStr, opts) {
631
633
  function allcapify(s) {
632
634
  return 'string' === typeof s ? (0, jostraca_1.snakify)(s).toUpperCase() : '';
633
635
  }
636
+ // Get value from object as string, and format as indicated.
637
+ // Example: nom({foo:'bar'},'Foo') -> 'Bar'
634
638
  function nom(v, format) {
635
639
  let formatstr = 'string' == typeof format ? format : null;
636
640
  if (null == formatstr) {
@@ -644,4 +648,63 @@ function nom(v, format) {
644
648
  /-/.test(formatstr) ? (0, jostraca_1.kebabify)(out) : out;
645
649
  return out;
646
650
  }
651
+ function relativizePath(path) {
652
+ const cwd = process.cwd();
653
+ if (path.startsWith(cwd)) {
654
+ return '.' + path.slice(cwd.length);
655
+ }
656
+ return path;
657
+ }
658
+ function getModelPath(model, path, flags) {
659
+ const required = flags?.required ?? true;
660
+ if (path === '') {
661
+ if (required) {
662
+ throw new Error('getModelPath: empty path provided');
663
+ }
664
+ return undefined;
665
+ }
666
+ const parts = path.split('.');
667
+ const fullPath = path; // Store the full path for error messages
668
+ let current = model;
669
+ let validPath = [];
670
+ for (let i = 0; i < parts.length; i++) {
671
+ const part = parts[i];
672
+ if (current == null) {
673
+ if (required) {
674
+ const validPathStr = validPath.length > 0 ? validPath.join('.') : '(root)';
675
+ throw new Error(`getModelPath: path not found at '${fullPath}'.\n` +
676
+ `Valid path up to: '${validPathStr}'.\n` +
677
+ `Cannot access property '${part}' of ${current === null ? 'null' : 'undefined'}.`);
678
+ }
679
+ return undefined;
680
+ }
681
+ // Check if current is an object before using 'in' operator
682
+ if (typeof current !== 'object' || current === null) {
683
+ if (required) {
684
+ const validPathStr = validPath.length > 0 ? validPath.join('.') : '(root)';
685
+ throw new Error(`getModelPath: path not found at '${fullPath}'.\n` +
686
+ `Valid path up to: '${validPathStr}'.\n` +
687
+ `Cannot access property '${part}' of ${typeof current}.`);
688
+ }
689
+ return undefined;
690
+ }
691
+ // Check if the key exists
692
+ if (!(part in current)) {
693
+ if (required) {
694
+ const validPathStr = validPath.length > 0 ? validPath.join('.') : '(root)';
695
+ const availableKeys = Array.isArray(current)
696
+ ? `array indices 0-${current.length - 1}`
697
+ : `[${Object.keys(current).join(', ')}]`;
698
+ throw new Error(`getModelPath: path not found at '${fullPath}'.\n` +
699
+ `Valid path up to: '${validPathStr}'.\n` +
700
+ `Property '${part}' does not exist.\n` +
701
+ `Available keys: ${availableKeys}`);
702
+ }
703
+ return undefined;
704
+ }
705
+ validPath.push(part);
706
+ current = current[part];
707
+ }
708
+ return current;
709
+ }
647
710
  //# sourceMappingURL=utility.js.map