{"version":3,"file":"transform-qQl1fxH9.mjs","names":[],"sources":["../src/lib/transform.ts"],"sourcesContent":["import { parseISO } from 'date-fns';\n\ninterface RawCreatedObject {\n  createdAt: string;\n}\n\ntype CreatedObject<Raw> = Omit<Raw, 'createdAt'> & {\n  createdAt: Date;\n};\n\n/**\n * Transform an object with `createdAt` as a string, to an object with `createdAt` as a Date\n *\n * @param raw Original object\n *\n * @returns Copy of object\n */\nexport const transformCreated = <\n  Raw extends RawCreatedObject = RawCreatedObject,\n>(\n  raw: Raw\n): CreatedObject<Raw> => ({\n  ...raw,\n  createdAt: parseISO(raw.createdAt),\n});\n\ninterface RawUpdatedObject {\n  updatedAt?: string | null;\n}\n\ntype UpdatedObject<Raw> = Omit<Raw, 'updatedAt'> & {\n  updatedAt?: Date;\n};\n\n/**\n * Transform an object with `updatedAt` as a string, to an object with `updatedAt` as a Date\n *\n * @param raw Original object\n *\n * @returns Copy of object\n */\nexport const transformUpdated = <\n  Raw extends RawUpdatedObject = RawUpdatedObject,\n>(\n  raw: Raw\n): UpdatedObject<Raw> => ({\n  ...raw,\n  updatedAt: raw.updatedAt ? parseISO(raw.updatedAt) : undefined,\n});\n\ntype RawCreatedUpdatedObject = RawCreatedObject & RawUpdatedObject;\n\ntype CreatedUpdatedObject<Raw> = CreatedObject<Raw> & UpdatedObject<Raw>;\n\n/**\n * Transform an object with `createdAt` & `updatedAt` as a string,\n * to an object with `createdAt` & `updatedAt` as a Date\n *\n * @param raw Original object\n *\n * @returns Copy of object\n */\nexport const transformCreatedUpdated = <Raw extends RawCreatedUpdatedObject>(\n  raw: Raw\n): CreatedUpdatedObject<Raw> => {\n  const created = transformCreated(raw);\n  const updated = transformUpdated(raw);\n  return { ...raw, createdAt: created.createdAt, updatedAt: updated.updatedAt };\n};\n"],"mappings":";;;;;;;;;;;AAiBA,MAAa,oBAGX,0CAEG,YACH,WAAW,SAAS,IAAI,UAAU;;;;;;;;AAkBpC,MAAa,oBAGX,0CAEG,YACH,WAAW,IAAI,YAAY,SAAS,IAAI,UAAU,GAAG;;;;;;;;;AAevD,MAAa,2BACX,QAC8B;CAC9B,MAAM,UAAU,iBAAiB,IAAI;CACrC,MAAM,UAAU,iBAAiB,IAAI;AACrC,0CAAY;EAAK,WAAW,QAAQ;EAAW,WAAW,QAAQ"}