@voxgig/apidef 0.2.0 → 1.0.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.
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.entityTransform = entityTransform;
4
+ const jostraca_1 = require("jostraca");
5
+ const transform_1 = require("../transform");
6
+ async function entityTransform(ctx, tspec, model, def) {
7
+ const { guide: { guide } } = ctx;
8
+ let msg = '';
9
+ (0, jostraca_1.each)(guide.entity, (guideEntity) => {
10
+ const entityModel = model.main.api.entity[guideEntity.key$] = {
11
+ op: {},
12
+ field: {},
13
+ cmd: {},
14
+ id: {
15
+ name: 'id',
16
+ field: 'id',
17
+ }
18
+ };
19
+ (0, transform_1.fixName)(entityModel, guideEntity.key$);
20
+ (0, jostraca_1.each)(guideEntity.path, (guidePath) => {
21
+ const pathdef = def.paths[guidePath.key$];
22
+ if (null == pathdef) {
23
+ throw new Error('APIDEF: path not found in OpenAPI: ' + guidePath.key$ +
24
+ ' (entity: ' + guideEntity.name + ')');
25
+ }
26
+ guidePath.parts$ = guidePath.key$.split('/');
27
+ guidePath.params$ = guidePath.parts$
28
+ .filter((p) => p.startsWith('{'))
29
+ .map((p) => p.substring(1, p.length - 1));
30
+ });
31
+ msg += guideEntity.name + ' ';
32
+ });
33
+ return { ok: true, msg };
34
+ }
35
+ //# sourceMappingURL=entity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.js","sourceRoot":"","sources":["../../src/transform/entity.ts"],"names":[],"mappings":";;AAoDE,0CAAe;AAlDjB,uCAA+B;AAI/B,4CAAsC;AAItC,KAAK,UAAU,eAAe,CAAC,GAAiB,EAAE,KAAoB,EAAE,KAAU,EAAE,GAAQ;IAC1F,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,GAAG,CAAA;IAChC,IAAI,GAAG,GAAG,EAAE,CAAA;IAEZ,IAAA,eAAI,EAAC,KAAK,CAAC,MAAM,EAAE,CAAC,WAAgB,EAAE,EAAE;QAEtC,MAAM,WAAW,GAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG;YACjE,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,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;YAEzC,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,SAAS,CAAC,IAAI;oBACpE,YAAY,GAAG,WAAW,CAAC,IAAI,GAAG,GAAG,CAAC,CAAA;YAC1C,CAAC;YAED,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC5C,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;IAE/B,CAAC,CAAC,CAAA;IAEF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAA;AAC1B,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TransformCtx, TransformSpec } from '../transform';
2
+ declare function fieldTransform(ctx: TransformCtx, tspec: TransformSpec, model: any, def: any): Promise<{
3
+ ok: boolean;
4
+ msg: string;
5
+ }>;
6
+ export { fieldTransform };
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fieldTransform = fieldTransform;
4
+ const jostraca_1 = require("jostraca");
5
+ const transform_1 = require("../transform");
6
+ async function fieldTransform(ctx, tspec, model, def) {
7
+ const { guide: { guide } } = ctx;
8
+ let msg = 'fields: ';
9
+ (0, jostraca_1.each)(guide.entity, (guideEntity) => {
10
+ const entityModel = model.main.api.entity[guideEntity.key$];
11
+ let fieldCount = 0;
12
+ (0, jostraca_1.each)(guideEntity.path, (guidePath) => {
13
+ const pathdef = def.paths[guidePath.key$];
14
+ (0, jostraca_1.each)(guidePath.op, (op) => {
15
+ if ('load' === op.key$) {
16
+ fieldCount = fieldbuild(entityModel, pathdef, op, guidePath, guideEntity, model);
17
+ }
18
+ });
19
+ });
20
+ msg += guideEntity.name + '=' + fieldCount + ' ';
21
+ });
22
+ return { ok: true, msg };
23
+ }
24
+ function fieldbuild(entityModel, pathdef, op, path, entity, model) {
25
+ // console.log('FB-A', op, pathdef)
26
+ let fieldCount = 0;
27
+ let fieldSets = (0, jostraca_1.getx)(pathdef.get, 'responses 200 content "application/json" schema');
28
+ if (fieldSets) {
29
+ if (Array.isArray(fieldSets.allOf)) {
30
+ fieldSets = fieldSets.allOf;
31
+ }
32
+ else if (fieldSets.properties) {
33
+ fieldSets = [fieldSets];
34
+ }
35
+ }
36
+ // console.log('TRANSFORM-FIELDSETS', fieldSets)
37
+ (0, jostraca_1.each)(fieldSets, (fieldSet) => {
38
+ (0, jostraca_1.each)(fieldSet.properties, (property) => {
39
+ // console.log(property)
40
+ const field = (entityModel.field[property.key$] = entityModel.field[property.key$] || {});
41
+ field.name = property.key$;
42
+ (0, transform_1.fixName)(field, field.name);
43
+ field.type = property.type;
44
+ (0, transform_1.fixName)(field, field.type, 'type');
45
+ field.short = property.description;
46
+ fieldCount++;
47
+ // console.log('FB-ID', field.name, entityModel.param)
48
+ });
49
+ });
50
+ // Guess id field name using GET path param
51
+ if ('load' === op.key$) {
52
+ const getdef = pathdef.get;
53
+ const getparams = getdef.parameters || [];
54
+ if (1 === getparams.length) {
55
+ if (entityModel.op.load.path.match(RegExp('\\{' + getdef.parameters[0].name + '\\}$'))) {
56
+ entityModel.id.field = getdef.parameters[0].name;
57
+ }
58
+ }
59
+ }
60
+ return fieldCount;
61
+ }
62
+ /*
63
+
64
+ # API Specification Transform Guide
65
+
66
+
67
+ @"@voxgig/apidef/model/guide.jsonic"
68
+
69
+
70
+ guide: control: transform: openapi: order: `
71
+
72
+ top,
73
+ entity,
74
+ operation,
75
+ field,
76
+ customField,
77
+
78
+ `
79
+
80
+ guide: transform: customField: {
81
+ load: 'customField.js'
82
+ }
83
+
84
+
85
+ guide: entity: {
86
+ pet: path: {
87
+ '/pet/{petId}': {
88
+ op:{ load: 'get', create: 'post', save: 'put' }
89
+ }
90
+ }
91
+ pet: test: {
92
+ quick: {
93
+ active: true,
94
+ create: { id: 1, name:'Rex' },
95
+ load: { id: 1 },
96
+ }
97
+ }
98
+
99
+ # direct custom definition
100
+ pet: def: {}
101
+ }
102
+
103
+
104
+
105
+
106
+ const { each, getx } = require('jostraca')
107
+
108
+
109
+ async function customField(ctx, tspec, model, def) {
110
+ const { spec, util: {fixName} } = ctx
111
+
112
+ const nameField = {
113
+ name: 'name',
114
+ type: 'string',
115
+ short: 'Name of pet'
116
+ }
117
+ fixName(nameField, nameField.name)
118
+ fixName(nameField, nameField.type, 'type')
119
+
120
+ const ageField = {
121
+ name: 'age',
122
+ type: 'number',
123
+ short: 'Age of pet'
124
+ }
125
+ fixName(ageField, ageField.name)
126
+ fixName(ageField, ageField.type, 'type')
127
+
128
+
129
+ Object.assign(model.main.api.entity.pet.field, {
130
+ name: nameField,
131
+ age: ageField,
132
+ })
133
+
134
+ return { ok: true }
135
+ }
136
+
137
+
138
+ module.exports = {
139
+ customField
140
+ }
141
+
142
+
143
+ */
144
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/transform/field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { TransformCtx, TransformSpec } from '../transform';
2
+ declare function fieldTransform(ctx: TransformCtx, tspec: TransformSpec, model: any, def: any): Promise<{
3
+ ok: boolean;
4
+ }>;
5
+ export { fieldTransform };
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fieldTransform = fieldTransform;
4
+ const jostraca_1 = require("jostraca");
5
+ const transform_1 = require("../transform");
6
+ async function fieldTransform(ctx, tspec, model, def) {
7
+ const { guide: { guide } } = ctx;
8
+ (0, jostraca_1.each)(guide.entity, (guideEntity) => {
9
+ const entityModel = model.main.api.entity[guideEntity.key$];
10
+ (0, jostraca_1.each)(guideEntity.path, (guidePath) => {
11
+ const pathdef = def.paths[guidePath.key$];
12
+ (0, jostraca_1.each)(guidePath.op, (op) => {
13
+ if ('load' === op.key$) {
14
+ fieldbuild(entityModel, pathdef, op, guidePath, guideEntity, model);
15
+ }
16
+ });
17
+ });
18
+ });
19
+ return { ok: true };
20
+ }
21
+ function fieldbuild(entityModel, pathdef, op, path, entity, model) {
22
+ // console.log('FB-A', op, pathdef)
23
+ let fieldSets = (0, jostraca_1.getx)(pathdef.get, 'responses 200 content "application/json" schema');
24
+ if (fieldSets) {
25
+ if (Array.isArray(fieldSets.allOf)) {
26
+ fieldSets = fieldSets.allOf;
27
+ }
28
+ else if (fieldSets.properties) {
29
+ fieldSets = [fieldSets];
30
+ }
31
+ }
32
+ (0, jostraca_1.each)(fieldSets, (fieldSet) => {
33
+ (0, jostraca_1.each)(fieldSet.properties, (property) => {
34
+ // console.log(property)
35
+ const field = (entityModel.field[property.key$] = entityModel.field[property.key$] || {});
36
+ field.name = property.key$;
37
+ (0, transform_1.fixName)(field, field.name);
38
+ field.type = property.type;
39
+ (0, transform_1.fixName)(field, field.type, 'type');
40
+ field.short = property.description;
41
+ // console.log('FB-ID', field.name, entityModel.param)
42
+ });
43
+ });
44
+ // Guess id field name using GET path param
45
+ if ('load' === op.key$) {
46
+ const getdef = pathdef.get;
47
+ const getparams = getdef.parameters || [];
48
+ if (1 === getparams.length) {
49
+ if (entityModel.op.load.path.match(RegExp('\\{' + getdef.parameters[0].name + '\\}$'))) {
50
+ entityModel.id.field = getdef.parameters[0].name;
51
+ }
52
+ }
53
+ }
54
+ }
55
+ //# sourceMappingURL=fieldTransform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldTransform.js","sourceRoot":"","sources":["../../src/transform/fieldTransform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { TransformCtx, TransformSpec } from '../transform';
2
+ declare function manualTransform(ctx: TransformCtx, tspec: TransformSpec, model: any, def: any): Promise<{
3
+ ok: boolean;
4
+ msg: string;
5
+ }>;
6
+ export { manualTransform };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.manualTransform = manualTransform;
4
+ const jsonic_next_1 = require("@jsonic/jsonic-next");
5
+ const { deep } = jsonic_next_1.Jsonic.util;
6
+ async function manualTransform(ctx, tspec, model, def) {
7
+ const { guide: { guide: { manual } } } = ctx;
8
+ deep(model, manual);
9
+ return { ok: true, msg: 'manual' };
10
+ }
11
+ //# sourceMappingURL=manual.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../../src/transform/manual.ts"],"names":[],"mappings":";;AAoBE,0CAAe;AAnBjB,qDAA4C;AAO5C,MAAM,EAAE,IAAI,EAAE,GAAG,oBAAM,CAAC,IAAI,CAAA;AAE5B,KAAK,UAAU,eAAe,CAAC,GAAiB,EAAE,KAAoB,EAAE,KAAU,EAAE,GAAQ;IAC1F,MAAM,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAA;IAE5C,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IAEnB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAA;AACpC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { TransformCtx, TransformSpec } from '../transform';
2
+ declare function operationTransform(ctx: TransformCtx, tspec: TransformSpec, model: any, def: any): Promise<{
3
+ ok: boolean;
4
+ msg: string;
5
+ }>;
6
+ export { operationTransform };
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.operationTransform = operationTransform;
4
+ const jostraca_1 = require("jostraca");
5
+ const transform_1 = require("../transform");
6
+ async function operationTransform(ctx, tspec, model, def) {
7
+ const { guide: { guide } } = ctx;
8
+ let msg = 'operations: ';
9
+ const paramBuilder = (paramMap, paramDef, entityModel, pathdef, op, path, entity, model) => {
10
+ paramMap[paramDef.name] = {
11
+ required: paramDef.required
12
+ };
13
+ (0, transform_1.fixName)(paramMap[paramDef.name], paramDef.name);
14
+ const type = paramDef.schema ? paramDef.schema.type : paramDef.type;
15
+ (0, transform_1.fixName)(paramMap[paramDef.name], type, 'type');
16
+ };
17
+ const queryBuilder = (queryMap, queryDef, entityModel, pathdef, op, path, entity, model) => {
18
+ queryMap[queryDef.name] = {
19
+ required: queryDef.required
20
+ };
21
+ (0, transform_1.fixName)(queryMap[queryDef.name], queryDef.name);
22
+ const type = queryDef.schema ? queryDef.schema.type : queryDef.type;
23
+ (0, transform_1.fixName)(queryMap[queryDef.name], type, 'type');
24
+ };
25
+ const opBuilder = {
26
+ any: (entityModel, pathdef, op, path, entity, model) => {
27
+ const em = entityModel.op[op.key$] = {
28
+ path: path.key$,
29
+ method: op.val$,
30
+ param: {},
31
+ query: {},
32
+ };
33
+ (0, transform_1.fixName)(em, op.key$);
34
+ // Params are in the path
35
+ if (0 < path.params$.length) {
36
+ let params = (0, jostraca_1.getx)(pathdef[op.val$], 'parameters?in=path') || [];
37
+ if (Array.isArray(params)) {
38
+ params.reduce((a, p) => (paramBuilder(a, p, entityModel, pathdef, op, path, entity, model), a), em.param);
39
+ }
40
+ }
41
+ // Queries are after the ?
42
+ let queries = (0, jostraca_1.getx)(pathdef[op.val$], 'parameters?in!=path') || [];
43
+ if (Array.isArray(queries)) {
44
+ queries.reduce((a, p) => (queryBuilder(a, p, entityModel, pathdef, op, path, entity, model), a), em.query);
45
+ }
46
+ return em;
47
+ },
48
+ list: (entityModel, pathdef, op, path, entity, model) => {
49
+ return opBuilder.any(entityModel, pathdef, op, path, entity, model);
50
+ },
51
+ load: (entityModel, pathdef, op, path, entity, model) => {
52
+ return opBuilder.any(entityModel, pathdef, op, path, entity, model);
53
+ },
54
+ create: (entityModel, pathdef, op, path, entity, model) => {
55
+ return opBuilder.any(entityModel, pathdef, op, path, entity, model);
56
+ },
57
+ save: (entityModel, pathdef, op, path, entity, model) => {
58
+ return opBuilder.any(entityModel, pathdef, op, path, entity, model);
59
+ },
60
+ remove: (entityModel, pathdef, op, path, entity, model) => {
61
+ return opBuilder.any(entityModel, pathdef, op, path, entity, model);
62
+ },
63
+ };
64
+ (0, jostraca_1.each)(guide.entity, (guideEntity) => {
65
+ let opcount = 0;
66
+ const entityModel = model.main.api.entity[guideEntity.key$];
67
+ (0, jostraca_1.each)(guideEntity.path, (guidePath) => {
68
+ const pathdef = def.paths[guidePath.key$];
69
+ (0, jostraca_1.each)(guidePath.op, (op) => {
70
+ const opbuild = opBuilder[op.key$];
71
+ if (opbuild) {
72
+ opbuild(entityModel, pathdef, op, guidePath, guideEntity, model);
73
+ opcount++;
74
+ }
75
+ });
76
+ });
77
+ msg += guideEntity.name + '=' + opcount + ' ';
78
+ });
79
+ return { ok: true, msg };
80
+ }
81
+ //# sourceMappingURL=operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../src/transform/operation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { TransformCtx, TransformSpec } from '../transform';
2
+ declare function topTransform(ctx: TransformCtx, tspec: TransformSpec, model: any, def: any): Promise<{
3
+ ok: boolean;
4
+ msg: any;
5
+ }>;
6
+ export { topTransform };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.topTransform = topTransform;
4
+ const transform_1 = require("../transform");
5
+ async function topTransform(ctx, tspec, model, def) {
6
+ const { spec } = ctx;
7
+ (0, transform_1.fixName)(model.main.api, spec.meta.name);
8
+ model.main.def.desc = def.info.description;
9
+ return { ok: true, msg: spec.meta.name };
10
+ }
11
+ //# sourceMappingURL=top.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"top.js","sourceRoot":"","sources":["../../src/transform/top.ts"],"names":[],"mappings":";;AAmBE,oCAAY;AAdd,4CAAsC;AAGtC,KAAK,UAAU,YAAY,CAAC,GAAiB,EAAE,KAAoB,EAAE,KAAU,EAAE,GAAQ;IACvF,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;IAEpB,IAAA,mBAAO,EAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACvC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;IAE1C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;AAC1C,CAAC"}
@@ -0,0 +1,26 @@
1
+ type TransformCtx = {
2
+ log: any;
3
+ spec: any;
4
+ guide: any;
5
+ opts: any;
6
+ util: any;
7
+ defpath: string;
8
+ };
9
+ type TransformSpec = {
10
+ transform: Transform[];
11
+ };
12
+ type TransformResult = {
13
+ ok: boolean;
14
+ msg: string;
15
+ };
16
+ type Transform = (ctx: TransformCtx, tspec: TransformSpec, model: any, def: any) => Promise<TransformResult>;
17
+ type ProcessResult = {
18
+ ok: boolean;
19
+ msg: string;
20
+ results: TransformResult[];
21
+ };
22
+ declare function resolveTransforms(ctx: TransformCtx): Promise<TransformSpec>;
23
+ declare function processTransforms(ctx: TransformCtx, spec: TransformSpec, model: any, def: any): Promise<ProcessResult>;
24
+ declare function fixName(base: any, name: string, prop?: string): void;
25
+ export type { TransformCtx, TransformSpec, };
26
+ export { fixName, resolveTransforms, processTransforms, };
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ /* Copyright (c) 2024 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.fixName = fixName;
8
+ exports.resolveTransforms = resolveTransforms;
9
+ exports.processTransforms = processTransforms;
10
+ const node_path_1 = __importDefault(require("node:path"));
11
+ const jostraca_1 = require("jostraca");
12
+ const top_1 = require("./transform/top");
13
+ const entity_1 = require("./transform/entity");
14
+ const operation_1 = require("./transform/operation");
15
+ const field_1 = require("./transform/field");
16
+ const manual_1 = require("./transform/manual");
17
+ const TRANSFORM = {
18
+ top: top_1.topTransform,
19
+ entity: entity_1.entityTransform,
20
+ operation: operation_1.operationTransform,
21
+ field: field_1.fieldTransform,
22
+ manual: manual_1.manualTransform,
23
+ };
24
+ async function resolveTransforms(ctx) {
25
+ const { log, guide: { guide } } = ctx;
26
+ const tspec = {
27
+ transform: []
28
+ };
29
+ // TODO: parameterize
30
+ const defkind = 'openapi';
31
+ const transformNames = guide.control.transform[defkind].order
32
+ .split(/\s*,\s*/)
33
+ .map((t) => t.trim())
34
+ .filter((t) => '' != t);
35
+ log.info({ point: 'transform', note: 'order', order: transformNames });
36
+ for (const tn of transformNames) {
37
+ log.debug({ what: 'transform', transform: tn });
38
+ const transform = await resolveTransform(tn, ctx);
39
+ tspec.transform.push(transform);
40
+ }
41
+ return tspec;
42
+ }
43
+ async function resolveTransform(tn, ctx) {
44
+ const { log, defpath, guide: { guide } } = ctx;
45
+ let transform = TRANSFORM[tn];
46
+ if (transform) {
47
+ return transform;
48
+ }
49
+ const tdef = guide.transform[tn];
50
+ if (null == tdef) {
51
+ const err = new Error('Unknown transform: ' + tn);
52
+ log.error({ what: 'transform', transform: tn, fail: 'unknown', err });
53
+ throw err;
54
+ }
55
+ if (!tn.startsWith('custom')) {
56
+ const err = new Error('Custom transform name must start with "custom": ' + tn);
57
+ log.error({ what: 'transform', transform: tn, fail: 'prefix', err });
58
+ throw err;
59
+ }
60
+ const customtpath = node_path_1.default.join(defpath, tdef.load);
61
+ try {
62
+ const transformModule = require(customtpath);
63
+ transform = transformModule[tn];
64
+ }
65
+ catch (e) {
66
+ const err = new Error('Custom transform not found: ' +
67
+ customtpath + ': ' + e.message);
68
+ log.error({ what: 'transform', transform: tn, fail: 'require', err });
69
+ throw err;
70
+ }
71
+ return transform;
72
+ }
73
+ async function processTransforms(ctx, spec, model, def) {
74
+ const pres = {
75
+ ok: true,
76
+ msg: '',
77
+ results: []
78
+ };
79
+ for (let tI = 0; tI < spec.transform.length; tI++) {
80
+ const transform = spec.transform[tI];
81
+ try {
82
+ const tres = await transform(ctx, spec, model, def);
83
+ pres.ok = pres.ok && tres.ok;
84
+ pres.msg += tres.msg + '\n';
85
+ pres.results.push(tres);
86
+ }
87
+ catch (err) {
88
+ pres.ok = false;
89
+ pres.msg += err.message + '\n';
90
+ pres.results.push({
91
+ ok: false,
92
+ msg: err.message
93
+ });
94
+ }
95
+ }
96
+ return pres;
97
+ }
98
+ /*
99
+ function extractFields(properties: any) {
100
+ const fieldMap = each(properties)
101
+ .reduce((a: any, p: any) => (a[p.key$] =
102
+ { name: p.key$, kind: camelify(p.type) }, a), {})
103
+ return fieldMap
104
+ }
105
+ */
106
+ function fixName(base, name, prop = 'name') {
107
+ base[prop.toLowerCase()] = name.toLowerCase();
108
+ base[(0, jostraca_1.camelify)(prop)] = (0, jostraca_1.camelify)(name);
109
+ base[prop.toUpperCase()] = name.toUpperCase();
110
+ }
111
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"root":["../src/apidef.ts"],"version":"5.6.3"}
1
+ {"root":["../src/apidef.ts","../src/transform.ts","../src/transform/entity.ts","../src/transform/field.ts","../src/transform/manual.ts","../src/transform/operation.ts","../src/transform/top.ts"],"version":"5.6.3"}
@@ -1,4 +1,35 @@
1
1
 
