@voxgig/create-sdkgen 0.1.2 → 0.2.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/bin/create-sdkgen +2 -0
- package/bin/create-sdkgen~ +261 -0
- package/dist/create-sdkgen.js +2 -1
- package/dist/create-sdkgen.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/project/standard/.sdk/model/.model-config/model-config.jsonic +3 -1
- package/project/standard/.sdk/model/sdk.fragment.jsonic +1 -0
- package/project/standard/.sdk/package.json +12 -9
- package/project/standard/.sdk/src/Root.ts +5 -0
- package/project/standard/.sdk/src/Top.ts +48 -0
- package/src/create-sdkgen.ts +3 -1
- package/project/standard/.sdk/model/.model-config/model-config.jsonic~ +0 -16
package/bin/create-sdkgen
CHANGED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const Path = require('node:path')
|
|
4
|
+
const { statSync } = require('node:fs')
|
|
5
|
+
const { parseArgs } = require('node:util')
|
|
6
|
+
|
|
7
|
+
const { Gubu, Fault, One } = require('gubu')
|
|
8
|
+
|
|
9
|
+
const Pkg = require('../package.json')
|
|
10
|
+
|
|
11
|
+
const { CreateSdkGen } = require('../dist/create-sdkgen.js')
|
|
12
|
+
|
|
13
|
+
const rootpath = require.resolve('../dist/standard/Root')
|
|
14
|
+
|
|
15
|
+
let KONSOLE = global['con'+'sole']
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
run()
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
async function run() {
|
|
22
|
+
try {
|
|
23
|
+
let options = resolveOptions()
|
|
24
|
+
|
|
25
|
+
if(options.debug) {
|
|
26
|
+
DEBUG = true
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if(options.version) {
|
|
30
|
+
version()
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if(options.help) {
|
|
34
|
+
help()
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if(options.version || options.help) {
|
|
38
|
+
exit()
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
options = validateOptions(options)
|
|
42
|
+
|
|
43
|
+
generate(options)
|
|
44
|
+
}
|
|
45
|
+
catch(err) {
|
|
46
|
+
handleError(err)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
function exit(err) {
|
|
52
|
+
let code = 0
|
|
53
|
+
if(err) {
|
|
54
|
+
code = 1
|
|
55
|
+
}
|
|
56
|
+
process.exit(code)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
function generate(options) {
|
|
61
|
+
const createSdkGen = CreateSdkGen({
|
|
62
|
+
debug: options.debug
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
const spec = {
|
|
67
|
+
root: 'Root',
|
|
68
|
+
|
|
69
|
+
name: options.name,
|
|
70
|
+
def: options.def,
|
|
71
|
+
dryrun: options.dryrun,
|
|
72
|
+
project: options.project,
|
|
73
|
+
install: options.install,
|
|
74
|
+
target: options.target,
|
|
75
|
+
feature: options.feature,
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
createSdkGen.generate(spec)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
function resolveOptions() {
|
|
84
|
+
|
|
85
|
+
let args
|
|
86
|
+
|
|
87
|
+
try {
|
|
88
|
+
args = parseArgs({
|
|
89
|
+
allowPositionals: true,
|
|
90
|
+
allowNegative: true,
|
|
91
|
+
options: {
|
|
92
|
+
def: {
|
|
93
|
+
type: 'string',
|
|
94
|
+
short: 'd',
|
|
95
|
+
default: ''
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
project: {
|
|
99
|
+
type: 'string',
|
|
100
|
+
short: 'p',
|
|
101
|
+
default: 'standard'
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
dryrun: {
|
|
105
|
+
type: 'boolean',
|
|
106
|
+
short: 'y',
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
install: {
|
|
110
|
+
type: 'boolean',
|
|
111
|
+
short: 'y',
|
|
112
|
+
default: true,
|
|
113
|
+
},
|
|
114
|
+
|
|
115
|
+
target: {
|
|
116
|
+
type: 'string',
|
|
117
|
+
short: 't',
|
|
118
|
+
multiple: true
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
feature: {
|
|
122
|
+
type: 'string',
|
|
123
|
+
short: 'f',
|
|
124
|
+
multiple: true
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
debug: {
|
|
128
|
+
type: 'string',
|
|
129
|
+
short: 'g',
|
|
130
|
+
default: 'info'
|
|
131
|
+
},
|
|
132
|
+
|
|
133
|
+
help: {
|
|
134
|
+
type: 'boolean',
|
|
135
|
+
short: 'h',
|
|
136
|
+
},
|
|
137
|
+
|
|
138
|
+
version: {
|
|
139
|
+
type: 'boolean',
|
|
140
|
+
short: 'v',
|
|
141
|
+
},
|
|
142
|
+
|
|
143
|
+
}
|
|
144
|
+
})
|
|
145
|
+
}
|
|
146
|
+
catch(err) {
|
|
147
|
+
if('ERR_PARSE_ARGS_UNKNOWN_OPTION' === err.code) {
|
|
148
|
+
handleError(err.message.replace(/\. .+$/,'.'))
|
|
149
|
+
}
|
|
150
|
+
throw err
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Set fake name if -v or -h used.
|
|
154
|
+
let name = args.positionals[0]
|
|
155
|
+
name = null == name ? '' : name
|
|
156
|
+
name = '' === name && (args.values.help || args.values.version) ? '__none__' : name
|
|
157
|
+
|
|
158
|
+
targets = args.values.target || []
|
|
159
|
+
if( 1 < args.positionals.length ) {
|
|
160
|
+
targets.push(args.positionals.slice(1))
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
features = args.values.feature || []
|
|
164
|
+
|
|
165
|
+
const options = {
|
|
166
|
+
name,
|
|
167
|
+
def: args.values.def,
|
|
168
|
+
project: args.values.project,
|
|
169
|
+
dryrun: !!args.values.dryrun,
|
|
170
|
+
install: !!args.values.install,
|
|
171
|
+
target: targets,
|
|
172
|
+
feature: features,
|
|
173
|
+
debug: args.values.debug,
|
|
174
|
+
help: !!args.values.help,
|
|
175
|
+
version: !!args.values.version,
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// console.log('ARGS', args, options)
|
|
179
|
+
|
|
180
|
+
return options
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
function validateOptions(rawOptions) {
|
|
185
|
+
const optShape = Gubu({
|
|
186
|
+
name: Fault('The first argument must be the project name.', String),
|
|
187
|
+
def: '',
|
|
188
|
+
project: String,
|
|
189
|
+
dryrun: Boolean,
|
|
190
|
+
install: Boolean,
|
|
191
|
+
target: [String],
|
|
192
|
+
feature: [String],
|
|
193
|
+
debug: String,
|
|
194
|
+
help: Boolean,
|
|
195
|
+
version: Boolean,
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
const err = []
|
|
199
|
+
const options = optShape(rawOptions,{err})
|
|
200
|
+
|
|
201
|
+
if(err[0]) {
|
|
202
|
+
handleError(err[0].text)
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return options
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
function handleError(err) {
|
|
210
|
+
KONSOLE.log('Voxgig Create SDK Error: '+err)
|
|
211
|
+
exit(err)
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
function version() {
|
|
216
|
+
KONSOLE.log(Pkg.version)
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
function help() {
|
|
221
|
+
let s = `
|
|
222
|
+
Create a Voxgig SDK Generator project.
|
|
223
|
+
|
|
224
|
+
Usage: npm create @voxgig/sdkgen@latest <name> <args>
|
|
225
|
+
|
|
226
|
+
<name> is the name of the SDK project. This is also used to
|
|
227
|
+
create a project folder. If run against an existing folder
|
|
228
|
+
generated files will be overwritten.
|
|
229
|
+
|
|
230
|
+
<args> are the command arguments:
|
|
231
|
+
|
|
232
|
+
--def Path to the OpenAPI definition file (optional).
|
|
233
|
+
-d
|
|
234
|
+
|
|
235
|
+
--project Project template (folder or package reference). Default: standard.
|
|
236
|
+
-p
|
|
237
|
+
|
|
238
|
+
--dryrun Perform a dry run, where no files are modified.
|
|
239
|
+
-y
|
|
240
|
+
|
|
241
|
+
--debug Set log level (default: info): trace, error, debug, info, warn, fatal.
|
|
242
|
+
-g
|
|
243
|
+
|
|
244
|
+
--help Print this help message.
|
|
245
|
+
-h
|
|
246
|
+
|
|
247
|
+
--version Print version number.
|
|
248
|
+
-v
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
Examples:
|
|
252
|
+
|
|
253
|
+
# Basic usage
|
|
254
|
+
> npm create @voxgig/sdkgen@latest foo
|
|
255
|
+
# Creates the SDK Project in the folder ./foo
|
|
256
|
+
|
|
257
|
+
See also: https://voxgig.com/sdkgen
|
|
258
|
+
`
|
|
259
|
+
|
|
260
|
+
KONSOLE.log(s)
|
|
261
|
+
}
|
package/dist/create-sdkgen.js
CHANGED
|
@@ -85,8 +85,9 @@ function CreateSdkGen(opts) {
|
|
|
85
85
|
names(model, model.name);
|
|
86
86
|
names(model, model.name, 'project_name');
|
|
87
87
|
log.debug({ point: 'generate-model', model, note: JSON.stringify(model, null, 2) });
|
|
88
|
+
// console.log('GENERATE', model, jopts)
|
|
88
89
|
const jres = await jostraca.generate(jopts, () => Root({ model, spec }));
|
|
89
|
-
//
|
|
90
|
+
// console.log('JRES', jres)
|
|
90
91
|
(0, util_1.showChanges)(jopts.log, 'generate-result', jres, node_path_1.default.dirname(process.cwd()));
|
|
91
92
|
if (!spec.dryrun && spec.install) {
|
|
92
93
|
await installNpm(spec, jopts, model);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-sdkgen.js","sourceRoot":"","sources":["../src/create-sdkgen.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"create-sdkgen.js","sourceRoot":"","sources":["../src/create-sdkgen.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/create-sdkgen.ts","../src/project/standard/modelsdk.ts","../src/project/standard/root.ts"],"version":"5.
|
|
1
|
+
{"root":["../src/create-sdkgen.ts","../src/project/standard/modelsdk.ts","../src/project/standard/root.ts"],"version":"5.9.2"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voxgig/create-sdkgen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"main": "dist/create-sdkgen.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/create-sdkgen.d.ts",
|
|
@@ -44,14 +44,14 @@
|
|
|
44
44
|
"@hapi/code": "^9.0.3",
|
|
45
45
|
"@types/node": "24.1.0",
|
|
46
46
|
"esbuild": "^0.25.8",
|
|
47
|
-
"memfs": "^4.
|
|
48
|
-
"typescript": "^5.
|
|
47
|
+
"memfs": "^4.25.1",
|
|
48
|
+
"typescript": "^5.9.2"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"@voxgig/util": "^0.2.0",
|
|
52
52
|
"aontu": "^0.28.0",
|
|
53
53
|
"chokidar": "^4.0.3",
|
|
54
54
|
"gubu": "^9.0.0",
|
|
55
|
-
"jostraca": "^0.
|
|
55
|
+
"jostraca": "^0.24.0"
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
@'@voxgig/model/model/.model-config/model-config.jsonic'
|
|
4
4
|
|
|
5
|
-
sys: model:
|
|
5
|
+
sys: model: action: {
|
|
6
6
|
apidef: load: 'build/apidef.js'
|
|
7
7
|
sdkgen: load: 'build/sdkgen.js'
|
|
8
8
|
// docgen: load: 'build/docgen.js'
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
sys: model: order: action: 'apidef,sdkgen'
|
|
12
|
+
|
|
11
13
|
sys: model: watch: {
|
|
12
14
|
'src': {} # To catch fragment updates.
|
|
13
15
|
'dist': {}
|
|
@@ -1,23 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "build-$$const.name$$-sdk",
|
|
3
3
|
"version": "0.0.1",
|
|
4
|
-
"description": "",
|
|
5
|
-
"main": "index.js",
|
|
4
|
+
"description": "$$const.Name$$ SDK Project",
|
|
6
5
|
"scripts": {
|
|
7
|
-
"
|
|
8
|
-
"
|
|
6
|
+
"generate": "voxgig-model model/sdk.jsonic",
|
|
7
|
+
"watch-generate": "voxgig-model -w model/sdk.jsonic",
|
|
8
|
+
"dry-generate": "voxgig-model -y model/sdk.jsonic",
|
|
9
|
+
"watch-dry-generate": "voxgig-model -w -y model/sdk.jsonic",
|
|
9
10
|
"test-model": "voxgig-model test/test.jsonic",
|
|
10
|
-
"test-model
|
|
11
|
+
"watch-test-model": "voxgig-model -w test/test.jsonic",
|
|
11
12
|
"watch": "tsc --build src -w",
|
|
12
13
|
"build": "tsc --build src",
|
|
13
14
|
"test": "echo no-test",
|
|
14
15
|
"clean": "rm -rf node_modules yarn.lock package-lock.json",
|
|
15
16
|
"reset": "npm run clean && npm i && npm run build && npm test",
|
|
16
|
-
"add-target": "voxgig-sdkgen target add
|
|
17
|
-
"add-
|
|
17
|
+
"add-target": "voxgig-sdkgen target add",
|
|
18
|
+
"dry-add-target": "voxgig-sdkgen -y target add",
|
|
19
|
+
"add-feature": "voxgig-sdkgen feature add",
|
|
20
|
+
"dry-add-feature": "voxgig-sdkgen -y feature add"
|
|
18
21
|
},
|
|
19
|
-
"author": "",
|
|
20
|
-
"license": "
|
|
22
|
+
"author": "$$const.Name$$",
|
|
23
|
+
"license": "$$const.License$$",
|
|
21
24
|
"devDependencies": {
|
|
22
25
|
"@types/node": ">=24",
|
|
23
26
|
"typescript": ">=5",
|
|
@@ -26,6 +26,8 @@ const {
|
|
|
26
26
|
} = PointUtil
|
|
27
27
|
|
|
28
28
|
|
|
29
|
+
import { Top } from './Top'
|
|
30
|
+
|
|
29
31
|
|
|
30
32
|
const Root = cmp(function Root(props: any) {
|
|
31
33
|
const { model, ctx$ } = props
|
|
@@ -62,6 +64,9 @@ const Root = cmp(function Root(props: any) {
|
|
|
62
64
|
|
|
63
65
|
Project({}, () => {
|
|
64
66
|
|
|
67
|
+
// TODO: jostraca should accept no props
|
|
68
|
+
Top({})
|
|
69
|
+
|
|
65
70
|
each(target, (target: any) => {
|
|
66
71
|
names(target, target.name)
|
|
67
72
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
cmp, each, Line, File, Content
|
|
5
|
+
} from '@voxgig/sdkgen'
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
const Top = cmp(function Top(props: any) {
|
|
9
|
+
const { ctx$ } = props
|
|
10
|
+
const { model } = ctx$
|
|
11
|
+
|
|
12
|
+
File({ name: 'README.md' }, () => {
|
|
13
|
+
Content(`# ${model.Name} SDKs
|
|
14
|
+
|
|
15
|
+
## API Entities
|
|
16
|
+
|
|
17
|
+
\`\`\`mermaid
|
|
18
|
+
flowchart LR
|
|
19
|
+
`)
|
|
20
|
+
|
|
21
|
+
const entityMap = model.main.api.entity
|
|
22
|
+
|
|
23
|
+
each(entityMap, (entity: any) => {
|
|
24
|
+
const ancestors = entity.ancestors || []
|
|
25
|
+
if (0 < ancestors.length) {
|
|
26
|
+
const pname = ancestors[ancestors.length - 1]
|
|
27
|
+
const parent = entityMap[pname]
|
|
28
|
+
if (null != parent) {
|
|
29
|
+
Line(` ${parent.Name} --> ${entity.Name}`)
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
Content(`
|
|
35
|
+
\`\`\`
|
|
36
|
+
|
|
37
|
+
`)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
export {
|
|
46
|
+
Top
|
|
47
|
+
}
|
|
48
|
+
|
package/src/create-sdkgen.ts
CHANGED
|
@@ -89,9 +89,11 @@ function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
|
89
89
|
|
|
90
90
|
log.debug({ point: 'generate-model', model, note: JSON.stringify(model, null, 2) })
|
|
91
91
|
|
|
92
|
+
// console.log('GENERATE', model, jopts)
|
|
93
|
+
|
|
92
94
|
const jres = await jostraca.generate(jopts, () => Root({ model, spec }))
|
|
93
95
|
|
|
94
|
-
//
|
|
96
|
+
// console.log('JRES', jres)
|
|
95
97
|
|
|
96
98
|
showChanges(jopts.log, 'generate-result', jres, Path.dirname(process.cwd()))
|
|
97
99
|
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
@'@voxgig/model/model/.model-config/model-config.jsonic'
|
|
4
|
-
|
|
5
|
-
sys: model: builders: {
|
|
6
|
-
apidef: load: 'build/apidef.js'
|
|
7
|
-
sdkgen: load: 'build/sdkgen.js'
|
|
8
|
-
// docgen: load: 'build/docgen.js'
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
sys: model: watch: {
|
|
12
|
-
'dist': {}
|
|
13
|
-
'tm': {}
|
|
14
|
-
'def': {}
|
|
15
|
-
# 'doc/static/src': {}
|
|
16
|
-
}
|