@voxgig/apidef 2.4.0 → 3.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 (96) hide show
  1. package/dist/apidef.d.ts +5 -1
  2. package/dist/apidef.js +197 -112
  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 +29 -4
  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 +89 -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 +1120 -234
  28. package/dist/guide/heuristic01.js.map +1 -1
  29. package/dist/model.d.ts +55 -0
  30. package/dist/model.js +4 -0
  31. package/dist/model.js.map +1 -0
  32. package/dist/parse.d.ts +1 -2
  33. package/dist/parse.js +8 -47
  34. package/dist/parse.js.map +1 -1
  35. package/dist/transform/args.d.ts +3 -0
  36. package/dist/transform/args.js +58 -0
  37. package/dist/transform/args.js.map +1 -0
  38. package/dist/transform/clean.js +27 -3
  39. package/dist/transform/clean.js.map +1 -1
  40. package/dist/transform/entity.d.ts +11 -3
  41. package/dist/transform/entity.js +57 -41
  42. package/dist/transform/entity.js.map +1 -1
  43. package/dist/transform/field.d.ts +3 -3
  44. package/dist/transform/field.js +90 -65
  45. package/dist/transform/field.js.map +1 -1
  46. package/dist/transform/operation.d.ts +1 -1
  47. package/dist/transform/operation.js +94 -296
  48. package/dist/transform/operation.js.map +1 -1
  49. package/dist/transform/select.d.ts +3 -0
  50. package/dist/transform/select.js +44 -0
  51. package/dist/transform/select.js.map +1 -0
  52. package/dist/transform/top.d.ts +9 -0
  53. package/dist/transform/top.js +11 -2
  54. package/dist/transform/top.js.map +1 -1
  55. package/dist/transform.js +4 -0
  56. package/dist/transform.js.map +1 -1
  57. package/dist/tsconfig.tsbuildinfo +1 -1
  58. package/dist/types.d.ts +112 -19
  59. package/dist/types.js +4 -2
  60. package/dist/types.js.map +1 -1
  61. package/dist/utility.d.ts +30 -2
  62. package/dist/utility.js +381 -6
  63. package/dist/utility.js.map +1 -1
  64. package/model/apidef.jsonic +75 -1
  65. package/model/guide.jsonic +14 -44
  66. package/package.json +19 -14
  67. package/src/apidef.ts +264 -121
  68. package/src/builder/entity/{apiEntity.ts → entity.ts} +18 -11
  69. package/src/builder/entity/info.ts +53 -0
  70. package/src/builder/entity.ts +9 -35
  71. package/src/builder/flow/flowHeuristic01.ts +46 -12
  72. package/src/builder/flow.ts +39 -5
  73. package/src/def.ts +91 -0
  74. package/src/desc.ts +143 -0
  75. package/src/guide/guide.ts +207 -134
  76. package/src/guide/heuristic01.ts +1651 -272
  77. package/src/model.ts +98 -0
  78. package/src/parse.ts +5 -61
  79. package/src/schematron.ts.off +317 -0
  80. package/src/transform/args.ts +102 -0
  81. package/src/transform/clean.ts +43 -8
  82. package/src/transform/entity.ts +100 -51
  83. package/src/transform/field.ts +150 -71
  84. package/src/transform/operation.ts +118 -414
  85. package/src/transform/select.ts +90 -0
  86. package/src/transform/top.ts +76 -3
  87. package/src/transform.ts +4 -0
  88. package/src/types.ts +185 -5
  89. package/src/utility.ts +481 -9
  90. package/dist/builder/entity/apiEntity.d.ts +0 -3
  91. package/dist/builder/entity/apiEntity.js.map +0 -1
  92. package/dist/builder/entity/def.d.ts +0 -3
  93. package/dist/builder/entity/def.js +0 -19
  94. package/dist/builder/entity/def.js.map +0 -1
  95. package/src/builder/entity/def.ts +0 -44
  96. package/src/guide.ts.off +0 -136
@@ -2,84 +2,109 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fieldTransform = void 0;
4
4
  const jostraca_1 = require("jostraca");
