{"version":3,"file":"index.mjs","sources":["../src/content-types/audit-log/schema.ts","../src/content-types/audit-log/index.ts","../src/index.ts"],"sourcesContent":["export default {\n  kind: 'collectionType',\n  collectionName: 'strapi_audit_logs',\n  info: {\n    singularName: 'audit-log',\n    pluralName: 'audit-logs',\n    displayName: 'Audit Log',\n  },\n  options: {\n    draftAndPublish: false,\n    timestamps: false,\n  },\n  pluginOptions: {\n    'content-manager': {\n      visible: false,\n    },\n    'content-type-builder': {\n      visible: false,\n    },\n  },\n  attributes: {\n    action: {\n      type: 'string',\n      required: true,\n    },\n    date: {\n      type: 'datetime',\n      required: true,\n    },\n    user: {\n      type: 'relation',\n      relation: 'oneToOne',\n      target: 'admin::user',\n    },\n    payload: {\n      type: 'json',\n    },\n  },\n};\n","import schema from './schema';\n\nexport default {\n  schema,\n};\n","import type { Strapi } from '@strapi/types';\nimport auditLogContentType from './content-types/audit-log';\n\ninterface Event {\n  action: string;\n  date: Date;\n  userId: string | number;\n  payload: Record<string, unknown>;\n}\n\ninterface Log extends Omit<Event, 'userId'> {\n  user: string | number;\n}\n\nexport default {\n  async register({ strapi }: { strapi: Strapi }) {\n    const contentTypes = strapi.container.get('content-types');\n    if (!contentTypes.keys().includes('admin::audit-log')) {\n      strapi.container.get('content-types').add('admin::', { 'audit-log': auditLogContentType });\n    }\n\n    // Return the provider object\n    return {\n      async saveEvent(event: Event) {\n        const { userId, ...rest } = event;\n\n        const auditLog: Log = { ...rest, user: userId };\n\n        // Save to database\n        await strapi.entityService?.create('admin::audit-log', { data: auditLog });\n\n        return this;\n      },\n\n      findMany(query: Record<string, unknown>) {\n        return strapi.entityService?.findPage('admin::audit-log', {\n          populate: ['user'],\n          fields: ['action', 'date', 'payload'],\n          ...query,\n        });\n      },\n\n      findOne(id: `${number}` | number) {\n        return strapi.entityService?.findOne('admin::audit-log', id, {\n          populate: ['user'],\n          fields: ['action', 'date', 'payload'],\n        });\n      },\n\n      deleteExpiredEvents(expirationDate: Date) {\n        return strapi.entityService?.deleteMany('admin::audit-log', {\n          filters: {\n            date: {\n              $lt: expirationDate.toISOString(),\n            },\n          },\n        });\n      },\n    };\n  },\n};\n"],"names":[],"mappings":"AAAA,MAAe,SAAA;AAAA,EACb,MAAM;AAAA,EACN,gBAAgB;AAAA,EAChB,MAAM;AAAA,IACJ,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,aAAa;AAAA,EACf;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB;AAAA,IACjB,YAAY;AAAA,EACd;AAAA,EACA,eAAe;AAAA,IACb,mBAAmB;AAAA,MACjB,SAAS;AAAA,IACX;AAAA,IACA,wBAAwB;AAAA,MACtB,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,YAAY;AAAA,IACV,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,IACZ;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,UAAU;AAAA,MACV,QAAQ;AAAA,IACV;AAAA,IACA,SAAS;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AACF;ACpCA,MAAe,sBAAA;AAAA,EACb;AACF;ACUA,MAAe,QAAA;AAAA,EACb,MAAM,SAAS,EAAE,UAA8B;AAC7C,UAAM,eAAe,OAAO,UAAU,IAAI,eAAe;AACzD,QAAI,CAAC,aAAa,KAAO,EAAA,SAAS,kBAAkB,GAAG;AAC9C,aAAA,UAAU,IAAI,eAAe,EAAE,IAAI,WAAW,EAAE,aAAa,oBAAA,CAAqB;AAAA,IAC3F;AAGO,WAAA;AAAA,MACL,MAAM,UAAU,OAAc;AAC5B,cAAM,EAAE,QAAQ,GAAG,KAAA,IAAS;AAE5B,cAAM,WAAgB,EAAE,GAAG,MAAM,MAAM,OAAO;AAG9C,cAAM,OAAO,eAAe,OAAO,oBAAoB,EAAE,MAAM,UAAU;AAElE,eAAA;AAAA,MACT;AAAA,MAEA,SAAS,OAAgC;AAChC,eAAA,OAAO,eAAe,SAAS,oBAAoB;AAAA,UACxD,UAAU,CAAC,MAAM;AAAA,UACjB,QAAQ,CAAC,UAAU,QAAQ,SAAS;AAAA,UACpC,GAAG;AAAA,QAAA,CACJ;AAAA,MACH;AAAA,MAEA,QAAQ,IAA0B;AAChC,eAAO,OAAO,eAAe,QAAQ,oBAAoB,IAAI;AAAA,UAC3D,UAAU,CAAC,MAAM;AAAA,UACjB,QAAQ,CAAC,UAAU,QAAQ,SAAS;AAAA,QAAA,CACrC;AAAA,MACH;AAAA,MAEA,oBAAoB,gBAAsB;AACjC,eAAA,OAAO,eAAe,WAAW,oBAAoB;AAAA,UAC1D,SAAS;AAAA,YACP,MAAM;AAAA,cACJ,KAAK,eAAe,YAAY;AAAA,YAClC;AAAA,UACF;AAAA,QAAA,CACD;AAAA,MACH;AAAA,IAAA;AAAA,EAEJ;AACF;"}