@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
@@ -8,7 +8,7 @@ const { Gubu, Fault, One } = require('gubu')
8
8
 
9
9
  const { SdkGen } = require('../dist/sdkgen.js')
10
10
 
11
- const VERSION = '0.34.10'
11
+ const VERSION = '0.34.11'
12
12
  const KONSOLE = console
13
13
 
14
14
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voxgig/sdkgen",
3
- "version": "0.34.10",
3
+ "version": "0.34.11",
4
4
  "main": "dist/sdkgen.js",
5
5
  "type": "commonjs",
6
6
  "types": "dist/sdkgen.d.ts",
@@ -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
- '${entity.name}01',
82
- '${entity.name}02',
83
- '${entity.name}03',
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
- const ${srcdatavar} = Object.values(setup.data.existing.${entity.name})[0] as any
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 = {}