@voxgig/apidef 0.0.7 → 0.0.9
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.
- package/dist/apidef.js +52 -7
- package/dist/apidef.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +8 -8
- package/src/apidef.ts +70 -7
package/dist/apidef.js
CHANGED
|
@@ -32,6 +32,7 @@ const Fs = __importStar(require("node:fs"));
|
|
|
32
32
|
const node_path_1 = __importDefault(require("node:path"));
|
|
33
33
|
const openapi_core_1 = require("@redocly/openapi-core");
|
|
34
34
|
const chokidar_1 = require("chokidar");
|
|
35
|
+
const aontu_1 = require("aontu");
|
|
35
36
|
const jostraca_1 = require("jostraca");
|
|
36
37
|
function ApiDef(opts = {}) {
|
|
37
38
|
const fs = opts.fs || Fs;
|
|
@@ -44,7 +45,8 @@ function ApiDef(opts = {}) {
|
|
|
44
45
|
fsw.add(spec.def);
|
|
45
46
|
}
|
|
46
47
|
async function generate(spec) {
|
|
47
|
-
const
|
|
48
|
+
const guide = await resolveGuide(spec, opts);
|
|
49
|
+
const transform = resolveTranform(spec, guide, opts);
|
|
48
50
|
const source = fs.readFileSync(spec.def, 'utf8');
|
|
49
51
|
const modelBasePath = node_path_1.default.dirname(spec.model);
|
|
50
52
|
const config = await (0, openapi_core_1.createConfig)({});
|
|
@@ -84,13 +86,52 @@ function ApiDef(opts = {}) {
|
|
|
84
86
|
model,
|
|
85
87
|
};
|
|
86
88
|
}
|
|
89
|
+
async function resolveGuide(spec, _opts) {
|
|
90
|
+
if (null == spec.guide) {
|
|
91
|
+
spec.guide = spec.def + '-guide.jsonic';
|
|
92
|
+
}
|
|
93
|
+
const path = node_path_1.default.normalize(spec.guide);
|
|
94
|
+
let src;
|
|
95
|
+
// console.log('APIDEF resolveGuide', path)
|
|
96
|
+
if (fs.existsSync(path)) {
|
|
97
|
+
src = fs.readFileSync(path, 'utf8');
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
src = `
|
|
101
|
+
# API Specification Transform Guide
|
|
102
|
+
|
|
103
|
+
guide: entity: {}
|
|
104
|
+
|
|
105
|
+
`;
|
|
106
|
+
fs.writeFileSync(path, src);
|
|
107
|
+
}
|
|
108
|
+
const aopts = {};
|
|
109
|
+
const root = (0, aontu_1.Aontu)(src, aopts);
|
|
110
|
+
const hasErr = root.err && 0 < root.err.length;
|
|
111
|
+
// TODO: collect all errors
|
|
112
|
+
if (hasErr) {
|
|
113
|
+
throw new Error(root.err[0]);
|
|
114
|
+
}
|
|
115
|
+
let genctx = new aontu_1.Context({ root });
|
|
116
|
+
const guide = spec.guideModel = root.gen(genctx);
|
|
117
|
+
// TODO: collect all errors
|
|
118
|
+
if (genctx.err && 0 < genctx.err.length) {
|
|
119
|
+
throw new Error(JSON.stringify(genctx.err[0]));
|
|
120
|
+
}
|
|
121
|
+
// console.log('GUIDE')
|
|
122
|
+
// console.dir(guide, { depth: null })
|
|
123
|
+
const pathParts = node_path_1.default.parse(path);
|
|
124
|
+
spec.guideModelPath = node_path_1.default.join(pathParts.dir, pathParts.name + '.json');
|
|
125
|
+
fs.writeFileSync(spec.guideModelPath, JSON.stringify(guide, null, 2));
|
|
126
|
+
return guide;
|
|
127
|
+
}
|
|
87
128
|
return {
|
|
88
129
|
watch,
|
|
89
130
|
generate,
|
|
90
131
|
};
|
|
91
132
|
}
|
|
92
|
-
function resolveTranform(spec, opts) {
|
|
93
|
-
return makeOpenAPITransform(spec, opts);
|
|
133
|
+
function resolveTranform(spec, guide, opts) {
|
|
134
|
+
return makeOpenAPITransform(spec, guide, opts);
|
|
94
135
|
}
|
|
95
136
|
function extractFields(properties) {
|
|
96
137
|
const fieldMap = (0, jostraca_1.each)(properties)
|
|
@@ -103,20 +144,22 @@ function fixName(base, name, prop = 'name') {
|
|
|
103
144
|
base[(0, jostraca_1.camelify)(prop)] = (0, jostraca_1.camelify)(name);
|
|
104
145
|
base[prop.toUpperCase()] = name.toUpperCase();
|
|
105
146
|
}
|
|
106
|
-
function makeOpenAPITransform(spec, opts) {
|
|
147
|
+
function makeOpenAPITransform(spec, guideModel, opts) {
|
|
107
148
|
const paramBuilder = (paramMap, paramDef, entityModel, pathdef, op, path, entity, model) => {
|
|
108
149
|
paramMap[paramDef.name] = {
|
|
109
150
|
required: paramDef.required
|
|
110
151
|
};
|
|
111
152
|
fixName(paramMap[paramDef.name], paramDef.name);
|
|
112
|
-
|
|
153
|
+
const type = paramDef.schema ? paramDef.schema.type : paramDef.type;
|
|
154
|
+
fixName(paramMap[paramDef.name], type, 'type');
|
|
113
155
|
};
|
|
114
156
|
const queryBuilder = (queryMap, queryDef, entityModel, pathdef, op, path, entity, model) => {
|
|
115
157
|
queryMap[queryDef.name] = {
|
|
116
158
|
required: queryDef.required
|
|
117
159
|
};
|
|
118
160
|
fixName(queryMap[queryDef.name], queryDef.name);
|
|
119
|
-
|
|
161
|
+
const type = queryDef.schema ? queryDef.schema.type : queryDef.type;
|
|
162
|
+
fixName(queryMap[queryDef.name], type, 'type');
|
|
120
163
|
};
|
|
121
164
|
const opBuilder = {
|
|
122
165
|
any: (entityModel, pathdef, op, path, entity, model) => {
|
|
@@ -180,8 +223,10 @@ function makeOpenAPITransform(spec, opts) {
|
|
|
180
223
|
}
|
|
181
224
|
return function OpenAPITransform(def, model) {
|
|
182
225
|
fixName(model.main.api, spec.meta.name);
|
|
226
|
+
// console.log('OpenAPITransform', guideModel)
|
|
183
227
|
model.main.def.desc = def.info.description;
|
|
184
|
-
(0, jostraca_1.each)(
|
|
228
|
+
(0, jostraca_1.each)(guideModel.guide.entity, (entity) => {
|
|
229
|
+
// console.log('ENTITY', entity)
|
|
185
230
|
const entityModel = model.main.api.entity[entity.key$] = {
|
|
186
231
|
op: {},
|
|
187
232
|
field: {},
|
package/dist/apidef.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apidef.js","sourceRoot":"","sources":["../src/apidef.ts"],"names":[],"mappings":";AAAA,oDAAoD;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"apidef.js","sourceRoot":"","sources":["../src/apidef.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["../src/apidef.ts"],"version":"5.6.2"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voxgig/apidef",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.9",
|
|
4
4
|
"main": "dist/apidef.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/apidef.d.ts",
|
|
@@ -35,16 +35,16 @@
|
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@hapi/code": "^9.0.3",
|
|
37
37
|
"@types/js-yaml": "^4.0.9",
|
|
38
|
-
"@types/node": "22.5.
|
|
38
|
+
"@types/node": "22.5.5",
|
|
39
39
|
"aontu": "^0.22.0",
|
|
40
|
-
"esbuild": "^0.
|
|
40
|
+
"esbuild": "^0.24.0",
|
|
41
41
|
"json-schema-to-ts": "^3.1.1",
|
|
42
|
-
"memfs": "^4.
|
|
43
|
-
"typescript": "^5.
|
|
42
|
+
"memfs": "^4.12.0",
|
|
43
|
+
"typescript": "^5.6.2"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@redocly/openapi-core": "^1.
|
|
47
|
-
"chokidar": "^
|
|
48
|
-
"jostraca": "^0.
|
|
46
|
+
"@redocly/openapi-core": "^1.25.3",
|
|
47
|
+
"chokidar": "^4.0.1",
|
|
48
|
+
"jostraca": "^0.7.0"
|
|
49
49
|
}
|
|
50
50
|
}
|
package/src/apidef.ts
CHANGED
|
@@ -9,6 +9,8 @@ import { bundleFromString, createConfig } from '@redocly/openapi-core'
|
|
|
9
9
|
|
|
10
10
|
import { FSWatcher } from 'chokidar'
|
|
11
11
|
|
|
12
|
+
import { Aontu, Context } from 'aontu'
|
|
13
|
+
|
|
12
14
|
import { getx, each, camelify } from 'jostraca'
|
|
13
15
|
|
|
14
16
|
|
|
@@ -37,7 +39,8 @@ function ApiDef(opts: ApiDefOptions = {}) {
|
|
|
37
39
|
|
|
38
40
|
|
|
39
41
|
async function generate(spec: any) {
|
|
40
|
-
const
|
|
42
|
+
const guide = await resolveGuide(spec, opts)
|
|
43
|
+
const transform = resolveTranform(spec, guide, opts)
|
|
41
44
|
|
|
42
45
|
const source = fs.readFileSync(spec.def, 'utf8')
|
|
43
46
|
|
|
@@ -98,6 +101,57 @@ function ApiDef(opts: ApiDefOptions = {}) {
|
|
|
98
101
|
}
|
|
99
102
|
|
|
100
103
|
|
|
104
|
+
async function resolveGuide(spec: any, _opts: any) {
|
|
105
|
+
if (null == spec.guide) {
|
|
106
|
+
spec.guide = spec.def + '-guide.jsonic'
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const path = Path.normalize(spec.guide)
|
|
110
|
+
let src: string
|
|
111
|
+
|
|
112
|
+
// console.log('APIDEF resolveGuide', path)
|
|
113
|
+
|
|
114
|
+
if (fs.existsSync(path)) {
|
|
115
|
+
src = fs.readFileSync(path, 'utf8')
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
src = `
|
|
119
|
+
# API Specification Transform Guide
|
|
120
|
+
|
|
121
|
+
guide: entity: {}
|
|
122
|
+
|
|
123
|
+
`
|
|
124
|
+
fs.writeFileSync(path, src)
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const aopts = {}
|
|
128
|
+
const root = Aontu(src, aopts)
|
|
129
|
+
const hasErr = root.err && 0 < root.err.length
|
|
130
|
+
|
|
131
|
+
// TODO: collect all errors
|
|
132
|
+
if (hasErr) {
|
|
133
|
+
throw new Error(root.err[0])
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
let genctx = new Context({ root })
|
|
137
|
+
const guide = spec.guideModel = root.gen(genctx)
|
|
138
|
+
|
|
139
|
+
// TODO: collect all errors
|
|
140
|
+
if (genctx.err && 0 < genctx.err.length) {
|
|
141
|
+
throw new Error(JSON.stringify(genctx.err[0]))
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// console.log('GUIDE')
|
|
145
|
+
// console.dir(guide, { depth: null })
|
|
146
|
+
|
|
147
|
+
const pathParts = Path.parse(path)
|
|
148
|
+
spec.guideModelPath = Path.join(pathParts.dir, pathParts.name + '.json')
|
|
149
|
+
fs.writeFileSync(spec.guideModelPath, JSON.stringify(guide, null, 2))
|
|
150
|
+
|
|
151
|
+
return guide
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
|
|
101
155
|
return {
|
|
102
156
|
watch,
|
|
103
157
|
generate,
|
|
@@ -107,8 +161,9 @@ function ApiDef(opts: ApiDefOptions = {}) {
|
|
|
107
161
|
|
|
108
162
|
|
|
109
163
|
|
|
110
|
-
|
|
111
|
-
|
|
164
|
+
|
|
165
|
+
function resolveTranform(spec: any, guide: any, opts: any) {
|
|
166
|
+
return makeOpenAPITransform(spec, guide, opts)
|
|
112
167
|
}
|
|
113
168
|
|
|
114
169
|
|
|
@@ -127,16 +182,19 @@ function fixName(base: any, name: string, prop = 'name') {
|
|
|
127
182
|
}
|
|
128
183
|
|
|
129
184
|
|
|
130
|
-
function makeOpenAPITransform(spec: any, opts: any) {
|
|
185
|
+
function makeOpenAPITransform(spec: any, guideModel: any, opts: any) {
|
|
131
186
|
|
|
132
187
|
const paramBuilder = (paramMap: any, paramDef: any,
|
|
133
188
|
entityModel: any, pathdef: any,
|
|
134
189
|
op: any, path: any, entity: any, model: any) => {
|
|
190
|
+
|
|
135
191
|
paramMap[paramDef.name] = {
|
|
136
192
|
required: paramDef.required
|
|
137
193
|
}
|
|
138
194
|
fixName(paramMap[paramDef.name], paramDef.name)
|
|
139
|
-
|
|
195
|
+
|
|
196
|
+
const type = paramDef.schema ? paramDef.schema.type : paramDef.type
|
|
197
|
+
fixName(paramMap[paramDef.name], type, 'type')
|
|
140
198
|
}
|
|
141
199
|
|
|
142
200
|
|
|
@@ -147,7 +205,9 @@ function makeOpenAPITransform(spec: any, opts: any) {
|
|
|
147
205
|
required: queryDef.required
|
|
148
206
|
}
|
|
149
207
|
fixName(queryMap[queryDef.name], queryDef.name)
|
|
150
|
-
|
|
208
|
+
|
|
209
|
+
const type = queryDef.schema ? queryDef.schema.type : queryDef.type
|
|
210
|
+
fixName(queryMap[queryDef.name], type, 'type')
|
|
151
211
|
}
|
|
152
212
|
|
|
153
213
|
|
|
@@ -239,11 +299,14 @@ function makeOpenAPITransform(spec: any, opts: any) {
|
|
|
239
299
|
return function OpenAPITransform(def: any, model: any) {
|
|
240
300
|
fixName(model.main.api, spec.meta.name)
|
|
241
301
|
|
|
302
|
+
// console.log('OpenAPITransform', guideModel)
|
|
242
303
|
|
|
243
304
|
model.main.def.desc = def.info.description
|
|
244
305
|
|
|
245
306
|
|
|
246
|
-
each(
|
|
307
|
+
each(guideModel.guide.entity, (entity: any) => {
|
|
308
|
+
// console.log('ENTITY', entity)
|
|
309
|
+
|
|
247
310
|
const entityModel: any = model.main.api.entity[entity.key$] = {
|
|
248
311
|
op: {},
|
|
249
312
|
field: {},
|