2
+ guide: control: transform: &: {
3
+ order: string
4
+ }
5
+
6
+ guide: control: transform: openapi: {
7
+ order: *`
8
+
9
+ top,
10
+ entity,
11
+ operation,
12
+ field,
13
+ manual,
14
+
15
+ ` | string
16
+ }
17
+
18
+
19
+ guide: transform: &: {
20
+ name: .$KEY
21
+ load: string
22
+ }
23
+
24
+ guide: transform: {
25
+ top: {}
26
+ entity: {}
27
+ operation: {}
28
+ field: {}
29
+ manual: {}
30
+ }
31
+
32
+
2
33
  guide: entity: &: {
3
34
  name: .$KEY
4
35
  path: &: {
@@ -7,3 +38,4 @@ guide: entity: &: {
7
38
  }
8
39
 
9
40
 
41
+ guide: manual: {}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/apidef",
3
- "version": "0.2.0",
3
+ "version": "1.0.0",
4
4
  "main": "dist/apidef.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/apidef.d.ts",
@@ -15,6 +15,9 @@
15
15
  "type": "git",
16
16
  "url": "git://github.com/voxgig/apidef.git"
17
17
  },
18
+ "bin": {
19
+ "voxgig-apidef": "bin/voxgig-apidef"
20
+ },
18
21
  "scripts": {
19
22
  "test": "node --enable-source-maps --test dist-test",
20
23
  "test22": "node --enable-source-maps --test \"dist-test/*.test.js\"",
@@ -32,21 +35,27 @@
32
35
  "model",
33
36
  "src",
34
37
  "dist",
38
+ "bin",
35
39
  "LICENSE"
36
40
  ],
37
41
  "devDependencies": {
38
42
  "@hapi/code": "^9.0.3",
39
43
  "@types/js-yaml": "^4.0.9",
40
- "@types/node": "22.7.6",
41
- "aontu": "^0.22.0",
44
+ "@types/node": "22.9.0",
45
+ "aontu": "^0.25.0",
42
46
  "esbuild": "^0.24.0",
43
47
  "json-schema-to-ts": "^3.1.1",
44
48
  "memfs": "^4.14.0",
45
49
  "typescript": "^5.6.3"
46
50
  },
47
51
  "dependencies": {
48
- "@redocly/openapi-core": "^1.25.7",
52
+ "@redocly/openapi-core": "^1.25.11",
53
+ "@voxgig/util": "^0.0.4",
49
54
  "chokidar": "^4.0.1",
50
- "jostraca": "^0.7.6"
55
+ "gubu": "^8.3.0",
56
+ "jostraca": "^0.7.7",
57
+ "pino": "^9.5.0",
58
+ "pino-pretty": "^13.0.0",
59
+ "sonic-boom": "^4.2.0"
51
60
  }
52
61
  }