@atomic-ehr/codegen 0.0.1-canary.20250822152242.1efd5a0 → 0.0.1-canary.20250826204510.8c2fcc0
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.
|
@@ -89,6 +89,10 @@ export declare class TypeScriptGenerator extends BaseGenerator<TypeScriptGenerat
|
|
|
89
89
|
* Capitalize first letter of string
|
|
90
90
|
*/
|
|
91
91
|
private capitalizeFirst;
|
|
92
|
+
/**
|
|
93
|
+
* Generate field lines (handles polymorphic fields by expanding them)
|
|
94
|
+
*/
|
|
95
|
+
private generateFieldLines;
|
|
92
96
|
/**
|
|
93
97
|
* Generate a single field line
|
|
94
98
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/api/generators/typescript.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAEN,KAAK,2BAA2B,EAChC,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EACX,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,UAAU,EACV,MAAM,iBAAiB,CAAC;AAEzB;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACvE,wCAAwC;IACxC,YAAY,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAE7B,sCAAsC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;IAE9C,8BAA8B;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,4BAA4B;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B,0BAA0B;IAC1B,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,aAAa,CACrD,0BAA0B,EAC1B,aAAa,EAAE,CACf;IACA,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAG9B;IACJ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IAEnD,OAAO,KAAK,SAAS,GAEpB;IAED,SAAS,CAAC,eAAe,IAAI,MAAM;IAInC,SAAS,CAAC,gBAAgB,IAAI,MAAM;cAIjB,gBAAgB,IAAI,UAAU;cAajC,qBAAqB,CACpC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,MAAM,CAAC;IA0DlB,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE;cAInD,eAAe,CAC9B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC;IAmBhB;;OAEG;IACG,gBAAgB,CACrB,OAAO,EAAE,UAAU,EAAE,GACnB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAajC;;OAEG;IACG,eAAe,CACpB,MAAM,EAAE,UAAU,GAChB,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAkC3C,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,yBAAyB;IAmBjC,OAAO,CAAC,mBAAmB;IAI3B;;OAEG;IACH,OAAO,CAAC,0BAA0B;
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../src/api/generators/typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -227,9 +227,11 @@ export class TypeScriptGenerator extends BaseGenerator {
|
|
|
227
227
|
lines.push(" type?: T;");
|
|
228
228
|
}
|
|
229
229
|
else {
|
|
230
|
-
const
|
|
231
|
-
|
|
232
|
-
|
|
230
|
+
const fieldLines = this.generateFieldLines(fieldName, field);
|
|
231
|
+
for (const fieldLine of fieldLines) {
|
|
232
|
+
if (fieldLine) {
|
|
233
|
+
lines.push(` ${fieldLine}`);
|
|
234
|
+
}
|
|
233
235
|
}
|
|
234
236
|
}
|
|
235
237
|
}
|
|
@@ -290,9 +292,11 @@ export class TypeScriptGenerator extends BaseGenerator {
|
|
|
290
292
|
// Generate fields (if any)
|
|
291
293
|
if ("fields" in schema && schema.fields) {
|
|
292
294
|
for (const [fieldName, field] of Object.entries(schema.fields)) {
|
|
293
|
-
const
|
|
294
|
-
|
|
295
|
-
|
|
295
|
+
const fieldLines = this.generateFieldLines(fieldName, field);
|
|
296
|
+
for (const fieldLine of fieldLines) {
|
|
297
|
+
if (fieldLine) {
|
|
298
|
+
lines.push(` ${fieldLine}`);
|
|
299
|
+
}
|
|
296
300
|
}
|
|
297
301
|
}
|
|
298
302
|
}
|
|
@@ -304,6 +308,11 @@ export class TypeScriptGenerator extends BaseGenerator {
|
|
|
304
308
|
*/
|
|
305
309
|
collectFieldImports(field) {
|
|
306
310
|
const imports = [];
|
|
311
|
+
// Skip polymorphic declaration fields (they don't have types to import)
|
|
312
|
+
if ("choices" in field && field.choices && Array.isArray(field.choices)) {
|
|
313
|
+
return imports;
|
|
314
|
+
}
|
|
315
|
+
// Handle all other fields (regular fields and polymorphic instance fields)
|
|
307
316
|
if ("type" in field && field.type) {
|
|
308
317
|
// Handle nested types - they don't need imports as they're in the same file
|
|
309
318
|
if (field.type.kind === "nested") {
|
|
@@ -327,7 +336,7 @@ export class TypeScriptGenerator extends BaseGenerator {
|
|
|
327
336
|
}
|
|
328
337
|
}
|
|
329
338
|
}
|
|
330
|
-
return imports;
|
|
339
|
+
return [...new Set(imports)]; // Remove duplicates
|
|
331
340
|
}
|
|
332
341
|
/**
|
|
333
342
|
* Extract resource types from reference field constraints
|
|
@@ -368,9 +377,11 @@ export class TypeScriptGenerator extends BaseGenerator {
|
|
|
368
377
|
// Generate fields
|
|
369
378
|
if (nestedType.fields) {
|
|
370
379
|
for (const [fieldName, field] of Object.entries(nestedType.fields)) {
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
|
|
380
|
+
const fieldLines = this.generateFieldLines(fieldName, field);
|
|
381
|
+
for (const fieldLine of fieldLines) {
|
|
382
|
+
if (fieldLine) {
|
|
383
|
+
lines.push(` ${fieldLine}`);
|
|
384
|
+
}
|
|
374
385
|
}
|
|
375
386
|
}
|
|
376
387
|
}
|
|
@@ -383,6 +394,21 @@ export class TypeScriptGenerator extends BaseGenerator {
|
|
|
383
394
|
capitalizeFirst(str) {
|
|
384
395
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
385
396
|
}
|
|
397
|
+
/**
|
|
398
|
+
* Generate field lines (handles polymorphic fields by expanding them)
|
|
399
|
+
*/
|
|
400
|
+
generateFieldLines(fieldName, field) {
|
|
401
|
+
// Check if this field has choices (polymorphic declaration field)
|
|
402
|
+
if ("choices" in field && field.choices && Array.isArray(field.choices)) {
|
|
403
|
+
// Skip declaration fields - the actual instance fields are generated separately
|
|
404
|
+
// Declaration fields like `{"choices": ["deceasedBoolean", "deceasedDateTime"]}`
|
|
405
|
+
// are just metadata and shouldn't be rendered as actual TypeScript fields
|
|
406
|
+
return [];
|
|
407
|
+
}
|
|
408
|
+
// For all other fields (including polymorphic instance fields with choiceOf), generate normally
|
|
409
|
+
const fieldLine = this.generateFieldLine(fieldName, field);
|
|
410
|
+
return fieldLine ? [fieldLine] : [];
|
|
411
|
+
}
|
|
386
412
|
/**
|
|
387
413
|
* Generate a single field line
|
|
388
414
|
*/
|