@voxgig/apidef 0.0.8 → 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 +48 -5
- package/dist/apidef.js.map +1 -1
- package/package.json +4 -4
- package/src/apidef.ts +63 -5
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,7 +144,7 @@ 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
|
|
@@ -182,8 +223,10 @@ function makeOpenAPITransform(spec, opts) {
|
|
|
182
223
|
}
|
|
183
224
|
return function OpenAPITransform(def, model) {
|
|
184
225
|
fixName(model.main.api, spec.meta.name);
|
|
226
|
+
// console.log('OpenAPITransform', guideModel)
|
|
185
227
|
model.main.def.desc = def.info.description;
|
|
186
|
-
(0, jostraca_1.each)(
|
|
228
|
+
(0, jostraca_1.each)(guideModel.guide.entity, (entity) => {
|
|
229
|
+
// console.log('ENTITY', entity)
|
|
187
230
|
const entityModel = model.main.api.entity[entity.key$] = {
|
|
188
231
|
op: {},
|
|
189
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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"}
|
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",
|
|
@@ -37,14 +37,14 @@
|
|
|
37
37
|
"@types/js-yaml": "^4.0.9",
|
|
38
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
42
|
"memfs": "^4.12.0",
|
|
43
43
|
"typescript": "^5.6.2"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
46
|
"@redocly/openapi-core": "^1.25.3",
|
|
47
|
-
"chokidar": "^4.0.
|
|
48
|
-
"jostraca": "^0.
|
|
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,7 +182,7 @@ 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,
|
|
@@ -244,11 +299,14 @@ function makeOpenAPITransform(spec: any, opts: any) {
|
|
|
244
299
|
return function OpenAPITransform(def: any, model: any) {
|
|
245
300
|
fixName(model.main.api, spec.meta.name)
|
|
246
301
|
|
|
302
|
+
// console.log('OpenAPITransform', guideModel)
|
|
247
303
|
|
|
248
304
|
model.main.def.desc = def.info.description
|
|
249
305
|
|
|
250
306
|
|
|
251
|
-
each(
|
|
307
|
+
each(guideModel.guide.entity, (entity: any) => {
|
|
308
|
+
// console.log('ENTITY', entity)
|
|
309
|
+
|
|
252
310
|
const entityModel: any = model.main.api.entity[entity.key$] = {
|
|
253
311
|
op: {},
|
|
254
312
|
field: {},
|