@siyahbeyaz/strapi-plugin-soft-delete-custom 1.1.0

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.
Files changed (54) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +167 -0
  3. package/dist/admin/src/index.d.ts +5 -0
  4. package/dist/admin/src/index.js +30 -0
  5. package/dist/admin/src/index.js.map +1 -0
  6. package/dist/admin/src/pages/Explorer/index.d.ts +1 -0
  7. package/dist/admin/src/pages/Explorer/index.js +82 -0
  8. package/dist/admin/src/pages/Explorer/index.js.map +1 -0
  9. package/dist/admin/src/pluginId.d.ts +1 -0
  10. package/dist/admin/src/pluginId.js +2 -0
  11. package/dist/admin/src/pluginId.js.map +1 -0
  12. package/dist/server/bootstrap.d.ts +5 -0
  13. package/dist/server/bootstrap.js +48 -0
  14. package/dist/server/bootstrap.js.map +1 -0
  15. package/dist/server/controllers/index.d.ts +10 -0
  16. package/dist/server/controllers/index.js +5 -0
  17. package/dist/server/controllers/index.js.map +1 -0
  18. package/dist/server/controllers/soft-delete-controller.d.ts +9 -0
  19. package/dist/server/controllers/soft-delete-controller.js +58 -0
  20. package/dist/server/controllers/soft-delete-controller.js.map +1 -0
  21. package/dist/server/destroy.d.ts +5 -0
  22. package/dist/server/destroy.js +6 -0
  23. package/dist/server/destroy.js.map +1 -0
  24. package/dist/server/index.d.ts +66 -0
  25. package/dist/server/index.js +22 -0
  26. package/dist/server/index.js.map +1 -0
  27. package/dist/server/migrations/add-soft-delete-fields.d.ts +5 -0
  28. package/dist/server/migrations/add-soft-delete-fields.js +9 -0
  29. package/dist/server/migrations/add-soft-delete-fields.js.map +1 -0
  30. package/dist/server/register.d.ts +5 -0
  31. package/dist/server/register.js +27 -0
  32. package/dist/server/register.js.map +1 -0
  33. package/dist/server/routes/index.d.ts +14 -0
  34. package/dist/server/routes/index.js +32 -0
  35. package/dist/server/routes/index.js.map +1 -0
  36. package/dist/server/services/index.d.ts +26 -0
  37. package/dist/server/services/index.js +9 -0
  38. package/dist/server/services/index.js.map +1 -0
  39. package/dist/server/services/permanent-delete-service.d.ts +8 -0
  40. package/dist/server/services/permanent-delete-service.js +62 -0
  41. package/dist/server/services/permanent-delete-service.js.map +1 -0
  42. package/dist/server/services/restore-service.d.ts +11 -0
  43. package/dist/server/services/restore-service.js +87 -0
  44. package/dist/server/services/restore-service.js.map +1 -0
  45. package/dist/server/services/soft-delete-service.d.ts +22 -0
  46. package/dist/server/services/soft-delete-service.js +269 -0
  47. package/dist/server/services/soft-delete-service.js.map +1 -0
  48. package/dist/strapi-admin.d.ts +2 -0
  49. package/dist/strapi-admin.js +3 -0
  50. package/dist/strapi-admin.js.map +1 -0
  51. package/dist/strapi-server.d.ts +2 -0
  52. package/dist/strapi-server.js +3 -0
  53. package/dist/strapi-server.js.map +1 -0
  54. package/package.json +64 -0
