strapi-cache 1.4.2 → 1.4.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.
- package/dist/_chunks/en-B9bQFCLY.mjs +18 -0
- package/dist/_chunks/en-B9bQFCLY.mjs.map +1 -0
- package/dist/_chunks/en-BkqNXvi0.mjs +18 -0
- package/dist/_chunks/en-BkqNXvi0.mjs.map +1 -0
- package/dist/_chunks/en-CBPjpI-y.js +18 -0
- package/dist/_chunks/en-CBPjpI-y.js.map +1 -0
- package/dist/_chunks/en-CWf_jLFj.js +18 -0
- package/dist/_chunks/en-CWf_jLFj.js.map +1 -0
- package/dist/_chunks/en-CcRrGOBv.js +15 -0
- package/dist/_chunks/en-CcRrGOBv.js.map +1 -0
- package/dist/_chunks/en-Cq54r800.mjs +18 -0
- package/dist/_chunks/en-Cq54r800.mjs.map +1 -0
- package/dist/_chunks/en-D3udXrSa.mjs +15 -0
- package/dist/_chunks/en-D3udXrSa.mjs.map +1 -0
- package/dist/_chunks/en-DehLWejq.mjs +18 -0
- package/dist/_chunks/en-DehLWejq.mjs.map +1 -0
- package/dist/_chunks/en-Do3Kh30d.js +18 -0
- package/dist/_chunks/en-Do3Kh30d.js.map +1 -0
- package/dist/_chunks/en-N9VY0B4k.mjs +18 -0
- package/dist/_chunks/en-N9VY0B4k.mjs.map +1 -0
- package/dist/_chunks/en-O03hkb40.js +18 -0
- package/dist/_chunks/en-O03hkb40.js.map +1 -0
- package/dist/_chunks/en-TyY2Xkua.js +18 -0
- package/dist/_chunks/en-TyY2Xkua.js.map +1 -0
- package/dist/_chunks/en-eba6oPnU.mjs +18 -0
- package/dist/_chunks/en-eba6oPnU.mjs.map +1 -0
- package/dist/_chunks/en-wt3vH-k4.js +18 -0
- package/dist/_chunks/en-wt3vH-k4.js.map +1 -0
- package/dist/admin/index.js +113 -5
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +113 -5
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/src/components/PurgeEntityButton/index.d.ts +2 -0
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
"strapi-cache.name": "Strapi Cache",
|
|
3
|
+
"strapi-cache.settings": "Cache Settings",
|
|
4
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
5
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
6
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
7
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
8
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
9
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
10
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where {key} is part of the key. Are you sure you want to purge the cache?",
|
|
11
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
12
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
13
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
en as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=en-B9bQFCLY.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-B9bQFCLY.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
"strapi-cache.name": "Strapi Cache",
|
|
3
|
+
"strapi-cache.settings": "Cache Settings",
|
|
4
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
5
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
6
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
7
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
8
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
9
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
10
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where '{key}' is part of the key. Are you sure you want to purge the cache?",
|
|
11
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
12
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
13
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
en as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=en-BkqNXvi0.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-BkqNXvi0.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"strapi-cache.name": "Strapi Cache",
|
|
5
|
+
"strapi-cache.settings": "Cache Settings",
|
|
6
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
7
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
8
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
9
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
10
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
11
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
12
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where {{key}} is part of the key. Are you sure you want to purge the cache?",
|
|
13
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
14
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
15
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
16
|
+
};
|
|
17
|
+
exports.default = en;
|
|
18
|
+
//# sourceMappingURL=en-CBPjpI-y.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-CBPjpI-y.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"strapi-cache.name": "Strapi Cache",
|
|
5
|
+
"strapi-cache.settings": "Cache Settings",
|
|
6
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
7
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
8
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
9
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
10
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
11
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
12
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where '{key}' is part of the key. Are you sure you want to purge the cache?",
|
|
13
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
14
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
15
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
16
|
+
};
|
|
17
|
+
exports.default = en;
|
|
18
|
+
//# sourceMappingURL=en-CWf_jLFj.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-CWf_jLFj.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"strapi-cache.name": "Strapi Cache",
|
|
5
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
6
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
7
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
8
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
9
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where {key} is part of the key. Are you sure you want to purge the cache?",
|
|
10
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
11
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
12
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
13
|
+
};
|
|
14
|
+
exports.default = en;
|
|
15
|
+
//# sourceMappingURL=en-CcRrGOBv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-CcRrGOBv.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
"strapi-cache.name": "Strapi Cache",
|
|
3
|
+
"strapi-cache.settings": "Cache Settings",
|
|
4
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
5
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
6
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
7
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
8
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
9
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
10
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where {{key}} is part of the key. Are you sure you want to purge the cache?",
|
|
11
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
12
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
13
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
en as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=en-Cq54r800.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-Cq54r800.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
"strapi-cache.name": "Strapi Cache",
|
|
3
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
4
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
5
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
6
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
7
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where {key} is part of the key. Are you sure you want to purge the cache?",
|
|
8
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
9
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
10
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
11
|
+
};
|
|
12
|
+
export {
|
|
13
|
+
en as default
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=en-D3udXrSa.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-D3udXrSa.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
"strapi-cache.name": "Strapi Cache",
|
|
3
|
+
"strapi-cache.settings": "Cache Settings",
|
|
4
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
5
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
6
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
7
|
+
"strapi-cache.cache.purge.entity": "Purge Cache",
|
|
8
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
9
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
10
|
+
"strapi-cache.cache.purge.confirmation": "Are you sure you want to purge the cache?",
|
|
11
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
12
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
13
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
en as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=en-DehLWejq.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-DehLWejq.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"strapi-cache.name": "Strapi Cache",
|
|
5
|
+
"strapi-cache.settings": "Cache Settings",
|
|
6
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
7
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
8
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
9
|
+
"strapi-cache.cache.purge.entity": "Purge Cache",
|
|
10
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
11
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
12
|
+
"strapi-cache.cache.purge.confirmation": "Are you sure you want to purge the cache?",
|
|
13
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
14
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
15
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
16
|
+
};
|
|
17
|
+
exports.default = en;
|
|
18
|
+
//# sourceMappingURL=en-Do3Kh30d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-Do3Kh30d.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
"strapi-cache.name": "Strapi Cache",
|
|
3
|
+
"strapi-cache.settings": "Cache Settings",
|
|
4
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
5
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
6
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
7
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
8
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
9
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
10
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where {'key'} is part of the key. Are you sure you want to purge the cache?",
|
|
11
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
12
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
13
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
en as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=en-N9VY0B4k.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-N9VY0B4k.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"strapi-cache.name": "Strapi Cache",
|
|
5
|
+
"strapi-cache.settings": "Cache Settings",
|
|
6
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
7
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
8
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
9
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
10
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
11
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
12
|
+
"strapi-cache.cache.purge.confirmation": "Are you sure you want to purge the cache?",
|
|
13
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
14
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
15
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
16
|
+
};
|
|
17
|
+
exports.default = en;
|
|
18
|
+
//# sourceMappingURL=en-O03hkb40.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-O03hkb40.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"strapi-cache.name": "Strapi Cache",
|
|
5
|
+
"strapi-cache.settings": "Cache Settings",
|
|
6
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
7
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
8
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
9
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
10
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
11
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
12
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where {key} is part of the key. Are you sure you want to purge the cache?",
|
|
13
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
14
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
15
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
16
|
+
};
|
|
17
|
+
exports.default = en;
|
|
18
|
+
//# sourceMappingURL=en-TyY2Xkua.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-TyY2Xkua.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
"strapi-cache.name": "Strapi Cache",
|
|
3
|
+
"strapi-cache.settings": "Cache Settings",
|
|
4
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
5
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
6
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
7
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
8
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
9
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
10
|
+
"strapi-cache.cache.purge.confirmation": "Are you sure you want to purge the cache?",
|
|
11
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
12
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
13
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
en as default
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=en-eba6oPnU.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-eba6oPnU.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const en = {
|
|
4
|
+
"strapi-cache.name": "Strapi Cache",
|
|
5
|
+
"strapi-cache.settings": "Cache Settings",
|
|
6
|
+
"strapi-cache.view.settings.title": "Strapi Cache Settings",
|
|
7
|
+
"strapi-cache.view.settings.subtitle": "Configure what to cache",
|
|
8
|
+
"strapi-cache.cache.purge": "Purge Cache",
|
|
9
|
+
"strapi-cache.cache.purge.entity": "Purge Entity Cache",
|
|
10
|
+
"strapi-cache.cache.cancel": "No, cancel",
|
|
11
|
+
"strapi-cache.cache.confirm": "Yes, purge",
|
|
12
|
+
"strapi-cache.cache.purge.confirmation": "This purges all keys where {'key'} is part of the key. Are you sure you want to purge the cache?",
|
|
13
|
+
"strapi-cache.cache.purge.success": "Cache purged successfully",
|
|
14
|
+
"strapi-cache.cache.purge.error": "Error purging cache",
|
|
15
|
+
"strapi-cache.cache.purge.no-content-type": "No content type found"
|
|
16
|
+
};
|
|
17
|
+
exports.default = en;
|
|
18
|
+
//# sourceMappingURL=en-wt3vH-k4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en-wt3vH-k4.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
package/dist/admin/index.js
CHANGED
|
@@ -50,7 +50,7 @@ function PurgeCacheButton() {
|
|
|
50
50
|
return data;
|
|
51
51
|
} catch (error) {
|
|
52
52
|
console.error("Error fetching cacheable routes:", error);
|
|
53
|
-
return
|
|
53
|
+
return void 0;
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
fetchCacheableRoutes().then((data) => {
|
|
@@ -111,10 +111,114 @@ function PurgeCacheButton() {
|
|
|
111
111
|
id: "strapi-cache.cache.purge",
|
|
112
112
|
defaultMessage: "Purge Cache"
|
|
113
113
|
}) }) }),
|
|
114
|
-
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage(
|
|
115
|
-
|
|
116
|
-
|
|
114
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage(
|
|
115
|
+
{
|
|
116
|
+
id: "strapi-cache.cache.purge.confirmation",
|
|
117
|
+
defaultMessage: "Are you sure you want to purge the cache?"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
key: `"${pluralName}"`
|
|
121
|
+
}
|
|
122
|
+
) }) }),
|
|
123
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
|
|
124
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", children: formatMessage({
|
|
125
|
+
id: "strapi-cache.cache.cancel",
|
|
126
|
+
defaultMessage: "No, cancel"
|
|
127
|
+
}) }) }),
|
|
128
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: clearCache, children: formatMessage({
|
|
129
|
+
id: "strapi-cache.cache.confirm",
|
|
130
|
+
defaultMessage: "Yes, confirm"
|
|
131
|
+
}) }) })
|
|
132
|
+
] })
|
|
133
|
+
] })
|
|
134
|
+
] }) });
|
|
135
|
+
}
|
|
136
|
+
function PurgeEntityButton() {
|
|
137
|
+
const { allowedActions } = admin.useRBAC(pluginPermissions);
|
|
138
|
+
const formatMessage = reactIntl.useIntl().formatMessage;
|
|
139
|
+
const { post, get } = admin.useFetchClient();
|
|
140
|
+
const { toggleNotification } = admin.useNotification();
|
|
141
|
+
const { contentType, id } = admin.unstable_useContentManagerContext();
|
|
142
|
+
const [cacheableRoutes, setCacheableRoutes] = react.useState();
|
|
143
|
+
const pluralName = contentType?.info.pluralName;
|
|
144
|
+
react.useEffect(() => {
|
|
145
|
+
if (!allowedActions.canPurgeCache) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const fetchCacheableRoutes = async () => {
|
|
149
|
+
try {
|
|
150
|
+
const { data } = await get("/strapi-cache/cacheable-routes");
|
|
151
|
+
return data;
|
|
152
|
+
} catch (error) {
|
|
153
|
+
console.error("Error fetching cacheable routes:", error);
|
|
154
|
+
return void 0;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
fetchCacheableRoutes().then((data) => {
|
|
158
|
+
setCacheableRoutes(data);
|
|
159
|
+
});
|
|
160
|
+
}, [allowedActions.canPurgeCache]);
|
|
161
|
+
const clearCache = () => {
|
|
162
|
+
if (!pluralName) {
|
|
163
|
+
toggleNotification({
|
|
164
|
+
type: "warning",
|
|
165
|
+
message: formatMessage({
|
|
166
|
+
id: "strapi-cache.cache.purge.no-content-type",
|
|
167
|
+
defaultMessage: "No content type found"
|
|
168
|
+
})
|
|
169
|
+
});
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
post(`/strapi-cache/purge-cache/${id}`, void 0, {
|
|
173
|
+
headers: {
|
|
174
|
+
"Content-Type": "application/json"
|
|
175
|
+
}
|
|
176
|
+
}).then(() => {
|
|
177
|
+
toggleNotification({
|
|
178
|
+
type: "success",
|
|
179
|
+
message: formatMessage({
|
|
180
|
+
id: "strapi-cache.cache.purge.success",
|
|
181
|
+
defaultMessage: "Cache purged successfully"
|
|
182
|
+
}) + `: ${pluralName}`
|
|
183
|
+
});
|
|
184
|
+
}).catch(() => {
|
|
185
|
+
toggleNotification({
|
|
186
|
+
type: "danger",
|
|
187
|
+
message: formatMessage({
|
|
188
|
+
id: "strapi-cache.cache.purge.error",
|
|
189
|
+
defaultMessage: "Error purging cache"
|
|
190
|
+
}) + `: ${pluralName}`
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
const isCacheableRoute = () => {
|
|
195
|
+
if (!pluralName || !cacheableRoutes) {
|
|
196
|
+
return false;
|
|
197
|
+
}
|
|
198
|
+
return cacheableRoutes.length === 0 || cacheableRoutes.some((route) => {
|
|
199
|
+
return route.includes(pluralName);
|
|
200
|
+
});
|
|
201
|
+
};
|
|
202
|
+
if (!allowedActions.canPurgeCache || !isCacheableRoute()) {
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Root, { children: [
|
|
206
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Trigger, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { width: "100%", startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Archive, {}), variant: "danger", children: formatMessage({
|
|
207
|
+
id: "strapi-cache.cache.purge.entity",
|
|
208
|
+
defaultMessage: "Purge Entity Cache"
|
|
209
|
+
}) }) }),
|
|
210
|
+
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Content, { children: [
|
|
211
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Header, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Title, { children: formatMessage({
|
|
212
|
+
id: "strapi-cache.cache.purge.entity",
|
|
213
|
+
defaultMessage: "Purge Entity Cache"
|
|
117
214
|
}) }) }),
|
|
215
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Body, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "omega", children: formatMessage(
|
|
216
|
+
{
|
|
217
|
+
id: "strapi-cache.cache.purge.confirmation",
|
|
218
|
+
defaultMessage: "Are you sure you want to purge the cache?"
|
|
219
|
+
},
|
|
220
|
+
{ key: `"${id}"` }
|
|
221
|
+
) }) }),
|
|
118
222
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Modal.Footer, { children: [
|
|
119
223
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Modal.Close, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", children: formatMessage({
|
|
120
224
|
id: "strapi-cache.cache.cancel",
|
|
@@ -140,12 +244,16 @@ const index = {
|
|
|
140
244
|
name: PurgeCacheButton,
|
|
141
245
|
Component: PurgeCacheButton
|
|
142
246
|
});
|
|
247
|
+
app.getPlugin("content-manager").injectComponent("editView", "right-links", {
|
|
248
|
+
name: PurgeEntityButton,
|
|
249
|
+
Component: PurgeEntityButton
|
|
250
|
+
});
|
|
143
251
|
},
|
|
144
252
|
async registerTrads({ locales }) {
|
|
145
253
|
return Promise.all(
|
|
146
254
|
locales.map(async (locale) => {
|
|
147
255
|
try {
|
|
148
|
-
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("../_chunks/en-
|
|
256
|
+
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("../_chunks/en-CcRrGOBv.js")) }), `./translations/${locale}.json`, 3);
|
|
149
257
|
return { data, locale };
|
|
150
258
|
} catch {
|
|
151
259
|
return { data: {}, locale };
|
package/dist/admin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/permission.ts","../../admin/src/components/PurgeCacheButton/index.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = 'strapi-cache';\n","import { useEffect, useRef } from 'react';\n\nimport { PLUGIN_ID } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (id: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const ref = useRef(setPlugin);\n\n useEffect(() => {\n ref.current(PLUGIN_ID);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","export const pluginPermissions = {\n purge: [{ action: 'plugin::strapi-cache.purge-cache', subject: null }],\n};\n","import { useIntl } from 'react-intl';\nimport { Archive } from '@strapi/icons';\nimport { Button, Modal } from '@strapi/design-system';\nimport { useRBAC } from '@strapi/strapi/admin';\nimport { pluginPermissions } from '../../permission';\nimport { Typography } from '@strapi/design-system';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/strapi/admin';\nimport { useNotification } from '@strapi/strapi/admin';\nimport { useEffect, useState } from 'react';\n\nfunction PurgeCacheButton() {\n const { allowedActions } = useRBAC(pluginPermissions);\n const formatMessage = useIntl().formatMessage;\n const { post, get } = useFetchClient();\n const { toggleNotification } = useNotification();\n const { contentType } = useContentManagerContext();\n const [cacheableRoutes, setCacheableRoutes] = useState<string[]>();\n const pluralName = contentType?.info.pluralName;\n\n useEffect(() => {\n if (!allowedActions.canPurgeCache) {\n return;\n }\n const fetchCacheableRoutes = async () => {\n try {\n const { data } = await get('/strapi-cache/cacheable-routes');\n return data;\n } catch (error) {\n console.error('Error fetching cacheable routes:', error);\n return [];\n }\n };\n fetchCacheableRoutes().then((data) => {\n setCacheableRoutes(data);\n });\n }, [allowedActions.canPurgeCache]);\n\n const clearCache = () => {\n if (!pluralName) {\n toggleNotification({\n type: 'warning',\n message: formatMessage({\n id: 'strapi-cache.cache.purge.no-content-type',\n defaultMessage: 'No content type found',\n }),\n });\n return;\n }\n\n post(`/strapi-cache/purge-cache/${pluralName}`, undefined, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then(() => {\n toggleNotification({\n type: 'success',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.success',\n defaultMessage: 'Cache purged successfully',\n }) + `: ${pluralName}`,\n });\n })\n .catch(() => {\n toggleNotification({\n type: 'danger',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.error',\n defaultMessage: 'Error purging cache',\n }) + `: ${pluralName}`,\n });\n });\n };\n\n const isCacheableRoute = () => {\n if (!pluralName || !cacheableRoutes) {\n return false;\n }\n\n return (\n cacheableRoutes.length === 0 ||\n cacheableRoutes.some((route) => {\n return route.includes(pluralName);\n })\n );\n };\n\n if (!allowedActions.canPurgeCache || !isCacheableRoute()) {\n return null;\n }\n\n return (\n <>\n <Modal.Root>\n <Modal.Trigger>\n <Button startIcon={<Archive />} variant=\"danger\">\n {formatMessage({\n id: 'strapi-cache.cache.purge',\n defaultMessage: 'Purge Cache',\n })}\n </Button>\n </Modal.Trigger>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: 'strapi-cache.cache.purge',\n defaultMessage: 'Purge Cache',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Typography variant=\"omega\">\n {formatMessage({\n id: 'strapi-cache.cache.purge.confirmation',\n defaultMessage: 'Are you sure you want to purge the cache?',\n })}\n </Typography>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'strapi-cache.cache.cancel',\n defaultMessage: 'No, cancel',\n })}\n </Button>\n </Modal.Close>\n <Modal.Close>\n <Button onClick={clearCache}>\n {formatMessage({\n id: 'strapi-cache.cache.confirm',\n defaultMessage: 'Yes, confirm',\n })}\n </Button>\n </Modal.Close>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n </>\n );\n}\n\nexport default PurgeCacheButton;\n","import { PLUGIN_ID } from './pluginId';\nimport { Initializer } from './components/Initializer';\nimport PurgeCacheButton from './components/PurgeCacheButton';\n\nexport default {\n register(app: any) {\n app.registerPlugin({\n id: PLUGIN_ID,\n initializer: Initializer,\n isReady: false,\n name: PLUGIN_ID,\n });\n\n app.getPlugin('content-manager').injectComponent('listView', 'actions', {\n name: PurgeCacheButton,\n Component: PurgeCacheButton,\n });\n },\n\n async registerTrads({ locales }: { locales: string[] }) {\n return Promise.all(\n locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: {}, locale };\n }\n })\n );\n },\n};\n"],"names":["useRef","useEffect","useRBAC","useIntl","useFetchClient","useNotification","useContentManagerContext","useState","jsx","Fragment","jsxs","Modal","Button","Archive","Typography"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,YAAY;ACQzB,MAAM,cAAc,CAAC,EAAE,gBAAkC;AACjD,QAAA,MAAMA,aAAO,SAAS;AAE5BC,QAAAA,UAAU,MAAM;AACd,QAAI,QAAQ,SAAS;AAAA,EACvB,GAAG,EAAE;AAEE,SAAA;AACT;AChBO,MAAM,oBAAoB;AAAA,EAC/B,OAAO,CAAC,EAAE,QAAQ,oCAAoC,SAAS,KAAM,CAAA;AACvE;ACSA,SAAS,mBAAmB;AAC1B,QAAM,EAAE,eAAA,IAAmBC,MAAA,QAAQ,iBAAiB;AAC9C,QAAA,gBAAgBC,oBAAU;AAChC,QAAM,EAAE,MAAM,IAAI,IAAIC,qBAAe;AAC/B,QAAA,EAAE,mBAAmB,IAAIC,sBAAgB;AACzC,QAAA,EAAE,YAAY,IAAIC,wCAAyB;AACjD,QAAM,CAAC,iBAAiB,kBAAkB,IAAIC,eAAmB;AAC3D,QAAA,aAAa,aAAa,KAAK;AAErCN,QAAAA,UAAU,MAAM;AACV,QAAA,CAAC,eAAe,eAAe;AACjC;AAAA,IAAA;AAEF,UAAM,uBAAuB,YAAY;AACnC,UAAA;AACF,cAAM,EAAE,KAAA,IAAS,MAAM,IAAI,gCAAgC;AACpD,eAAA;AAAA,eACA,OAAO;AACN,gBAAA,MAAM,oCAAoC,KAAK;AACvD,eAAO,CAAC;AAAA,MAAA;AAAA,IAEZ;AACqB,yBAAA,EAAE,KAAK,CAAC,SAAS;AACpC,yBAAmB,IAAI;AAAA,IAAA,CACxB;AAAA,EAAA,GACA,CAAC,eAAe,aAAa,CAAC;AAEjC,QAAM,aAAa,MAAM;AACvB,QAAI,CAAC,YAAY;AACI,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA,CACF;AACD;AAAA,IAAA;AAGG,SAAA,6BAA6B,UAAU,IAAI,QAAW;AAAA,MACzD,SAAS;AAAA,QACP,gBAAgB;AAAA,MAAA;AAAA,IAClB,CACD,EACE,KAAK,MAAM;AACS,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SACE,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,IAAI,KAAK,UAAU;AAAA,MAAA,CACvB;AAAA,IAAA,CACF,EACA,MAAM,MAAM;AACQ,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SACE,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,IAAI,KAAK,UAAU;AAAA,MAAA,CACvB;AAAA,IAAA,CACF;AAAA,EACL;AAEA,QAAM,mBAAmB,MAAM;AACzB,QAAA,CAAC,cAAc,CAAC,iBAAiB;AAC5B,aAAA;AAAA,IAAA;AAGT,WACE,gBAAgB,WAAW,KAC3B,gBAAgB,KAAK,CAAC,UAAU;AACvB,aAAA,MAAM,SAAS,UAAU;AAAA,IAAA,CACjC;AAAA,EAEL;AAEA,MAAI,CAAC,eAAe,iBAAiB,CAAC,oBAAoB;AACjD,WAAA;AAAA,EAAA;AAGT,SAEIO,2BAAA,IAAAC,WAAA,UAAA,EAAA,UAAAC,2BAAA,KAACC,mBAAM,MAAN,EACC,UAAA;AAAA,IAACH,2BAAA,IAAAG,aAAA,MAAM,SAAN,EACC,UAACH,2BAAAA,IAAAI,aAAAA,QAAA,EAAO,WAAWJ,2BAAAA,IAACK,MAAAA,SAAQ,CAAA,CAAA,GAAI,SAAQ,UACrC,UAAc,cAAA;AAAA,MACb,IAAI;AAAA,MACJ,gBAAgB;AAAA,IAAA,CACjB,GACH,EACF,CAAA;AAAA,IACAH,2BAAAA,KAACC,aAAM,MAAA,SAAN,EACC,UAAA;AAAA,MAAAH,+BAACG,aAAAA,MAAM,QAAN,EACC,yCAACA,aAAAA,MAAM,OAAN,EACE,UAAc,cAAA;AAAA,QACb,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,MACAH,2BAAAA,IAACG,mBAAM,MAAN,EACC,yCAACG,aAAW,YAAA,EAAA,SAAQ,SACjB,UAAc,cAAA;AAAA,QACb,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,MACAJ,2BAAAA,KAACC,aAAM,MAAA,QAAN,EACC,UAAA;AAAA,QAAAH,2BAAAA,IAACG,mBAAM,OAAN,EACC,yCAACC,aAAO,QAAA,EAAA,SAAQ,YACb,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,GACH,EACF,CAAA;AAAA,QACAJ,2BAAAA,IAACG,mBAAM,OAAN,EACC,yCAACC,aAAO,QAAA,EAAA,SAAS,YACd,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA,EACH,CAAA,EACF,CAAA;AAAA,MAAA,EACF,CAAA;AAAA,IAAA,EACF,CAAA;AAAA,EAAA,EAAA,CACF,EACF,CAAA;AAEJ;AC5IA,MAAe,QAAA;AAAA,EACb,SAAS,KAAU;AACjB,QAAI,eAAe;AAAA,MACjB,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS;AAAA,MACT,MAAM;AAAA,IAAA,CACP;AAED,QAAI,UAAU,iBAAiB,EAAE,gBAAgB,YAAY,WAAW;AAAA,MACtE,MAAM;AAAA,MACN,WAAW;AAAA,IAAA,CACZ;AAAA,EACH;AAAA,EAEA,MAAM,cAAc,EAAE,WAAkC;AACtD,WAAO,QAAQ;AAAA,MACb,QAAQ,IAAI,OAAO,WAAW;AACxB,YAAA;AACF,gBAAM,EAAE,SAAS,SAAS,MAAM,qCAAA,uBAAA,OAAA,EAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,2BAAA,CAAA,EAAA,CAAA,GAAA,kBAAA,MAAA,SAAA,CAAA;AAEzB,iBAAA,EAAE,MAAM,OAAO;AAAA,QAAA,QAChB;AACN,iBAAO,EAAE,MAAM,CAAC,GAAG,OAAO;AAAA,QAAA;AAAA,MAE7B,CAAA;AAAA,IACH;AAAA,EAAA;AAEJ;;"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/permission.ts","../../admin/src/components/PurgeCacheButton/index.tsx","../../admin/src/components/PurgeEntityButton/index.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = 'strapi-cache';\n","import { useEffect, useRef } from 'react';\n\nimport { PLUGIN_ID } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (id: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const ref = useRef(setPlugin);\n\n useEffect(() => {\n ref.current(PLUGIN_ID);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","export const pluginPermissions = {\n purge: [{ action: 'plugin::strapi-cache.purge-cache', subject: null }],\n};\n","import { useIntl } from 'react-intl';\nimport { Archive } from '@strapi/icons';\nimport { Button, Modal } from '@strapi/design-system';\nimport { useRBAC } from '@strapi/strapi/admin';\nimport { pluginPermissions } from '../../permission';\nimport { Typography } from '@strapi/design-system';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/strapi/admin';\nimport { useNotification } from '@strapi/strapi/admin';\nimport { useEffect, useState } from 'react';\n\nfunction PurgeCacheButton() {\n const { allowedActions } = useRBAC(pluginPermissions);\n const formatMessage = useIntl().formatMessage;\n const { post, get } = useFetchClient();\n const { toggleNotification } = useNotification();\n const { contentType } = useContentManagerContext();\n const [cacheableRoutes, setCacheableRoutes] = useState<string[]>();\n const pluralName = contentType?.info.pluralName;\n\n useEffect(() => {\n if (!allowedActions.canPurgeCache) {\n return;\n }\n const fetchCacheableRoutes = async () => {\n try {\n const { data } = await get('/strapi-cache/cacheable-routes');\n return data;\n } catch (error) {\n console.error('Error fetching cacheable routes:', error);\n return undefined;\n }\n };\n fetchCacheableRoutes().then((data) => {\n setCacheableRoutes(data);\n });\n }, [allowedActions.canPurgeCache]);\n\n const clearCache = () => {\n if (!pluralName) {\n toggleNotification({\n type: 'warning',\n message: formatMessage({\n id: 'strapi-cache.cache.purge.no-content-type',\n defaultMessage: 'No content type found',\n }),\n });\n return;\n }\n\n post(`/strapi-cache/purge-cache/${pluralName}`, undefined, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then(() => {\n toggleNotification({\n type: 'success',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.success',\n defaultMessage: 'Cache purged successfully',\n }) + `: ${pluralName}`,\n });\n })\n .catch(() => {\n toggleNotification({\n type: 'danger',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.error',\n defaultMessage: 'Error purging cache',\n }) + `: ${pluralName}`,\n });\n });\n };\n\n const isCacheableRoute = () => {\n if (!pluralName || !cacheableRoutes) {\n return false;\n }\n\n return (\n cacheableRoutes.length === 0 ||\n cacheableRoutes.some((route) => {\n return route.includes(pluralName);\n })\n );\n };\n\n if (!allowedActions.canPurgeCache || !isCacheableRoute()) {\n return null;\n }\n\n return (\n <>\n <Modal.Root>\n <Modal.Trigger>\n <Button startIcon={<Archive />} variant=\"danger\">\n {formatMessage({\n id: 'strapi-cache.cache.purge',\n defaultMessage: 'Purge Cache',\n })}\n </Button>\n </Modal.Trigger>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: 'strapi-cache.cache.purge',\n defaultMessage: 'Purge Cache',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Typography variant=\"omega\">\n {formatMessage(\n {\n id: 'strapi-cache.cache.purge.confirmation',\n defaultMessage: 'Are you sure you want to purge the cache?',\n },\n {\n key: `\"${pluralName}\"`,\n }\n )}\n </Typography>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'strapi-cache.cache.cancel',\n defaultMessage: 'No, cancel',\n })}\n </Button>\n </Modal.Close>\n <Modal.Close>\n <Button onClick={clearCache}>\n {formatMessage({\n id: 'strapi-cache.cache.confirm',\n defaultMessage: 'Yes, confirm',\n })}\n </Button>\n </Modal.Close>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n </>\n );\n}\n\nexport default PurgeCacheButton;\n","//TODO: refactor and rid of duplicated code (PurgeEntityButton and PurgeCacheButton)\n\nimport { useIntl } from 'react-intl';\nimport { Archive } from '@strapi/icons';\nimport { Button, Modal } from '@strapi/design-system';\nimport { useRBAC } from '@strapi/strapi/admin';\nimport { pluginPermissions } from '../../permission';\nimport { Typography } from '@strapi/design-system';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/strapi/admin';\nimport { useNotification } from '@strapi/strapi/admin';\nimport { useEffect, useState } from 'react';\n\nfunction PurgeEntityButton() {\n const { allowedActions } = useRBAC(pluginPermissions);\n const formatMessage = useIntl().formatMessage;\n const { post, get } = useFetchClient();\n const { toggleNotification } = useNotification();\n const { contentType, id } = useContentManagerContext();\n const [cacheableRoutes, setCacheableRoutes] = useState<string[]>();\n const pluralName = contentType?.info.pluralName;\n\n useEffect(() => {\n if (!allowedActions.canPurgeCache) {\n return;\n }\n const fetchCacheableRoutes = async () => {\n try {\n const { data } = await get('/strapi-cache/cacheable-routes');\n return data;\n } catch (error) {\n console.error('Error fetching cacheable routes:', error);\n return undefined;\n }\n };\n fetchCacheableRoutes().then((data) => {\n setCacheableRoutes(data);\n });\n }, [allowedActions.canPurgeCache]);\n\n const clearCache = () => {\n if (!pluralName) {\n toggleNotification({\n type: 'warning',\n message: formatMessage({\n id: 'strapi-cache.cache.purge.no-content-type',\n defaultMessage: 'No content type found',\n }),\n });\n return;\n }\n\n post(`/strapi-cache/purge-cache/${id}`, undefined, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then(() => {\n toggleNotification({\n type: 'success',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.success',\n defaultMessage: 'Cache purged successfully',\n }) + `: ${pluralName}`,\n });\n })\n .catch(() => {\n toggleNotification({\n type: 'danger',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.error',\n defaultMessage: 'Error purging cache',\n }) + `: ${pluralName}`,\n });\n });\n };\n\n const isCacheableRoute = () => {\n if (!pluralName || !cacheableRoutes) {\n return false;\n }\n\n return (\n cacheableRoutes.length === 0 ||\n cacheableRoutes.some((route) => {\n return route.includes(pluralName);\n })\n );\n };\n\n if (!allowedActions.canPurgeCache || !isCacheableRoute()) {\n return null;\n }\n\n return (\n <>\n <Modal.Root>\n <Modal.Trigger>\n <Button width={'100%'} startIcon={<Archive />} variant=\"danger\">\n {formatMessage({\n id: 'strapi-cache.cache.purge.entity',\n defaultMessage: 'Purge Entity Cache',\n })}\n </Button>\n </Modal.Trigger>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: 'strapi-cache.cache.purge.entity',\n defaultMessage: 'Purge Entity Cache',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Typography variant=\"omega\">\n {formatMessage(\n {\n id: 'strapi-cache.cache.purge.confirmation',\n defaultMessage: 'Are you sure you want to purge the cache?',\n },\n { key: `\"${id}\"` }\n )}\n </Typography>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'strapi-cache.cache.cancel',\n defaultMessage: 'No, cancel',\n })}\n </Button>\n </Modal.Close>\n <Modal.Close>\n <Button onClick={clearCache}>\n {formatMessage({\n id: 'strapi-cache.cache.confirm',\n defaultMessage: 'Yes, confirm',\n })}\n </Button>\n </Modal.Close>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n </>\n );\n}\n\nexport default PurgeEntityButton;\n","import { PLUGIN_ID } from './pluginId';\nimport { Initializer } from './components/Initializer';\nimport PurgeCacheButton from './components/PurgeCacheButton';\nimport PurgeEntityButton from './components/PurgeEntityButton';\n\nexport default {\n register(app: any) {\n app.registerPlugin({\n id: PLUGIN_ID,\n initializer: Initializer,\n isReady: false,\n name: PLUGIN_ID,\n });\n\n app.getPlugin('content-manager').injectComponent('listView', 'actions', {\n name: PurgeCacheButton,\n Component: PurgeCacheButton,\n });\n\n app.getPlugin('content-manager').injectComponent('editView', 'right-links', {\n name: PurgeEntityButton,\n Component: PurgeEntityButton,\n });\n },\n\n async registerTrads({ locales }: { locales: string[] }) {\n return Promise.all(\n locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: {}, locale };\n }\n })\n );\n },\n};\n"],"names":["useRef","useEffect","useRBAC","useIntl","useFetchClient","useNotification","useContentManagerContext","useState","jsx","Fragment","jsxs","Modal","Button","Archive","Typography"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,YAAY;ACQzB,MAAM,cAAc,CAAC,EAAE,gBAAkC;AACjD,QAAA,MAAMA,aAAO,SAAS;AAE5BC,QAAAA,UAAU,MAAM;AACd,QAAI,QAAQ,SAAS;AAAA,EACvB,GAAG,EAAE;AAEE,SAAA;AACT;AChBO,MAAM,oBAAoB;AAAA,EAC/B,OAAO,CAAC,EAAE,QAAQ,oCAAoC,SAAS,KAAM,CAAA;AACvE;ACSA,SAAS,mBAAmB;AAC1B,QAAM,EAAE,eAAA,IAAmBC,MAAA,QAAQ,iBAAiB;AAC9C,QAAA,gBAAgBC,oBAAU;AAChC,QAAM,EAAE,MAAM,IAAI,IAAIC,qBAAe;AAC/B,QAAA,EAAE,mBAAmB,IAAIC,sBAAgB;AACzC,QAAA,EAAE,YAAY,IAAIC,wCAAyB;AACjD,QAAM,CAAC,iBAAiB,kBAAkB,IAAIC,eAAmB;AAC3D,QAAA,aAAa,aAAa,KAAK;AAErCN,QAAAA,UAAU,MAAM;AACV,QAAA,CAAC,eAAe,eAAe;AACjC;AAAA,IAAA;AAEF,UAAM,uBAAuB,YAAY;AACnC,UAAA;AACF,cAAM,EAAE,KAAA,IAAS,MAAM,IAAI,gCAAgC;AACpD,eAAA;AAAA,eACA,OAAO;AACN,gBAAA,MAAM,oCAAoC,KAAK;AAChD,eAAA;AAAA,MAAA;AAAA,IAEX;AACqB,yBAAA,EAAE,KAAK,CAAC,SAAS;AACpC,yBAAmB,IAAI;AAAA,IAAA,CACxB;AAAA,EAAA,GACA,CAAC,eAAe,aAAa,CAAC;AAEjC,QAAM,aAAa,MAAM;AACvB,QAAI,CAAC,YAAY;AACI,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA,CACF;AACD;AAAA,IAAA;AAGG,SAAA,6BAA6B,UAAU,IAAI,QAAW;AAAA,MACzD,SAAS;AAAA,QACP,gBAAgB;AAAA,MAAA;AAAA,IAClB,CACD,EACE,KAAK,MAAM;AACS,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SACE,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,IAAI,KAAK,UAAU;AAAA,MAAA,CACvB;AAAA,IAAA,CACF,EACA,MAAM,MAAM;AACQ,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SACE,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,IAAI,KAAK,UAAU;AAAA,MAAA,CACvB;AAAA,IAAA,CACF;AAAA,EACL;AAEA,QAAM,mBAAmB,MAAM;AACzB,QAAA,CAAC,cAAc,CAAC,iBAAiB;AAC5B,aAAA;AAAA,IAAA;AAGT,WACE,gBAAgB,WAAW,KAC3B,gBAAgB,KAAK,CAAC,UAAU;AACvB,aAAA,MAAM,SAAS,UAAU;AAAA,IAAA,CACjC;AAAA,EAEL;AAEA,MAAI,CAAC,eAAe,iBAAiB,CAAC,oBAAoB;AACjD,WAAA;AAAA,EAAA;AAGT,SAEIO,2BAAA,IAAAC,WAAA,UAAA,EAAA,UAAAC,2BAAA,KAACC,mBAAM,MAAN,EACC,UAAA;AAAA,IAACH,2BAAA,IAAAG,aAAA,MAAM,SAAN,EACC,UAACH,2BAAAA,IAAAI,aAAAA,QAAA,EAAO,WAAWJ,2BAAAA,IAACK,MAAAA,SAAQ,CAAA,CAAA,GAAI,SAAQ,UACrC,UAAc,cAAA;AAAA,MACb,IAAI;AAAA,MACJ,gBAAgB;AAAA,IAAA,CACjB,GACH,EACF,CAAA;AAAA,IACAH,2BAAAA,KAACC,aAAM,MAAA,SAAN,EACC,UAAA;AAAA,MAAAH,+BAACG,aAAAA,MAAM,QAAN,EACC,yCAACA,aAAAA,MAAM,OAAN,EACE,UAAc,cAAA;AAAA,QACb,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,qCACCA,aAAM,MAAA,MAAN,EACC,UAACH,2BAAAA,IAAAM,aAAA,YAAA,EAAW,SAAQ,SACjB,UAAA;AAAA,QACC;AAAA,UACE,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,QACA;AAAA,UACE,KAAK,IAAI,UAAU;AAAA,QAAA;AAAA,SAGzB,EACF,CAAA;AAAA,MACAJ,2BAAAA,KAACC,aAAM,MAAA,QAAN,EACC,UAAA;AAAA,QAAAH,2BAAAA,IAACG,mBAAM,OAAN,EACC,yCAACC,aAAO,QAAA,EAAA,SAAQ,YACb,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,GACH,EACF,CAAA;AAAA,QACAJ,2BAAAA,IAACG,mBAAM,OAAN,EACC,yCAACC,aAAO,QAAA,EAAA,SAAS,YACd,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA,EACH,CAAA,EACF,CAAA;AAAA,MAAA,EACF,CAAA;AAAA,IAAA,EACF,CAAA;AAAA,EAAA,EAAA,CACF,EACF,CAAA;AAEJ;ACxIA,SAAS,oBAAoB;AAC3B,QAAM,EAAE,eAAA,IAAmBV,MAAA,QAAQ,iBAAiB;AAC9C,QAAA,gBAAgBC,oBAAU;AAChC,QAAM,EAAE,MAAM,IAAI,IAAIC,qBAAe;AAC/B,QAAA,EAAE,mBAAmB,IAAIC,sBAAgB;AAC/C,QAAM,EAAE,aAAa,GAAG,IAAIC,wCAAyB;AACrD,QAAM,CAAC,iBAAiB,kBAAkB,IAAIC,eAAmB;AAC3D,QAAA,aAAa,aAAa,KAAK;AAErCN,QAAAA,UAAU,MAAM;AACV,QAAA,CAAC,eAAe,eAAe;AACjC;AAAA,IAAA;AAEF,UAAM,uBAAuB,YAAY;AACnC,UAAA;AACF,cAAM,EAAE,KAAA,IAAS,MAAM,IAAI,gCAAgC;AACpD,eAAA;AAAA,eACA,OAAO;AACN,gBAAA,MAAM,oCAAoC,KAAK;AAChD,eAAA;AAAA,MAAA;AAAA,IAEX;AACqB,yBAAA,EAAE,KAAK,CAAC,SAAS;AACpC,yBAAmB,IAAI;AAAA,IAAA,CACxB;AAAA,EAAA,GACA,CAAC,eAAe,aAAa,CAAC;AAEjC,QAAM,aAAa,MAAM;AACvB,QAAI,CAAC,YAAY;AACI,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SAAS,cAAc;AAAA,UACrB,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA;AAAA,MAAA,CACF;AACD;AAAA,IAAA;AAGG,SAAA,6BAA6B,EAAE,IAAI,QAAW;AAAA,MACjD,SAAS;AAAA,QACP,gBAAgB;AAAA,MAAA;AAAA,IAClB,CACD,EACE,KAAK,MAAM;AACS,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SACE,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,IAAI,KAAK,UAAU;AAAA,MAAA,CACvB;AAAA,IAAA,CACF,EACA,MAAM,MAAM;AACQ,yBAAA;AAAA,QACjB,MAAM;AAAA,QACN,SACE,cAAc;AAAA,UACZ,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,IAAI,KAAK,UAAU;AAAA,MAAA,CACvB;AAAA,IAAA,CACF;AAAA,EACL;AAEA,QAAM,mBAAmB,MAAM;AACzB,QAAA,CAAC,cAAc,CAAC,iBAAiB;AAC5B,aAAA;AAAA,IAAA;AAGT,WACE,gBAAgB,WAAW,KAC3B,gBAAgB,KAAK,CAAC,UAAU;AACvB,aAAA,MAAM,SAAS,UAAU;AAAA,IAAA,CACjC;AAAA,EAEL;AAEA,MAAI,CAAC,eAAe,iBAAiB,CAAC,oBAAoB;AACjD,WAAA;AAAA,EAAA;AAGT,SAEIO,2BAAA,IAAAC,WAAA,UAAA,EAAA,UAAAC,2BAAA,KAACC,mBAAM,MAAN,EACC,UAAA;AAAA,IAAAH,2BAAA,IAACG,aAAM,MAAA,SAAN,EACC,UAAAH,+BAACI,aAAAA,QAAO,EAAA,OAAO,QAAQ,WAAYJ,2BAAAA,IAAAK,MAAAA,SAAA,CAAQ,CAAA,GAAI,SAAQ,UACpD,UAAc,cAAA;AAAA,MACb,IAAI;AAAA,MACJ,gBAAgB;AAAA,IAAA,CACjB,GACH,EACF,CAAA;AAAA,IACAH,2BAAAA,KAACC,aAAM,MAAA,SAAN,EACC,UAAA;AAAA,MAAAH,+BAACG,aAAAA,MAAM,QAAN,EACC,yCAACA,aAAAA,MAAM,OAAN,EACE,UAAc,cAAA;AAAA,QACb,IAAI;AAAA,QACJ,gBAAgB;AAAA,MAAA,CACjB,GACH,EACF,CAAA;AAAA,qCACCA,aAAM,MAAA,MAAN,EACC,UAACH,2BAAAA,IAAAM,aAAA,YAAA,EAAW,SAAQ,SACjB,UAAA;AAAA,QACC;AAAA,UACE,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAClB;AAAA,QACA,EAAE,KAAK,IAAI,EAAE,IAAI;AAAA,SAErB,EACF,CAAA;AAAA,MACAJ,2BAAAA,KAACC,aAAM,MAAA,QAAN,EACC,UAAA;AAAA,QAAAH,2BAAAA,IAACG,mBAAM,OAAN,EACC,yCAACC,aAAO,QAAA,EAAA,SAAQ,YACb,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QAAA,CACjB,GACH,EACF,CAAA;AAAA,QACAJ,2BAAAA,IAACG,mBAAM,OAAN,EACC,yCAACC,aAAO,QAAA,EAAA,SAAS,YACd,UAAc,cAAA;AAAA,UACb,IAAI;AAAA,UACJ,gBAAgB;AAAA,QACjB,CAAA,EACH,CAAA,EACF,CAAA;AAAA,MAAA,EACF,CAAA;AAAA,IAAA,EACF,CAAA;AAAA,EAAA,EAAA,CACF,EACF,CAAA;AAEJ;AChJA,MAAe,QAAA;AAAA,EACb,SAAS,KAAU;AACjB,QAAI,eAAe;AAAA,MACjB,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS;AAAA,MACT,MAAM;AAAA,IAAA,CACP;AAED,QAAI,UAAU,iBAAiB,EAAE,gBAAgB,YAAY,WAAW;AAAA,MACtE,MAAM;AAAA,MACN,WAAW;AAAA,IAAA,CACZ;AAED,QAAI,UAAU,iBAAiB,EAAE,gBAAgB,YAAY,eAAe;AAAA,MAC1E,MAAM;AAAA,MACN,WAAW;AAAA,IAAA,CACZ;AAAA,EACH;AAAA,EAEA,MAAM,cAAc,EAAE,WAAkC;AACtD,WAAO,QAAQ;AAAA,MACb,QAAQ,IAAI,OAAO,WAAW;AACxB,YAAA;AACF,gBAAM,EAAE,SAAS,SAAS,MAAM,qCAAA,uBAAA,OAAA,EAAA,0BAAA,MAAA,QAAA,QAAA,EAAA,KAAA,MAAA,QAAA,2BAAA,CAAA,EAAA,CAAA,GAAA,kBAAA,MAAA,SAAA,CAAA;AAEzB,iBAAA,EAAE,MAAM,OAAO;AAAA,QAAA,QAChB;AACN,iBAAO,EAAE,MAAM,CAAC,GAAG,OAAO;AAAA,QAAA;AAAA,MAE7B,CAAA;AAAA,IACH;AAAA,EAAA;AAEJ;;"}
|
package/dist/admin/index.mjs
CHANGED
|
@@ -49,7 +49,7 @@ function PurgeCacheButton() {
|
|
|
49
49
|
return data;
|
|
50
50
|
} catch (error) {
|
|
51
51
|
console.error("Error fetching cacheable routes:", error);
|
|
52
|
-
return
|
|
52
|
+
return void 0;
|
|
53
53
|
}
|
|
54
54
|
};
|
|
55
55
|
fetchCacheableRoutes().then((data) => {
|
|
@@ -110,10 +110,114 @@ function PurgeCacheButton() {
|
|
|
110
110
|
id: "strapi-cache.cache.purge",
|
|
111
111
|
defaultMessage: "Purge Cache"
|
|
112
112
|
}) }) }),
|
|
113
|
-
/* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage(
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
/* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage(
|
|
114
|
+
{
|
|
115
|
+
id: "strapi-cache.cache.purge.confirmation",
|
|
116
|
+
defaultMessage: "Are you sure you want to purge the cache?"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
key: `"${pluralName}"`
|
|
120
|
+
}
|
|
121
|
+
) }) }),
|
|
122
|
+
/* @__PURE__ */ jsxs(Modal.Footer, { children: [
|
|
123
|
+
/* @__PURE__ */ jsx(Modal.Close, { children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", children: formatMessage({
|
|
124
|
+
id: "strapi-cache.cache.cancel",
|
|
125
|
+
defaultMessage: "No, cancel"
|
|
126
|
+
}) }) }),
|
|
127
|
+
/* @__PURE__ */ jsx(Modal.Close, { children: /* @__PURE__ */ jsx(Button, { onClick: clearCache, children: formatMessage({
|
|
128
|
+
id: "strapi-cache.cache.confirm",
|
|
129
|
+
defaultMessage: "Yes, confirm"
|
|
130
|
+
}) }) })
|
|
131
|
+
] })
|
|
132
|
+
] })
|
|
133
|
+
] }) });
|
|
134
|
+
}
|
|
135
|
+
function PurgeEntityButton() {
|
|
136
|
+
const { allowedActions } = useRBAC(pluginPermissions);
|
|
137
|
+
const formatMessage = useIntl().formatMessage;
|
|
138
|
+
const { post, get } = useFetchClient();
|
|
139
|
+
const { toggleNotification } = useNotification();
|
|
140
|
+
const { contentType, id } = unstable_useContentManagerContext();
|
|
141
|
+
const [cacheableRoutes, setCacheableRoutes] = useState();
|
|
142
|
+
const pluralName = contentType?.info.pluralName;
|
|
143
|
+
useEffect(() => {
|
|
144
|
+
if (!allowedActions.canPurgeCache) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const fetchCacheableRoutes = async () => {
|
|
148
|
+
try {
|
|
149
|
+
const { data } = await get("/strapi-cache/cacheable-routes");
|
|
150
|
+
return data;
|
|
151
|
+
} catch (error) {
|
|
152
|
+
console.error("Error fetching cacheable routes:", error);
|
|
153
|
+
return void 0;
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
fetchCacheableRoutes().then((data) => {
|
|
157
|
+
setCacheableRoutes(data);
|
|
158
|
+
});
|
|
159
|
+
}, [allowedActions.canPurgeCache]);
|
|
160
|
+
const clearCache = () => {
|
|
161
|
+
if (!pluralName) {
|
|
162
|
+
toggleNotification({
|
|
163
|
+
type: "warning",
|
|
164
|
+
message: formatMessage({
|
|
165
|
+
id: "strapi-cache.cache.purge.no-content-type",
|
|
166
|
+
defaultMessage: "No content type found"
|
|
167
|
+
})
|
|
168
|
+
});
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
post(`/strapi-cache/purge-cache/${id}`, void 0, {
|
|
172
|
+
headers: {
|
|
173
|
+
"Content-Type": "application/json"
|
|
174
|
+
}
|
|
175
|
+
}).then(() => {
|
|
176
|
+
toggleNotification({
|
|
177
|
+
type: "success",
|
|
178
|
+
message: formatMessage({
|
|
179
|
+
id: "strapi-cache.cache.purge.success",
|
|
180
|
+
defaultMessage: "Cache purged successfully"
|
|
181
|
+
}) + `: ${pluralName}`
|
|
182
|
+
});
|
|
183
|
+
}).catch(() => {
|
|
184
|
+
toggleNotification({
|
|
185
|
+
type: "danger",
|
|
186
|
+
message: formatMessage({
|
|
187
|
+
id: "strapi-cache.cache.purge.error",
|
|
188
|
+
defaultMessage: "Error purging cache"
|
|
189
|
+
}) + `: ${pluralName}`
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
const isCacheableRoute = () => {
|
|
194
|
+
if (!pluralName || !cacheableRoutes) {
|
|
195
|
+
return false;
|
|
196
|
+
}
|
|
197
|
+
return cacheableRoutes.length === 0 || cacheableRoutes.some((route) => {
|
|
198
|
+
return route.includes(pluralName);
|
|
199
|
+
});
|
|
200
|
+
};
|
|
201
|
+
if (!allowedActions.canPurgeCache || !isCacheableRoute()) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Modal.Root, { children: [
|
|
205
|
+
/* @__PURE__ */ jsx(Modal.Trigger, { children: /* @__PURE__ */ jsx(Button, { width: "100%", startIcon: /* @__PURE__ */ jsx(Archive, {}), variant: "danger", children: formatMessage({
|
|
206
|
+
id: "strapi-cache.cache.purge.entity",
|
|
207
|
+
defaultMessage: "Purge Entity Cache"
|
|
208
|
+
}) }) }),
|
|
209
|
+
/* @__PURE__ */ jsxs(Modal.Content, { children: [
|
|
210
|
+
/* @__PURE__ */ jsx(Modal.Header, { children: /* @__PURE__ */ jsx(Modal.Title, { children: formatMessage({
|
|
211
|
+
id: "strapi-cache.cache.purge.entity",
|
|
212
|
+
defaultMessage: "Purge Entity Cache"
|
|
116
213
|
}) }) }),
|
|
214
|
+
/* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage(
|
|
215
|
+
{
|
|
216
|
+
id: "strapi-cache.cache.purge.confirmation",
|
|
217
|
+
defaultMessage: "Are you sure you want to purge the cache?"
|
|
218
|
+
},
|
|
219
|
+
{ key: `"${id}"` }
|
|
220
|
+
) }) }),
|
|
117
221
|
/* @__PURE__ */ jsxs(Modal.Footer, { children: [
|
|
118
222
|
/* @__PURE__ */ jsx(Modal.Close, { children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", children: formatMessage({
|
|
119
223
|
id: "strapi-cache.cache.cancel",
|
|
@@ -139,12 +243,16 @@ const index = {
|
|
|
139
243
|
name: PurgeCacheButton,
|
|
140
244
|
Component: PurgeCacheButton
|
|
141
245
|
});
|
|
246
|
+
app.getPlugin("content-manager").injectComponent("editView", "right-links", {
|
|
247
|
+
name: PurgeEntityButton,
|
|
248
|
+
Component: PurgeEntityButton
|
|
249
|
+
});
|
|
142
250
|
},
|
|
143
251
|
async registerTrads({ locales }) {
|
|
144
252
|
return Promise.all(
|
|
145
253
|
locales.map(async (locale) => {
|
|
146
254
|
try {
|
|
147
|
-
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("../_chunks/en-
|
|
255
|
+
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("../_chunks/en-D3udXrSa.mjs") }), `./translations/${locale}.json`, 3);
|
|
148
256
|
return { data, locale };
|
|
149
257
|
} catch {
|
|
150
258
|
return { data: {}, locale };
|
package/dist/admin/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/permission.ts","../../admin/src/components/PurgeCacheButton/index.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = 'strapi-cache';\n","import { useEffect, useRef } from 'react';\n\nimport { PLUGIN_ID } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (id: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const ref = useRef(setPlugin);\n\n useEffect(() => {\n ref.current(PLUGIN_ID);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","export const pluginPermissions = {\n purge: [{ action: 'plugin::strapi-cache.purge-cache', subject: null }],\n};\n","import { useIntl } from 'react-intl';\nimport { Archive } from '@strapi/icons';\nimport { Button, Modal } from '@strapi/design-system';\nimport { useRBAC } from '@strapi/strapi/admin';\nimport { pluginPermissions } from '../../permission';\nimport { Typography } from '@strapi/design-system';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/strapi/admin';\nimport { useNotification } from '@strapi/strapi/admin';\nimport { useEffect, useState } from 'react';\n\nfunction PurgeCacheButton() {\n const { allowedActions } = useRBAC(pluginPermissions);\n const formatMessage = useIntl().formatMessage;\n const { post, get } = useFetchClient();\n const { toggleNotification } = useNotification();\n const { contentType } = useContentManagerContext();\n const [cacheableRoutes, setCacheableRoutes] = useState<string[]>();\n const pluralName = contentType?.info.pluralName;\n\n useEffect(() => {\n if (!allowedActions.canPurgeCache) {\n return;\n }\n const fetchCacheableRoutes = async () => {\n try {\n const { data } = await get('/strapi-cache/cacheable-routes');\n return data;\n } catch (error) {\n console.error('Error fetching cacheable routes:', error);\n return [];\n }\n };\n fetchCacheableRoutes().then((data) => {\n setCacheableRoutes(data);\n });\n }, [allowedActions.canPurgeCache]);\n\n const clearCache = () => {\n if (!pluralName) {\n toggleNotification({\n type: 'warning',\n message: formatMessage({\n id: 'strapi-cache.cache.purge.no-content-type',\n defaultMessage: 'No content type found',\n }),\n });\n return;\n }\n\n post(`/strapi-cache/purge-cache/${pluralName}`, undefined, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then(() => {\n toggleNotification({\n type: 'success',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.success',\n defaultMessage: 'Cache purged successfully',\n }) + `: ${pluralName}`,\n });\n })\n .catch(() => {\n toggleNotification({\n type: 'danger',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.error',\n defaultMessage: 'Error purging cache',\n }) + `: ${pluralName}`,\n });\n });\n };\n\n const isCacheableRoute = () => {\n if (!pluralName || !cacheableRoutes) {\n return false;\n }\n\n return (\n cacheableRoutes.length === 0 ||\n cacheableRoutes.some((route) => {\n return route.includes(pluralName);\n })\n );\n };\n\n if (!allowedActions.canPurgeCache || !isCacheableRoute()) {\n return null;\n }\n\n return (\n <>\n <Modal.Root>\n <Modal.Trigger>\n <Button startIcon={<Archive />} variant=\"danger\">\n {formatMessage({\n id: 'strapi-cache.cache.purge',\n defaultMessage: 'Purge Cache',\n })}\n </Button>\n </Modal.Trigger>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: 'strapi-cache.cache.purge',\n defaultMessage: 'Purge Cache',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Typography variant=\"omega\">\n {formatMessage({\n id: 'strapi-cache.cache.purge.confirmation',\n defaultMessage: 'Are you sure you want to purge the cache?',\n })}\n </Typography>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'strapi-cache.cache.cancel',\n defaultMessage: 'No, cancel',\n })}\n </Button>\n </Modal.Close>\n <Modal.Close>\n <Button onClick={clearCache}>\n {formatMessage({\n id: 'strapi-cache.cache.confirm',\n defaultMessage: 'Yes, confirm',\n })}\n </Button>\n </Modal.Close>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n </>\n );\n}\n\nexport default PurgeCacheButton;\n","import { PLUGIN_ID } from './pluginId';\nimport { Initializer } from './components/Initializer';\nimport PurgeCacheButton from './components/PurgeCacheButton';\n\nexport default {\n register(app: any) {\n app.registerPlugin({\n id: PLUGIN_ID,\n initializer: Initializer,\n isReady: false,\n name: PLUGIN_ID,\n });\n\n app.getPlugin('content-manager').injectComponent('listView', 'actions', {\n name: PurgeCacheButton,\n Component: PurgeCacheButton,\n });\n },\n\n async registerTrads({ locales }: { locales: string[] }) {\n return Promise.all(\n locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: {}, locale };\n }\n })\n );\n },\n};\n"],"names":["useContentManagerContext"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/permission.ts","../../admin/src/components/PurgeCacheButton/index.tsx","../../admin/src/components/PurgeEntityButton/index.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = 'strapi-cache';\n","import { useEffect, useRef } from 'react';\n\nimport { PLUGIN_ID } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (id: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const ref = useRef(setPlugin);\n\n useEffect(() => {\n ref.current(PLUGIN_ID);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","export const pluginPermissions = {\n purge: [{ action: 'plugin::strapi-cache.purge-cache', subject: null }],\n};\n","import { useIntl } from 'react-intl';\nimport { Archive } from '@strapi/icons';\nimport { Button, Modal } from '@strapi/design-system';\nimport { useRBAC } from '@strapi/strapi/admin';\nimport { pluginPermissions } from '../../permission';\nimport { Typography } from '@strapi/design-system';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/strapi/admin';\nimport { useNotification } from '@strapi/strapi/admin';\nimport { useEffect, useState } from 'react';\n\nfunction PurgeCacheButton() {\n const { allowedActions } = useRBAC(pluginPermissions);\n const formatMessage = useIntl().formatMessage;\n const { post, get } = useFetchClient();\n const { toggleNotification } = useNotification();\n const { contentType } = useContentManagerContext();\n const [cacheableRoutes, setCacheableRoutes] = useState<string[]>();\n const pluralName = contentType?.info.pluralName;\n\n useEffect(() => {\n if (!allowedActions.canPurgeCache) {\n return;\n }\n const fetchCacheableRoutes = async () => {\n try {\n const { data } = await get('/strapi-cache/cacheable-routes');\n return data;\n } catch (error) {\n console.error('Error fetching cacheable routes:', error);\n return undefined;\n }\n };\n fetchCacheableRoutes().then((data) => {\n setCacheableRoutes(data);\n });\n }, [allowedActions.canPurgeCache]);\n\n const clearCache = () => {\n if (!pluralName) {\n toggleNotification({\n type: 'warning',\n message: formatMessage({\n id: 'strapi-cache.cache.purge.no-content-type',\n defaultMessage: 'No content type found',\n }),\n });\n return;\n }\n\n post(`/strapi-cache/purge-cache/${pluralName}`, undefined, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then(() => {\n toggleNotification({\n type: 'success',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.success',\n defaultMessage: 'Cache purged successfully',\n }) + `: ${pluralName}`,\n });\n })\n .catch(() => {\n toggleNotification({\n type: 'danger',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.error',\n defaultMessage: 'Error purging cache',\n }) + `: ${pluralName}`,\n });\n });\n };\n\n const isCacheableRoute = () => {\n if (!pluralName || !cacheableRoutes) {\n return false;\n }\n\n return (\n cacheableRoutes.length === 0 ||\n cacheableRoutes.some((route) => {\n return route.includes(pluralName);\n })\n );\n };\n\n if (!allowedActions.canPurgeCache || !isCacheableRoute()) {\n return null;\n }\n\n return (\n <>\n <Modal.Root>\n <Modal.Trigger>\n <Button startIcon={<Archive />} variant=\"danger\">\n {formatMessage({\n id: 'strapi-cache.cache.purge',\n defaultMessage: 'Purge Cache',\n })}\n </Button>\n </Modal.Trigger>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: 'strapi-cache.cache.purge',\n defaultMessage: 'Purge Cache',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Typography variant=\"omega\">\n {formatMessage(\n {\n id: 'strapi-cache.cache.purge.confirmation',\n defaultMessage: 'Are you sure you want to purge the cache?',\n },\n {\n key: `\"${pluralName}\"`,\n }\n )}\n </Typography>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'strapi-cache.cache.cancel',\n defaultMessage: 'No, cancel',\n })}\n </Button>\n </Modal.Close>\n <Modal.Close>\n <Button onClick={clearCache}>\n {formatMessage({\n id: 'strapi-cache.cache.confirm',\n defaultMessage: 'Yes, confirm',\n })}\n </Button>\n </Modal.Close>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n </>\n );\n}\n\nexport default PurgeCacheButton;\n","//TODO: refactor and rid of duplicated code (PurgeEntityButton and PurgeCacheButton)\n\nimport { useIntl } from 'react-intl';\nimport { Archive } from '@strapi/icons';\nimport { Button, Modal } from '@strapi/design-system';\nimport { useRBAC } from '@strapi/strapi/admin';\nimport { pluginPermissions } from '../../permission';\nimport { Typography } from '@strapi/design-system';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/strapi/admin';\nimport { useNotification } from '@strapi/strapi/admin';\nimport { useEffect, useState } from 'react';\n\nfunction PurgeEntityButton() {\n const { allowedActions } = useRBAC(pluginPermissions);\n const formatMessage = useIntl().formatMessage;\n const { post, get } = useFetchClient();\n const { toggleNotification } = useNotification();\n const { contentType, id } = useContentManagerContext();\n const [cacheableRoutes, setCacheableRoutes] = useState<string[]>();\n const pluralName = contentType?.info.pluralName;\n\n useEffect(() => {\n if (!allowedActions.canPurgeCache) {\n return;\n }\n const fetchCacheableRoutes = async () => {\n try {\n const { data } = await get('/strapi-cache/cacheable-routes');\n return data;\n } catch (error) {\n console.error('Error fetching cacheable routes:', error);\n return undefined;\n }\n };\n fetchCacheableRoutes().then((data) => {\n setCacheableRoutes(data);\n });\n }, [allowedActions.canPurgeCache]);\n\n const clearCache = () => {\n if (!pluralName) {\n toggleNotification({\n type: 'warning',\n message: formatMessage({\n id: 'strapi-cache.cache.purge.no-content-type',\n defaultMessage: 'No content type found',\n }),\n });\n return;\n }\n\n post(`/strapi-cache/purge-cache/${id}`, undefined, {\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n .then(() => {\n toggleNotification({\n type: 'success',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.success',\n defaultMessage: 'Cache purged successfully',\n }) + `: ${pluralName}`,\n });\n })\n .catch(() => {\n toggleNotification({\n type: 'danger',\n message:\n formatMessage({\n id: 'strapi-cache.cache.purge.error',\n defaultMessage: 'Error purging cache',\n }) + `: ${pluralName}`,\n });\n });\n };\n\n const isCacheableRoute = () => {\n if (!pluralName || !cacheableRoutes) {\n return false;\n }\n\n return (\n cacheableRoutes.length === 0 ||\n cacheableRoutes.some((route) => {\n return route.includes(pluralName);\n })\n );\n };\n\n if (!allowedActions.canPurgeCache || !isCacheableRoute()) {\n return null;\n }\n\n return (\n <>\n <Modal.Root>\n <Modal.Trigger>\n <Button width={'100%'} startIcon={<Archive />} variant=\"danger\">\n {formatMessage({\n id: 'strapi-cache.cache.purge.entity',\n defaultMessage: 'Purge Entity Cache',\n })}\n </Button>\n </Modal.Trigger>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: 'strapi-cache.cache.purge.entity',\n defaultMessage: 'Purge Entity Cache',\n })}\n </Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Typography variant=\"omega\">\n {formatMessage(\n {\n id: 'strapi-cache.cache.purge.confirmation',\n defaultMessage: 'Are you sure you want to purge the cache?',\n },\n { key: `\"${id}\"` }\n )}\n </Typography>\n </Modal.Body>\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\">\n {formatMessage({\n id: 'strapi-cache.cache.cancel',\n defaultMessage: 'No, cancel',\n })}\n </Button>\n </Modal.Close>\n <Modal.Close>\n <Button onClick={clearCache}>\n {formatMessage({\n id: 'strapi-cache.cache.confirm',\n defaultMessage: 'Yes, confirm',\n })}\n </Button>\n </Modal.Close>\n </Modal.Footer>\n </Modal.Content>\n </Modal.Root>\n </>\n );\n}\n\nexport default PurgeEntityButton;\n","import { PLUGIN_ID } from './pluginId';\nimport { Initializer } from './components/Initializer';\nimport PurgeCacheButton from './components/PurgeCacheButton';\nimport PurgeEntityButton from './components/PurgeEntityButton';\n\nexport default {\n register(app: any) {\n app.registerPlugin({\n id: PLUGIN_ID,\n initializer: Initializer,\n isReady: false,\n name: PLUGIN_ID,\n });\n\n app.getPlugin('content-manager').injectComponent('listView', 'actions', {\n name: PurgeCacheButton,\n Component: PurgeCacheButton,\n });\n\n app.getPlugin('content-manager').injectComponent('editView', 'right-links', {\n name: PurgeEntityButton,\n Component: PurgeEntityButton,\n });\n },\n\n async registerTrads({ locales }: { locales: string[] }) {\n return Promise.all(\n locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: {}, locale };\n }\n })\n );\n },\n};\n"],"names":["useContentManagerContext"],"mappings":"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"}
|
package/package.json
CHANGED