@voxgig/apidef 0.0.8 → 0.1.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.
- package/dist/apidef.js +55 -5
- package/dist/apidef.js.map +1 -1
- package/model/guide.jsonic +9 -0
- package/model/guide.jsonic~ +14 -0
- package/package.json +6 -5
- package/src/apidef.ts +70 -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,59 @@ 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
|
+
@"node_modules/@voxgig/apidef/model/guide.jsonic"
|
|
104
|
+
|
|
105
|
+
guide: entity: {
|
|
106
|
+
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
`;
|
|
110
|
+
fs.writeFileSync(path, src);
|
|
111
|
+
}
|
|
112
|
+
const aopts = {};
|
|
113
|
+
const root = (0, aontu_1.Aontu)(src, aopts);
|
|
114
|
+
const hasErr = root.err && 0 < root.err.length;
|
|
115
|
+
// TODO: collect all errors
|
|
116
|
+
if (hasErr) {
|
|
117
|
+
// console.log(root.err)
|
|
118
|
+
// throw new Error(root.err[0])
|
|
119
|
+
throw root.err[0].err;
|
|
120
|
+
}
|
|
121
|
+
let genctx = new aontu_1.Context({ root });
|
|
122
|
+
const guide = spec.guideModel = root.gen(genctx);
|
|
123
|
+
// TODO: collect all errors
|
|
124
|
+
if (genctx.err && 0 < genctx.err.length) {
|
|
125
|
+
// console.log(genctx.err)
|
|
126
|
+
throw new Error(JSON.stringify(genctx.err[0]));
|
|
127
|
+
}
|
|
128
|
+
// console.log('GUIDE')
|
|
129
|
+
// console.dir(guide, { depth: null })
|
|
130
|
+
const pathParts = node_path_1.default.parse(path);
|
|
131
|
+
spec.guideModelPath = node_path_1.default.join(pathParts.dir, pathParts.name + '.json');
|
|
132
|
+
fs.writeFileSync(spec.guideModelPath, JSON.stringify(guide, null, 2));
|
|
133
|
+
return guide;
|
|
134
|
+
}
|
|
87
135
|
return {
|
|
88
136
|
watch,
|
|
89
137
|
generate,
|
|
90
138
|
};
|
|
91
139
|
}
|
|
92
|
-
function resolveTranform(spec, opts) {
|
|
93
|
-
return makeOpenAPITransform(spec, opts);
|
|
140
|
+
function resolveTranform(spec, guide, opts) {
|
|
141
|
+
return makeOpenAPITransform(spec, guide, opts);
|
|
94
142
|
}
|
|
95
143
|
function extractFields(properties) {
|
|
96
144
|
const fieldMap = (0, jostraca_1.each)(properties)
|
|
@@ -103,7 +151,7 @@ function fixName(base, name, prop = 'name') {
|
|
|
103
151
|
base[(0, jostraca_1.camelify)(prop)] = (0, jostraca_1.camelify)(name);
|
|
104
152
|
base[prop.toUpperCase()] = name.toUpperCase();
|
|
105
153
|
}
|
|
106
|
-
function makeOpenAPITransform(spec, opts) {
|
|
154
|
+
function makeOpenAPITransform(spec, guideModel, opts) {
|
|
107
155
|
const paramBuilder = (paramMap, paramDef, entityModel, pathdef, op, path, entity, model) => {
|
|
108
156
|
paramMap[paramDef.name] = {
|
|
109
157
|
required: paramDef.required
|
|
@@ -182,8 +230,10 @@ function makeOpenAPITransform(spec, opts) {
|
|
|
182
230
|
}
|
|
183
231
|
return function OpenAPITransform(def, model) {
|
|
184
232
|
fixName(model.main.api, spec.meta.name);
|
|
233
|
+
// console.log('OpenAPITransform', guideModel)
|
|
185
234
|
model.main.def.desc = def.info.description;
|
|
186
|
-
(0, jostraca_1.each)(
|
|
235
|
+
(0, jostraca_1.each)(guideModel.guide.entity, (entity) => {
|
|
236
|
+
// console.log('ENTITY', entity)
|
|
187
237
|
const entityModel = model.main.api.entity[entity.key$] = {
|
|
188
238
|
op: {},
|
|
189
239
|
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.1.0",
|
|
4
4
|
"main": "dist/apidef.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/apidef.d.ts",
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
},
|
|
29
29
|
"license": "MIT",
|
|
30
30
|
"files": [
|
|
31
|
+
"model",
|
|
31
32
|
"src",
|
|
32
33
|
"dist",
|
|
33
34
|
"LICENSE"
|
|
@@ -35,16 +36,16 @@
|
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@hapi/code": "^9.0.3",
|
|
37
38
|
"@types/js-yaml": "^4.0.9",
|
|
38
|
-
"@types/node": "22.
|
|
39
|
+
"@types/node": "22.6.1",
|
|
39
40
|
"aontu": "^0.22.0",
|
|
40
|
-
"esbuild": "^0.
|
|
41
|
+
"esbuild": "^0.24.0",
|
|
41
42
|
"json-schema-to-ts": "^3.1.1",
|
|
42
43
|
"memfs": "^4.12.0",
|
|
43
44
|
"typescript": "^5.6.2"
|
|
44
45
|
},
|
|
45
46
|
"dependencies": {
|
|
46
47
|
"@redocly/openapi-core": "^1.25.3",
|
|
47
|
-
"chokidar": "^4.0.
|
|
48
|
-
"jostraca": "^0.
|
|
48
|
+
"chokidar": "^4.0.1",
|
|
49
|
+
"jostraca": "^0.7.2"
|
|
49
50
|
}
|
|
50
51
|
}
|
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,64 @@ 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
|
+
@"node_modules/@voxgig/apidef/model/guide.jsonic"
|
|
122
|
+
|
|
123
|
+
guide: entity: {
|
|
124
|
+
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
`
|
|
128
|
+
fs.writeFileSync(path, src)
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const aopts = {}
|
|
132
|
+
const root = Aontu(src, aopts)
|
|
133
|
+
const hasErr = root.err && 0 < root.err.length
|
|
134
|
+
|
|
135
|
+
// TODO: collect all errors
|
|
136
|
+
if (hasErr) {
|
|
137
|
+
// console.log(root.err)
|
|
138
|
+
// throw new Error(root.err[0])
|
|
139
|
+
throw root.err[0].err
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
let genctx = new Context({ root })
|
|
143
|
+
const guide = spec.guideModel = root.gen(genctx)
|
|
144
|
+
|
|
145
|
+
// TODO: collect all errors
|
|
146
|
+
if (genctx.err && 0 < genctx.err.length) {
|
|
147
|
+
// console.log(genctx.err)
|
|
148
|
+
throw new Error(JSON.stringify(genctx.err[0]))
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// console.log('GUIDE')
|
|
152
|
+
// console.dir(guide, { depth: null })
|
|
153
|
+
|
|
154
|
+
const pathParts = Path.parse(path)
|
|
155
|
+
spec.guideModelPath = Path.join(pathParts.dir, pathParts.name + '.json')
|
|
156
|
+
fs.writeFileSync(spec.guideModelPath, JSON.stringify(guide, null, 2))
|
|
157
|
+
|
|
158
|
+
return guide
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
|
|
101
162
|
return {
|
|
102
163
|
watch,
|
|
103
164
|
generate,
|
|
@@ -107,8 +168,9 @@ function ApiDef(opts: ApiDefOptions = {}) {
|
|
|
107
168
|
|
|
108
169
|
|
|
109
170
|
|
|
110
|
-
|
|
111
|
-
|
|
171
|
+
|
|
172
|
+
function resolveTranform(spec: any, guide: any, opts: any) {
|
|
173
|
+
return makeOpenAPITransform(spec, guide, opts)
|
|
112
174
|
}
|
|
113
175
|
|
|
114
176
|
|
|
@@ -127,7 +189,7 @@ function fixName(base: any, name: string, prop = 'name') {
|
|
|
127
189
|
}
|
|
128
190
|
|
|
129
191
|
|
|
130
|
-
function makeOpenAPITransform(spec: any, opts: any) {
|
|
192
|
+
function makeOpenAPITransform(spec: any, guideModel: any, opts: any) {
|
|
131
193
|
|
|
132
194
|
const paramBuilder = (paramMap: any, paramDef: any,
|
|
133
195
|
entityModel: any, pathdef: any,
|
|
@@ -244,11 +306,14 @@ function makeOpenAPITransform(spec: any, opts: any) {
|
|
|
244
306
|
return function OpenAPITransform(def: any, model: any) {
|
|
245
307
|
fixName(model.main.api, spec.meta.name)
|
|
246
308
|
|
|
309
|
+
// console.log('OpenAPITransform', guideModel)
|
|
247
310
|
|
|
248
311
|
model.main.def.desc = def.info.description
|
|
249
312
|
|
|
250
313
|
|
|
251
|
-
each(
|
|
314
|
+
each(guideModel.guide.entity, (entity: any) => {
|
|
315
|
+
// console.log('ENTITY', entity)
|
|
316
|
+
|
|
252
317
|
const entityModel: any = model.main.api.entity[entity.key$] = {
|
|
253
318
|
op: {},
|
|
254
319
|
field: {},
|