@@ -0,0 +1,27 @@
1
+ export default async ({ strapi }) => {
2
+ // Register permissions
3
+ const actionProvider = strapi.admin?.services?.permission?.actionProvider;
4
+ if (actionProvider) {
5
+ await actionProvider.registerMany([
6
+ {
7
+ section: 'plugins',
8
+ displayName: 'Read soft-deleted items',
9
+ uid: 'read',
10
+ pluginName: 'soft-delete',
11
+ },
12
+ {
13
+ section: 'plugins',
14
+ displayName: 'Restore soft-deleted items',
15
+ uid: 'restore',
16
+ pluginName: 'soft-delete',
17
+ },
18
+ {
19
+ section: 'plugins',
20
+ displayName: 'Permanently delete items',
21
+ uid: 'permanent-delete',
22
+ pluginName: 'soft-delete',
23
+ },
24
+ ]);
25
+ }
26
+ };
27
+ //# sourceMappingURL=register.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/server/register.ts"],"names":[],"mappings":"AAEA,eAAe,KAAK,EAAE,EAAE,MAAM,EAA2B,EAAE,EAAE;IAC3D,uBAAuB;IACvB,MAAM,cAAc,GAAI,MAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC;IAEnF,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,YAAY,CAAC;YAChC;gBACE,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,yBAAyB;gBACtC,GAAG,EAAE,MAAM;gBACX,UAAU,EAAE,aAAa;aAC1B;YACD;gBACE,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,4BAA4B;gBACzC,GAAG,EAAE,SAAS;gBACd,UAAU,EAAE,aAAa;aAC1B;YACD;gBACE,OAAO,EAAE,SAAS;gBAClB,WAAW,EAAE,0BAA0B;gBACvC,GAAG,EAAE,kBAAkB;gBACvB,UAAU,EAAE,aAAa;aAC1B;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,14 @@
1
+ declare const _default: {
2
+ admin: {
3
+ type: string;
4
+ routes: {
5
+ method: string;
6
+ path: string;
7
+ handler: string;
8
+ config: {
9
+ permissions: string[];
10
+ };
11
+ }[];
12
+ };
13
+ };
14
+ export default _default;
@@ -0,0 +1,32 @@
1
+ export default {
2
+ admin: {
3
+ type: 'admin',
4
+ routes: [
5
+ {
6
+ method: 'GET',
7
+ path: '/items',
8
+ handler: 'softDelete.getSoftDeletedItems',
9
+ config: {
10
+ permissions: ['plugin::soft-delete.read'],
11
+ },
12
+ },
13
+ {
14
+ method: 'POST',
15
+ path: '/restore/:uid/:id',
16
+ handler: 'softDelete.restore',
17
+ config: {
18
+ permissions: ['plugin::soft-delete.restore'],
19
+ },
20
+ },
21
+ {
22
+ method: 'POST',
23
+ path: '/permanent/:uid/:id',
24
+ handler: 'softDelete.permanentDelete',
25
+ config: {
26
+ permissions: ['plugin::soft-delete.permanent-delete'],
27
+ },
28
+ },
29
+ ],
30
+ },
31
+ };
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA,eAAe;IACb,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE;YACN;gBACE,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,gCAAgC;gBACzC,MAAM,EAAE;oBACN,WAAW,EAAE,CAAC,0BAA0B,CAAC;iBAC1C;aACF;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,mBAAmB;gBACzB,OAAO,EAAE,oBAAoB;gBAC7B,MAAM,EAAE;oBACN,WAAW,EAAE,CAAC,6BAA6B,CAAC;iBAC7C;aACF;YACD;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,4BAA4B;gBACrC,MAAM,EAAE;oBACN,WAAW,EAAE,CAAC,sCAAsC,CAAC;iBACtD;aACF;SACF;KACF;CACF,CAAC"}
@@ -0,0 +1,26 @@
1
+ declare const _default: {
2
+ softDelete: ({ strapi }: {
3
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
4
+ }) => {
5
+ decorateDbQuery(): void;
6
+ decorateEntityService(): void;
7
+ decorateDocumentService(): void;
8
+ registerLifecycleHooks(): void;
9
+ };
10
+ restore: ({ strapi }: {
11
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
12
+ }) => {
13
+ restore(uid: string, id: string | number): Promise<{
14
+ data: any;
15
+ warnings: never[];
16
+ }>;
17
+ bulkRestore(uid: string, ids: (string | number)[]): Promise<import("@strapi/database/dist/types/index.js").CountResult>;
18
+ };
19
+ permanentDelete: ({ strapi }: {
20
+ strapi: import("@strapi/types/dist/core/strapi.js").Strapi;
21
+ }) => {
22
+ delete(uid: string, id: string | number, params?: any): Promise<any>;
23
+ bulkDelete(uid: string, ids: (string | number)[], params?: any): Promise<any>;
24
+ };
25
+ };
26
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import softDelete from './soft-delete-service.js';
2
+ import restore from './restore-service.js';
3
+ import permanentDelete from './permanent-delete-service.js';
4
+ export default {
5
+ softDelete,
6
+ restore,
7
+ permanentDelete,
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/services/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,0BAA0B,CAAC;AAClD,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAC3C,OAAO,eAAe,MAAM,+BAA+B,CAAC;AAE5D,eAAe;IACb,UAAU;IACV,OAAO;IACP,eAAe;CAChB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Core } from '@strapi/strapi';
2
+ declare const _default: ({ strapi }: {
3
+ strapi: Core.Strapi;
4
+ }) => {
5
+ delete(uid: string, id: string | number, params?: any): Promise<any>;
6
+ bulkDelete(uid: string, ids: (string | number)[], params?: any): Promise<any>;
7
+ };
8
+ export default _default;
@@ -0,0 +1,62 @@
1
+ export default ({ strapi }) => ({
2
+ async delete(uid, id, params = {}) {
3
+ const { confirm } = params;
4
+ if (!confirm) {
5
+ throw new Error('Permanent delete requires confirm: true');
6
+ }
7
+ strapi.log.info(`[Soft Delete] Permanent delete - uid: ${uid}, id: ${id}`);
8
+ // Strapi v5 uses documentId, try to find by documentId first
9
+ let entity = await strapi.db.query(uid).findOne({
10
+ where: {
11
+ documentId: id,
12
+ softDeletedAt: {
13
+ $notNull: true,
14
+ },
15
+ },
16
+ });
17
+ // Fallback to id if documentId search fails
18
+ if (!entity) {
19
+ entity = await strapi.db.query(uid).findOne({
20
+ where: {
21
+ id: id,
22
+ softDeletedAt: {
23
+ $notNull: true,
24
+ },
25
+ },
26
+ });
27
+ }
28
+ if (!entity) {
29
+ strapi.log.error(`[Soft Delete] Entity not found for permanent delete - uid: ${uid}, id: ${id}`);
30
+ throw new Error('Entity not found or not soft-deleted. Only soft-deleted entities can be permanently deleted.');
31
+ }
32
+ strapi.log.info(`[Soft Delete] Found entity for delete with internal id: ${entity.id}`);
33
+ const service = strapi.entityService;
34
+ const originalDelete = service.__originalDelete;
35
+ if (!originalDelete) {
36
+ throw new Error('Soft delete service not properly initialized (missing originalDelete)');
37
+ }
38
+ const ctx = strapi.requestContext.get();
39
+ const user = ctx?.state?.user;
40
+ strapi.log.info(`Soft Delete: Permanently deleting ${uid}:${id} (internal id: ${entity.id}) by user ${user?.id || 'system'}`);
41
+ return originalDelete.call(service, uid, entity.id, params);
42
+ },
43
+ async bulkDelete(uid, ids, params = {}) {
44
+ const { confirm } = params;
45
+ if (!confirm) {
46
+ throw new Error('Permanent delete requires confirm: true');
47
+ }
48
+ const service = strapi.entityService;
49
+ const originalDeleteMany = service.__originalDeleteMany;
50
+ if (!originalDeleteMany) {
51
+ throw new Error('Soft delete service not properly initialized');
52
+ }
53
+ const result = await originalDeleteMany.call(service, uid, {
54
+ filters: {
55
+ id: { $in: ids },
56
+ softDeletedAt: { $notNull: true },
57
+ },
58
+ });
59
+ return result;
60
+ },
61
+ });
62
+ //# sourceMappingURL=permanent-delete-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permanent-delete-service.js","sourceRoot":"","sources":["../../../src/server/services/permanent-delete-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Core } from '@strapi/strapi';
2
+ declare const _default: ({ strapi }: {
3
+ strapi: Core.Strapi;
4
+ }) => {
5
+ restore(uid: string, id: string | number): Promise<{
6
+ data: any;
7
+ warnings: never[];
8
+ }>;
9
+ bulkRestore(uid: string, ids: (string | number)[]): Promise<import("@strapi/database/dist/types").CountResult>;
10
+ };
11
+ export default _default;
@@ -0,0 +1,87 @@
1
+ export default ({ strapi }) => ({
2
+ async restore(uid, id) {
3
+ strapi.log.info(`[Soft Delete] Restore - uid: ${uid}, id: ${id}, type: ${typeof id}`);
4
+ // First, try to find using strapi.db.query with id
5
+ let entity = await strapi.db.query(uid).findOne({
6
+ where: {
7
+ id: id,
8
+ softDeletedAt: {
9
+ $notNull: true,
10
+ },
11
+ },
12
+ });
13
+ strapi.log.info(`[Soft Delete] Search by id result: ${entity ? 'found' : 'not found'}`);
14
+ // If not found, try with documentId
15
+ if (!entity) {
16
+ entity = await strapi.db.query(uid).findOne({
17
+ where: {
18
+ documentId: id,
19
+ softDeletedAt: {
20
+ $notNull: true,
21
+ },
22
+ },
23
+ });
24
+ strapi.log.info(`[Soft Delete] Search by documentId result: ${entity ? 'found' : 'not found'}`);
25
+ }
26
+ // If still not found, try finding all soft-deleted items and match
27
+ if (!entity) {
28
+ strapi.log.info(`[Soft Delete] Trying to find all soft-deleted items to debug...`);
29
+ const allSoftDeleted = await strapi.db.query(uid).findMany({
30
+ where: {
31
+ softDeletedAt: {
32
+ $notNull: true,
33
+ },
34
+ },
35
+ limit: 10,
36
+ });
37
+ strapi.log.info(`[Soft Delete] Found ${allSoftDeleted.length} soft-deleted items`);
38
+ allSoftDeleted.forEach((item) => {
39
+ strapi.log.info(`[Soft Delete] Item - id: ${item.id}, documentId: ${item.documentId}`);
40
+ });
41
+ }
42
+ if (!entity) {
43
+ strapi.log.error(`[Soft Delete] Entity not found - uid: ${uid}, id: ${id}`);
44
+ throw new Error('Entity not found or not soft-deleted');
45
+ }
46
+ strapi.log.info(`[Soft Delete] Found entity - id: ${entity.id}, documentId: ${entity.documentId}`);
47
+ const ctx = strapi.requestContext.get();
48
+ const user = ctx?.state?.user;
49
+ strapi.log.info(`Soft Delete: Restoring ${uid}:${id} (db id: ${entity.id}) by user ${user?.id || 'system'}`);
50
+ const restored = await strapi.db.query(uid).update({
51
+ where: { id: entity.id },
52
+ data: {
53
+ softDeletedAt: null,
54
+ softDeletedById: null,
55
+ softDeletedByType: null,
56
+ },
57
+ });
58
+ return {
59
+ data: restored,
60
+ warnings: [],
61
+ };
62
+ },
63
+ async bulkRestore(uid, ids) {
64
+ if (!ids || ids.length === 0)
65
+ return { count: 0 };
66
+ const ctx = strapi.requestContext.get();
67
+ const user = ctx?.state?.user;
68
+ strapi.log.info(`Soft Delete: Bulk restoring ${ids.length} items in ${uid}`);
69
+ const result = await strapi.db.query(uid).updateMany({
70
+ where: {
71
+ id: {
72
+ $in: ids,
73
+ },
74
+ softDeletedAt: {
75
+ $notNull: true,
76
+ },
77
+ },
78
+ data: {
79
+ softDeletedAt: null,
80
+ softDeletedById: null,
81
+ softDeletedByType: null,
82
+ },
83
+ });
84
+ return result;
85
+ },
86
+ });
87
+ //# sourceMappingURL=restore-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restore-service.js","sourceRoot":"","sources":["../../../src/server/services/restore-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Core } from '@strapi/strapi';
2
+ /**
3
+ * Service to manage soft delete decoration of the Strapi Entity Service.
4
+ */
5
+ declare const _default: ({ strapi }: {
6
+ strapi: Core.Strapi;
7
+ }) => {
8
+ /**
9
+ * Decorates DB Query methods to catch ALL operations at the lowest level
10
+ */
11
+ decorateDbQuery(): void;
12
+ /**
13
+ * Decorates the entityService methods
14
+ */
15
+ decorateEntityService(): void;
16
+ /**
17
+ * Decorates the Document Service for Strapi v5+ Content Manager compatibility
18
+ */
19
+ decorateDocumentService(): void;
20
+ registerLifecycleHooks(): void;
21
+ };
22
+ export default _default;
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Service to manage soft delete decoration of the Strapi Entity Service.
3
+ */
4
+ export default ({ strapi }) => ({
5
+ /**
6
+ * Decorates DB Query methods to catch ALL operations at the lowest level
7
+ */
8
+ decorateDbQuery() {
9
+ const originalQuery = strapi.db.query.bind(strapi.db);
10
+ strapi.db.query = (uid) => {
11
+ const queryBuilder = originalQuery(uid);
12
+ const model = strapi.getModel(uid);
13
+ const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
14
+ if (!hasSoftDelete) {
15
+ return queryBuilder;
16
+ }
17
+ // Store originals
18
+ const originalDelete = queryBuilder.delete;
19
+ const originalDeleteMany = queryBuilder.deleteMany;
20
+ const originalFindOne = queryBuilder.findOne;
21
+ const originalFindMany = queryBuilder.findMany;
22
+ const originalCount = queryBuilder.count;
23
+ // Override delete
24
+ queryBuilder.delete = async function (params) {
25
+ const ctx = strapi.requestContext.get();
26
+ const user = ctx?.state?.user;
27
+ const deletedByType = user ? 'admin' : 'api';
28
+ strapi.log.debug(`Soft Delete: DB Query - intercepting delete on ${uid}`);
29
+ return queryBuilder.update({
30
+ ...params,
31
+ data: {
32
+ softDeletedAt: new Date(),
33
+ softDeletedById: user?.id ?? null,
34
+ softDeletedByType: deletedByType,
35
+ },
36
+ });
37
+ };
38
+ // Override deleteMany
39
+ queryBuilder.deleteMany = async function (params) {
40
+ const ctx = strapi.requestContext.get();
41
+ const user = ctx?.state?.user;
42
+ const deletedByType = user ? 'admin' : 'api';
43
+ strapi.log.debug(`Soft Delete: DB Query - intercepting deleteMany on ${uid}`);
44
+ return queryBuilder.updateMany({
45
+ ...params,
46
+ data: {
47
+ softDeletedAt: new Date(),
48
+ softDeletedById: user?.id ?? null,
49
+ softDeletedByType: deletedByType,
50
+ },
51
+ });
52
+ };
53
+ // Override findOne - filter out soft deleted
54
+ queryBuilder.findOne = async function (params = {}) {
55
+ const where = params.where || {};
56
+ if (where.softDeletedAt === undefined) {
57
+ params.where = { ...where, softDeletedAt: null };
58
+ }
59
+ return originalFindOne.call(this, params);
60
+ };
61
+ // Override findMany - filter out soft deleted
62
+ queryBuilder.findMany = async function (params = {}) {
63
+ const where = params.where || {};
64
+ if (where.softDeletedAt === undefined) {
65
+ params.where = { ...where, softDeletedAt: null };
66
+ }
67
+ return originalFindMany.call(this, params);
68
+ };
69
+ // Override count - exclude soft deleted
70
+ queryBuilder.count = async function (params = {}) {
71
+ const where = params.where || {};
72
+ if (where.softDeletedAt === undefined) {
73
+ params.where = { ...where, softDeletedAt: null };
74
+ }
75
+ return originalCount.call(this, params);
76
+ };
77
+ return queryBuilder;
78
+ };
79
+ strapi.log.info('Soft Delete: DB Query decorated (delete + find filtering)');
80
+ },
81
+ /**
82
+ * Decorates the entityService methods
83
+ */
84
+ decorateEntityService() {
85
+ const service = strapi.entityService;
86
+ if (service.isDecoratedWithSoftDelete) {
87
+ return;
88
+ }
89
+ const originalDelete = service.delete;
90
+ const originalDeleteMany = service.deleteMany;
91
+ const originalFindOne = service.findOne;
92
+ const originalFindMany = service.findMany;
93
+ service.__originalDelete = originalDelete;
94
+ service.__originalDeleteMany = originalDeleteMany;
95
+ // DELETE
96
+ service.delete = async (uid, id, params = {}) => {
97
+ const model = strapi.getModel(uid);
98
+ const hasSoftDelete = model.attributes && model.attributes['softDeletedAt'];
99
+ if (!hasSoftDelete) {
100
+ return originalDelete.call(service, uid, id, params);
101
+ }
102
+ const ctx = strapi.requestContext.get();
103
+ const user = ctx?.state?.user;
104
+ const deletedByType = user ? 'admin' : 'api';
105
+ return service.update(uid, id, {
106
+ data: {
107
+ softDeletedAt: new Date(),
108
+ softDeletedById: user?.id ?? null,
109
+ softDeletedByType: deletedByType,
110
+ },
111
+ });
112
+ };
113
+ service.deleteMany = async (uid, params = {}) => {
114
+ const model = strapi.getModel(uid);
115
+ const hasSoftDelete = model.attributes && model.attributes['softDeletedAt'];
116
+ if (!hasSoftDelete) {
117
+ return originalDeleteMany.call(service, uid, params);
118
+ }
119
+ const ctx = strapi.requestContext.get();
120
+ const user = ctx?.state?.user;
121
+ const deletedByType = user ? 'admin' : 'api';
122
+ return strapi.db.query(uid).updateMany({
123
+ where: params.filters || params,
124
+ data: {
125
+ softDeletedAt: new Date(),
126
+ softDeletedById: user?.id ?? null,
127
+ softDeletedByType: deletedByType,
128
+ },
129
+ });
130
+ };
131
+ // FIND - Add filtering
132
+ service.findOne = async (uid, id, params = {}) => {
133
+ const model = strapi.getModel(uid);
134
+ const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
135
+ if (!hasSoftDelete) {
136
+ return originalFindOne.call(service, uid, id, params);
137
+ }
138
+ const filters = params.filters || {};
139
+ if (filters.softDeletedAt === undefined) {
140
+ params.filters = { ...filters, softDeletedAt: { $null: true } };
141
+ }
142
+ return originalFindOne.call(service, uid, id, params);
143
+ };
144
+ service.findMany = async (uid, params = {}) => {
145
+ const model = strapi.getModel(uid);
146
+ const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
147
+ if (!hasSoftDelete) {
148
+ return originalFindMany.call(service, uid, params);
149
+ }
150
+ const filters = params.filters || {};
151
+ if (filters.softDeletedAt === undefined) {
152
+ params.filters = { ...filters, softDeletedAt: { $null: true } };
153
+ }
154
+ return originalFindMany.call(service, uid, params);
155
+ };
156
+ service.isDecoratedWithSoftDelete = true;
157
+ strapi.log.info('Soft Delete: Entity Service decorated (delete + find filtering)');
158
+ // Decorate Document Service (Strapi v5+)
159
+ this.decorateDocumentService();
160
+ },
161
+ /**
162
+ * Decorates the Document Service for Strapi v5+ Content Manager compatibility
163
+ */
164
+ decorateDocumentService() {
165
+ const documentService = strapi.documents;
166
+ if (!documentService || documentService.isDecoratedWithSoftDelete) {
167
+ return;
168
+ }
169
+ const originalDelete = documentService.delete;
170
+ const originalDeleteMany = documentService.deleteMany;
171
+ const originalFindOne = documentService.findOne;
172
+ const originalFindMany = documentService.findMany;
173
+ documentService.__originalDelete = originalDelete;
174
+ documentService.__originalDeleteMany = originalDeleteMany;
175
+ // DELETE
176
+ documentService.delete = async (uid, documentId, params = {}) => {
177
+ const model = strapi.getModel(uid);
178
+ const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
179
+ if (!hasSoftDelete) {
180
+ return originalDelete.call(documentService, uid, documentId, params);
181
+ }
182
+ const ctx = strapi.requestContext.get();
183
+ const user = ctx?.state?.user;
184
+ const deletedByType = user ? 'admin' : 'api';
185
+ strapi.log.debug(`Soft Delete: Document Service - soft deleting ${uid}:${documentId}`);
186
+ return documentService.update(uid, documentId, {
187
+ ...params,
188
+ data: {
189
+ softDeletedAt: new Date(),
190
+ softDeletedById: user?.id ?? null,
191
+ softDeletedByType: deletedByType,
192
+ },
193
+ });
194
+ };
195
+ documentService.deleteMany = async (uid, params = {}) => {
196
+ const model = strapi.getModel(uid);
197
+ const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
198
+ if (!hasSoftDelete) {
199
+ return originalDeleteMany.call(documentService, uid, params);
200
+ }
201
+ const ctx = strapi.requestContext.get();
202
+ const user = ctx?.state?.user;
203
+ const deletedByType = user ? 'admin' : 'api';
204
+ strapi.log.debug(`Soft Delete: Document Service - soft deleting many ${uid}`);
205
+ return strapi.db.query(uid).updateMany({
206
+ where: params.filters || {},
207
+ data: {
208
+ softDeletedAt: new Date(),
209
+ softDeletedById: user?.id ?? null,
210
+ softDeletedByType: deletedByType,
211
+ },
212
+ });
213
+ };
214
+ // FIND - Add filtering
215
+ documentService.findOne = async (uid, documentId, params = {}) => {
216
+ const model = strapi.getModel(uid);
217
+ const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
218
+ if (!hasSoftDelete) {
219
+ return originalFindOne.call(documentService, uid, documentId, params);
220
+ }
221
+ const filters = params.filters || {};
222
+ if (filters.softDeletedAt === undefined) {
223
+ params.filters = { ...filters, softDeletedAt: { $null: true } };
224
+ }
225
+ return originalFindOne.call(documentService, uid, documentId, params);
226
+ };
227
+ documentService.findMany = async (uid, params = {}) => {
228
+ const model = strapi.getModel(uid);
229
+ const hasSoftDelete = model?.attributes && model.attributes['softDeletedAt'];
230
+ if (!hasSoftDelete) {
231
+ return originalFindMany.call(documentService, uid, params);
232
+ }
233
+ const filters = params.filters || {};
234
+ if (filters.softDeletedAt === undefined) {
235
+ params.filters = { ...filters, softDeletedAt: { $null: true } };
236
+ }
237
+ return originalFindMany.call(documentService, uid, params);
238
+ };
239
+ documentService.isDecoratedWithSoftDelete = true;
240
+ strapi.log.info('Soft Delete: Document Service decorated (delete + find filtering)');
241
+ },
242
+ registerLifecycleHooks() {
243
+ // Lifecycle hooks as backup
244
+ const subscribe = strapi.db.lifecycles.subscribe;
245
+ subscribe({
246
+ models: ['*'],
247
+ async beforeFindOne(event) {
248
+ const model = strapi.getModel(event.model.uid);
249
+ if (model.attributes && model.attributes['softDeletedAt']) {
250
+ const where = event.params.where || {};
251
+ if (where.softDeletedAt === undefined) {
252
+ event.params.where = { ...where, softDeletedAt: null };
253
+ }
254
+ }
255
+ },
256
+ async beforeFindMany(event) {
257
+ const model = strapi.getModel(event.model.uid);
258
+ if (model.attributes && model.attributes['softDeletedAt']) {
259
+ const where = event.params.where || {};
260
+ if (where.softDeletedAt === undefined) {
261
+ event.params.where = { ...where, softDeletedAt: null };
262
+ }
263
+ }
264
+ },
265
+ });
266
+ strapi.log.info('Soft Delete: Lifecycle hooks registered');
267
+ },
268
+ });
269
+ //# sourceMappingURL=soft-delete-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soft-delete-service.js","sourceRoot":"","sources":["../../../src/server/services/soft-delete-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import admin from './admin/src/index.js';
2
+ export default admin;
@@ -0,0 +1,3 @@
1
+ import admin from './admin/src/index.js';
2
+ export default admin;
3
+ //# sourceMappingURL=strapi-admin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi-admin.js","sourceRoot":"","sources":["../src/strapi-admin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,sBAAsB,CAAC;AAEzC,eAAe,KAAK,CAAC"}
@@ -0,0 +1,2 @@
1
+ import server from './server/index.js';
2
+ export default server;
@@ -0,0 +1,3 @@
1
+ import server from './server/index.js';
2
+ export default server;
3
+ //# sourceMappingURL=strapi-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strapi-server.js","sourceRoot":"","sources":["../src/strapi-server.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,eAAe,MAAM,CAAC"}