@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
|
@@ -1,44 +1,3 @@
|
|
|
1
|
-
# Copyright (c) 2025 Voxgig Ltd. MIT License.
|
|
2
|
-
|
|
3
|
-
# Tests are defined as sets of expected inputs and outputs
|
|
4
|
-
# The test runner script for each language loads the generated test.json
|
|
5
|
-
# file and runs the actual tests.
|
|
6
|
-
|
|
7
|
-
# Each language must pass these exact same tests, ensuring uniform
|
|
8
|
-
# behaviour over all languages.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
# Tests for the core "struct" data structure utilities.
|
|
12
|
-
struct: minor: @"struct/minor.jsonic"
|
|
13
|
-
struct: getpath: @"struct/getpath.jsonic"
|
|
14
|
-
struct: inject: @"struct/inject.jsonic"
|
|
15
|
-
struct: merge: @"struct/merge.jsonic"
|
|
16
|
-
struct: transform: @"struct/transform.jsonic"
|
|
17
|
-
struct: walk: @"struct/walk.jsonic"
|
|
18
|
-
struct: validate: @"struct/validate.jsonic"
|
|
19
|
-
struct: select: @"struct/select.jsonic"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
# Tests for the primary SDK utilities.
|
|
23
|
-
primary: auth: @"primary/auth.jsonic"
|
|
24
|
-
primary: body: @"primary/body.jsonic"
|
|
25
|
-
primary: contextify: @"primary/contextify.jsonic"
|
|
26
|
-
primary: done: @"primary/done.jsonic"
|
|
27
|
-
primary: error: @"primary/error.jsonic"
|
|
28
|
-
primary: findparam: @"primary/findparam.jsonic"
|
|
29
|
-
primary: fullurl: @"primary/fullurl.jsonic"
|
|
30
|
-
primary: headers: @"primary/headers.jsonic"
|
|
31
|
-
primary: resform: @"primary/resform.jsonic"
|
|
32
|
-
primary: method: @"primary/method.jsonic"
|
|
33
|
-
primary: operator: @"primary/operator.jsonic"
|
|
34
|
-
primary: options: @"primary/options.jsonic"
|
|
35
|
-
primary: reqform: @"primary/reqform.jsonic"
|
|
36
|
-
primary: params: @"primary/params.jsonic"
|
|
37
|
-
primary: query: @"primary/query.jsonic"
|
|
38
|
-
primary: request: @"primary/request.jsonic"
|
|
39
|
-
primary: resbasic: @"primary/resbasic.jsonic"
|
|
40
|
-
primary: resbody: @"primary/resbody.jsonic"
|
|
41
|
-
primary: resheaders: @"primary/resheaders.jsonic"
|
|
42
|
-
primary: response: @"primary/response.jsonic"
|
|
43
|
-
primary: spec: @"primary/spec.jsonic"
|
|
44
1
|
|
|
2
|
+
@"struct/test.jsonic"
|
|
3
|
+
@"primary/primary-test-index.jsonic"
|
package/src/create-sdkgen.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* Copyright (c) 2024-2025 Richard Rodger, MIT License */
|
|
2
2
|
|
|
3
3
|
import * as Fs from 'node:fs'
|
|
4
|
+
import * as Os from 'node:os'
|
|
4
5
|
import Path from 'node:path'
|
|
5
6
|
import { spawn } from 'child_process'
|
|
6
7
|
|
|
@@ -22,20 +23,28 @@ type CreateSdkGenOptions = Partial<FullCreateSdkGenOptions>
|
|
|
22
23
|
|
|
23
24
|
|
|
24
25
|
type GenerateSpec = {
|
|
26
|
+
sdk_folder: string
|
|
27
|
+
|
|
25
28
|
name: string // Name of SDK project.
|
|
26
29
|
def: string // Path to OpenAPI definition file, copied into SDK project.
|
|
27
30
|
root: string // Path to Root template component.
|
|
28
|
-
project: string
|
|
31
|
+
project: string // Project template name
|
|
29
32
|
debug?: string
|
|
30
33
|
dryrun?: boolean
|
|
31
34
|
target?: string[]
|
|
32
35
|
feature?: string[]
|
|
33
|
-
install?: boolean
|
|
36
|
+
install?: boolean // perform installation - run npm install
|
|
37
|
+
folder?: string // Target folder for project
|
|
38
|
+
|
|
34
39
|
}
|
|
35
40
|
|
|
36
41
|
|
|
37
42
|
const { names, Jostraca } = JostracaModule
|
|
38
43
|
|
|
44
|
+
|
|
45
|
+
const SDK_FOLDER = '.sdk'
|
|
46
|
+
|
|
47
|
+
|
|
39
48
|
// TODO: CreateSdkGen opts and generate opts should be mostly the same, and
|
|
40
49
|
// generate should override
|
|
41
50
|
function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
@@ -63,12 +72,21 @@ function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
|
63
72
|
const rootPath = Path.join(projectFolder, spec.root)
|
|
64
73
|
|
|
65
74
|
const rootModule: any = require(rootPath)
|
|
66
|
-
const
|
|
75
|
+
const CreateRoot = rootModule.CreateRoot
|
|
67
76
|
|
|
68
77
|
const name = spec.name
|
|
69
78
|
spec.def = (null == spec.def || '' === spec.def) ? name + '-openapi3.yml' : spec.def
|
|
70
79
|
|
|
71
|
-
|
|
80
|
+
spec.sdk_folder = SDK_FOLDER
|
|
81
|
+
|
|
82
|
+
const cwd = process.cwd()
|
|
83
|
+
|
|
84
|
+
const folder = (null == spec.folder || '' == spec.folder) ?
|
|
85
|
+
Path.join(cwd, name + (name.endsWith('-sdk') ? '' : '-sdk')) :
|
|
86
|
+
Path.isAbsolute(spec.folder) ? spec.folder :
|
|
87
|
+
Path.join(cwd, spec.folder)
|
|
88
|
+
|
|
89
|
+
logCreate(folder)
|
|
72
90
|
|
|
73
91
|
const jopts = {
|
|
74
92
|
fs: () => fs,
|
|
@@ -103,9 +121,9 @@ function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
|
103
121
|
note: JSON.stringify(jopts, null, 2)
|
|
104
122
|
})
|
|
105
123
|
|
|
106
|
-
const jres = await jostraca.generate(jopts, () =>
|
|
124
|
+
const jres = await jostraca.generate(jopts, () => CreateRoot({ model, spec }))
|
|
107
125
|
|
|
108
|
-
showChanges(jopts.log, 'generate-result', jres,
|
|
126
|
+
showChanges(jopts.log, 'generate-result', jres, process.cwd())
|
|
109
127
|
|
|
110
128
|
if (spec.dryrun || !spec.install) {
|
|
111
129
|
log.info({ point: 'generate-install', note: 'skipping npm install' })
|
|
@@ -138,6 +156,55 @@ function CreateSdkGen(opts: FullCreateSdkGenOptions) {
|
|
|
138
156
|
}
|
|
139
157
|
|
|
140
158
|
|
|
159
|
+
function escapeShellArg(arg: string): string {
|
|
160
|
+
// If arg contains no special characters, return as-is
|
|
161
|
+
if (/^[~a-zA-Z0-9_\-\.\/]+$/.test(arg)) {
|
|
162
|
+
return arg
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Otherwise, wrap in single quotes and escape any single quotes
|
|
166
|
+
return "'" + arg.replace(/'/g, "'\\''") + "'"
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
function logCreate(folder: string) {
|
|
171
|
+
try {
|
|
172
|
+
const logFolder = Path.join(folder, SDK_FOLDER, 'log')
|
|
173
|
+
|
|
174
|
+
if (!fs.existsSync(logFolder)) {
|
|
175
|
+
fs.mkdirSync(logFolder, { recursive: true })
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
const now = new Date()
|
|
179
|
+
const utcTimestamp = '[' + now.toISOString() + ']'
|
|
180
|
+
|
|
181
|
+
const timezoneName = Intl.DateTimeFormat().resolvedOptions().timeZone
|
|
182
|
+
const localISOString = now.getFullYear() + '-' +
|
|
183
|
+
String(now.getMonth() + 1).padStart(2, '0') + '-' +
|
|
184
|
+
String(now.getDate()).padStart(2, '0') + 'T' +
|
|
185
|
+
String(now.getHours()).padStart(2, '0') + ':' +
|
|
186
|
+
String(now.getMinutes()).padStart(2, '0') + ':' +
|
|
187
|
+
String(now.getSeconds()).padStart(2, '0') + '.' +
|
|
188
|
+
String(now.getMilliseconds()).padStart(3, '0')
|
|
189
|
+
const localTimestamp = timezoneName + '=' + localISOString
|
|
190
|
+
|
|
191
|
+
const homeDir = Os.homedir()
|
|
192
|
+
const command = process.argv
|
|
193
|
+
.map(arg => arg.replace(homeDir, '~'))
|
|
194
|
+
.map(escapeShellArg)
|
|
195
|
+
.join(' ')
|
|
196
|
+
|
|
197
|
+
const logLine = `${utcTimestamp} ${localTimestamp} CREATE ${command}\n`
|
|
198
|
+
|
|
199
|
+
const logFile = Path.join(logFolder, 'create.log')
|
|
200
|
+
fs.appendFileSync(logFile, logLine, 'utf8')
|
|
201
|
+
}
|
|
202
|
+
catch (err) {
|
|
203
|
+
log.debug({ point: 'logCreate-error', err })
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
|
|
141
208
|
return {
|
|
142
209
|
generate,
|
|
143
210
|
}
|
|
@@ -152,7 +219,7 @@ async function installNpm(spec: GenerateSpec, opts: any, model: any) {
|
|
|
152
219
|
const log = opts.log
|
|
153
220
|
|
|
154
221
|
return new Promise(async (resolve, reject) => {
|
|
155
|
-
const cwd = Path.resolve(folder,
|
|
222
|
+
const cwd = Path.resolve(folder, SDK_FOLDER)
|
|
156
223
|
|
|
157
224
|
const env = {
|
|
158
225
|
...process.env,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
3
|
import Path from 'node:path'
|
|
4
|
-
import * as Fs from 'node:fs'
|
|
4
|
+
// import * as Fs from 'node:fs'
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
7
|
names,
|
|
@@ -20,8 +20,9 @@ import { ModelSdk } from './ModelSdk'
|
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
// TODO: rename to RootSdk
|
|
23
|
-
const
|
|
23
|
+
const CreateRoot = cmp(function CreateRoot(props: any) {
|
|
24
24
|
const { ctx$, ctx$: { folder }, spec, model } = props
|
|
25
|
+
const fs = ctx$.fs()
|
|
25
26
|
|
|
26
27
|
// TODO: move to @voxgig/util as duplicated
|
|
27
28
|
model.const = { name: model.name }
|
|
@@ -37,19 +38,23 @@ const Root = cmp(function Root(props: any) {
|
|
|
37
38
|
// console.log('FROM', from)
|
|
38
39
|
|
|
39
40
|
Copy({
|
|
40
|
-
from
|
|
41
|
+
from,
|
|
42
|
+
exclude: [/\.fragment\./]
|
|
41
43
|
})
|
|
42
44
|
|
|
43
45
|
const origdef = spec.def
|
|
44
46
|
const projdef = Path.basename(origdef)
|
|
45
47
|
spec.def = projdef
|
|
46
48
|
|
|
47
|
-
Folder({ name:
|
|
49
|
+
Folder({ name: spec.sdk_folder }, () => {
|
|
48
50
|
Folder({ name: 'def' }, () => {
|
|
49
|
-
|
|
51
|
+
// TODO: file existence check should be jostraca util
|
|
52
|
+
if (fs.existsSync(origdef)) {
|
|
50
53
|
Copy({ from: origdef, to: projdef })
|
|
51
54
|
}
|
|
52
55
|
else {
|
|
56
|
+
console.log('DEF NOT FOUND: ', origdef)
|
|
57
|
+
|
|
53
58
|
File({ name: projdef }, () => {
|
|
54
59
|
Content('# OpenAPI Definition')
|
|
55
60
|
})
|
|
@@ -66,5 +71,5 @@ const Root = cmp(function Root(props: any) {
|
|
|
66
71
|
|
|
67
72
|
|
|
68
73
|
export {
|
|
69
|
-
|
|
74
|
+
CreateRoot
|
|
70
75
|
}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
|
|
2
|
+
import Path from 'node:path'
|
|
3
|
+
|
|
4
|
+
|
|
2
5
|
import {
|
|
3
6
|
cmp,
|
|
4
7
|
File,
|
|
@@ -11,10 +14,12 @@ import {
|
|
|
11
14
|
const ModelSdk = cmp(function ModelSdk(props: any) {
|
|
12
15
|
const { spec } = props
|
|
13
16
|
|
|
17
|
+
const from =
|
|
18
|
+
Path.resolve(Path.join(__dirname + '..', '..', '..', '..', 'project', 'standard'))
|
|
14
19
|
|
|
15
20
|
File({ name: 'sdk.jsonic' }, () => {
|
|
16
21
|
Fragment({
|
|
17
|
-
from:
|
|
22
|
+
from: Path.join(from, spec.sdk_folder, 'model', 'sdk.fragment.jsonic'),
|
|
18
23
|
replace: {
|
|
19
24
|
ProjectName: spec.name,
|
|
20
25
|
NAME: spec.name,
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.Root = void 0;
|
|
40
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
41
|
-
const Fs = __importStar(require("node:fs"));
|
|
42
|
-
const jostraca_1 = require("jostraca");
|
|
43
|
-
const ModelSdk_1 = require("./ModelSdk");
|
|
44
|
-
// TODO: rename to RootSdk
|
|
45
|
-
const Root = (0, jostraca_1.cmp)(function Root(props) {
|
|
46
|
-
const { ctx$, ctx$: { folder }, spec, model } = props;
|
|
47
|
-
// TODO: move to @voxgig/util as duplicated
|
|
48
|
-
model.const = { name: model.name };
|
|
49
|
-
(0, jostraca_1.names)(model.const, model.name);
|
|
50
|
-
model.const.year = new Date().getFullYear();
|
|
51
|
-
ctx$.model = model;
|
|
52
|
-
(0, jostraca_1.Project)({ folder }, () => {
|
|
53
|
-
const from = node_path_1.default.resolve(node_path_1.default.join(__dirname + '..', '..', '..', '..', 'project', 'standard'));
|
|
54
|
-
// console.log('FROM', from)
|
|
55
|
-
(0, jostraca_1.Copy)({
|
|
56
|
-
from
|
|
57
|
-
});
|
|
58
|
-
const origdef = spec.def;
|
|
59
|
-
const projdef = node_path_1.default.basename(origdef);
|
|
60
|
-
spec.def = projdef;
|
|
61
|
-
(0, jostraca_1.Folder)({ name: '.sdk' }, () => {
|
|
62
|
-
(0, jostraca_1.Folder)({ name: 'def' }, () => {
|
|
63
|
-
if (Fs.existsSync(origdef)) {
|
|
64
|
-
(0, jostraca_1.Copy)({ from: origdef, to: projdef });
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
(0, jostraca_1.File)({ name: projdef }, () => {
|
|
68
|
-
(0, jostraca_1.Content)('# OpenAPI Definition');
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
});
|
|
72
|
-
(0, jostraca_1.Folder)({ name: 'model' }, () => {
|
|
73
|
-
(0, ModelSdk_1.ModelSdk)({ spec });
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
});
|
|
78
|
-
exports.Root = Root;
|
|
79
|
-
//# sourceMappingURL=Root.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Root.js","sourceRoot":"","sources":["../../../src/project/standard/Root.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,0DAA4B;AAC5B,4CAA6B;AAE7B,uCAUiB;AAGjB,yCAAqC;AAGrC,0BAA0B;AAC1B,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAU;IACvC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAErD,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;SACL,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,MAAM,EAAE,EAAE,GAAG,EAAE;YAC5B,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBAC3B,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,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,oBAAI"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ModelSdk = void 0;
|
|
4
|
-
const jostraca_1 = require("jostraca");
|
|
5
|
-
const ModelSdk = (0, jostraca_1.cmp)(function ModelSdk(props) {
|
|
6
|
-
const { spec } = props;
|
|
7
|
-
(0, jostraca_1.File)({ name: 'sdk.jsonic' }, () => {
|
|
8
|
-
(0, jostraca_1.Fragment)({
|
|
9
|
-
from: __dirname + '/../../project/.sdk/model/sdk.fragment.jsonic',
|
|
10
|
-
replace: {
|
|
11
|
-
// TODO: should use ProjectName for consistency
|
|
12
|
-
NAME: spec.name,
|
|
13
|
-
DEF: spec.def,
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
exports.ModelSdk = ModelSdk;
|
|
19
|
-
//# sourceMappingURL=ModelSdk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ModelSdk.js","sourceRoot":"","sources":["../../src/standard/ModelSdk.ts"],"names":[],"mappings":";;;AACA,uCAKiB;AAIjB,MAAM,QAAQ,GAAG,IAAA,cAAG,EAAC,SAAS,QAAQ,CAAC,KAAU;IAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IAGtB,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE;QAChC,IAAA,mBAAQ,EAAC;YACP,IAAI,EAAE,SAAS,GAAG,+CAA+C;YACjE,OAAO,EAAE;gBACP,+CAA+C;gBAC/C,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"}
|
package/dist/standard/Root.d.ts
DELETED
package/dist/standard/Root.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.Root = void 0;
|
|
40
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
41
|
-
const Fs = __importStar(require("node:fs"));
|
|
42
|
-
const jostraca_1 = require("jostraca");
|
|
43
|
-
const ModelSdk_1 = require("./ModelSdk");
|
|
44
|
-
// TODO: rename to RootSdk
|
|
45
|
-
const Root = (0, jostraca_1.cmp)(function Root(props) {
|
|
46
|
-
const { ctx$, ctx$: { folder }, spec, model } = props;
|
|
47
|
-
// TODO: move to @voxgig/util as duplicated
|
|
48
|
-
model.const = { name: model.name };
|
|
49
|
-
(0, jostraca_1.names)(model.const, model.name);
|
|
50
|
-
model.const.year = new Date().getFullYear();
|
|
51
|
-
ctx$.model = model;
|
|
52
|
-
(0, jostraca_1.Project)({ folder }, () => {
|
|
53
|
-
(0, jostraca_1.Copy)({
|
|
54
|
-
from: __dirname + '/../../project',
|
|
55
|
-
});
|
|
56
|
-
const origdef = spec.def;
|
|
57
|
-
const projdef = node_path_1.default.basename(origdef);
|
|
58
|
-
spec.def = projdef;
|
|
59
|
-
(0, jostraca_1.Folder)({ name: '.sdk' }, () => {
|
|
60
|
-
(0, jostraca_1.Folder)({ name: 'def' }, () => {
|
|
61
|
-
if (Fs.existsSync(origdef)) {
|
|
62
|
-
(0, jostraca_1.Copy)({ from: origdef, to: projdef });
|
|
63
|
-
}
|
|
64
|
-
else {
|
|
65
|
-
(0, jostraca_1.File)({ name: projdef }, () => {
|
|
66
|
-
(0, jostraca_1.Content)('# OpenAPI Definition');
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
(0, jostraca_1.Folder)({ name: 'model' }, () => {
|
|
71
|
-
(0, ModelSdk_1.ModelSdk)({ spec });
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
exports.Root = Root;
|
|
77
|
-
//# sourceMappingURL=Root.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Root.js","sourceRoot":"","sources":["../../src/standard/Root.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,0DAA4B;AAC5B,4CAA6B;AAE7B,uCAUiB;AAGjB,yCAAqC;AAGrC,0BAA0B;AAC1B,MAAM,IAAI,GAAG,IAAA,cAAG,EAAC,SAAS,IAAI,CAAC,KAAU;IACvC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAErD,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,IAAA,eAAI,EAAC;YACH,IAAI,EAAE,SAAS,GAAG,gBAAgB;SACnC,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,MAAM,EAAE,EAAE,GAAG,EAAE;YAC5B,IAAA,iBAAM,EAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;gBAC3B,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,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,oBAAI"}
|
package/dist/utility.d.ts
DELETED
package/dist/utility.js
DELETED
package/dist/utility.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../src/utility.ts"],"names":[],"mappings":";;AAME,kBAAG;AAJL,SAAS,GAAG,KAAK,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
DEF: {
|
|
3
|
-
client: a: test: options: { apikey: 'APIKEY01' }
|
|
4
|
-
client: b: test: options: {}
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
basic: set: [
|
|
9
|
-
|
|
10
|
-
{ ctx: spec:headers:{}
|
|
11
|
-
client: a
|
|
12
|
-
match: out:headers:authorization:'Bearer APIKEY01'
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
# { ctx: spec:headers:{}
|
|
16
|
-
# client: b
|
|
17
|
-
# match: out:headers:authorization:'__UNDEF__' }
|
|
18
|
-
|
|
19
|
-
]
|
|
20
|
-
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
basic: set: [
|
|
3
|
-
{
|
|
4
|
-
ctx: {
|
|
5
|
-
op:kind:req, op:reqform:'`data.foo`', op:check:nobody:true
|
|
6
|
-
op:data:foo:{x:1}
|
|
7
|
-
}
|
|
8
|
-
out: {x:1}
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
{
|
|
12
|
-
ctx: {
|
|
13
|
-
op:kind:req, op:reqform:'`data.bar`', op:check:nobody:false
|
|
14
|
-
op:data:foo:{x:2}
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
{
|
|
19
|
-
ctx: {
|
|
20
|
-
op:kind:req, op:reqform:'`data.bar`', op:check:nobody:true
|
|
21
|
-
op:data:foo:{x:3}
|
|
22
|
-
}
|
|
23
|
-
err: 'empty'
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
]
|
|
27
|
-
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
basic: set: [
|
|
3
|
-
{ args:[], err:'SDK: unknown operation: unknown error' }
|
|
4
|
-
{ args:[{}], err:'SDK: unknown operation: unknown error' }
|
|
5
|
-
{ args:[{},{}], err:'SDK: unknown operation: unknown error' }
|
|
6
|
-
|
|
7
|
-
{ args:[{op:{}}], err:'SDK: unknown operation: unknown error' }
|
|
8
|
-
{ args:[{op:name:foo}], err:'SDK: foo: unknown error' }
|
|
9
|
-
{ args:[{op:name:foo,result:{}}], err:'SDK: foo: unknown error' }
|
|
10
|
-
|
|
11
|
-
{ args:[{op:name:foo,result:{err:message:bar}}], err:'SDK: foo: bar' }
|
|
12
|
-
{ args:[{op:name:foo}, {message:zed}], err:'SDK: foo: zed' }
|
|
13
|
-
|
|
14
|
-
{ args:[{op:name:o0}, {message:e0}], err:'SDK: o0: e0'
|
|
15
|
-
match: err:message:'SDK: o0: e0'
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
]
|
|
19
|
-
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
basic: set: [
|
|
3
|
-
{
|
|
4
|
-
ctx: {
|
|
5
|
-
op: {
|
|
6
|
-
params: ['a'],
|
|
7
|
-
},
|
|
8
|
-
spec: {
|
|
9
|
-
base: 'base-',
|
|
10
|
-
prefix: 'prefix-',
|
|
11
|
-
suffix: 'suffix-',
|
|
12
|
-
path: '/p0/{a}',
|
|
13
|
-
params: {
|
|
14
|
-
a: 'A'
|
|
15
|
-
},
|
|
16
|
-
query: {
|
|
17
|
-
b: 'B'
|
|
18
|
-
},
|
|
19
|
-
alias: {}
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
out: 'base-/prefix-/p0/A/suffix-?b=B'
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
{
|
|
26
|
-
ctx: {
|
|
27
|
-
op: {
|
|
28
|
-
kind: 'res',
|
|
29
|
-
params: ['foo_id'],
|
|
30
|
-
alias: {
|
|
31
|
-
foo_id: 'id'
|
|
32
|
-
},
|
|
33
|
-
match: {
|
|
34
|
-
id: 'A',
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
spec: {
|
|
38
|
-
base: 'base-',
|
|
39
|
-
prefix: 'prefix-',
|
|
40
|
-
suffix: 'suffix-',
|
|
41
|
-
path: '/p0/{foo_id}',
|
|
42
|
-
params: {},
|
|
43
|
-
alias: {}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
out: 'base-/prefix-/p0/A/suffix-'
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
]
|
|
50
|
-
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
DEF: {
|
|
3
|
-
client: a: test: options: { headers: { foo:FOO, bar:BAR, accept: '*/*' } }
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
basic: set: [
|
|
7
|
-
{ ctx: {}, out: { 'content-type': 'application/json', 'accept': 'application/json' } }
|
|
8
|
-
|
|
9
|
-
{ ctx: {}, client:a,
|
|
10
|
-
out: { foo:FOO, bar:BAR, 'content-type': 'application/json', 'accept': '*/*' } }
|
|
11
|
-
]
|
|
12
|
-
|