@@ -488,14 +488,22 @@ const generateFactoryMethods = (
488488 }
489489 w . line ( ) ;
490490 const extensionVar = extSliceField ? "extensionWithDefaults" : "resolvedExtensions" ;
491+ const hasMetaParam = allFields . some ( ( f ) => f . name === "meta" ) ;
491492 w . curlyBlock ( [ `const resource: ${ tsBaseResourceName } =` ] , ( ) => {
492493 for ( const f of allFields ) {
493494 if ( f . name === "extension" ) continue ;
495+ if ( f . name === "meta" && hasMeta ) continue ;
494496 w . line ( `${ f . name } : ${ f . value } ,` ) ;
495497 }
496498 w . line ( `extension: ${ extensionVar } ,` ) ;
497499 if ( hasMeta ) {
498- w . line ( `meta: { profile: [${ profileClassName } .canonicalUrl] },` ) ;
500+ if ( hasMetaParam ) {
501+ w . line (
502+ `meta: { ...args.meta, profile: [...(args.meta?.profile ?? []), ${ profileClassName } .canonicalUrl] },` ,
503+ ) ;
504+ } else {
505+ w . line ( `meta: { profile: [${ profileClassName } .canonicalUrl] },` ) ;
506+ }
499507 }
500508 } ) ;
501509
@@ -530,12 +538,20 @@ const generateFactoryMethods = (
530538 if ( isPrimitiveIdentifier ( flatProfile . base ) ) {
531539 w . lineSM ( `const resource = undefined as unknown as ${ tsBaseResourceName } ` ) ;
532540 } else {
541+ const hasMetaParam = allFields . some ( ( f ) => f . name === "meta" ) ;
533542 w . curlyBlock ( [ `const resource: ${ tsBaseResourceName } =` ] , ( ) => {
534543 for ( const f of allFields ) {
544+ if ( f . name === "meta" && hasMeta ) continue ;
535545 w . line ( `${ f . name } : ${ f . value } ,` ) ;
536546 }
537547 if ( hasMeta ) {
538- w . line ( `meta: { profile: [${ profileClassName } .canonicalUrl] },` ) ;
548+ if ( hasMetaParam ) {
549+ w . line (
550+ `meta: { ...args.meta, profile: [...(args.meta?.profile ?? []), ${ profileClassName } .canonicalUrl] },` ,
551+ ) ;
552+ } else {
553+ w . line ( `meta: { profile: [${ profileClassName } .canonicalUrl] },` ) ;
554+ }
539555 }
540556 } ) ;
541557 }
0 commit comments