(
decl: DataModel | TypeDef,
includeIgnored = false,
seen: Set<DataModel | TypeDef> = new Set(),
)
| 633 | * Gets all fields of a data model or type def, including inherited fields from base models and mixins. |
| 634 | */ |
| 635 | export function getAllFields( |
| 636 | decl: DataModel | TypeDef, |
| 637 | includeIgnored = false, |
| 638 | seen: Set<DataModel | TypeDef> = new Set(), |
| 639 | ): DataField[] { |
| 640 | if (seen.has(decl)) { |
| 641 | return []; |
| 642 | } |
| 643 | seen.add(decl); |
| 644 | |
| 645 | const fields: DataField[] = []; |
| 646 | for (const mixin of decl.mixins) { |
| 647 | if (mixin.ref) { |
| 648 | fields.push(...getAllFields(mixin.ref, includeIgnored, seen)); |
| 649 | } |
| 650 | } |
| 651 | |
| 652 | if (isDataModel(decl) && decl.baseModel) { |
| 653 | if (decl.baseModel.ref) { |
| 654 | fields.push(...getAllFields(decl.baseModel.ref, includeIgnored, seen)); |
| 655 | } |
| 656 | } |
| 657 | |
| 658 | fields.push(...decl.fields.filter((f) => includeIgnored || !hasAttribute(f, '@ignore'))); |
| 659 | return fields; |
| 660 | } |
| 661 | |
| 662 | /** |
| 663 | * Gets all attributes of a data model or type def, including inherited attributes |
no test coverage detected