@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":"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"}
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 fieldLine = this.generateFieldLine(fieldName, field);
231
- if (fieldLine) {
232
- lines.push(` ${fieldLine}`);
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 fieldLine = this.generateFieldLine(fieldName, field);
294
- if (fieldLine) {
295
- lines.push(` ${fieldLine}`);
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 fieldLine = this.generateFieldLine(fieldName, field);
372
- if (fieldLine) {
373
- lines.push(` ${fieldLine}`);
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
  */