@brandlift/payload-loggs 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/core/automation/tasks/cleanup/cleanup.ts"],"sourcesContent":["import type { CollectionConfig, TaskConfig } from 'payload';\n\nimport type { PluginConfig } from '../../../../types/config.js';\n\nexport const DEFAULT_OLDER_THAN = 2592000000; // 30 days (30 * 24 * 60 * 60 * 1000)\nexport const DEFAULT_CRON_TIME = '1 0 * * *'; // At 00:01 AM daily\nexport const DEFAULT_QUEUE_NAME = 'payload-loggs-queue'; // default queue name\nexport const CLEANUP_TASK_SLUG = 'cleanup-site-activity-log';\nexport const CLEANUP_TASK_LABEL = 'payload loggs - cleanup site activities';\n\ntype CleanupLogsTaskParams = {\n pluginConfig: PluginConfig;\n internalCollectionConfig: CollectionConfig;\n};\nexport const cleanupLogsTask = (params: CleanupLogsTaskParams): TaskConfig<typeof CLEANUP_TASK_SLUG> => {\n const cronTime = params.pluginConfig.automation?.logCleanup?.cronTime ?? DEFAULT_CRON_TIME;\n const queueName = params.pluginConfig.automation?.logCleanup?.queueName ?? DEFAULT_QUEUE_NAME;\n const olderThan = params.pluginConfig.automation?.logCleanup?.olderThan ?? DEFAULT_OLDER_THAN;\n\n return {\n slug: CLEANUP_TASK_SLUG,\n label: CLEANUP_TASK_LABEL,\n schedule: [{ cron: cronTime, queue: queueName }],\n handler: async ({ req }) => {\n const millisecondsAgo = new Date(Date.now() - olderThan);\n try {\n await req.payload.delete({\n collection: params.internalCollectionConfig.slug,\n where: { createdAt: { less_than: millisecondsAgo.toISOString() } },\n });\n }\n // eslint-disable-next-line unused-imports/no-unused-vars\n catch (error) {\n req.payload.logger.error(`Error while cleaning old logs — task: ${CLEANUP_TASK_SLUG}`);\n }\n\n return { output: {} };\n },\n };\n};\n"],"names":["DEFAULT_OLDER_THAN","DEFAULT_CRON_TIME","DEFAULT_QUEUE_NAME","CLEANUP_TASK_SLUG","CLEANUP_TASK_LABEL","cleanupLogsTask","params","cronTime","pluginConfig","automation","logCleanup","queueName","olderThan","slug","label","schedule","cron","queue","handler","req","millisecondsAgo","Date","now","payload","delete","collection","internalCollectionConfig","where","createdAt","less_than","toISOString","error","logger","output"],"mappings":"AAIA,OAAO,MAAMA,qBAAqB,WAAW,CAAC,qCAAqC;AACnF,OAAO,MAAMC,oBAAoB,YAAY,CAAC,oBAAoB;AAClE,OAAO,MAAMC,qBAAqB,sBAAsB,CAAC,qBAAqB;AAC9E,OAAO,MAAMC,oBAAoB,4BAA4B;AAC7D,OAAO,MAAMC,qBAAqB,0CAA0C;AAM5E,OAAO,MAAMC,kBAAkB,CAACC;IAC9B,MAAMC,WAAWD,OAAOE,YAAY,CAACC,UAAU,EAAEC,YAAYH,YAAYN;IACzE,MAAMU,YAAYL,OAAOE,YAAY,CAACC,UAAU,EAAEC,YAAYC,aAAaT;IAC3E,MAAMU,YAAYN,OAAOE,YAAY,CAACC,UAAU,EAAEC,YAAYE,aAAaZ;IAE3E,OAAO;QACLa,MAAMV;QACNW,OAAOV;QACPW,UAAU;YAAC;gBAAEC,MAAMT;gBAAUU,OAAON;YAAU;SAAE;QAChDO,SAAS,OAAO,EAAEC,GAAG,EAAE;YACrB,MAAMC,kBAAkB,IAAIC,KAAKA,KAAKC,GAAG,KAAKV;YAC9C,IAAI;gBACF,MAAMO,IAAII,OAAO,CAACC,MAAM,CAAC;oBACvBC,YAAYnB,OAAOoB,wBAAwB,CAACb,IAAI;oBAChDc,OAAO;wBAAEC,WAAW;4BAAEC,WAAWT,gBAAgBU,WAAW;wBAAG;oBAAE;gBACnE;YACF,EACA,yDAAyD;YACzD,OAAOC,OAAO;gBACZZ,IAAII,OAAO,CAACS,MAAM,CAACD,KAAK,CAAC,CAAC,sCAAsC,EAAE5B,mBAAmB;YACvF;YAEA,OAAO;gBAAE8B,QAAQ,CAAC;YAAE;QACtB;IACF;AACF,EAAE"}
1
+ {"version":3,"sources":["../../../../../src/core/automation/tasks/cleanup/cleanup.ts"],"sourcesContent":["import type { CollectionConfig, TaskConfig } from 'payload';\n\nimport type { PluginConfig } from '../../../../types/config.js';\n\nexport const DEFAULT_OLDER_THAN = 2592000000; // 30 days (30 * 24 * 60 * 60 * 1000)\nexport const DEFAULT_CRON_TIME = '1 0 * * *'; // At 00:01 AM daily\nexport const DEFAULT_QUEUE_NAME = 'payload-loggs-queue'; // default queue name\nexport const CLEANUP_TASK_SLUG = 'cleanup-site-activity-log';\nexport const CLEANUP_TASK_LABEL = 'payload loggs - cleanup site activities';\n\ntype CleanupLogsTaskParams = {\n pluginConfig: PluginConfig;\n internalCollectionConfig: CollectionConfig;\n};\nexport const cleanupLogsTask = (params: CleanupLogsTaskParams): TaskConfig<typeof CLEANUP_TASK_SLUG> => {\n const cronTime = params.pluginConfig.automation?.logCleanup?.cronTime ?? DEFAULT_CRON_TIME;\n const queueName = params.pluginConfig.automation?.logCleanup?.queueName ?? DEFAULT_QUEUE_NAME;\n const olderThan = params.pluginConfig.automation?.logCleanup?.olderThan ?? DEFAULT_OLDER_THAN;\n\n return {\n slug: CLEANUP_TASK_SLUG,\n label: CLEANUP_TASK_LABEL,\n schedule: [{ cron: cronTime, queue: queueName }],\n handler: async ({ req }) => {\n const millisecondsAgo = new Date(Date.now() - olderThan);\n try {\n await req.payload.delete({\n collection: params.internalCollectionConfig.slug as any,\n where: { createdAt: { less_than: millisecondsAgo.toISOString() } },\n });\n }\n // eslint-disable-next-line unused-imports/no-unused-vars\n catch (error) {\n req.payload.logger.error(`Error while cleaning old logs — task: ${CLEANUP_TASK_SLUG}`);\n }\n\n return { output: {} };\n },\n };\n};\n"],"names":["DEFAULT_OLDER_THAN","DEFAULT_CRON_TIME","DEFAULT_QUEUE_NAME","CLEANUP_TASK_SLUG","CLEANUP_TASK_LABEL","cleanupLogsTask","params","cronTime","pluginConfig","automation","logCleanup","queueName","olderThan","slug","label","schedule","cron","queue","handler","req","millisecondsAgo","Date","now","payload","delete","collection","internalCollectionConfig","where","createdAt","less_than","toISOString","error","logger","output"],"mappings":"AAIA,OAAO,MAAMA,qBAAqB,WAAW,CAAC,qCAAqC;AACnF,OAAO,MAAMC,oBAAoB,YAAY,CAAC,oBAAoB;AAClE,OAAO,MAAMC,qBAAqB,sBAAsB,CAAC,qBAAqB;AAC9E,OAAO,MAAMC,oBAAoB,4BAA4B;AAC7D,OAAO,MAAMC,qBAAqB,0CAA0C;AAM5E,OAAO,MAAMC,kBAAkB,CAACC;IAC9B,MAAMC,WAAWD,OAAOE,YAAY,CAACC,UAAU,EAAEC,YAAYH,YAAYN;IACzE,MAAMU,YAAYL,OAAOE,YAAY,CAACC,UAAU,EAAEC,YAAYC,aAAaT;IAC3E,MAAMU,YAAYN,OAAOE,YAAY,CAACC,UAAU,EAAEC,YAAYE,aAAaZ;IAE3E,OAAO;QACLa,MAAMV;QACNW,OAAOV;QACPW,UAAU;YAAC;gBAAEC,MAAMT;gBAAUU,OAAON;YAAU;SAAE;QAChDO,SAAS,OAAO,EAAEC,GAAG,EAAE;YACrB,MAAMC,kBAAkB,IAAIC,KAAKA,KAAKC,GAAG,KAAKV;YAC9C,IAAI;gBACF,MAAMO,IAAII,OAAO,CAACC,MAAM,CAAC;oBACvBC,YAAYnB,OAAOoB,wBAAwB,CAACb,IAAI;oBAChDc,OAAO;wBAAEC,WAAW;4BAAEC,WAAWT,gBAAgBU,WAAW;wBAAG;oBAAE;gBACnE;YACF,EACA,yDAAyD;YACzD,OAAOC,OAAO;gBACZZ,IAAII,OAAO,CAACS,MAAM,CAACD,KAAK,CAAC,CAAC,sCAAsC,EAAE5B,mBAAmB;YACvF;YAEA,OAAO;gBAAE8B,QAAQ,CAAC;YAAE;QACtB;IACF;AACF,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/core/buffer/bufferManager.ts"],"sourcesContent":["import type { CollectionConfig, Payload } from 'payload';\n\nimport type { BufferConfig } from './types.js';\nimport { onEventLog } from './../../core/events/emitter.js';\nimport type { SiteActivityLog } from '../../collections/siteActivity.js';\n\nexport const DEFAULT_INTERVAL_BUFFER = 10000 as NonNullable<BufferConfig['time']>;\nexport const DEFAULT_BUFFER_SIZE = 10 as NonNullable<BufferConfig['size']>;\nexport const DEFAULT_BUFFER_STRATEGY = 'time' as NonNullable<BufferConfig['flushStrategy']>;\n\nexport const bufferStore: SiteActivityLog[] = [];\n\ntype FlushBufferParams = {\n payload: Payload;\n internalCollectionConfig: CollectionConfig;\n};\n\nconst flushBuffer = async (params: FlushBufferParams) => {\n const logsToInsert = [...bufferStore];\n bufferStore.length = 0;\n await Promise.all(\n logsToInsert.map(log =>\n params.payload.create({\n collection: params.internalCollectionConfig?.slug,\n data: log,\n }),\n ),\n );\n};\n\ntype BufferConfigParams = {\n payload: Payload;\n bufferConfig?: BufferConfig;\n internalCollectionConfig: CollectionConfig;\n};\n\nexport const bufferManager = (params: BufferConfigParams) => {\n const bufferConfig = params.bufferConfig;\n const size = bufferConfig?.size ?? DEFAULT_BUFFER_SIZE;\n const interval = bufferConfig?.time ?? DEFAULT_INTERVAL_BUFFER;\n const flushStrategy = bufferConfig?.flushStrategy ?? DEFAULT_BUFFER_STRATEGY;\n\n onEventLog('logGenerated', async (log: SiteActivityLog) => {\n bufferStore.push(log);\n\n if (flushStrategy === 'size') {\n if (bufferStore.length >= size) {\n await flushBuffer(params);\n }\n }\n else if (flushStrategy === 'realtime') {\n await flushBuffer(params);\n }\n });\n\n if (flushStrategy === 'time') {\n // Every few seconds, empty the buffer (even if it's not full)\n setInterval(async () => {\n if (bufferStore.length > 0) {\n await flushBuffer(params);\n }\n }, interval);\n }\n};\n"],"names":["onEventLog","DEFAULT_INTERVAL_BUFFER","DEFAULT_BUFFER_SIZE","DEFAULT_BUFFER_STRATEGY","bufferStore","flushBuffer","params","logsToInsert","length","Promise","all","map","log","payload","create","collection","internalCollectionConfig","slug","data","bufferManager","bufferConfig","size","interval","time","flushStrategy","push","setInterval"],"mappings":"AAGA,SAASA,UAAU,QAAQ,iCAAiC;AAG5D,OAAO,MAAMC,0BAA0B,MAA2C;AAClF,OAAO,MAAMC,sBAAsB,GAAwC;AAC3E,OAAO,MAAMC,0BAA0B,OAAqD;AAE5F,OAAO,MAAMC,cAAiC,EAAE,CAAC;AAOjD,MAAMC,cAAc,OAAOC;IACzB,MAAMC,eAAe;WAAIH;KAAY;IACrCA,YAAYI,MAAM,GAAG;IACrB,MAAMC,QAAQC,GAAG,CACfH,aAAaI,GAAG,CAACC,CAAAA,MACfN,OAAOO,OAAO,CAACC,MAAM,CAAC;YACpBC,YAAYT,OAAOU,wBAAwB,EAAEC;YAC7CC,MAAMN;QACR;AAGN;AAQA,OAAO,MAAMO,gBAAgB,CAACb;IAC5B,MAAMc,eAAed,OAAOc,YAAY;IACxC,MAAMC,OAAOD,cAAcC,QAAQnB;IACnC,MAAMoB,WAAWF,cAAcG,QAAQtB;IACvC,MAAMuB,gBAAgBJ,cAAcI,iBAAiBrB;IAErDH,WAAW,gBAAgB,OAAOY;QAChCR,YAAYqB,IAAI,CAACb;QAEjB,IAAIY,kBAAkB,QAAQ;YAC5B,IAAIpB,YAAYI,MAAM,IAAIa,MAAM;gBAC9B,MAAMhB,YAAYC;YACpB;QACF,OACK,IAAIkB,kBAAkB,YAAY;YACrC,MAAMnB,YAAYC;QACpB;IACF;IAEA,IAAIkB,kBAAkB,QAAQ;QAC5B,8DAA8D;QAC9DE,YAAY;YACV,IAAItB,YAAYI,MAAM,GAAG,GAAG;gBAC1B,MAAMH,YAAYC;YACpB;QACF,GAAGgB;IACL;AACF,EAAE"}
1
+ {"version":3,"sources":["../../../src/core/buffer/bufferManager.ts"],"sourcesContent":["import type { CollectionConfig, Payload } from 'payload';\n\nimport type { BufferConfig } from './types.js';\nimport { onEventLog } from './../../core/events/emitter.js';\nimport type { SiteActivityLog } from '../../collections/siteActivity.js';\n\nexport const DEFAULT_INTERVAL_BUFFER = 10000 as NonNullable<BufferConfig['time']>;\nexport const DEFAULT_BUFFER_SIZE = 10 as NonNullable<BufferConfig['size']>;\nexport const DEFAULT_BUFFER_STRATEGY = 'time' as NonNullable<BufferConfig['flushStrategy']>;\n\nexport const bufferStore: SiteActivityLog[] = [];\n\ntype FlushBufferParams = {\n payload: Payload;\n internalCollectionConfig: CollectionConfig;\n};\n\nconst flushBuffer = async (params: FlushBufferParams) => {\n const logsToInsert = [...bufferStore];\n bufferStore.length = 0;\n await Promise.all(\n logsToInsert.map(log =>\n params.payload.create({\n collection: params.internalCollectionConfig?.slug as any,\n data: log,\n }),\n ),\n );\n};\n\ntype BufferConfigParams = {\n payload: Payload;\n bufferConfig?: BufferConfig;\n internalCollectionConfig: CollectionConfig;\n};\n\nexport const bufferManager = (params: BufferConfigParams) => {\n const bufferConfig = params.bufferConfig;\n const size = bufferConfig?.size ?? DEFAULT_BUFFER_SIZE;\n const interval = bufferConfig?.time ?? DEFAULT_INTERVAL_BUFFER;\n const flushStrategy = bufferConfig?.flushStrategy ?? DEFAULT_BUFFER_STRATEGY;\n\n onEventLog('logGenerated', async (log: SiteActivityLog) => {\n bufferStore.push(log);\n\n if (flushStrategy === 'size') {\n if (bufferStore.length >= size) {\n await flushBuffer(params);\n }\n }\n else if (flushStrategy === 'realtime') {\n await flushBuffer(params);\n }\n });\n\n if (flushStrategy === 'time') {\n // Every few seconds, empty the buffer (even if it's not full)\n setInterval(async () => {\n if (bufferStore.length > 0) {\n await flushBuffer(params);\n }\n }, interval);\n }\n};\n"],"names":["onEventLog","DEFAULT_INTERVAL_BUFFER","DEFAULT_BUFFER_SIZE","DEFAULT_BUFFER_STRATEGY","bufferStore","flushBuffer","params","logsToInsert","length","Promise","all","map","log","payload","create","collection","internalCollectionConfig","slug","data","bufferManager","bufferConfig","size","interval","time","flushStrategy","push","setInterval"],"mappings":"AAGA,SAASA,UAAU,QAAQ,iCAAiC;AAG5D,OAAO,MAAMC,0BAA0B,MAA2C;AAClF,OAAO,MAAMC,sBAAsB,GAAwC;AAC3E,OAAO,MAAMC,0BAA0B,OAAqD;AAE5F,OAAO,MAAMC,cAAiC,EAAE,CAAC;AAOjD,MAAMC,cAAc,OAAOC;IACzB,MAAMC,eAAe;WAAIH;KAAY;IACrCA,YAAYI,MAAM,GAAG;IACrB,MAAMC,QAAQC,GAAG,CACfH,aAAaI,GAAG,CAACC,CAAAA,MACfN,OAAOO,OAAO,CAACC,MAAM,CAAC;YACpBC,YAAYT,OAAOU,wBAAwB,EAAEC;YAC7CC,MAAMN;QACR;AAGN;AAQA,OAAO,MAAMO,gBAAgB,CAACb;IAC5B,MAAMc,eAAed,OAAOc,YAAY;IACxC,MAAMC,OAAOD,cAAcC,QAAQnB;IACnC,MAAMoB,WAAWF,cAAcG,QAAQtB;IACvC,MAAMuB,gBAAgBJ,cAAcI,iBAAiBrB;IAErDH,WAAW,gBAAgB,OAAOY;QAChCR,YAAYqB,IAAI,CAACb;QAEjB,IAAIY,kBAAkB,QAAQ;YAC5B,IAAIpB,YAAYI,MAAM,IAAIa,MAAM;gBAC9B,MAAMhB,YAAYC;YACpB;QACF,OACK,IAAIkB,kBAAkB,YAAY;YACrC,MAAMnB,YAAYC;QACpB;IACF;IAEA,IAAIkB,kBAAkB,QAAQ;QAC5B,8DAA8D;QAC9DE,YAAY;YACV,IAAItB,YAAYI,MAAM,GAAG,GAAG;gBAC1B,MAAMH,YAAYC;YACpB;QACF,GAAGgB;IACL;AACF,EAAE"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@brandlift/payload-loggs",
3
3
  "type": "module",
4
- "version": "1.0.1",
4
+ "version": "1.0.3",
5
5
  "packageManager": "pnpm@10.2.0",
6
6
  "description": "Zero-config activity feed, audit logging, and security tracking plugin for Payload CMS",
7
7
  "author": {
@@ -34,16 +34,6 @@
34
34
  "types": "./dist/index.d.ts",
35
35
  "import": "./dist/index.js",
36
36
  "default": "./dist/index.js"
37
- },
38
- "./client": {
39
- "types": "./dist/exports/client.d.ts",
40
- "import": "./dist/exports/client.js",
41
- "default": "./dist/exports/client.js"
42
- },
43
- "./rsc": {
44
- "types": "./dist/exports/rsc.d.ts",
45
- "import": "./dist/exports/rsc.js",
46
- "default": "./dist/exports/rsc.js"
47
37
  }
48
38
  },
49
39
  "main": "./dist/index.js",
@@ -87,6 +77,7 @@
87
77
  },
88
78
  "devDependencies": {
89
79
  "@antfu/eslint-config": "^9.1.0",
80
+ "@brandlift/payload-loggs": "^1.0.1",
90
81
  "@commitlint/cli": "^21.2.1",
91
82
  "@commitlint/config-conventional": "^21.2.0",
92
83
  "@eslint-react/eslint-plugin": "^5.17.1",
@@ -133,19 +124,9 @@
133
124
  "access": "public",
134
125
  "exports": {
135
126
  ".": {
136
- "import": "./dist/index.js",
137
127
  "types": "./dist/index.d.ts",
128
+ "import": "./dist/index.js",
138
129
  "default": "./dist/index.js"
139
- },
140
- "./client": {
141
- "import": "./dist/exports/client.js",
142
- "types": "./dist/exports/client.d.ts",
143
- "default": "./dist/exports/client.js"
144
- },
145
- "./rsc": {
146
- "import": "./dist/exports/rsc.js",
147
- "types": "./dist/exports/rsc.d.ts",
148
- "default": "./dist/exports/rsc.js"
149
130
  }
150
131
  },
151
132
  "main": "./dist/index.js",