@voxgig/apidef 2.4.1 → 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.
- package/dist/apidef.d.ts +5 -1
- package/dist/apidef.js +197 -112
- package/dist/apidef.js.map +1 -1
- package/dist/builder/entity/entity.d.ts +3 -0
- package/dist/builder/entity/{apiEntity.js → entity.js} +12 -9
- package/dist/builder/entity/entity.js.map +1 -0
- package/dist/builder/entity/info.d.ts +3 -0
- package/dist/builder/entity/info.js +22 -0
- package/dist/builder/entity/info.js.map +1 -0
- package/dist/builder/entity.js +7 -21
- package/dist/builder/entity.js.map +1 -1
- package/dist/builder/flow/flowHeuristic01.js +21 -11
- package/dist/builder/flow/flowHeuristic01.js.map +1 -1
- package/dist/builder/flow.d.ts +2 -1
- package/dist/builder/flow.js +29 -4
- package/dist/builder/flow.js.map +1 -1
- package/dist/def.d.ts +62 -0
- package/dist/def.js +4 -0
- package/dist/def.js.map +1 -0
- package/dist/desc.d.ts +89 -0
- package/dist/desc.js +4 -0
- package/dist/desc.js.map +1 -0
- package/dist/guide/guide.d.ts +2 -1
- package/dist/guide/guide.js +161 -30
- package/dist/guide/guide.js.map +1 -1
- package/dist/guide/heuristic01.d.ts +2 -1
- package/dist/guide/heuristic01.js +1120 -234
- package/dist/guide/heuristic01.js.map +1 -1
- package/dist/model.d.ts +55 -0
- package/dist/model.js +4 -0
- package/dist/model.js.map +1 -0
- package/dist/parse.d.ts +1 -2
- package/dist/parse.js +8 -47
- package/dist/parse.js.map +1 -1
- package/dist/transform/args.d.ts +3 -0
- package/dist/transform/args.js +58 -0
- package/dist/transform/args.js.map +1 -0
- package/dist/transform/clean.js +27 -3
- package/dist/transform/clean.js.map +1 -1
- package/dist/transform/entity.d.ts +11 -3
- package/dist/transform/entity.js +57 -41
- package/dist/transform/entity.js.map +1 -1
- package/dist/transform/field.d.ts +3 -3
- package/dist/transform/field.js +90 -65
- package/dist/transform/field.js.map +1 -1
- package/dist/transform/operation.d.ts +1 -1
- package/dist/transform/operation.js +94 -296
- package/dist/transform/operation.js.map +1 -1
- package/dist/transform/select.d.ts +3 -0
- package/dist/transform/select.js +44 -0
- package/dist/transform/select.js.map +1 -0
- package/dist/transform/top.d.ts +9 -0
- package/dist/transform/top.js +11 -2
- package/dist/transform/top.js.map +1 -1
- package/dist/transform.js +4 -0
- package/dist/transform.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +112 -19
- package/dist/types.js +4 -2
- package/dist/types.js.map +1 -1
- package/dist/utility.d.ts +30 -2
- package/dist/utility.js +381 -6
- package/dist/utility.js.map +1 -1
- package/model/apidef.jsonic +75 -1
- package/model/guide.jsonic +14 -44
- package/package.json +17 -14
- package/src/apidef.ts +264 -121
- package/src/builder/entity/{apiEntity.ts → entity.ts} +18 -11
- package/src/builder/entity/info.ts +53 -0
- package/src/builder/entity.ts +9 -35
- package/src/builder/flow/flowHeuristic01.ts +46 -12
- package/src/builder/flow.ts +39 -5
- package/src/def.ts +91 -0
- package/src/desc.ts +143 -0
- package/src/guide/guide.ts +207 -134
- package/src/guide/heuristic01.ts +1651 -272
- package/src/model.ts +98 -0
- package/src/parse.ts +5 -61
- package/src/schematron.ts.off +317 -0
- package/src/transform/args.ts +102 -0
- package/src/transform/clean.ts +43 -8
- package/src/transform/entity.ts +100 -51
- package/src/transform/field.ts +150 -71
- package/src/transform/operation.ts +118 -414
- package/src/transform/select.ts +90 -0
- package/src/transform/top.ts +76 -3
- package/src/transform.ts +4 -0
- package/src/types.ts +185 -5
- package/src/utility.ts +481 -9
- package/dist/builder/entity/apiEntity.d.ts +0 -3
- package/dist/builder/entity/apiEntity.js.map +0 -1
- package/dist/builder/entity/def.d.ts +0 -3
- package/dist/builder/entity/def.js +0 -19
- package/dist/builder/entity/def.js.map +0 -1
- package/src/builder/entity/def.ts +0 -44
- package/src/guide.ts.off +0 -136
package/src/guide.ts.off
DELETED
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
import Path from 'node:path'
|
|
3
|
-
|
|
4
|
-
import { File, Content, each } from 'jostraca'
|
|
5
|
-
|
|
6
|
-
import { merge, items } from '@voxgig/struct'
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { heuristic01 } from './guide/heuristic01'
|
|
10
|
-
|
|
11
|
-
import {
|
|
12
|
-
getdlog,
|
|
13
|
-
} from './utility'
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
// Log non-fatal wierdness.
|
|
17
|
-
const dlog = getdlog('apidef', __filename)
|
|
18
|
-
|
|
19
|
-
async function resolveGuide(ctx: any) {
|
|
20
|
-
let baseguide: Record<string, any> = {}
|
|
21
|
-
let override: Record<string, any> = ctx.model.main.api.guide
|
|
22
|
-
|
|
23
|
-
if ('heuristic01' === ctx.opts.strategy) {
|
|
24
|
-
baseguide = await heuristic01(ctx)
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
throw new Error('Unknown guide strategy: ' + ctx.opts.strategy)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Override generated base guide with custom hints
|
|
31
|
-
let guide = merge([{}, baseguide, override])
|
|
32
|
-
|
|
33
|
-
// TODO: this is a hack!!!
|
|
34
|
-
// Instead, update @voxgig/model, so that builders can request a reload of the entire
|
|
35
|
-
// model. This allows builders to modify the model for later buidlers
|
|
36
|
-
// during a single generation pass.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
guide = cleanGuide(guide)
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
// TODO: FIX: sdk.jsonic should have final version of guide
|
|
43
|
-
if (ctx.model.main?.api) {
|
|
44
|
-
ctx.model.main.api.guide = guide
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
dlog('missing', 'ctx.model.main.api')
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
const guideFile =
|
|
51
|
-
Path.join(ctx.opts.folder,
|
|
52
|
-
(null == ctx.opts.outprefix ? '' : ctx.opts.outprefix) + 'base-guide.jsonic')
|
|
53
|
-
|
|
54
|
-
const guideBlocks = [
|
|
55
|
-
'# Guide',
|
|
56
|
-
'',
|
|
57
|
-
'main: api: guide: {',
|
|
58
|
-
]
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
guideBlocks.push(...each(baseguide.entity, (entity, entityname) => {
|
|
62
|
-
guideBlocks.push(`
|
|
63
|
-
entity: ${entityname}: {` +
|
|
64
|
-
(0 < entity.why_name.length ? ' # name:' + entity.why_name.join(';') : ''))
|
|
65
|
-
|
|
66
|
-
items(entity.path).map((pathn) => {
|
|
67
|
-
const [pathname, path] = pathn
|
|
68
|
-
guideBlocks.push(` path: '${pathname}': op: {` +
|
|
69
|
-
(0 < path.why_ent.length ? ' # ent:' + path.why_ent.join(';') : ''))
|
|
70
|
-
|
|
71
|
-
items(path.op).map((opn) => {
|
|
72
|
-
const [opname, op] = opn
|
|
73
|
-
guideBlocks.push(` '${opname}': method: ${op.method}` +
|
|
74
|
-
(0 < op.why_op.length ? ' # ' + op.why_op : ''))
|
|
75
|
-
if (op.transform?.reqform) {
|
|
76
|
-
guideBlocks.push(
|
|
77
|
-
` '${opname}': transform: reqform: ${JSON.stringify(op.transform.reqform)}`)
|
|
78
|
-
}
|
|
79
|
-
})
|
|
80
|
-
|
|
81
|
-
guideBlocks.push(` }`)
|
|
82
|
-
})
|
|
83
|
-
|
|
84
|
-
guideBlocks.push(`}`)
|
|
85
|
-
}))
|
|
86
|
-
|
|
87
|
-
guideBlocks.push('}')
|
|
88
|
-
|
|
89
|
-
const guideSrc = guideBlocks.join('\n')
|
|
90
|
-
|
|
91
|
-
ctx.note.guide = { base: guideSrc }
|
|
92
|
-
|
|
93
|
-
return () => {
|
|
94
|
-
// Save base guide for reference
|
|
95
|
-
File({ name: '../def/' + Path.basename(guideFile) }, () => Content(guideSrc))
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
function cleanGuide(guide: Record<string, any>): Record<string, any> {
|
|
101
|
-
const clean: Record<string, any> = {
|
|
102
|
-
control: guide.control,
|
|
103
|
-
entity: {}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
const exclude_entity = guide.exclude?.entity?.split(',') || []
|
|
107
|
-
const include_entity = guide.include?.entity?.split(',') || []
|
|
108
|
-
|
|
109
|
-
each(guide.entity, (entity: any, name: string) => {
|
|
110
|
-
if (exclude_entity.includes(name)) {
|
|
111
|
-
return
|
|
112
|
-
}
|
|
113
|
-
if (exclude_entity.includes('*')) {
|
|
114
|
-
if (!include_entity.includes(name)) {
|
|
115
|
-
return
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
let ent: any = clean.entity[name] = clean.entity[name] = {
|
|
120
|
-
name,
|
|
121
|
-
why_name: entity.why_name || [],
|
|
122
|
-
path: {}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
each(entity.path, (path: any, pathname: string) => {
|
|
126
|
-
ent.path[pathname] = path
|
|
127
|
-
})
|
|
128
|
-
})
|
|
129
|
-
|
|
130
|
-
return clean
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
export {
|
|
135
|
-
resolveGuide
|
|
136
|
-
}
|