@voxgig/create-sdkgen 0.3.1 → 0.5.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 +36 -20
- package/dist/create-sdkgen.d.ts +2 -0
- package/dist/create-sdkgen.js +51 -5
- package/dist/create-sdkgen.js.map +1 -1
- package/dist/project/standard/CreateRoot.d.ts +2 -0
- package/dist/project/standard/CreateRoot.js +50 -0
- package/dist/project/standard/CreateRoot.js.map +1 -0
- package/dist/project/standard/ModelSdk.js +6 -1
- package/dist/project/standard/ModelSdk.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +10 -12
- package/project/standard/.sdk/model/api/api-info.jsonic +5 -0
- package/project/standard/.sdk/model/config.jsonic +3 -1
- package/project/standard/.sdk/model/{api/api-entity-index.jsonic → entity/entity-index.jsonic} +1 -0
- package/project/standard/.sdk/model/guide/guide.jsonic +8 -0
- package/project/standard/.sdk/model/sdk.fragment.jsonic +6 -10
- package/project/standard/.sdk/package.json +5 -7
- package/project/standard/.sdk/src/BuildSDK.ts +113 -0
- package/project/standard/.sdk/src/Root.ts +19 -7
- package/project/standard/.sdk/src/Top.ts +6 -2
- package/project/standard/.sdk/test/.model-config/model-config.json +5 -1
- package/project/standard/.sdk/test/primary/{outward.jsonic → clean.jsonic} +0 -1
- package/project/standard/.sdk/test/primary/done.jsonic +0 -1
- package/project/standard/.sdk/test/primary/{inward.jsonic → featureAdd.jsonic} +0 -1
- package/project/standard/.sdk/test/primary/featureHook.jsonic +2 -0
- package/project/standard/.sdk/test/primary/featureInit.jsonic +2 -0
- package/project/standard/.sdk/test/primary/fetcher.jsonic +2 -0
- package/project/standard/.sdk/test/primary/makeContext.jsonic +4 -0
- package/project/standard/.sdk/test/primary/makeError.jsonic +16 -0
- package/project/standard/.sdk/test/primary/makeFetchDef.jsonic +2 -0
- package/project/standard/.sdk/test/primary/{options.jsonic → makeOptions.jsonic} +5 -6
- package/project/standard/.sdk/test/primary/{request.jsonic → makeRequest.jsonic} +7 -13
- package/project/standard/.sdk/test/primary/makeResponse.jsonic +22 -0
- package/project/standard/.sdk/test/primary/makeResult.jsonic +2 -0
- package/project/standard/.sdk/test/primary/{spec.jsonic → makeSpec.jsonic} +9 -5
- package/project/standard/.sdk/test/primary/makeTarget.jsonic +2 -0
- package/project/standard/.sdk/test/primary/makeUrl.jsonic +21 -0
- package/project/standard/.sdk/test/primary/operator.jsonic +10 -53
- package/project/standard/.sdk/test/primary/{findparam.jsonic → param.jsonic} +6 -7
- package/project/standard/.sdk/test/primary/prepareAuth.jsonic +13 -0
- package/project/standard/.sdk/test/primary/prepareBody.jsonic +18 -0
- package/project/standard/.sdk/test/primary/prepareHeaders.jsonic +4 -0
- package/project/standard/.sdk/test/primary/prepareMethod.jsonic +10 -0
- package/project/standard/.sdk/test/primary/prepareParams.jsonic +9 -0
- package/project/standard/.sdk/test/primary/preparePath.jsonic +2 -0
- package/project/standard/.sdk/test/primary/prepareQuery.jsonic +8 -0
- package/project/standard/.sdk/test/primary/primary-test-index.jsonic +30 -0
- package/project/standard/.sdk/test/primary/resultBasic.jsonic +14 -0
- package/project/standard/.sdk/test/primary/resultBody.jsonic +4 -0
- package/project/standard/.sdk/test/primary/resultHeaders.jsonic +7 -0
- package/project/standard/.sdk/test/primary/transformRequest.jsonic +8 -0
- package/project/standard/.sdk/test/primary/transformResponse.jsonic +10 -0
- package/project/standard/.sdk/test/struct/merge.jsonic +102 -4
- package/project/standard/.sdk/test/struct/minor.jsonic +106 -38
- package/project/standard/.sdk/test/struct/select.jsonic +86 -5
- package/project/standard/.sdk/test/struct/test.json +16635 -0
- package/project/standard/.sdk/test/struct/test.jsonic +25 -0
- package/project/standard/.sdk/test/struct/transform.jsonic +100 -1
- package/project/standard/.sdk/test/struct/validate.jsonic +82 -45
- package/project/standard/.sdk/test/struct/walk.jsonic +57 -6
- package/project/standard/.sdk/test/test.json +5952 -3326
- package/project/standard/.sdk/test/test.jsonic +2 -43
- package/src/create-sdkgen.ts +74 -7
- package/src/project/standard/{Root.ts → CreateRoot.ts} +11 -6
- package/src/project/standard/ModelSdk.ts +6 -1
- package/dist/project/standard/Root.d.ts +0 -2
- package/dist/project/standard/Root.js +0 -79
- package/dist/project/standard/Root.js.map +0 -1
- package/dist/standard/ModelSdk.d.ts +0 -2
- package/dist/standard/ModelSdk.js +0 -19
- package/dist/standard/ModelSdk.js.map +0 -1
- package/dist/standard/Root.d.ts +0 -2
- package/dist/standard/Root.js +0 -77
- package/dist/standard/Root.js.map +0 -1
- package/dist/utility.d.ts +0 -2
- package/dist/utility.js +0 -5
- package/dist/utility.js.map +0 -1
- package/project/standard/.sdk/model/api/api-def.jsonic +0 -5
- package/project/standard/.sdk/model/guide.jsonic +0 -5
- package/project/standard/.sdk/model/target/target-index.jsonic~ +0 -4
- package/project/standard/.sdk/test/primary/auth.jsonic +0 -20
- package/project/standard/.sdk/test/primary/body.jsonic +0 -27
- package/project/standard/.sdk/test/primary/contextify.jsonic +0 -5
- package/project/standard/.sdk/test/primary/error.jsonic +0 -19
- package/project/standard/.sdk/test/primary/fullurl.jsonic +0 -50
- package/project/standard/.sdk/test/primary/headers.jsonic +0 -12
- package/project/standard/.sdk/test/primary/method.jsonic +0 -11
- package/project/standard/.sdk/test/primary/params.jsonic +0 -10
- package/project/standard/.sdk/test/primary/query.jsonic +0 -9
- package/project/standard/.sdk/test/primary/reqform.jsonic +0 -9
- package/project/standard/.sdk/test/primary/resbasic.jsonic +0 -15
- package/project/standard/.sdk/test/primary/resbody.jsonic +0 -5
- package/project/standard/.sdk/test/primary/resform.jsonic +0 -11
- package/project/standard/.sdk/test/primary/resheaders.jsonic +0 -9
- package/project/standard/.sdk/test/primary/response.jsonic +0 -20
package/bin/create-sdkgen
CHANGED
|
@@ -4,17 +4,16 @@ const Path = require('node:path')
|
|
|
4
4
|
const { statSync } = require('node:fs')
|
|
5
5
|
const { parseArgs } = require('node:util')
|
|
6
6
|
|
|
7
|
-
const {
|
|
7
|
+
const { Shape, Fault, One } = require('shape')
|
|
8
8
|
|
|
9
9
|
const Pkg = require('../package.json')
|
|
10
10
|
|
|
11
11
|
const { CreateSdkGen } = require('../dist/create-sdkgen.js')
|
|
12
12
|
|
|
13
|
-
const rootpath = require.resolve('../dist/standard/
|
|
13
|
+
// const rootpath = require.resolve('../dist/standard/CreateRoot')
|
|
14
14
|
|
|
15
15
|
let KONSOLE = global['con'+'sole']
|
|
16
16
|
|
|
17
|
-
|
|
18
17
|
run()
|
|
19
18
|
|
|
20
19
|
|
|
@@ -22,10 +21,6 @@ async function run() {
|
|
|
22
21
|
try {
|
|
23
22
|
let options = resolveOptions()
|
|
24
23
|
|
|
25
|
-
if(options.debug) {
|
|
26
|
-
DEBUG = true
|
|
27
|
-
}
|
|
28
|
-
|
|
29
24
|
if(options.version) {
|
|
30
25
|
version()
|
|
31
26
|
}
|
|
@@ -64,12 +59,13 @@ function generate(options) {
|
|
|
64
59
|
|
|
65
60
|
|
|
66
61
|
const spec = {
|
|
67
|
-
root: '
|
|
62
|
+
root: 'CreateRoot',
|
|
68
63
|
|
|
69
64
|
name: options.name,
|
|
70
65
|
def: options.def,
|
|
71
66
|
dryrun: options.dryrun,
|
|
72
67
|
project: options.project,
|
|
68
|
+
folder: options.folder,
|
|
73
69
|
install: options.install,
|
|
74
70
|
target: options.target,
|
|
75
71
|
feature: options.feature,
|
|
@@ -103,14 +99,19 @@ function resolveOptions() {
|
|
|
103
99
|
default: 'standard'
|
|
104
100
|
},
|
|
105
101
|
|
|
102
|
+
folder: {
|
|
103
|
+
type: 'string',
|
|
104
|
+
short: 'o',
|
|
105
|
+
default: ''
|
|
106
|
+
},
|
|
107
|
+
|
|
106
108
|
dryrun: {
|
|
107
109
|
type: 'boolean',
|
|
108
|
-
|
|
110
|
+
default: false,
|
|
109
111
|
},
|
|
110
112
|
|
|
111
113
|
install: {
|
|
112
114
|
type: 'boolean',
|
|
113
|
-
short: 'y',
|
|
114
115
|
default: true,
|
|
115
116
|
},
|
|
116
117
|
|
|
@@ -128,7 +129,6 @@ function resolveOptions() {
|
|
|
128
129
|
|
|
129
130
|
debug: {
|
|
130
131
|
type: 'string',
|
|
131
|
-
short: 'g',
|
|
132
132
|
default: 'info'
|
|
133
133
|
},
|
|
134
134
|
|
|
@@ -157,17 +157,18 @@ function resolveOptions() {
|
|
|
157
157
|
name = null == name ? '' : name
|
|
158
158
|
name = '' === name && (args.values.help || args.values.version) ? '__none__' : name
|
|
159
159
|
|
|
160
|
-
targets = args.values.target || []
|
|
160
|
+
let targets = args.values.target || []
|
|
161
161
|
if( 1 < args.positionals.length ) {
|
|
162
162
|
targets.push(args.positionals.slice(1))
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
features = args.values.feature || []
|
|
165
|
+
let features = args.values.feature || []
|
|
166
166
|
|
|
167
167
|
const options = {
|
|
168
168
|
name,
|
|
169
169
|
def: args.values.def,
|
|
170
170
|
project: args.values.project,
|
|
171
|
+
folder: args.values.folder,
|
|
171
172
|
dryrun: !!args.values.dryrun,
|
|
172
173
|
install: !!args.values.install,
|
|
173
174
|
target: targets,
|
|
@@ -178,16 +179,21 @@ function resolveOptions() {
|
|
|
178
179
|
}
|
|
179
180
|
|
|
180
181
|
// console.log('ARGS', args, options)
|
|
182
|
+
|
|
183
|
+
if(null == options.folder || '' == options.folder) {
|
|
184
|
+
options.folder = options.name + '-sdk'
|
|
185
|
+
}
|
|
181
186
|
|
|
182
187
|
return options
|
|
183
188
|
}
|
|
184
189
|
|
|
185
190
|
|
|
186
191
|
function validateOptions(rawOptions) {
|
|
187
|
-
const optShape =
|
|
192
|
+
const optShape = Shape({
|
|
188
193
|
name: Fault('The first argument must be the project name.', String),
|
|
189
194
|
def: '',
|
|
190
195
|
project: String,
|
|
196
|
+
folder: String,
|
|
191
197
|
dryrun: Boolean,
|
|
192
198
|
install: Boolean,
|
|
193
199
|
target: [String],
|
|
@@ -209,6 +215,9 @@ function validateOptions(rawOptions) {
|
|
|
209
215
|
|
|
210
216
|
|
|
211
217
|
function handleError(err) {
|
|
218
|
+
console.log(err)
|
|
219
|
+
console.trace()
|
|
220
|
+
|
|
212
221
|
KONSOLE.log('Voxgig Create SDK Error: '+err)
|
|
213
222
|
exit(err)
|
|
214
223
|
}
|
|
@@ -232,16 +241,23 @@ Usage: npm create @voxgig/sdkgen@latest <name> <args>
|
|
|
232
241
|
<args> are the command arguments:
|
|
233
242
|
|
|
234
243
|
--def Path to the OpenAPI definition file (optional).
|
|
235
|
-
-d
|
|
244
|
+
-d
|
|
236
245
|
|
|
237
246
|
--project Project template (folder or package reference). Default: standard.
|
|
238
|
-
-p
|
|
247
|
+
-p
|
|
248
|
+
|
|
249
|
+
--folder Target output folder. Default: ./<name>-sdk.
|
|
250
|
+
-o
|
|
251
|
+
|
|
252
|
+
--feature Features to add. Can be specified multiple times.
|
|
253
|
+
-f
|
|
254
|
+
|
|
255
|
+
--install Run installation scripts. Default: install.
|
|
256
|
+
--no-install
|
|
239
257
|
|
|
240
|
-
--dryrun Perform a dry run, where no files are modified.
|
|
241
|
-
-y
|
|
258
|
+
--dryrun Perform a dry run, where no files are modified. Default: no-dryrun.
|
|
242
259
|
|
|
243
260
|
--debug Set log level (default: info): trace, error, debug, info, warn, fatal.
|
|
244
|
-
-g
|
|
245
261
|
|
|
246
262
|
--help Print this help message.
|
|
247
263
|
-h
|
|
@@ -254,7 +270,7 @@ Examples:
|
|
|
254
270
|
|
|
255
271
|
# Basic usage
|
|
256
272
|
> npm create @voxgig/sdkgen@latest foo
|
|
257
|
-
# Creates the SDK Project in the folder ./foo
|
|
273
|
+
# Creates the SDK Project in the folder ./foo-sdk
|
|
258
274
|
|
|
259
275
|
See also: https://voxgig.com/sdkgen
|
|
260
276
|
`
|
package/dist/create-sdkgen.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ type FullCreateSdkGenOptions = {
|
|
|
6
6
|
};
|
|
7
7
|
type CreateSdkGenOptions = Partial<FullCreateSdkGenOptions>;
|
|
8
8
|
type GenerateSpec = {
|
|
9
|
+
sdk_folder: string;
|
|
9
10
|
name: string;
|
|
10
11
|
def: string;
|
|
11
12
|
root: string;
|
|
@@ -15,6 +16,7 @@ type GenerateSpec = {
|
|
|
15
16
|
target?: string[];
|
|
16
17
|
feature?: string[];
|
|
17
18
|
install?: boolean;
|
|
19
|
+
folder?: string;
|
|
18
20
|
};
|
|
19
21
|
declare function CreateSdkGen(opts: FullCreateSdkGenOptions): {
|
|
20
22
|
generate: (spec: GenerateSpec) => Promise<void>;
|
package/dist/create-sdkgen.js
CHANGED
|
@@ -39,12 +39,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
39
39
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
40
|
exports.CreateSdkGen = CreateSdkGen;
|
|
41
41
|
const Fs = __importStar(require("node:fs"));
|
|
42
|
+
const Os = __importStar(require("node:os"));
|
|
42
43
|
const node_path_1 = __importDefault(require("node:path"));
|
|
43
44
|
const child_process_1 = require("child_process");
|
|
44
45
|
const JostracaModule = __importStar(require("jostraca"));
|
|
45
46
|
const util_1 = require("@voxgig/util");
|
|
46
47
|
const package_json_1 = __importDefault(require("../package.json"));
|
|
47
48
|
const { names, Jostraca } = JostracaModule;
|
|
49
|
+
const SDK_FOLDER = '.sdk';
|
|
48
50
|
// TODO: CreateSdkGen opts and generate opts should be mostly the same, and
|
|
49
51
|
// generate should override
|
|
50
52
|
function CreateSdkGen(opts) {
|
|
@@ -65,10 +67,16 @@ function CreateSdkGen(opts) {
|
|
|
65
67
|
const projectFolder = resolveProjectFolder(spec);
|
|
66
68
|
const rootPath = node_path_1.default.join(projectFolder, spec.root);
|
|
67
69
|
const rootModule = require(rootPath);
|
|
68
|
-
const
|
|
70
|
+
const CreateRoot = rootModule.CreateRoot;
|
|
69
71
|
const name = spec.name;
|
|
70
72
|
spec.def = (null == spec.def || '' === spec.def) ? name + '-openapi3.yml' : spec.def;
|
|
71
|
-
|
|
73
|
+
spec.sdk_folder = SDK_FOLDER;
|
|
74
|
+
const cwd = process.cwd();
|
|
75
|
+
const folder = (null == spec.folder || '' == spec.folder) ?
|
|
76
|
+
node_path_1.default.join(cwd, name + (name.endsWith('-sdk') ? '' : '-sdk')) :
|
|
77
|
+
node_path_1.default.isAbsolute(spec.folder) ? spec.folder :
|
|
78
|
+
node_path_1.default.join(cwd, spec.folder);
|
|
79
|
+
logCreate(folder);
|
|
72
80
|
const jopts = {
|
|
73
81
|
fs: () => fs,
|
|
74
82
|
debug,
|
|
@@ -98,8 +106,8 @@ function CreateSdkGen(opts) {
|
|
|
98
106
|
jostraca: jopts,
|
|
99
107
|
note: JSON.stringify(jopts, null, 2)
|
|
100
108
|
});
|
|
101
|
-
const jres = await jostraca.generate(jopts, () =>
|
|
102
|
-
(0, util_1.showChanges)(jopts.log, 'generate-result', jres,
|
|
109
|
+
const jres = await jostraca.generate(jopts, () => CreateRoot({ model, spec }));
|
|
110
|
+
(0, util_1.showChanges)(jopts.log, 'generate-result', jres, process.cwd());
|
|
103
111
|
if (spec.dryrun || !spec.install) {
|
|
104
112
|
log.info({ point: 'generate-install', note: 'skipping npm install' });
|
|
105
113
|
}
|
|
@@ -120,6 +128,44 @@ function CreateSdkGen(opts) {
|
|
|
120
128
|
}
|
|
121
129
|
return projectFolder;
|
|
122
130
|
}
|
|
131
|
+
function escapeShellArg(arg) {
|
|
132
|
+
// If arg contains no special characters, return as-is
|
|
133
|
+
if (/^[~a-zA-Z0-9_\-\.\/]+$/.test(arg)) {
|
|
134
|
+
return arg;
|
|
135
|
+
}
|
|
136
|
+
// Otherwise, wrap in single quotes and escape any single quotes
|
|
137
|
+
return "'" + arg.replace(/'/g, "'\\''") + "'";
|
|
138
|
+
}
|
|
139
|
+
function logCreate(folder) {
|
|
140
|
+
try {
|
|
141
|
+
const logFolder = node_path_1.default.join(folder, SDK_FOLDER, 'log');
|
|
142
|
+
if (!fs.existsSync(logFolder)) {
|
|
143
|
+
fs.mkdirSync(logFolder, { recursive: true });
|
|
144
|
+
}
|
|
145
|
+
const now = new Date();
|
|
146
|
+
const utcTimestamp = '[' + now.toISOString() + ']';
|
|
147
|
+
const timezoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;
|
|
148
|
+
const localISOString = now.getFullYear() + '-' +
|
|
149
|
+
String(now.getMonth() + 1).padStart(2, '0') + '-' +
|
|
150
|
+
String(now.getDate()).padStart(2, '0') + 'T' +
|
|
151
|
+
String(now.getHours()).padStart(2, '0') + ':' +
|
|
152
|
+
String(now.getMinutes()).padStart(2, '0') + ':' +
|
|
153
|
+
String(now.getSeconds()).padStart(2, '0') + '.' +
|
|
154
|
+
String(now.getMilliseconds()).padStart(3, '0');
|
|
155
|
+
const localTimestamp = timezoneName + '=' + localISOString;
|
|
156
|
+
const homeDir = Os.homedir();
|
|
157
|
+
const command = process.argv
|
|
158
|
+
.map(arg => arg.replace(homeDir, '~'))
|
|
159
|
+
.map(escapeShellArg)
|
|
160
|
+
.join(' ');
|
|
161
|
+
const logLine = `${utcTimestamp} ${localTimestamp} CREATE ${command}\n`;
|
|
162
|
+
const logFile = node_path_1.default.join(logFolder, 'create.log');
|
|
163
|
+
fs.appendFileSync(logFile, logLine, 'utf8');
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
log.debug({ point: 'logCreate-error', err });
|
|
167
|
+
}
|
|
168
|
+
}
|
|
123
169
|
return {
|
|
124
170
|
generate,
|
|
125
171
|
};
|
|
@@ -128,7 +174,7 @@ async function installNpm(spec, opts, model) {
|
|
|
128
174
|
const folder = opts.folder;
|
|
129
175
|
const log = opts.log;
|
|
130
176
|
return new Promise(async (resolve, reject) => {
|
|
131
|
-
const cwd = node_path_1.default.resolve(folder,
|
|
177
|
+
const cwd = node_path_1.default.resolve(folder, SDK_FOLDER);
|
|
132
178
|
const env = {
|
|
133
179
|
...process.env,
|
|
134
180
|
PATH: `${node_path_1.default.dirname(process.execPath)}${node_path_1.default.delimiter}${process.env.PATH}`,
|
|
@@ -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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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CreateRoot = void 0;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
// import * as Fs from 'node:fs'
|
|
9
|
+
const jostraca_1 = require("jostraca");
|
|
10
|
+
const ModelSdk_1 = require("./ModelSdk");
|
|
11
|
+
// TODO: rename to RootSdk
|
|
12
|
+
const CreateRoot = (0, jostraca_1.cmp)(function CreateRoot(props) {
|
|
13
|
+
const { ctx$, ctx$: { folder }, spec, model } = props;
|
|
14
|
+
const fs = ctx$.fs();
|
|
15
|
+
// TODO: move to @voxgig/util as duplicated
|
|
16
|
+
model.const = { name: model.name };
|
|
17
|
+
(0, jostraca_1.names)(model.const, model.name);
|
|
18
|
+
model.const.year = new Date().getFullYear();
|
|
19
|
+
ctx$.model = model;
|
|
20
|
+
(0, jostraca_1.Project)({ folder }, () => {
|
|
21
|
+
const from = node_path_1.default.resolve(node_path_1.default.join(__dirname + '..', '..', '..', '..', 'project', 'standard'));
|
|
22
|
+
// console.log('FROM', from)
|
|
23
|
+
(0, jostraca_1.Copy)({
|
|
24
|
+
from,
|
|
25
|
+
exclude: [/\.fragment\./]
|
|
26
|
+
});
|
|
27
|
+
const origdef = spec.def;
|
|
28
|
+
const projdef = node_path_1.default.basename(origdef);
|
|
29
|
+
spec.def = projdef;
|
|
30
|
+
(0, jostraca_1.Folder)({ name: spec.sdk_folder }, () => {
|
|
31
|
+
(0, jostraca_1.Folder)({ name: 'def' }, () => {
|
|
32
|
+
// TODO: file existence check should be jostraca util
|
|
33
|
+
if (fs.existsSync(origdef)) {
|
|
34
|
+
(0, jostraca_1.Copy)({ from: origdef, to: projdef });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
console.log('DEF NOT FOUND: ', origdef);
|
|
38
|
+
(0, jostraca_1.File)({ name: projdef }, () => {
|
|
39
|
+
(0, jostraca_1.Content)('# OpenAPI Definition');
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
(0, jostraca_1.Folder)({ name: 'model' }, () => {
|
|
44
|
+
(0, ModelSdk_1.ModelSdk)({ spec });
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
exports.CreateRoot = CreateRoot;
|
|
50
|
+
//# sourceMappingURL=CreateRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateRoot.js","sourceRoot":"","sources":["../../../src/project/standard/CreateRoot.ts"],"names":[],"mappings":";;;;;;AAEA,0DAA4B;AAC5B,gCAAgC;AAEhC,uCAUiB;AAGjB,yCAAqC;AAGrC,0BAA0B;AAC1B,MAAM,UAAU,GAAG,IAAA,cAAG,EAAC,SAAS,UAAU,CAAC,KAAU;IACnD,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,CAAA;IAEpB,2CAA2C;IAC3C,KAAK,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IAClC,IAAA,gBAAK,EAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,KAAK,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAE3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IAElB,IAAA,kBAAO,EAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE;QACvB,MAAM,IAAI,GACR,mBAAI,CAAC,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;QAEpF,4BAA4B;QAE5B,IAAA,eAAI,EAAC;YACH,IAAI;YACJ,OAAO,EAAE,CAAC,cAAc,CAAC;SAC1B,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAA;QACxB,MAAM,OAAO,GAAG,mBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;QACtC,IAAI,CAAC,GAAG,GAAG,OAAO,CAAA;QAElB,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE;YACrC,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBAC3B,qDAAqD;gBACrD,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;gBACtC,CAAC;qBACI,CAAC;oBACJ,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAA;oBAEvC,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;wBAC3B,IAAA,kBAAO,EAAC,sBAAsB,CAAC,CAAA;oBACjC,CAAC,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE;gBAC7B,IAAA,mBAAQ,EAAC,EAAE,IAAI,EAAE,CAAC,CAAA;YACpB,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IAEJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAIA,gCAAU"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.ModelSdk = void 0;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
4
8
|
const jostraca_1 = require("jostraca");
|
|
5
9
|
const ModelSdk = (0, jostraca_1.cmp)(function ModelSdk(props) {
|
|
6
10
|
const { spec } = props;
|
|
11
|
+
const from = node_path_1.default.resolve(node_path_1.default.join(__dirname + '..', '..', '..', '..', 'project', 'standard'));
|
|
7
12
|
(0, jostraca_1.File)({ name: 'sdk.jsonic' }, () => {
|
|
8
13
|
(0, jostraca_1.Fragment)({
|
|
9
|
-
from:
|
|
14
|
+
from: node_path_1.default.join(from, spec.sdk_folder, 'model', 'sdk.fragment.jsonic'),
|
|
10
15
|
replace: {
|
|
11
16
|
ProjectName: spec.name,
|
|
12
17
|
NAME: spec.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSdk.js","sourceRoot":"","sources":["../../../src/project/standard/ModelSdk.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ModelSdk.js","sourceRoot":"","sources":["../../../src/project/standard/ModelSdk.ts"],"names":[],"mappings":";;;;;;AACA,0DAA4B;AAG5B,uCAKiB;AAIjB,MAAM,QAAQ,GAAG,IAAA,cAAG,EAAC,SAAS,QAAQ,CAAC,KAAU;IAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAEtB,MAAM,IAAI,GACR,mBAAI,CAAC,OAAO,CAAC,mBAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAA;IAEpF,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;QAChC,IAAA,mBAAQ,EAAC;YACP,IAAI,EAAE,mBAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,qBAAqB,CAAC;YACtE,OAAO,EAAE;gBACP,WAAW,EAAE,IAAI,CAAC,IAAI;gBACtB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,GAAG,EAAE,IAAI,CAAC,GAAG;aACd;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AAEJ,CAAC,CAAC,CAAA;AAIA,4BAAQ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/create-sdkgen.ts","../src/project/standard/
|
|
1
|
+
{"root":["../src/create-sdkgen.ts","../src/project/standard/createroot.ts","../src/project/standard/modelsdk.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voxgig/create-sdkgen",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"main": "dist/create-sdkgen.js",
|
|
5
5
|
"type": "commonjs",
|
|
6
6
|
"types": "dist/create-sdkgen.d.ts",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"build": "tsc --build src test",
|
|
27
27
|
"test-model": "voxgig-model project/.sdk/test/test.jsonic",
|
|
28
28
|
"test-model-watch": "voxgig-model -w project/.sdk/test/test.jsonic",
|
|
29
|
-
"clean": "rm -rf node_modules yarn.lock package-lock.json",
|
|
29
|
+
"clean": "rm -rf dist dist-test node_modules yarn.lock package-lock.json",
|
|
30
30
|
"reset": "npm run clean && npm i && npm run build && npm test",
|
|
31
31
|
"repo-tag": "REPO_VERSION=`node -e \"console.log(require('./package').version)\"` && echo TAG: v$REPO_VERSION && git commit -a -m v$REPO_VERSION && git push && git tag v$REPO_VERSION && git push --tags;",
|
|
32
32
|
"repo-publish": "npm run clean && npm i && npm run repo-publish-quick",
|
|
@@ -41,17 +41,15 @@
|
|
|
41
41
|
"LICENSE"
|
|
42
42
|
],
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"memfs": "^4.36.0",
|
|
48
|
-
"typescript": "^5.9.2"
|
|
44
|
+
"@types/node": "25.5.0",
|
|
45
|
+
"memfs": "^4.57.1",
|
|
46
|
+
"typescript": "^5.9.3"
|
|
49
47
|
},
|
|
50
48
|
"dependencies": {
|
|
51
|
-
"@voxgig/util": "^0.
|
|
52
|
-
"aontu": "^0.
|
|
53
|
-
"chokidar": "^
|
|
54
|
-
"
|
|
55
|
-
"
|
|
49
|
+
"@voxgig/util": "^0.4.0",
|
|
50
|
+
"aontu": "^0.39.0",
|
|
51
|
+
"chokidar": "^5.0.0",
|
|
52
|
+
"jostraca": "^0.28.0",
|
|
53
|
+
"shape": "^10.0.1"
|
|
56
54
|
}
|
|
57
55
|
}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
# Generation guide.
|
|
3
|
-
@"guide.jsonic"
|
|
4
|
-
|
|
5
|
-
|
|
6
2
|
# Model definitions.
|
|
7
3
|
@"@voxgig/apidef/model/apidef.jsonic"
|
|
8
4
|
@"@voxgig/sdkgen/model/sdkgen.jsonic"
|
|
@@ -14,18 +10,18 @@ origin: 'voxgig-sdk'
|
|
|
14
10
|
def: 'DEF'
|
|
15
11
|
|
|
16
12
|
|
|
17
|
-
# API
|
|
18
|
-
@"api/api-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
# API Entities
|
|
22
|
-
@"api/api-entity-index.jsonic"
|
|
13
|
+
# API Information
|
|
14
|
+
@"api/api-info.jsonic"
|
|
23
15
|
|
|
24
16
|
|
|
25
17
|
# SDK Configuration.
|
|
26
18
|
@"config.jsonic"
|
|
27
19
|
|
|
28
20
|
|
|
21
|
+
# SDK Entities
|
|
22
|
+
@"entity/entity-index.jsonic"
|
|
23
|
+
|
|
24
|
+
|
|
29
25
|
# SDK Features.
|
|
30
26
|
@"feature/feature-index.jsonic"
|
|
31
27
|
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"watch": "tsc --build src -w",
|
|
13
13
|
"build": "tsc --build src",
|
|
14
14
|
"test": "echo no-test",
|
|
15
|
-
"clean": "rm -rf node_modules yarn.lock package-lock.json",
|
|
15
|
+
"clean": "rm -rf dist dist-test node_modules yarn.lock package-lock.json",
|
|
16
16
|
"reset": "npm run clean && npm i && npm run build && npm test",
|
|
17
17
|
"add-target": "voxgig-sdkgen target add",
|
|
18
18
|
"dry-add-target": "voxgig-sdkgen -y target add",
|
|
@@ -22,16 +22,14 @@
|
|
|
22
22
|
"author": "$$const.Name$$",
|
|
23
23
|
"license": "$$const.License$$",
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@types/node": ">=
|
|
25
|
+
"@types/node": ">=25",
|
|
26
26
|
"typescript": ">=5",
|
|
27
|
-
"
|
|
28
|
-
},
|
|
29
|
-
"dependencies": {
|
|
30
|
-
"@voxgig/apidef": ">=2",
|
|
27
|
+
"@voxgig/apidef": ">=3",
|
|
31
28
|
"@voxgig/model": ">=7",
|
|
32
29
|
"@voxgig/sdkgen": ">=0",
|
|
33
30
|
"@voxgig/util": ">=0",
|
|
34
31
|
"@voxgig/struct": ">=0",
|
|
35
|
-
"jostraca": ">=0"
|
|
32
|
+
"jostraca": ">=0",
|
|
33
|
+
"aontu": ">=0"
|
|
36
34
|
}
|
|
37
35
|
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
|
|
2
|
+
import { size } from '@voxgig/struct'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
Content,
|
|
7
|
+
File,
|
|
8
|
+
Folder,
|
|
9
|
+
cmp,
|
|
10
|
+
each,
|
|
11
|
+
} from '@voxgig/sdkgen'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
import type {
|
|
15
|
+
Model,
|
|
16
|
+
ModelEntity,
|
|
17
|
+
ModelField,
|
|
18
|
+
} from '@voxgig/apidef'
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
import {
|
|
22
|
+
KIT,
|
|
23
|
+
getModelPath,
|
|
24
|
+
nom,
|
|
25
|
+
} from '@voxgig/apidef'
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
const BuildSDK = cmp(function BuildSDK(props: any) {
|
|
29
|
+
const ctx$ = props.ctx$
|
|
30
|
+
const model: Model = ctx$.model
|
|
31
|
+
|
|
32
|
+
// TODO: should come from ctx$ options
|
|
33
|
+
const sdkBuildFolder = '.sdk'
|
|
34
|
+
|
|
35
|
+
const entityMap: ModelEntity = getModelPath(model, `main.${KIT}.entity`)
|
|
36
|
+
|
|
37
|
+
Folder({ name: sdkBuildFolder }, () => {
|
|
38
|
+
each(entityMap, (entity: ModelEntity) => {
|
|
39
|
+
Folder({ name: 'test' }, () => {
|
|
40
|
+
Folder({ name: 'entity' }, () => {
|
|
41
|
+
Folder({ name: entity.name }, () => {
|
|
42
|
+
File({ name: nom(entity, 'Name') + 'TestData.json' }, () => {
|
|
43
|
+
const entityTestData = makeEntityTestData(model, entity)
|
|
44
|
+
Content(JSON.stringify(entityTestData, null, 2))
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
})
|
|
50
|
+
})
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
function makeEntityTestData(_model: Model, entity: ModelEntity) {
|
|
55
|
+
const data: any = {
|
|
56
|
+
existing: {
|
|
57
|
+
[entity.name]: {}
|
|
58
|
+
},
|
|
59
|
+
new: {
|
|
60
|
+
[entity.name]: {}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const idcount = 3
|
|
65
|
+
|
|
66
|
+
const refs = [...Array(idcount).keys()].reduce((a, _x, i) =>
|
|
67
|
+
(a.push(`${entity.name}${String(i).padStart(2, "0")}`), a), [] as string[])
|
|
68
|
+
|
|
69
|
+
const idmap = refs.reduce((a: any, ref) => (a[ref] = ref.toUpperCase(), a), {})
|
|
70
|
+
|
|
71
|
+
let i = 1
|
|
72
|
+
|
|
73
|
+
refs.map((ref) => {
|
|
74
|
+
const id = idmap[ref]
|
|
75
|
+
const ent: any = data.existing[entity.name][id] = {}
|
|
76
|
+
|
|
77
|
+
makeEntityTestFields(entity, i++, ent)
|
|
78
|
+
ent.id = id
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
let id = entity.name + '_ref01'
|
|
82
|
+
const ent: any = data.new[entity.name][id] = {}
|
|
83
|
+
makeEntityTestFields(entity, i++, ent)
|
|
84
|
+
delete ent.id
|
|
85
|
+
|
|
86
|
+
return data
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
function makeEntityTestFields(entity: ModelEntity, start: number, entdata: Record<string, any>) {
|
|
91
|
+
entdata = entdata ?? {}
|
|
92
|
+
let num = (start * size(entity.fields) * 10)
|
|
93
|
+
each(entity.fields, (field: ModelField) => {
|
|
94
|
+
entdata[field.name] =
|
|
95
|
+
field.name.endsWith('_id') ?
|
|
96
|
+
field.name.substring(0, field.name.length - 3).toUpperCase() + '01' :
|
|
97
|
+
'`$NUMBER`' === field.type ? num :
|
|
98
|
+
'`$BOOLEAN`' === field.type ? 0 === num % 2 :
|
|
99
|
+
'`$OBJECT`' === field.type ? {} :
|
|
100
|
+
'`$MAP`' === field.type ? {} :
|
|
101
|
+
'`$ARRAY`' === field.type ? [] :
|
|
102
|
+
'`$LIST`' === field.type ? [] :
|
|
103
|
+
's' + (num.toString(16))
|
|
104
|
+
num++
|
|
105
|
+
})
|
|
106
|
+
return entdata
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
export {
|
|
111
|
+
BuildSDK
|
|
112
|
+
}
|
|
113
|
+
|