@voxgig/apidef 2.4.1 → 3.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.d.ts +7 -2
- package/dist/apidef.js +190 -114
- 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 +39 -12
- 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 +87 -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 +1122 -234
- package/dist/guide/heuristic01.js.map +1 -1
- package/dist/model.d.ts +90 -0
- package/dist/model.js +4 -0
- package/dist/model.js.map +1 -0
- package/dist/parse.d.ts +4 -3
- package/dist/parse.js +40 -46
- package/dist/parse.js.map +1 -1
- package/dist/resolver.js +2 -1
- package/dist/resolver.js.map +1 -1
- package/dist/transform/args.d.ts +3 -0
- package/dist/transform/args.js +54 -0
- package/dist/transform/args.js.map +1 -0
- package/dist/transform/clean.d.ts +2 -2
- package/dist/transform/clean.js +28 -3
- package/dist/transform/clean.js.map +1 -1
- package/dist/transform/entity.d.ts +9 -1
- package/dist/transform/entity.js +57 -41
- package/dist/transform/entity.js.map +1 -1
- package/dist/transform/field.d.ts +1 -1
- package/dist/transform/field.js +89 -65
- package/dist/transform/field.js.map +1 -1
- package/dist/transform/flow.d.ts +3 -0
- package/dist/transform/flow.js +26 -0
- package/dist/transform/flow.js.map +1 -0
- package/dist/transform/flowstep.d.ts +3 -0
- package/dist/transform/flowstep.js +145 -0
- package/dist/transform/flowstep.js.map +1 -0
- package/dist/transform/operation.d.ts +3 -3
- package/dist/transform/operation.js +101 -296
- package/dist/transform/operation.js.map +1 -1
- package/dist/transform/select.d.ts +3 -0
- package/dist/transform/select.js +65 -0
- package/dist/transform/select.js.map +1 -0
- package/dist/transform/top.js +24 -2
- package/dist/transform/top.js.map +1 -1
- package/dist/transform.d.ts +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 +115 -14
- package/dist/types.js +4 -2
- package/dist/types.js.map +1 -1
- package/dist/utility.d.ts +34 -2
- package/dist/utility.js +444 -6
- package/dist/utility.js.map +1 -1
- package/model/apidef.jsonic +76 -1
- package/model/guide.jsonic +14 -44
- package/package.json +19 -16
- package/src/apidef.ts +258 -122
- 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 +54 -13
- package/src/def.ts +91 -0
- package/src/desc.ts +154 -0
- package/src/guide/guide.ts +208 -134
- package/src/guide/heuristic01.ts +1653 -272
- package/src/model.ts +143 -0
- package/src/parse.ts +50 -59
- package/src/resolver.ts +3 -1
- package/src/schematron.ts.off +317 -0
- package/src/transform/args.ts +98 -0
- package/src/transform/clean.ts +45 -11
- package/src/transform/entity.ts +96 -50
- package/src/transform/field.ts +136 -75
- package/src/transform/flow.ts +59 -0
- package/src/transform/flowstep.ts +242 -0
- package/src/transform/operation.ts +119 -419
- package/src/transform/select.ts +119 -0
- package/src/transform/top.ts +46 -4
- package/src/transform.ts +8 -4
- package/src/types.ts +181 -5
- package/src/utility.ts +567 -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
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import { each } from 'jostraca'
|
|
4
|
+
|
|
5
|
+
import type { TransformResult, Transform } from '../transform'
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
import { KIT } from '../types'
|
|
9
|
+
|
|
10
|
+
import type {
|
|
11
|
+
KitModel,
|
|
12
|
+
Guide,
|
|
13
|
+
} from '../types'
|
|
14
|
+
|
|
15
|
+
import type {
|
|
16
|
+
PathDef,
|
|
17
|
+
} from '../def'
|
|
18
|
+
|
|
19
|
+
import type {
|
|
20
|
+
OpName,
|
|
21
|
+
ModelOp,
|
|
22
|
+
ModelEntity,
|
|
23
|
+
ModelAlt,
|
|
24
|
+
ModelArg,
|
|
25
|
+
} from '../model'
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
const selectTransform: Transform = async function(
|
|
30
|
+
ctx: any,
|
|
31
|
+
): Promise<TransformResult> {
|
|
32
|
+
const { apimodel, def, guide } = ctx
|
|
33
|
+
const kit: KitModel = apimodel.main[KIT]
|
|
34
|
+
|
|
35
|
+
let msg = 'select '
|
|
36
|
+
|
|
37
|
+
each(kit.entity, (ment: ModelEntity, _entname: string) => {
|
|
38
|
+
each(ment.op, (mop: ModelOp, _opname: OpName) => {
|
|
39
|
+
each(mop.alts, (malt: ModelAlt) => {
|
|
40
|
+
const pdef: PathDef = def.paths[malt.orig]
|
|
41
|
+
resolveSelect(guide, ment, mop, malt, pdef)
|
|
42
|
+
})
|
|
43
|
+
if (null != mop.alts && 0 < mop.alts.length) {
|
|
44
|
+
sortAlts(guide, ment, mop)
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
msg += ment.name + ' '
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
return { ok: true, msg }
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
function resolveSelect(
|
|
56
|
+
guide: Guide,
|
|
57
|
+
ment: ModelEntity,
|
|
58
|
+
_mop: ModelOp,
|
|
59
|
+
malt: ModelAlt,
|
|
60
|
+
_pdef: PathDef
|
|
61
|
+
) {
|
|
62
|
+
const select: any = malt.select
|
|
63
|
+
const margs: any = malt.args
|
|
64
|
+
|
|
65
|
+
const argkinds = ['param', 'query', 'header', 'cookie']
|
|
66
|
+
|
|
67
|
+
argkinds.map((kind: string) => {
|
|
68
|
+
each(margs[kind], (marg: ModelArg) => {
|
|
69
|
+
if (!select.exist.includes(marg.name)) {
|
|
70
|
+
select.exist.push(marg.name)
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
select.exist.sort()
|
|
76
|
+
|
|
77
|
+
const gent = guide.entity[ment.name]
|
|
78
|
+
const gpath = gent.path[malt.orig]
|
|
79
|
+
|
|
80
|
+
if (gpath.action) {
|
|
81
|
+
const actname = Object.keys(gpath.action)[0]
|
|
82
|
+
|
|
83
|
+
if (null != actname) {
|
|
84
|
+
select.$action = actname
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
function sortAlts(
|
|
92
|
+
_guide: Guide,
|
|
93
|
+
_ment: ModelEntity,
|
|
94
|
+
mop: ModelOp,
|
|
95
|
+
) {
|
|
96
|
+
mop.alts.sort((a: ModelAlt, b: ModelAlt) => {
|
|
97
|
+
// longest exist len first
|
|
98
|
+
let order = b.select.exist.length - a.select.exist.length
|
|
99
|
+
if (0 === order) {
|
|
100
|
+
if (null != a.select.$action && null != b.select.$action) {
|
|
101
|
+
order = a.select.$action < b.select.$action ? -1 :
|
|
102
|
+
a.select.$action > b.select.$action ? 1 : 0
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (0 === order) {
|
|
106
|
+
const a_exist_str = a.select.exist.join('\t')
|
|
107
|
+
const b_exist_str = b.select.exist.join('\t')
|
|
108
|
+
order = a_exist_str < b_exist_str ? -1 :
|
|
109
|
+
a_exist_str > b_exist_str ? 1 : 0
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return order
|
|
114
|
+
})
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export {
|
|
118
|
+
selectTransform,
|
|
119
|
+
}
|
package/src/transform/top.ts
CHANGED
|
@@ -1,18 +1,55 @@
|
|
|
1
1
|
|
|
2
|
-
import {
|
|
2
|
+
import { joinurl } from '@voxgig/struct'
|
|
3
|
+
|
|
4
|
+
import { KIT } from '../types'
|
|
3
5
|
|
|
4
6
|
import type { TransformResult } from '../transform'
|
|
5
7
|
|
|
6
|
-
import {
|
|
8
|
+
import type {
|
|
9
|
+
KitModel,
|
|
10
|
+
} from '../types'
|
|
11
|
+
|
|
12
|
+
import type {
|
|
13
|
+
// GuidePath,
|
|
14
|
+
PathDesc,
|
|
15
|
+
OpDesc,
|
|
16
|
+
} from '../desc'
|
|
17
|
+
|
|
18
|
+
import type {
|
|
19
|
+
OpName,
|
|
20
|
+
} from '../model'
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
// Guide* => from guide model
|
|
24
|
+
// *Desc => internal working descriptiuon
|
|
25
|
+
// *Def => API spec definition
|
|
26
|
+
// Model* => Generated SDK Model
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
// type GuideEntity = {
|
|
30
|
+
// name: string,
|
|
31
|
+
// path: Record<string, GuidePath>
|
|
32
|
+
|
|
33
|
+
// paths$: PathDesc[]
|
|
34
|
+
// opm$: Record<OpName, OpDesc>
|
|
35
|
+
// }
|
|
7
36
|
|
|
8
37
|
|
|
9
38
|
const topTransform = async function(
|
|
10
39
|
ctx: any,
|
|
11
40
|
): Promise<TransformResult> {
|
|
12
41
|
const { apimodel, def } = ctx
|
|
42
|
+
const kit: KitModel = apimodel.main[KIT]
|
|
43
|
+
|
|
44
|
+
kit.info = def.info
|
|
45
|
+
kit.info.servers = def.servers ?? []
|
|
13
46
|
|
|
14
|
-
|
|
15
|
-
|
|
47
|
+
// Swagger 2.0
|
|
48
|
+
if (def.host) {
|
|
49
|
+
kit.info.servers.push({
|
|
50
|
+
url: (def.schemes?.[0] ?? 'https') + '://' + joinurl([def.host, def.basePath])
|
|
51
|
+
})
|
|
52
|
+
}
|
|
16
53
|
|
|
17
54
|
return { ok: true, msg: 'top' }
|
|
18
55
|
}
|
|
@@ -21,3 +58,8 @@ const topTransform = async function(
|
|
|
21
58
|
export {
|
|
22
59
|
topTransform
|
|
23
60
|
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
// export type {
|
|
64
|
+
// GuideEntity,
|
|
65
|
+
// }
|
package/src/transform.ts
CHANGED
|
@@ -10,6 +10,8 @@ import { Gubu, Child, Exact } from 'gubu'
|
|
|
10
10
|
import { topTransform } from './transform/top'
|
|
11
11
|
import { entityTransform } from './transform/entity'
|
|
12
12
|
import { operationTransform } from './transform/operation'
|
|
13
|
+
import { argsTransform } from './transform/args'
|
|
14
|
+
import { selectTransform } from './transform/select'
|
|
13
15
|
import { fieldTransform } from './transform/field'
|
|
14
16
|
// import { manualTransform } from './transform/manual'
|
|
15
17
|
|
|
@@ -37,10 +39,10 @@ type TransformResult = {
|
|
|
37
39
|
|
|
38
40
|
type Transform = (
|
|
39
41
|
ctx: TransformCtx,
|
|
40
|
-
guide: Guide,
|
|
41
|
-
tspec: TransformSpec,
|
|
42
|
-
apimodel: any,
|
|
43
|
-
def: any,
|
|
42
|
+
// guide: Guide,
|
|
43
|
+
// tspec: TransformSpec,
|
|
44
|
+
// apimodel: any,
|
|
45
|
+
// def: any,
|
|
44
46
|
) => Promise<TransformResult>
|
|
45
47
|
|
|
46
48
|
type ProcessResult = {
|
|
@@ -54,6 +56,8 @@ const TRANSFORM: Record<string, Transform> = {
|
|
|
54
56
|
top: topTransform,
|
|
55
57
|
entity: entityTransform,
|
|
56
58
|
operation: operationTransform,
|
|
59
|
+
args: argsTransform,
|
|
60
|
+
select: selectTransform,
|
|
57
61
|
field: fieldTransform,
|
|
58
62
|
// manual: manualTransform,
|
|
59
63
|
}
|
package/src/types.ts
CHANGED
|
@@ -6,10 +6,24 @@ import { Pino, prettyPino } from '@voxgig/util'
|
|
|
6
6
|
import { Gubu, Open, Any } from 'gubu'
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
const KIT = 'kit'
|
|
10
|
+
|
|
11
|
+
|
|
9
12
|
type FsUtil = typeof Fs
|
|
10
13
|
type Log = ReturnType<typeof prettyPino>
|
|
11
14
|
|
|
12
15
|
|
|
16
|
+
type TypeName =
|
|
17
|
+
'String' |
|
|
18
|
+
'Number' |
|
|
19
|
+
'Integer' |
|
|
20
|
+
'Boolean' |
|
|
21
|
+
'Null' |
|
|
22
|
+
'Array' |
|
|
23
|
+
'Object' |
|
|
24
|
+
'Any'
|
|
25
|
+
|
|
26
|
+
|
|
13
27
|
type ApiDefOptions = {
|
|
14
28
|
def?: string
|
|
15
29
|
fs?: any
|
|
@@ -19,6 +33,9 @@ type ApiDefOptions = {
|
|
|
19
33
|
meta?: Record<string, any>
|
|
20
34
|
outprefix?: string
|
|
21
35
|
strategy?: string
|
|
36
|
+
why?: {
|
|
37
|
+
show?: boolean
|
|
38
|
+
}
|
|
22
39
|
}
|
|
23
40
|
|
|
24
41
|
const ControlShape = Gubu({
|
|
@@ -40,7 +57,7 @@ const ModelShape = Gubu({
|
|
|
40
57
|
name: String,
|
|
41
58
|
def: String,
|
|
42
59
|
main: {
|
|
43
|
-
|
|
60
|
+
[KIT]: {},
|
|
44
61
|
def: {},
|
|
45
62
|
api: {
|
|
46
63
|
guide: {},
|
|
@@ -80,21 +97,31 @@ type Build = ReturnType<typeof BuildShape>
|
|
|
80
97
|
|
|
81
98
|
type ApiModel = {
|
|
82
99
|
main: {
|
|
83
|
-
|
|
100
|
+
kit: {
|
|
101
|
+
info: Record<string, any>
|
|
84
102
|
entity: Record<string, any>
|
|
103
|
+
flow: Record<string, any>
|
|
85
104
|
}
|
|
86
|
-
def: Record<string, any>
|
|
87
105
|
}
|
|
88
106
|
}
|
|
89
107
|
|
|
90
108
|
|
|
109
|
+
type KitModel = {
|
|
110
|
+
info: Record<string, any>
|
|
111
|
+
entity: Record<string, any>
|
|
112
|
+
flow: Record<string, any>
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
91
118
|
type ApiDefResult = {
|
|
92
119
|
ok: boolean
|
|
93
120
|
start: number
|
|
94
121
|
end: number
|
|
95
122
|
steps: string[]
|
|
96
|
-
|
|
97
|
-
|
|
123
|
+
err?: any
|
|
124
|
+
ctrl?: Control
|
|
98
125
|
guide?: any
|
|
99
126
|
apimodel?: any
|
|
100
127
|
ctx?: any
|
|
@@ -102,7 +129,118 @@ type ApiDefResult = {
|
|
|
102
129
|
}
|
|
103
130
|
|
|
104
131
|
|
|
132
|
+
type Metrics = {
|
|
133
|
+
count: {
|
|
134
|
+
path: number
|
|
135
|
+
method: number
|
|
136
|
+
origcmprefs: Record<string, number>,
|
|
137
|
+
cmp: number
|
|
138
|
+
tag: number
|
|
139
|
+
entity: number
|
|
140
|
+
}
|
|
141
|
+
found: {
|
|
142
|
+
cmp: Record<string, any>,
|
|
143
|
+
tag: Record<string, any>,
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
type ApiDefContext = {
|
|
150
|
+
fs: any,
|
|
151
|
+
log: any,
|
|
152
|
+
spec: any,
|
|
153
|
+
opts: any,
|
|
154
|
+
util: any,
|
|
155
|
+
defpath: string,
|
|
156
|
+
model: any,
|
|
157
|
+
apimodel: any,
|
|
158
|
+
guide: any,
|
|
159
|
+
def: any,
|
|
160
|
+
note: any,
|
|
161
|
+
warn: any,
|
|
162
|
+
metrics: Metrics,
|
|
163
|
+
work: Record<string, any>
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
type Warner = {
|
|
168
|
+
history: ({ point: string, when: number } & Record<string, any>)[],
|
|
169
|
+
point: string,
|
|
170
|
+
} & ((details: Record<string, any>) => void)
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
import type {
|
|
174
|
+
CmpDesc,
|
|
175
|
+
BasicMethodDesc,
|
|
176
|
+
} from './desc'
|
|
177
|
+
|
|
178
|
+
type MethodName = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | ''
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
type Guide = {
|
|
183
|
+
metrics: GuideMetrics
|
|
184
|
+
entity: Record<string, GuideEntity>
|
|
185
|
+
control: GuideControl
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
type GuideControl = {}
|
|
189
|
+
|
|
190
|
+
type GuideMetrics = {
|
|
191
|
+
count: {
|
|
192
|
+
path: number
|
|
193
|
+
method: number
|
|
194
|
+
entity: number
|
|
195
|
+
tag: number
|
|
196
|
+
cmp: number
|
|
197
|
+
origcmprefs: Record<string, number>
|
|
198
|
+
},
|
|
199
|
+
found: {
|
|
200
|
+
tag: Record<string, string>
|
|
201
|
+
cmp: Record<string, string>
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
type GuideEntity = {
|
|
207
|
+
name: string
|
|
208
|
+
orig: string
|
|
209
|
+
path: Record<string, GuidePath>
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
type GuidePath = {
|
|
213
|
+
why_path: string[]
|
|
214
|
+
action: Record<string, GuidePathAction>
|
|
215
|
+
rename: {
|
|
216
|
+
param: Record<string, GuideRenameParam>
|
|
217
|
+
}
|
|
218
|
+
op: Record<string, GuidePathOp>
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
type GuidePathAction = {
|
|
222
|
+
kind: string
|
|
223
|
+
why_action: string[]
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
type GuideRenameParam = {
|
|
227
|
+
target: string
|
|
228
|
+
why_rename: string[]
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
type GuidePathOp = {
|
|
232
|
+
method: string
|
|
233
|
+
why_op: string[]
|
|
234
|
+
transform: {
|
|
235
|
+
req: any
|
|
236
|
+
res: any
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
|
|
105
241
|
export {
|
|
242
|
+
KIT,
|
|
243
|
+
|
|
106
244
|
OpenControlShape,
|
|
107
245
|
OpenModelShape,
|
|
108
246
|
OpenBuildShape,
|
|
@@ -110,6 +248,18 @@ export {
|
|
|
110
248
|
|
|
111
249
|
|
|
112
250
|
export type {
|
|
251
|
+
Guide,
|
|
252
|
+
GuideMetrics,
|
|
253
|
+
GuideEntity,
|
|
254
|
+
GuidePath,
|
|
255
|
+
GuidePathAction,
|
|
256
|
+
GuideRenameParam,
|
|
257
|
+
GuidePathOp,
|
|
258
|
+
|
|
259
|
+
KitModel,
|
|
260
|
+
|
|
261
|
+
MethodName,
|
|
262
|
+
TypeName,
|
|
113
263
|
Log,
|
|
114
264
|
FsUtil,
|
|
115
265
|
ApiDefOptions,
|
|
@@ -118,5 +268,31 @@ export type {
|
|
|
118
268
|
Model,
|
|
119
269
|
Build,
|
|
120
270
|
ApiModel,
|
|
271
|
+
ApiDefContext,
|
|
272
|
+
Warner,
|
|
273
|
+
Metrics,
|
|
121
274
|
}
|
|
122
275
|
|
|
276
|
+
export type {
|
|
277
|
+
CmpDesc,
|
|
278
|
+
BasicMethodDesc,
|
|
279
|
+
MethodDesc,
|
|
280
|
+
MethodEntityDesc,
|
|
281
|
+
EntityDesc,
|
|
282
|
+
EntityPathDesc,
|
|
283
|
+
PathDesc,
|
|
284
|
+
OpDesc,
|
|
285
|
+
} from './desc'
|
|
286
|
+
|
|
287
|
+
export type {
|
|
288
|
+
OpName,
|
|
289
|
+
ModelEntityRelations,
|
|
290
|
+
ModelOpMap,
|
|
291
|
+
ModelFieldOp,
|
|
292
|
+
ModelField,
|
|
293
|
+
ModelArg,
|
|
294
|
+
ModelAlt,
|
|
295
|
+
ModelOp,
|
|
296
|
+
ModelEntity,
|
|
297
|
+
} from './model'
|
|
298
|
+
|