5
- const transform_1 = require("../transform");
5
+ const utility_1 = require("../utility");
6
+ const types_1 = require("../types");
6
7
  const fieldTransform = async function (ctx) {
7
- const { apimodel, model, def, guide } = ctx;
8
- let msg = 'fields: ';
9
- (0, jostraca_1.each)(guide.entity, (guideEntity) => {
10
- const entityName = guideEntity.key$;
11
- const entityModel = apimodel.main.api.entity[entityName];
12
- let fieldCount = 0;
13
- (0, jostraca_1.each)(guideEntity.path, (guidePath) => {
14
- const path = guidePath.key$;
15
- const pathdef = def.paths[path];
16
- (0, jostraca_1.each)(guidePath.op, (op) => {
17
- const opname = op.key$;
18
- if ('load' === opname) {
19
- fieldCount = fieldbuild(entityModel, pathdef, op, guidePath, guideEntity, model);
8
+ const { apimodel, def } = ctx;
9
+ const kit = apimodel.main[types_1.KIT];
10
+ let msg = 'field ';
11
+ const opFieldPrecedence = ['load', 'create', 'update', 'patch', 'list'];
12
+ (0, jostraca_1.each)(kit.entity, (ment, entname) => {
13
+ const fielddefs = [];
14
+ const fields = ment.fields;
15
+ const seen = {};
16
+ for (let opname of opFieldPrecedence) {
17
+ const mop = ment.op[opname];
18
+ if (mop) {
19
+ const malts = mop.alts;
20
+ for (let malt of malts) {
21
+ const opfields = resolveOpFields(ment, mop, malt, def);
22
+ for (let opfield of opfields) {
23
+ if (!seen[opfield.name]) {
24
+ fields.push(opfield);
25
+ seen[opfield.name] = opfield;
26
+ }
27
+ else {
28
+ mergeField(ment, mop, malt, def, seen[opfield.name], opfield);
29
+ }
30
+ }
20
31
  }
21
- });
32
+ }
33
+ }
34
+ fields.sort((a, b) => {
35
+ return a.name < b.name ? -1 : a.name > b.name ? 1 : 0;
22
36
  });
23
- msg += guideEntity.name + '=' + fieldCount + ' ';
37
+ msg += ment.name + ' ';
24
38
  });
25
39
  return { ok: true, msg };
26
40
  };
27
41
  exports.fieldTransform = fieldTransform;
28
- function fieldbuild(entityModel, pathdef, op, path, entity, model) {
29
- let fieldCount = 0;
30
- let fieldSets = (0, jostraca_1.getx)(pathdef.get, 'responses 200 content "application/json" schema');
31
- if (fieldSets) {
32
- if (Array.isArray(fieldSets.allOf)) {
33
- fieldSets = fieldSets.allOf;
42
+ function resolveOpFields(ment, mop, malt, def) {
43
+ const mfields = [];
44
+ const fielddefs = findFieldDefs(ment, mop, malt, def);
45
+ for (let fielddef of fielddefs) {
46
+ const fieldname = fielddef.key$;
47
+ const mfield = {
48
+ name: (0, utility_1.canonize)(fieldname),
49
+ type: (0, utility_1.validator)(fielddef.type),
50
+ req: !!fielddef.required,
51
+ op: {},
52
+ };
53
+ mfields.push(mfield);
54
+ }
55
+ return mfields;
56
+ }
57
+ function findFieldDefs(ment, mop, malt, def) {
58
+ const fielddefs = [];
59
+ const pathdef = def.paths[malt.orig];
60
+ const method = malt.method.toLowerCase();
61
+ const opdef = pathdef[method];
62
+ if (opdef) {
63
+ const responses = opdef.responses;
64
+ const requestBody = opdef.requestBody;
65
+ let fieldSets;
66
+ if (responses) {
67
+ fieldSets = (0, jostraca_1.getx)(responses, '200 content "application/json" schema') ??
68
+ (0, jostraca_1.getx)(responses, '200 schema');
69
+ if ('get' === method && 'list' == mop.name) {
70
+ fieldSets = (0, jostraca_1.getx)(responses, '201 content "application/json" schema items') ??
71
+ (0, jostraca_1.getx)(responses, '201 schema items');
72
+ }
73
+ else if ('put' === method && null == fieldSets) {
74
+ fieldSets = (0, jostraca_1.getx)(responses, '201 content "application/json" schema') ??
75
+ (0, jostraca_1.getx)(responses, '201 schema');
76
+ }
34
77
  }
35
- else if (fieldSets.properties) {
36
- fieldSets = [fieldSets];
78
+ if (requestBody) {
79
+ fieldSets = [
80
+ fieldSets,
81
+ (0, jostraca_1.getx)(requestBody, 'content "application/json" schema') ??
82
+ (0, jostraca_1.getx)(requestBody, 'schema')
83
+ ];
37
84
  }
38
- }
39
- (0, jostraca_1.each)(fieldSets, (fieldSet) => {
40
- (0, jostraca_1.each)(fieldSet.properties, (property) => {
41
- const field = (entityModel.field[property.key$] = entityModel.field[property.key$] || {});
42
- field.name = property.key$;
43
- (0, transform_1.fixName)(field, field.name);
44
- // field.type = property.type
45
- resolveFieldType(entityModel, field, property);
46
- (0, transform_1.fixName)(field, field.type, 'type');
47
- field.short = property.description;
48
- fieldCount++;
49
- });
50
- });
51
- // Guess id field name using GET path param
52
- if ('load' === op.key$) {
53
- const getdef = pathdef.get;
54
- const getparams = getdef.parameters || [];
55
- if (1 === getparams.length) {
56
- if (entityModel.op.load.path.match(RegExp('\\{' + getdef.parameters[0].name + '\\}$'))) {
57
- entityModel.id.field = getdef.parameters[0].name;
85
+ if (fieldSets) {
86
+ if (Array.isArray(fieldSets.allOf)) {
87
+ fieldSets = fieldSets.allOf;
88
+ }
89
+ else if (fieldSets.properties) {
90
+ fieldSets = [fieldSets];
58
91
  }
59
92
  }
93
+ (0, jostraca_1.each)(fieldSets, (fieldSet) => {
94
+ (0, jostraca_1.each)(fieldSet?.properties, (property) => {
95
+ fielddefs.push(property);
96
+ });
97
+ });
60
98
  }
61
- return fieldCount;
99
+ return fielddefs;
62
100
  }
63
- // Resovles a heuristic "primary" type which subsumes the more detailed type.
64
- // The primary type is only: string, number, boolean, null, object, array
65
- function resolveFieldType(entity, field, property) {
66
- const ptt = typeof property.type;
67
- if ('string' === ptt) {
68
- field.type = property.type;
69
- }
70
- else if (Array.isArray(property.type)) {
71
- field.type =
72
- (property.type.filter((t) => 'null' != t).sort()[0]) ||
73
- property.type[0] ||
74
- 'string';
75
- field.typelist = property.type;
76
- }
77
- else if ('undefined' === ptt && null != property.enum) {
78
- field.type = 'string';
79
- field.enum = property.enum;
80
- }
81
- else {
82
- throw new Error(`APIDEF: Unsupported property type: ${property.type} (${entity.name}.${field.name})`);
101
+ function mergeField(ment, mop, malt, def, exisingField, newField) {
102
+ if (newField.req !== exisingField.req) {
103
+ exisingField.op[mop.name] = {
104
+ req: newField.req,
105
+ type: newField.type,
106
+ };
83
107
  }
108
+ return exisingField;
84
109
  }
85
110
  //# sourceMappingURL=field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/transform/field.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/transform/field.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import type { TransformResult } from '../transform';
2
2
  declare const operationTransform: (ctx: any) => Promise<TransformResult>;
3
- export { operationTransform };
3
+ export { operationTransform, };
@@ -2,308 +2,106 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.operationTransform = void 0;
4
4
  const jostraca_1 = require("jostraca");
5
- const transform_1 = require("../transform");
6
- const utility_1 = require("../utility");
5
+ const types_1 = require("../types");
7
6
  const operationTransform = async function (ctx) {
8
- const { apimodel, model, def, guide } = ctx;
9
- let msg = 'operations: ';
10
- const paramBuilder = (paramMap, paramDef, opModel, entityModel, pathdef, op, path, entity, model) => {
11
- const paramSpec = paramMap[paramDef.name] = {
12
- required: paramDef.required
7
+ const { apimodel, guide } = ctx;
8
+ const kit = apimodel.main[types_1.KIT];
9
+ let msg = 'operation ';
10
+ (0, jostraca_1.each)(guide.entity, (gent, entname) => {
11
+ collectOps(gent);
12
+ const opm = {
13
+ load: undefined,
14
+ list: undefined,
15
+ create: undefined,
16
+ update: undefined,
17
+ delete: undefined,
18
+ patch: undefined,
13
19
  };
14
- (0, transform_1.fixName)(paramSpec, paramDef.name);
15
- const type = paramDef.schema ? paramDef.schema.type : paramDef.type;
16
- (0, transform_1.fixName)(paramSpec, type, 'type');
17
- // Path params are always required.
18
- opModel.validate.params[paramDef.name] = `\`$${paramSpec.TYPE}\``;
19
- };
20
- const queryBuilder = (queryMap, queryDef, opModel, entityModel, pathdef, op, path, entity, model) => {
21
- const querySpec = queryMap[queryDef.name] = {
22
- required: queryDef.required
23
- };
24
- (0, transform_1.fixName)(queryMap[queryDef.name], queryDef.name);
25
- const type = queryDef.schema ? queryDef.schema.type : queryDef.type;
26
- (0, transform_1.fixName)(queryMap[queryDef.name], type, 'type');
27
- if (queryDef.required) {
28
- opModel.validate.params[queryDef.name] = `\`$${querySpec.TYPE}\``;
29
- }
30
- };
31
- // Resolve the JSON structure of the request or response.
32
- // NOTE: uses heuristics.
33
- const resolveTransform = (entityModel, op, kind, direction, pathdef) => {
34
- let out;
35
- let why = 'none';
36
- if (null != op.transform?.[direction]) {
37
- out = op.transform[direction];
38
- }
39
- else {
40
- const method = op.method;
41
- const mdef = pathdef[method];
42
- // TODO: fix getx
43
- // const content = 'res' === kind ?
44
- const content = 'resform' === direction ?
45
- ((0, jostraca_1.getx)(mdef, 'responses.200.content') ||
46
- (0, jostraca_1.getx)(mdef, 'responses.201.content')) :
47
- (0, jostraca_1.getx)(mdef, 'requestBody.content');
48
- if (content) {
49
- const schema = content['application/json']?.schema;
50
- const propkeys = null == schema?.properties ? [] : Object.keys(schema.properties);
51
- const resolveDirectionTransform = 'resform' === direction ? resolveResponseTransform : resolveRequestTransform;
52
- [out, why]
53
- = resolveDirectionTransform(entityModel, op, kind, direction, method, mdef, content, schema, propkeys);
54
- // out = JSON.stringify(transform)
55
- // out = transform
56
- }
57
- else {
58
- out = 'res' === kind ? '`body`' : '`reqdata`';
59
- }
60
- }
61
- return [out, why];
62
- };
63
- const resolveResponseTransform = (entityModel, op, kind, direction, method, mdef, content, schema, propkeys) => {
64
- let why = 'default';
65
- let transform = '`body`';
66
- const properties = schema?.properties;
67
- if (null == content || null == schema || null == propkeys || null == properties) {
68
- return [transform, why];
69
- }
70
- const opname = op.key$;
71
- if ('list' === opname) {
72
- if ('array' !== schema.type) {
73
- if (1 === propkeys.length) {
74
- why = 'list-single-prop:' + propkeys[0];
75
- transform = '`body.' + propkeys[0] + '`';
76
- }
77
- else {
78
- // Use sub property that is an array
79
- for (let pk of propkeys) {
80
- if ('array' === properties[pk]?.type) {
81
- why = 'list-single-array:' + pk;
82
- transform = '`body.' + pk + '`';
83
- // TODO: if each item has prop === name of entity, use that, get with $EACH
84
- break;
85
- }
86
- }
87
- }
88
- }
89
- }
90
- else {
91
- if ('object' === schema.type) {
92
- if (null == properties.id) {
93
- if (1 === propkeys.length) {
94
- why = 'map-single-prop:' + propkeys[0];
95
- transform = '`body.' + propkeys[0] + '`';
96
- }
97
- else {
98
- for (let pk of propkeys) {
99
- if (properties[pk]?.properties?.id) {
100
- why = 'map-sub-prop:' + pk;
101
- transform = '`body.' + pk + '`';
102
- break;
103
- }
104
- }
105
- }
106
- }
107
- }
108
- }
109
- return [transform, why];
110
- };
111
- const resolveRequestTransform = (entityModel, op, kind, direction, method, mdef, content, schema, propkeys) => {
112
- let transform = '`reqdata`';
113
- let why = 'default';
114
- const properties = schema?.properties;
115
- if (null == content || null == schema || null == propkeys || null == properties) {
116
- return [transform, why];
117
- }
118
- const opname = op.key$;
119
- if ('list' === opname) {
120
- if ('array' !== schema.type) {
121
- if (1 === propkeys.length) {
122
- why = 'list-single-prop:' + propkeys[0];
123
- transform = { [propkeys[0]]: '`reqdata`' };
124
- }
125
- else {
126
- // Use sub property that is an array
127
- for (let pk of propkeys) {
128
- if ('array' === properties[pk]?.type) {
129
- why = 'list-single-array:' + pk;
130
- transform = { [pk]: '`reqdata`' };
131
- break;
132
- }
133
- }
134
- }
135
- }
136
- }
137
- else {
138
- if ('object' === schema.type) {
139
- if (null == properties.id) {
140
- if (1 === propkeys.length) {
141
- why = 'map-single-prop:' + propkeys[0];
142
- transform = { [propkeys[0]]: '`reqdata`' };
143
- }
144
- else {
145
- for (let pk of propkeys) {
146
- if (properties[pk]?.properties?.id) {
147
- why = 'map-sub-prop:' + pk;
148
- transform = { [pk]: '`reqdata`' };
149
- break;
150
- }
151
- }
152
- }
153
- }
154
- }
155
- }
156
- return [transform, why];
157
- };
158
- const opBuilder = {
159
- any: (entityModel, pathdef, guideOp, guidePath, guideEntity, model) => {
160
- if (false === guidePath.active) {
161
- return;
162
- }
163
- const opname = guideOp.key$;
164
- const method = guideOp.method;
165
- const kind = transform_1.OPKIND[opname];
166
- const existingOpModel = entityModel.op[opname];
167
- const existingParam = existingOpModel?.param;
168
- const [resform, resform_COMMENT] = resolveTransform(entityModel, guideOp, kind, 'resform', pathdef);
169
- const [reqform, reqform_COMMENT] = resolveTransform(entityModel, guideOp, kind, 'reqform', pathdef);
170
- const opModel = {
171
- path: guidePath.key$,
172
- pathalt: [],
173
- method,
174
- kind,
175
- param: existingParam || {},
176
- query: {},
177
- resform_COMMENT: 'derivation: ' + resform_COMMENT,
178
- resform,
179
- reqform_COMMENT: 'derivation: ' + reqform_COMMENT,
180
- reqform,
181
- validate: {
182
- params: { '`$OPEN`': true }
183
- }
184
- };
185
- (0, transform_1.fixName)(opModel, guideOp.key$);
186
- let params = [];
187
- // Params are in the path
188
- if (0 < guidePath.params$.length) {
189
- let sharedparams = (0, jostraca_1.getx)(pathdef, 'parameters?in=path') || [];
190
- params = sharedparams.concat((0, jostraca_1.getx)(pathdef[method], 'parameters?in=path') || []);
191
- // if (Array.isArray(params)) {
192
- params.reduce((a, p) => (paramBuilder(a, p, opModel, entityModel, pathdef, guideOp, guidePath, guideEntity, model), a), opModel.param);
193
- //}
194
- }
195
- // Queries are after the ?
196
- let sharedqueries = (0, jostraca_1.getx)(pathdef, 'parameters?in!=path') || [];
197
- let queries = sharedqueries.concat((0, jostraca_1.getx)(pathdef[method], 'parameters?in!=path') || []);
198
- queries.reduce((a, p) => (queryBuilder(a, p, opModel, entityModel, pathdef, guideOp, guidePath, guideEntity, model), a), opModel.query);
199
- let pathalt = [];
200
- const pathselector = makePathSelector(guidePath.key$);
201
- let before = false;
202
- if (null != entityModel.op[opname]) {
203
- pathalt = entityModel.op[opname].pathalt;
204
- // Ordering for pathalts: most to least paramrs, then alphanumberic
205
- for (let i = 0; i < pathalt.length; i++) {
206
- let current = pathalt[i];
207
- before =
208
- pathselector.pn$ > current.pn$ ||
209
- (pathselector.pn$ === current.pn$ &&
210
- pathselector.path <= current.path);
211
- if (before) {
212
- pathalt = [
213
- ...pathalt.slice(0, i),
214
- pathselector,
215
- ...pathalt.slice(i),
216
- ];
217
- break;
218
- }
219
- }
220
- }
221
- if (!before) {
222
- pathalt.push(pathselector);
223
- }
224
- opModel.path = pathalt[pathalt.length - 1].path;
225
- opModel.pathalt = pathalt;
226
- entityModel.op[opname] = opModel;
227
- return opModel;
228
- },
229
- list: (entityModel, pathdef, op, path, entity, model) => {
230
- return opBuilder.any(entityModel, pathdef, op, path, entity, model);
231
- },
232
- load: (entityModel, pathdef, op, path, entity, model) => {
233
- return opBuilder.any(entityModel, pathdef, op, path, entity, model);
234
- },
235
- create: (entityModel, pathdef, op, path, entity, model) => {
236
- return opBuilder.any(entityModel, pathdef, op, path, entity, model);
237
- },
238
- update: (entityModel, pathdef, op, path, entity, model) => {
239
- return opBuilder.any(entityModel, pathdef, op, path, entity, model);
240
- },
241
- remove: (entityModel, pathdef, op, path, entity, model) => {
242
- return opBuilder.any(entityModel, pathdef, op, path, entity, model);
243
- },
244
- };
245
- /*
246
- console.dir(
247
- transform({ guide }, {
248
- entity: {
249
- '`$PACK`': ['guide.entity', {
250
- '`$KEY`': 'name',
251
- op: {
252
- // load: ['`$IF`', ['`$SELECT`',{path:{'`$ANY`':{op:{load:'`$EXISTS`'}}}}], {
253
- load: ['`$IF`', 'path.*.op.load', {
254
- path: () => 'foo'
255
- }]
256
- }
257
- }]
258
- }
259
- }), { depth: null })
260
- */
261
- (0, jostraca_1.each)(guide.entity, (guideEntity) => {
262
- let opcount = 0;
263
- const entityModel = apimodel.main.api.entity[guideEntity.key$];
264
- (0, jostraca_1.each)(guideEntity.path, (guidePath) => {
265
- const pathdef = def.paths[guidePath.key$];
266
- (0, jostraca_1.each)(guidePath.op, (guideOp) => {
267
- const opbuild = opBuilder[guideOp.key$];
268
- if (opbuild) {
269
- opbuild(entityModel, pathdef, guideOp, guidePath, guideEntity, model);
270
- opcount++;
271
- }
272
- });
273
- });
274
- // Full list of params only know after all operations built.
275
- (0, jostraca_1.each)(entityModel.op, (op) => {
276
- const params = Object.keys(op.param || {});
277
- const pathalt = op.pathalt || [];
278
- // if ('course' === entityModel.name) {
279
- // console.log('PA', params, pathalt)
280
- // }
281
- for (const pa of pathalt) {
282
- for (const p of params) {
283
- pa[p] = pa[p] || false;
284
- // if ('course' === entityModel.name) {
285
- // console.log('PA-SET', p, pa)
286
- // }
287
- }
288
- }
289
- });
290
- // if ('course' === entityModel.name) {
291
- // console.dir(entityModel, { depth: null })
292
- // }
293
- msg += guideEntity.name + '=' + opcount + ' ';
20
+ resolveLoad(opm, gent);
21
+ resolveList(opm, gent);
22
+ resolveCreate(opm, gent);
23
+ resolveUpdate(opm, gent);
24
+ resolveDelete(opm, gent);
25
+ resolvePatch(opm, gent);
26
+ kit.entity[entname].op = opm;
27
+ msg += gent.name + ' ';
294
28
  });
295
29
  return { ok: true, msg };
296
30
  };
297
31
  exports.operationTransform = operationTransform;
298
- function makePathSelector(path) {
299
- let out = { path };
300
- let pn$ = 0;
301
- for (const m of path.matchAll(/\/[^\/]+\/{([^}]+)\}/g)) {
302
- const paramName = (0, utility_1.depluralize)((0, jostraca_1.snakify)(m[1]));
303
- out[paramName] = true;
304
- pn$++;
32
+ function collectOps(gent) {
33
+ gent.opm$ = gent.opm$ ?? {};
34
+ (0, jostraca_1.each)(gent.paths$, (pathdesc) => {
35
+ (0, jostraca_1.each)(pathdesc.op, (gop, opname) => {
36
+ gent.opm$[opname] = gent.opm$[opname] ?? { paths: [] };
37
+ const oppathdesc = {
38
+ orig: pathdesc.orig,
39
+ parts: pathdesc.parts,
40
+ rename: pathdesc.rename,
41
+ method: gop.method,
42
+ op: pathdesc.op,
43
+ def: pathdesc.def,
44
+ };
45
+ gent.opm$[opname].paths.push(oppathdesc);
46
+ });
47
+ });
48
+ }
49
+ function resolveLoad(opm, gent) {
50
+ const opdesc = opm.load = resolveOp('load', gent);
51
+ return opdesc;
52
+ }
53
+ function resolveList(opm, gent) {
54
+ const opdesc = opm.list = resolveOp('list', gent);
55
+ return opdesc;
56
+ }
57
+ function resolveCreate(opm, gent) {
58
+ const opdesc = opm.create = resolveOp('create', gent);
59
+ return opdesc;
60
+ }
61
+ function resolveUpdate(opm, gent) {
62
+ const opdesc = opm.update = resolveOp('update', gent);
63
+ return opdesc;
64
+ }
65
+ function resolveDelete(opm, gent) {
66
+ const opdesc = opm.delete = resolveOp('delete', gent);
67
+ return opdesc;
68
+ }
69
+ function resolvePatch(opm, gent) {
70
+ const opdesc = resolveOp('patch', gent);
71
+ // If patch is actually update, make it update!
72
+ if (null != opdesc && null == opm.update) {
73
+ opm.update = opdesc;
74
+ opm.update.name = 'update';
75
+ }
76
+ else {
77
+ opm.patch = opdesc;
305
78
  }
306
- out.pn$ = pn$;
307
- return out;
79
+ return opdesc;
80
+ }
81
+ function resolveOp(opname, gent) {
82
+ let mop = undefined;
83
+ let opdesc = gent.opm$[opname];
84
+ if (opdesc) {
85
+ // console.dir(opdesc, { depth: null })
86
+ mop = {
87
+ name: opname,
88
+ alts: opdesc.paths.map(p => {
89
+ const parts = applyRename(p);
90
+ const malt = {
91
+ orig: p.orig,
92
+ parts,
93
+ method: p.method,
94
+ args: {},
95
+ select: {}
96
+ };
97
+ return malt;
98
+ })
99
+ };
100
+ }
101
+ return mop;
102
+ }
103
+ function applyRename(pathdesc) {
104
+ const prn = pathdesc.rename?.param ?? {};
105
+ return pathdesc.parts.map(p => '{' === p[0] ? (prn[p.substring(1, p.length - 1)] ?? p) : p);
308
106
  }
309
107
  //# sourceMappingURL=operation.js.map
@@ -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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"}