@voxgig/sdkgen 0.34.10 → 0.34.11
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/voxgig-sdkgen
CHANGED
package/package.json
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
Fragment,
|
|
12
12
|
Slot,
|
|
13
13
|
cmp,
|
|
14
|
+
snakify,
|
|
14
15
|
} from '@voxgig/sdkgen'
|
|
15
16
|
|
|
16
17
|
|
|
@@ -127,14 +128,14 @@ function generateDirectLoad(model: any, entity: any) {
|
|
|
127
128
|
return
|
|
128
129
|
}
|
|
129
130
|
|
|
130
|
-
const loadPath = (loadPoint.parts || []).join('/')
|
|
131
131
|
const loadParams = loadPoint.args?.params || []
|
|
132
|
+
const loadPath = normalizePathParams(loadPoint.parts || [], loadParams)
|
|
132
133
|
|
|
133
134
|
// Get list info for live mode bootstrapping
|
|
134
135
|
const listOp = entity.op.list
|
|
135
136
|
const listPoint = listOp?.points?.[0]
|
|
136
|
-
const listPath = listPoint ? (listPoint.parts || []).join('/') : ''
|
|
137
137
|
const listParams = listPoint?.args?.params || []
|
|
138
|
+
const listPath = listPoint ? normalizePathParams(listPoint.parts || [], listParams) : ''
|
|
138
139
|
const hasList = null != listPoint
|
|
139
140
|
|
|
140
141
|
// Ancestor params (not 'id') for live mode
|
|
@@ -224,8 +225,8 @@ function generateDirectList(model: any, entity: any) {
|
|
|
224
225
|
return
|
|
225
226
|
}
|
|
226
227
|
|
|
227
|
-
const listPath = (listPoint.parts || []).join('/')
|
|
228
228
|
const listParams = listPoint.args?.params || []
|
|
229
|
+
const listPath = normalizePathParams(listPoint.parts || [], listParams)
|
|
229
230
|
|
|
230
231
|
// Build live params
|
|
231
232
|
const liveParams = listParams.map((p: any) => {
|
|
@@ -283,6 +284,21 @@ ${paramAsserts} }
|
|
|
283
284
|
}
|
|
284
285
|
|
|
285
286
|
|
|
287
|
+
// Replace raw OpenAPI parameter names in path parts with model parameter names.
|
|
288
|
+
// Path parts may have e.g. {subBreed} while model params use sub_breed.
|
|
289
|
+
function normalizePathParams(parts: string[], params: any[]): string {
|
|
290
|
+
return parts.map((part: string) => {
|
|
291
|
+
if (part.startsWith('{') && part.endsWith('}')) {
|
|
292
|
+
const rawName = part.slice(1, -1)
|
|
293
|
+
const snaked = snakify(rawName)
|
|
294
|
+
const param = params.find((p: any) => p.orig === snaked || p.name === snaked)
|
|
295
|
+
if (param) return '{' + param.name + '}'
|
|
296
|
+
}
|
|
297
|
+
return part
|
|
298
|
+
}).join('/')
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
|
|
286
302
|
export {
|
|
287
303
|
TestDirect
|
|
288
304
|
}
|
|
@@ -78,9 +78,9 @@ const TestEntity = cmp(function TestEntity(props: any) {
|
|
|
78
78
|
const indent = 2
|
|
79
79
|
|
|
80
80
|
const idlist = flatten([
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
entity.name + '01',
|
|
82
|
+
entity.name + '02',
|
|
83
|
+
entity.name + '03',
|
|
84
84
|
flatten(items(entity.relations.ancestors, (ap: any) =>
|
|
85
85
|
items(ap[1], (a: any) =>
|
|
86
86
|
items(['01', '02', '03'], (n: any) =>
|
|
@@ -358,12 +358,25 @@ const generateLoad: OpGen = (
|
|
|
358
358
|
const hasEntVar = priorSteps.some((s: any) =>
|
|
359
359
|
['create', 'list', 'load', 'remove'].includes(s.op))
|
|
360
360
|
|
|
361
|
+
// Check if srcdatavar was declared by a prior create step
|
|
362
|
+
const hasSrcData = priorSteps.some((s: any) => {
|
|
363
|
+
if ('create' === s.op) {
|
|
364
|
+
const priorRef = s.input?.ref ?? entity.name + '_ref01'
|
|
365
|
+
const priorDatvar = s.input?.datavar ?? (priorRef + '_data' + (s.input?.suffix ?? ''))
|
|
366
|
+
return priorDatvar === srcdatavar
|
|
367
|
+
}
|
|
368
|
+
return false
|
|
369
|
+
})
|
|
370
|
+
|
|
361
371
|
Content(`
|
|
362
372
|
// LOAD
|
|
363
373
|
`)
|
|
364
374
|
if (!hasEntVar) {
|
|
365
375
|
Content(` const ${entvar} = client.${nom(entity, 'Name')}()
|
|
366
|
-
|
|
376
|
+
`)
|
|
377
|
+
}
|
|
378
|
+
if (!hasSrcData) {
|
|
379
|
+
Content(` const ${srcdatavar} = Object.values(setup.data.existing.${entity.name})[0] as any
|
|
367
380
|
`)
|
|
368
381
|
}
|
|
369
382
|
Content(` const ${matchvar}: any = {}
|