{"version":3,"file":"attachment-serializer.cjs","sources":["../../../src/models/serializers/attachment-serializer.ts"],"sourcesContent":["import { Document } from 'mongoose';\n\nimport type { IAttachment, IUser } from '~/interfaces';\n\nimport { isPopulated, isRef, type Ref } from '../../interfaces/common';\nimport {\n  type IUserSerializedSecurely,\n  serializeUserSecurely,\n} from './user-serializer';\n\nexport type IAttachmentSerializedSecurely<A extends IAttachment> = Omit<\n  A,\n  'creator'\n> & { creator?: Ref<IUserSerializedSecurely<IUser>> };\n\nconst omitInsecureAttributes = <A extends IAttachment>(\n  attachment: A,\n): IAttachmentSerializedSecurely<A> => {\n  const leanDoc =\n    attachment instanceof Document ? attachment.toObject<A>() : attachment;\n\n  const { creator, ...rest } = leanDoc;\n\n  const secureCreator =\n    creator == null ? undefined : serializeUserSecurely(creator);\n\n  return {\n    creator: secureCreator,\n    ...rest,\n  };\n};\n\nexport function serializeAttachmentSecurely<A extends IAttachment>(\n  attachment?: A,\n): IAttachmentSerializedSecurely<A>;\nexport function serializeAttachmentSecurely<A extends IAttachment>(\n  attachment?: Ref<A>,\n): Ref<IAttachmentSerializedSecurely<A>>;\nexport function serializeAttachmentSecurely<A extends IAttachment>(\n  attachment?: A | Ref<A>,\n):\n  | undefined\n  | IAttachmentSerializedSecurely<A>\n  | Ref<IAttachmentSerializedSecurely<A>> {\n  if (attachment == null) return attachment;\n\n  if (isRef(attachment) && !isPopulated(attachment)) return attachment;\n\n  return omitInsecureAttributes(attachment);\n}\n"],"names":["omitInsecureAttributes","attachment","leanDoc","Document","creator","rest","serializeUserSecurely","serializeAttachmentSecurely","isRef","isPopulated"],"mappings":"wLAeMA,EACJC,GACqC,CACrC,MAAMC,EACJD,aAAsBE,EAAAA,SAAWF,EAAW,SAAgB,EAAAA,EAExD,CAAE,QAAAG,EAAS,GAAGC,CAAA,EAASH,EAKtB,MAAA,CACL,QAHAE,GAAW,KAAO,OAAYE,EAAAA,sBAAsBF,CAAO,EAI3D,GAAGC,CACL,CACF,EAQO,SAASE,EACdN,EAIwC,CAGxC,OAFIA,GAAc,MAEdO,EAAAA,MAAMP,CAAU,GAAK,CAACQ,EAAAA,YAAYR,CAAU,EAAUA,EAEnDD,EAAuBC,CAAU,CAC1C"}