strapi-cache 1.6.2-rc.1 → 1.6.2-rc.2
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/README.md +1 -1
- package/dist/_chunks/de-BABI25Ju.js +0 -1
- package/dist/_chunks/de-Dihl3Ias.mjs +0 -1
- package/dist/_chunks/en-CLhkAQFN.mjs +0 -1
- package/dist/_chunks/en-DYulQU0k.js +0 -1
- package/dist/_chunks/{index-nPKhLzd1.js → index-7Lm6jbM0.js} +1 -2
- package/dist/_chunks/{index-BsW67w0G.js → index-BJj5EZfj.js} +9 -6
- package/dist/_chunks/{index-B2N_r7ow.mjs → index-BS9N2eCV.mjs} +1 -2
- package/dist/_chunks/{index-CH_6jFHP.mjs → index-dynpWXaG.mjs} +9 -6
- package/dist/admin/index.js +1 -2
- package/dist/admin/index.mjs +1 -2
- package/dist/server/index.js +9 -3
- package/dist/server/index.mjs +9 -3
- package/package.json +1 -1
- package/dist/_chunks/de-BABI25Ju.js.map +0 -1
- package/dist/_chunks/de-Dihl3Ias.mjs.map +0 -1
- package/dist/_chunks/en-CLhkAQFN.mjs.map +0 -1
- package/dist/_chunks/en-DYulQU0k.js.map +0 -1
- package/dist/_chunks/index-0I5epaEy.mjs +0 -339
- package/dist/_chunks/index-0I5epaEy.mjs.map +0 -1
- package/dist/_chunks/index-4_D-e55T.mjs +0 -51
- package/dist/_chunks/index-4_D-e55T.mjs.map +0 -1
- package/dist/_chunks/index-AEAJzn1w.js +0 -329
- package/dist/_chunks/index-AEAJzn1w.js.map +0 -1
- package/dist/_chunks/index-B2N_r7ow.mjs.map +0 -1
- package/dist/_chunks/index-B4lfccXW.js +0 -51
- package/dist/_chunks/index-B4lfccXW.js.map +0 -1
- package/dist/_chunks/index-B9z92A-z.js +0 -338
- package/dist/_chunks/index-B9z92A-z.js.map +0 -1
- package/dist/_chunks/index-BAocboRs.mjs +0 -51
- package/dist/_chunks/index-BAocboRs.mjs.map +0 -1
- package/dist/_chunks/index-BDTo3jFO.js +0 -338
- package/dist/_chunks/index-BDTo3jFO.js.map +0 -1
- package/dist/_chunks/index-BDgn0QTy.mjs +0 -333
- package/dist/_chunks/index-BDgn0QTy.mjs.map +0 -1
- package/dist/_chunks/index-BK-ldmu4.mjs +0 -330
- package/dist/_chunks/index-BK-ldmu4.mjs.map +0 -1
- package/dist/_chunks/index-BPBBFdba.js +0 -51
- package/dist/_chunks/index-BPBBFdba.js.map +0 -1
- package/dist/_chunks/index-BRqFfzVo.js +0 -51
- package/dist/_chunks/index-BRqFfzVo.js.map +0 -1
- package/dist/_chunks/index-Babxgmom.js +0 -329
- package/dist/_chunks/index-Babxgmom.js.map +0 -1
- package/dist/_chunks/index-Bbs05bkg.js +0 -338
- package/dist/_chunks/index-Bbs05bkg.js.map +0 -1
- package/dist/_chunks/index-BhexB2Ap.mjs +0 -339
- package/dist/_chunks/index-BhexB2Ap.mjs.map +0 -1
- package/dist/_chunks/index-BleWVvBy.js +0 -51
- package/dist/_chunks/index-BleWVvBy.js.map +0 -1
- package/dist/_chunks/index-BpocF_uO.mjs +0 -51
- package/dist/_chunks/index-BpocF_uO.mjs.map +0 -1
- package/dist/_chunks/index-BsW67w0G.js.map +0 -1
- package/dist/_chunks/index-C7hTisBG.js +0 -51
- package/dist/_chunks/index-C7hTisBG.js.map +0 -1
- package/dist/_chunks/index-CAtoueJW.js +0 -51
- package/dist/_chunks/index-CAtoueJW.js.map +0 -1
- package/dist/_chunks/index-CEeS79tY.js +0 -332
- package/dist/_chunks/index-CEeS79tY.js.map +0 -1
- package/dist/_chunks/index-CH_6jFHP.mjs.map +0 -1
- package/dist/_chunks/index-CIkUFmSg.mjs +0 -51
- package/dist/_chunks/index-CIkUFmSg.mjs.map +0 -1
- package/dist/_chunks/index-CKXptyYg.mjs +0 -51
- package/dist/_chunks/index-CKXptyYg.mjs.map +0 -1
- package/dist/_chunks/index-CMD6gyze.mjs +0 -51
- package/dist/_chunks/index-CMD6gyze.mjs.map +0 -1
- package/dist/_chunks/index-CNdnmVNv.mjs +0 -333
- package/dist/_chunks/index-CNdnmVNv.mjs.map +0 -1
- package/dist/_chunks/index-CRIKbcQf.mjs +0 -51
- package/dist/_chunks/index-CRIKbcQf.mjs.map +0 -1
- package/dist/_chunks/index-C_lxmzx9.mjs +0 -339
- package/dist/_chunks/index-C_lxmzx9.mjs.map +0 -1
- package/dist/_chunks/index-Cb8-_hTN.js +0 -332
- package/dist/_chunks/index-Cb8-_hTN.js.map +0 -1
- package/dist/_chunks/index-CfW8wHJo.js +0 -51
- package/dist/_chunks/index-CfW8wHJo.js.map +0 -1
- package/dist/_chunks/index-CiKulRWM.mjs +0 -51
- package/dist/_chunks/index-CiKulRWM.mjs.map +0 -1
- package/dist/_chunks/index-CmkUlwFo.mjs +0 -51
- package/dist/_chunks/index-CmkUlwFo.mjs.map +0 -1
- package/dist/_chunks/index-Cp2mUH0P.mjs +0 -51
- package/dist/_chunks/index-Cp2mUH0P.mjs.map +0 -1
- package/dist/_chunks/index-CqFapeJX.js +0 -338
- package/dist/_chunks/index-CqFapeJX.js.map +0 -1
- package/dist/_chunks/index-CtY2yrFD.mjs +0 -340
- package/dist/_chunks/index-CtY2yrFD.mjs.map +0 -1
- package/dist/_chunks/index-Cw8htF0V.js +0 -51
- package/dist/_chunks/index-Cw8htF0V.js.map +0 -1
- package/dist/_chunks/index-D0RpKca8.js +0 -51
- package/dist/_chunks/index-D0RpKca8.js.map +0 -1
- package/dist/_chunks/index-D4MlIADe.mjs +0 -339
- package/dist/_chunks/index-D4MlIADe.mjs.map +0 -1
- package/dist/_chunks/index-D8vo3HTK.mjs +0 -333
- package/dist/_chunks/index-D8vo3HTK.mjs.map +0 -1
- package/dist/_chunks/index-DILoEiPw.js +0 -339
- package/dist/_chunks/index-DILoEiPw.js.map +0 -1
- package/dist/_chunks/index-DLSvStnN.js +0 -332
- package/dist/_chunks/index-DLSvStnN.js.map +0 -1
- package/dist/_chunks/index-DRfYMo02.mjs +0 -51
- package/dist/_chunks/index-DRfYMo02.mjs.map +0 -1
- package/dist/_chunks/index-D_s9wFvx.js +0 -51
- package/dist/_chunks/index-D_s9wFvx.js.map +0 -1
- package/dist/_chunks/index-DfNrHbHH.mjs +0 -51
- package/dist/_chunks/index-DfNrHbHH.mjs.map +0 -1
- package/dist/_chunks/index-Di3zybjV.mjs +0 -339
- package/dist/_chunks/index-Di3zybjV.mjs.map +0 -1
- package/dist/_chunks/index-DqecouGO.js +0 -51
- package/dist/_chunks/index-DqecouGO.js.map +0 -1
- package/dist/_chunks/index-DrWpyMvJ.mjs +0 -51
- package/dist/_chunks/index-DrWpyMvJ.mjs.map +0 -1
- package/dist/_chunks/index-DuPh9DG8.mjs +0 -333
- package/dist/_chunks/index-DuPh9DG8.mjs.map +0 -1
- package/dist/_chunks/index-DvS-9p_U.js +0 -51
- package/dist/_chunks/index-DvS-9p_U.js.map +0 -1
- package/dist/_chunks/index-KhVph3TL.js +0 -332
- package/dist/_chunks/index-KhVph3TL.js.map +0 -1
- package/dist/_chunks/index-XBDBRoF4.js +0 -338
- package/dist/_chunks/index-XBDBRoF4.js.map +0 -1
- package/dist/_chunks/index-dhIfLdu3.mjs +0 -339
- package/dist/_chunks/index-dhIfLdu3.mjs.map +0 -1
- package/dist/_chunks/index-gWZp3d_B.mjs +0 -330
- package/dist/_chunks/index-gWZp3d_B.mjs.map +0 -1
- package/dist/_chunks/index-jBwEyYSm.js +0 -338
- package/dist/_chunks/index-jBwEyYSm.js.map +0 -1
- package/dist/_chunks/index-nPKhLzd1.js.map +0 -1
- package/dist/_chunks/index-ycP1Faro.js +0 -51
- package/dist/_chunks/index-ycP1Faro.js.map +0 -1
- package/dist/admin/index.js.map +0 -1
- package/dist/admin/index.mjs.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/index.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -72,7 +72,7 @@ In your Strapi project, navigate to `config/plugins.js` and add the following co
|
|
|
72
72
|
The plugin creates three new routes
|
|
73
73
|
|
|
74
74
|
- `POST /strapi-cache/purge-cache` (purges the whole cache)
|
|
75
|
-
- `POST /strapi-cache/purge-cache
|
|
75
|
+
- `POST /strapi-cache/purge-cache/key` (purges cache entries that have the key in the cache key, expects JSON body with `key` field)
|
|
76
76
|
- `GET /strapi-cache/cacheable-routes` (returns the cacheable routes defined in the config)
|
|
77
77
|
- `GET /strapi-cache/config` (returns the current plugin config)
|
|
78
78
|
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const designSystem = require("@strapi/design-system");
|
|
5
5
|
const reactIntl = require("react-intl");
|
|
6
|
-
const index = require("./index-
|
|
6
|
+
const index = require("./index-BJj5EZfj.js");
|
|
7
7
|
const react = require("react");
|
|
8
8
|
const SettingsPage = () => {
|
|
9
9
|
const { formatMessage } = reactIntl.useIntl();
|
|
@@ -48,4 +48,3 @@ const SettingsPage = () => {
|
|
|
48
48
|
] });
|
|
49
49
|
};
|
|
50
50
|
exports.default = SettingsPage;
|
|
51
|
-
//# sourceMappingURL=index-nPKhLzd1.js.map
|
|
@@ -102,11 +102,15 @@ const useCacheOperations = () => {
|
|
|
102
102
|
};
|
|
103
103
|
}
|
|
104
104
|
try {
|
|
105
|
-
await post(
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
await post(
|
|
106
|
+
`/strapi-cache/purge-cache/key`,
|
|
107
|
+
{ key: keyToUse },
|
|
108
|
+
{
|
|
109
|
+
headers: {
|
|
110
|
+
"Content-Type": "application/json"
|
|
111
|
+
}
|
|
108
112
|
}
|
|
109
|
-
|
|
113
|
+
);
|
|
110
114
|
return {
|
|
111
115
|
success: true,
|
|
112
116
|
message: `Cache purged successfully for key: "${keyToUse}"`
|
|
@@ -314,7 +318,7 @@ const index = {
|
|
|
314
318
|
},
|
|
315
319
|
id: "settings",
|
|
316
320
|
to: `${PLUGIN_ID}/settings`,
|
|
317
|
-
Component: () => Promise.resolve().then(() => require("./index-
|
|
321
|
+
Component: () => Promise.resolve().then(() => require("./index-7Lm6jbM0.js")),
|
|
318
322
|
permissions: []
|
|
319
323
|
}
|
|
320
324
|
]
|
|
@@ -335,4 +339,3 @@ const index = {
|
|
|
335
339
|
};
|
|
336
340
|
exports.PurgeModal = PurgeModal;
|
|
337
341
|
exports.index = index;
|
|
338
|
-
//# sourceMappingURL=index-BsW67w0G.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Typography, TextInput } from "@strapi/design-system";
|
|
3
3
|
import { useIntl } from "react-intl";
|
|
4
|
-
import { P as PurgeModal } from "./index-
|
|
4
|
+
import { P as PurgeModal } from "./index-dynpWXaG.mjs";
|
|
5
5
|
import { useState } from "react";
|
|
6
6
|
const SettingsPage = () => {
|
|
7
7
|
const { formatMessage } = useIntl();
|
|
@@ -48,4 +48,3 @@ const SettingsPage = () => {
|
|
|
48
48
|
export {
|
|
49
49
|
SettingsPage as default
|
|
50
50
|
};
|
|
51
|
-
//# sourceMappingURL=index-B2N_r7ow.mjs.map
|
|
@@ -101,11 +101,15 @@ const useCacheOperations = () => {
|
|
|
101
101
|
};
|
|
102
102
|
}
|
|
103
103
|
try {
|
|
104
|
-
await post(
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
await post(
|
|
105
|
+
`/strapi-cache/purge-cache/key`,
|
|
106
|
+
{ key: keyToUse },
|
|
107
|
+
{
|
|
108
|
+
headers: {
|
|
109
|
+
"Content-Type": "application/json"
|
|
110
|
+
}
|
|
107
111
|
}
|
|
108
|
-
|
|
112
|
+
);
|
|
109
113
|
return {
|
|
110
114
|
success: true,
|
|
111
115
|
message: `Cache purged successfully for key: "${keyToUse}"`
|
|
@@ -313,7 +317,7 @@ const index = {
|
|
|
313
317
|
},
|
|
314
318
|
id: "settings",
|
|
315
319
|
to: `${PLUGIN_ID}/settings`,
|
|
316
|
-
Component: () => import("./index-
|
|
320
|
+
Component: () => import("./index-BS9N2eCV.mjs"),
|
|
317
321
|
permissions: []
|
|
318
322
|
}
|
|
319
323
|
]
|
|
@@ -336,4 +340,3 @@ export {
|
|
|
336
340
|
PurgeModal as P,
|
|
337
341
|
index as i
|
|
338
342
|
};
|
|
339
|
-
//# sourceMappingURL=index-CH_6jFHP.mjs.map
|
package/dist/admin/index.js
CHANGED
package/dist/admin/index.mjs
CHANGED
package/dist/server/index.js
CHANGED
|
@@ -489,7 +489,14 @@ const controller = ({ strapi: strapi2 }) => ({
|
|
|
489
489
|
};
|
|
490
490
|
},
|
|
491
491
|
async purgeCacheByKey(ctx) {
|
|
492
|
-
const { key } = ctx.
|
|
492
|
+
const { key } = ctx.request.body;
|
|
493
|
+
if (!key || typeof key !== "string" || key.trim() === "") {
|
|
494
|
+
ctx.status = 400;
|
|
495
|
+
ctx.body = {
|
|
496
|
+
error: "Key is required and must be a non-empty string"
|
|
497
|
+
};
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
493
500
|
const service2 = strapi2.plugin("strapi-cache").service("service");
|
|
494
501
|
const regex = new RegExp(`(^|/)?${key}(/|\\?|$)`);
|
|
495
502
|
await service2.getCacheInstance().clearByRegexp([regex]);
|
|
@@ -534,7 +541,7 @@ const purgeRoute = [
|
|
|
534
541
|
},
|
|
535
542
|
{
|
|
536
543
|
method: "POST",
|
|
537
|
-
path: "/purge-cache
|
|
544
|
+
path: "/purge-cache/key",
|
|
538
545
|
handler: "controller.purgeCacheByKey",
|
|
539
546
|
config: {
|
|
540
547
|
policies: [
|
|
@@ -833,4 +840,3 @@ const index = {
|
|
|
833
840
|
middlewares
|
|
834
841
|
};
|
|
835
842
|
module.exports = index;
|
|
836
|
-
//# sourceMappingURL=index.js.map
|
package/dist/server/index.mjs
CHANGED
|
@@ -485,7 +485,14 @@ const controller = ({ strapi: strapi2 }) => ({
|
|
|
485
485
|
};
|
|
486
486
|
},
|
|
487
487
|
async purgeCacheByKey(ctx) {
|
|
488
|
-
const { key } = ctx.
|
|
488
|
+
const { key } = ctx.request.body;
|
|
489
|
+
if (!key || typeof key !== "string" || key.trim() === "") {
|
|
490
|
+
ctx.status = 400;
|
|
491
|
+
ctx.body = {
|
|
492
|
+
error: "Key is required and must be a non-empty string"
|
|
493
|
+
};
|
|
494
|
+
return;
|
|
495
|
+
}
|
|
489
496
|
const service2 = strapi2.plugin("strapi-cache").service("service");
|
|
490
497
|
const regex = new RegExp(`(^|/)?${key}(/|\\?|$)`);
|
|
491
498
|
await service2.getCacheInstance().clearByRegexp([regex]);
|
|
@@ -530,7 +537,7 @@ const purgeRoute = [
|
|
|
530
537
|
},
|
|
531
538
|
{
|
|
532
539
|
method: "POST",
|
|
533
|
-
path: "/purge-cache
|
|
540
|
+
path: "/purge-cache/key",
|
|
534
541
|
handler: "controller.purgeCacheByKey",
|
|
535
542
|
config: {
|
|
536
543
|
policies: [
|
|
@@ -831,4 +838,3 @@ const index = {
|
|
|
831
838
|
export {
|
|
832
839
|
index as default
|
|
833
840
|
};
|
|
834
|
-
//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"de-BABI25Ju.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"de-Dihl3Ias.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"en-CLhkAQFN.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"en-DYulQU0k.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;"}
|
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
import { useRef, useEffect, useState } from "react";
|
|
2
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
3
|
-
import { useFetchClient, useRBAC, useNotification, unstable_useContentManagerContext } from "@strapi/strapi/admin";
|
|
4
|
-
import { useIntl } from "react-intl";
|
|
5
|
-
import { Archive } from "@strapi/icons";
|
|
6
|
-
import { Modal, Button, Typography } from "@strapi/design-system";
|
|
7
|
-
const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
|
|
8
|
-
const v = glob[path];
|
|
9
|
-
if (v) {
|
|
10
|
-
return typeof v === "function" ? v() : Promise.resolve(v);
|
|
11
|
-
}
|
|
12
|
-
return new Promise((_, reject) => {
|
|
13
|
-
(typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
|
|
14
|
-
reject.bind(
|
|
15
|
-
null,
|
|
16
|
-
new Error(
|
|
17
|
-
"Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
|
|
18
|
-
)
|
|
19
|
-
)
|
|
20
|
-
);
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
const PLUGIN_ID = "strapi-cache";
|
|
24
|
-
const Initializer = ({ setPlugin }) => {
|
|
25
|
-
const ref = useRef(setPlugin);
|
|
26
|
-
useEffect(() => {
|
|
27
|
-
ref.current(PLUGIN_ID);
|
|
28
|
-
}, []);
|
|
29
|
-
return null;
|
|
30
|
-
};
|
|
31
|
-
const useCacheConfig = (enabled = true) => {
|
|
32
|
-
const [config, setConfig] = useState();
|
|
33
|
-
const [isLoading, setIsLoading] = useState(false);
|
|
34
|
-
const [error, setError] = useState(null);
|
|
35
|
-
const { get } = useFetchClient();
|
|
36
|
-
useEffect(() => {
|
|
37
|
-
if (!enabled) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
const fetchConfig = async () => {
|
|
41
|
-
setIsLoading(true);
|
|
42
|
-
setError(null);
|
|
43
|
-
try {
|
|
44
|
-
const { data } = await get("/strapi-cache/config");
|
|
45
|
-
setConfig(data);
|
|
46
|
-
} catch (error2) {
|
|
47
|
-
setError(error2);
|
|
48
|
-
} finally {
|
|
49
|
-
setIsLoading(false);
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
fetchConfig();
|
|
53
|
-
}, [enabled, get]);
|
|
54
|
-
return {
|
|
55
|
-
config,
|
|
56
|
-
isLoading,
|
|
57
|
-
error,
|
|
58
|
-
refetch: () => {
|
|
59
|
-
const fetchConfig = async () => {
|
|
60
|
-
setIsLoading(true);
|
|
61
|
-
setError(null);
|
|
62
|
-
try {
|
|
63
|
-
const { data } = await get("/strapi-cache/config");
|
|
64
|
-
setConfig(data);
|
|
65
|
-
} catch (error2) {
|
|
66
|
-
setError(error2);
|
|
67
|
-
} finally {
|
|
68
|
-
setIsLoading(false);
|
|
69
|
-
}
|
|
70
|
-
};
|
|
71
|
-
fetchConfig();
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
};
|
|
75
|
-
const pluginPermissions = {
|
|
76
|
-
purge: [{ action: "plugin::strapi-cache.purge-cache", subject: null }]
|
|
77
|
-
};
|
|
78
|
-
const useCachePermissions = () => {
|
|
79
|
-
const { allowedActions } = useRBAC(pluginPermissions);
|
|
80
|
-
return {
|
|
81
|
-
canPurgeCache: allowedActions.canPurgeCache,
|
|
82
|
-
allowedActions
|
|
83
|
-
};
|
|
84
|
-
};
|
|
85
|
-
const useCacheOperations = () => {
|
|
86
|
-
const { post } = useFetchClient();
|
|
87
|
-
const isCacheableRoute = (keyToUse, contentTypeName, config) => {
|
|
88
|
-
if (!keyToUse || !config) {
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
const { cacheableRoutes } = config;
|
|
92
|
-
return cacheableRoutes.length === 0 || cacheableRoutes.some((route) => {
|
|
93
|
-
return route.includes(keyToUse) || contentTypeName && route.includes(contentTypeName);
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
|
-
const clearCache = async (keyToUse) => {
|
|
97
|
-
if (!keyToUse) {
|
|
98
|
-
return {
|
|
99
|
-
success: false,
|
|
100
|
-
message: "No content type found"
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
try {
|
|
104
|
-
await post(`/strapi-cache/purge-cache/${keyToUse}`, void 0, {
|
|
105
|
-
headers: {
|
|
106
|
-
"Content-Type": "application/json"
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
return {
|
|
110
|
-
success: true,
|
|
111
|
-
message: `Cache purged successfully for key: "${keyToUse}"`
|
|
112
|
-
};
|
|
113
|
-
} catch (error) {
|
|
114
|
-
return {
|
|
115
|
-
success: false,
|
|
116
|
-
message: `Error purging cache for key: "${keyToUse}"`,
|
|
117
|
-
error
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
return {
|
|
122
|
-
isCacheableRoute,
|
|
123
|
-
clearCache
|
|
124
|
-
};
|
|
125
|
-
};
|
|
126
|
-
const useCacheNotifications = (config) => {
|
|
127
|
-
const formatMessage = useIntl().formatMessage;
|
|
128
|
-
const { toggleNotification } = useNotification();
|
|
129
|
-
const showConfigFetchError = (error) => {
|
|
130
|
-
const isPermissionError = error?.response?.status === 403 || error?.response?.status === 401;
|
|
131
|
-
if (!isPermissionError && !config?.disableAdminPopups) {
|
|
132
|
-
toggleNotification({
|
|
133
|
-
type: "warning",
|
|
134
|
-
message: formatMessage({
|
|
135
|
-
id: "strapi-cache.cache.routes.fetch-error",
|
|
136
|
-
defaultMessage: "Unable to fetch cache config. Cache purge may not work correctly."
|
|
137
|
-
})
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
const showPurgeSuccess = (key) => {
|
|
142
|
-
if (!config?.disableAdminPopups) {
|
|
143
|
-
toggleNotification({
|
|
144
|
-
type: "success",
|
|
145
|
-
message: formatMessage(
|
|
146
|
-
{
|
|
147
|
-
id: "strapi-cache.cache.purge.success",
|
|
148
|
-
defaultMessage: "Cache purged successfully"
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
key: `"${key}"`
|
|
152
|
-
}
|
|
153
|
-
)
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
const showPurgeError = (key) => {
|
|
158
|
-
if (!config?.disableAdminPopups) {
|
|
159
|
-
toggleNotification({
|
|
160
|
-
type: "danger",
|
|
161
|
-
message: formatMessage(
|
|
162
|
-
{
|
|
163
|
-
id: "strapi-cache.cache.purge.error",
|
|
164
|
-
defaultMessage: "Error purging cache"
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
key: `"${key}"`
|
|
168
|
-
}
|
|
169
|
-
)
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
};
|
|
173
|
-
const showNoContentTypeWarning = () => {
|
|
174
|
-
if (!config?.disableAdminPopups) {
|
|
175
|
-
toggleNotification({
|
|
176
|
-
type: "warning",
|
|
177
|
-
message: formatMessage({
|
|
178
|
-
id: "strapi-cache.cache.purge.no-content-type",
|
|
179
|
-
defaultMessage: "No content type found"
|
|
180
|
-
})
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
return {
|
|
185
|
-
showConfigFetchError,
|
|
186
|
-
showPurgeSuccess,
|
|
187
|
-
showPurgeError,
|
|
188
|
-
showNoContentTypeWarning
|
|
189
|
-
};
|
|
190
|
-
};
|
|
191
|
-
function PurgeModal({
|
|
192
|
-
buttonText,
|
|
193
|
-
keyToUse,
|
|
194
|
-
buttonWidth,
|
|
195
|
-
contentTypeName,
|
|
196
|
-
isDisabled
|
|
197
|
-
}) {
|
|
198
|
-
const { canPurgeCache } = useCachePermissions();
|
|
199
|
-
const { config, error: configError } = useCacheConfig(canPurgeCache);
|
|
200
|
-
const { clearCache } = useCacheOperations();
|
|
201
|
-
const { showConfigFetchError, showPurgeSuccess, showPurgeError, showNoContentTypeWarning } = useCacheNotifications(config);
|
|
202
|
-
const formatMessage = useIntl().formatMessage;
|
|
203
|
-
useEffect(() => {
|
|
204
|
-
if (configError) {
|
|
205
|
-
showConfigFetchError(configError);
|
|
206
|
-
}
|
|
207
|
-
}, [configError, showConfigFetchError]);
|
|
208
|
-
const handleClearCache = async () => {
|
|
209
|
-
if (!keyToUse) {
|
|
210
|
-
showNoContentTypeWarning();
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
const result = await clearCache(keyToUse);
|
|
214
|
-
if (result.success) {
|
|
215
|
-
showPurgeSuccess(keyToUse);
|
|
216
|
-
} else {
|
|
217
|
-
showPurgeError(keyToUse);
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
if (!canPurgeCache) {
|
|
221
|
-
return null;
|
|
222
|
-
}
|
|
223
|
-
return /* @__PURE__ */ jsxs(Modal.Root, { children: [
|
|
224
|
-
/* @__PURE__ */ jsx(Modal.Trigger, { children: /* @__PURE__ */ jsx(Button, { width: buttonWidth, startIcon: /* @__PURE__ */ jsx(Archive, {}), disabled: isDisabled, variant: "danger", children: buttonText }) }),
|
|
225
|
-
/* @__PURE__ */ jsxs(Modal.Content, { children: [
|
|
226
|
-
/* @__PURE__ */ jsx(Modal.Header, { children: /* @__PURE__ */ jsx(Modal.Title, { children: buttonText }) }),
|
|
227
|
-
/* @__PURE__ */ jsx(Modal.Body, { children: /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage(
|
|
228
|
-
{
|
|
229
|
-
id: "strapi-cache.cache.purge.confirmation",
|
|
230
|
-
defaultMessage: "Are you sure you want to purge the cache?"
|
|
231
|
-
},
|
|
232
|
-
{ key: `"${keyToUse}"` }
|
|
233
|
-
) }) }),
|
|
234
|
-
/* @__PURE__ */ jsxs(Modal.Footer, { children: [
|
|
235
|
-
/* @__PURE__ */ jsx(Modal.Close, { children: /* @__PURE__ */ jsx(Button, { variant: "tertiary", children: formatMessage({
|
|
236
|
-
id: "strapi-cache.cache.cancel",
|
|
237
|
-
defaultMessage: "No, cancel"
|
|
238
|
-
}) }) }),
|
|
239
|
-
/* @__PURE__ */ jsx(Modal.Close, { children: /* @__PURE__ */ jsx(Button, { onClick: handleClearCache, children: formatMessage({
|
|
240
|
-
id: "strapi-cache.cache.confirm",
|
|
241
|
-
defaultMessage: "Yes, confirm"
|
|
242
|
-
}) }) })
|
|
243
|
-
] })
|
|
244
|
-
] })
|
|
245
|
-
] });
|
|
246
|
-
}
|
|
247
|
-
function PurgeCacheButton() {
|
|
248
|
-
const { contentType } = unstable_useContentManagerContext();
|
|
249
|
-
const { formatMessage } = useIntl();
|
|
250
|
-
const keyToUse = contentType?.info.pluralName;
|
|
251
|
-
return /* @__PURE__ */ jsx(
|
|
252
|
-
PurgeModal,
|
|
253
|
-
{
|
|
254
|
-
buttonText: formatMessage({
|
|
255
|
-
id: "strapi-cache.cache.purge",
|
|
256
|
-
defaultMessage: "Purge Cache"
|
|
257
|
-
}),
|
|
258
|
-
keyToUse
|
|
259
|
-
}
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
|
-
function PurgeEntityButton() {
|
|
263
|
-
const { formatMessage } = useIntl();
|
|
264
|
-
const { id, isSingleType, contentType } = unstable_useContentManagerContext();
|
|
265
|
-
const apiPath = isSingleType ? contentType?.info.singularName : id;
|
|
266
|
-
if (!apiPath) {
|
|
267
|
-
return null;
|
|
268
|
-
}
|
|
269
|
-
const keyToUse = encodeURIComponent(apiPath);
|
|
270
|
-
const contentTypeName = isSingleType ? contentType?.info.singularName : contentType?.info.pluralName;
|
|
271
|
-
return /* @__PURE__ */ jsx(
|
|
272
|
-
PurgeModal,
|
|
273
|
-
{
|
|
274
|
-
buttonWidth: "100%",
|
|
275
|
-
buttonText: formatMessage({
|
|
276
|
-
id: "strapi-cache.cache.purge.entity",
|
|
277
|
-
defaultMessage: "Purge Entity Cache"
|
|
278
|
-
}),
|
|
279
|
-
keyToUse,
|
|
280
|
-
contentTypeName
|
|
281
|
-
}
|
|
282
|
-
);
|
|
283
|
-
}
|
|
284
|
-
const index = {
|
|
285
|
-
register(app) {
|
|
286
|
-
app.registerPlugin({
|
|
287
|
-
id: PLUGIN_ID,
|
|
288
|
-
initializer: Initializer,
|
|
289
|
-
isReady: false,
|
|
290
|
-
name: PLUGIN_ID
|
|
291
|
-
});
|
|
292
|
-
app.getPlugin("content-manager").injectComponent("listView", "actions", {
|
|
293
|
-
name: PurgeCacheButton,
|
|
294
|
-
Component: PurgeCacheButton
|
|
295
|
-
});
|
|
296
|
-
app.getPlugin("content-manager").injectComponent("editView", "right-links", {
|
|
297
|
-
name: PurgeEntityButton,
|
|
298
|
-
Component: PurgeEntityButton
|
|
299
|
-
});
|
|
300
|
-
app.createSettingSection(
|
|
301
|
-
{
|
|
302
|
-
id: PLUGIN_ID,
|
|
303
|
-
intlLabel: {
|
|
304
|
-
id: "strapi-cache.settings.link",
|
|
305
|
-
defaultMessage: "Strapi Cache"
|
|
306
|
-
}
|
|
307
|
-
},
|
|
308
|
-
[
|
|
309
|
-
{
|
|
310
|
-
intlLabel: {
|
|
311
|
-
id: "strapi-cache.settings.link",
|
|
312
|
-
defaultMessage: "Strapi Cache"
|
|
313
|
-
},
|
|
314
|
-
id: "settings",
|
|
315
|
-
to: `${PLUGIN_ID}/settings`,
|
|
316
|
-
Component: () => import("./index-CRIKbcQf.mjs"),
|
|
317
|
-
permissions: []
|
|
318
|
-
}
|
|
319
|
-
]
|
|
320
|
-
);
|
|
321
|
-
},
|
|
322
|
-
async registerTrads({ locales }) {
|
|
323
|
-
return Promise.all(
|
|
324
|
-
locales.map(async (locale) => {
|
|
325
|
-
try {
|
|
326
|
-
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/de.json": () => import("./de-Dihl3Ias.mjs"), "./translations/en.json": () => import("./en-CLhkAQFN.mjs") }), `./translations/${locale}.json`, 3);
|
|
327
|
-
return { data, locale };
|
|
328
|
-
} catch {
|
|
329
|
-
return { data: {}, locale };
|
|
330
|
-
}
|
|
331
|
-
})
|
|
332
|
-
);
|
|
333
|
-
}
|
|
334
|
-
};
|
|
335
|
-
export {
|
|
336
|
-
PurgeModal as P,
|
|
337
|
-
index as i
|
|
338
|
-
};
|
|
339
|
-
//# sourceMappingURL=index-0I5epaEy.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-0I5epaEy.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/hooks/useCacheConfig.ts","../../admin/src/permission.ts","../../admin/src/hooks/useCachePermissions.ts","../../admin/src/hooks/useCacheOperations.ts","../../admin/src/hooks/useCacheNotifications.ts","../../admin/src/components/PurgeModal/index.tsx","../../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","import { useState, useEffect } from 'react';\nimport { useFetchClient } from '@strapi/strapi/admin';\n\nexport type CacheConfig = {\n cacheableRoutes: string[];\n disableAdminPopups: boolean;\n};\n\nexport const useCacheConfig = (enabled: boolean = true) => {\n const [config, setConfig] = useState<CacheConfig>();\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const { get } = useFetchClient();\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const fetchConfig = async () => {\n setIsLoading(true);\n setError(null);\n\n try {\n const { data } = await get('/strapi-cache/config');\n setConfig(data);\n } catch (error: any) {\n setError(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchConfig();\n }, [enabled, get]);\n\n return {\n config,\n isLoading,\n error,\n refetch: () => {\n const fetchConfig = async () => {\n setIsLoading(true);\n setError(null);\n\n try {\n const { data } = await get('/strapi-cache/config');\n setConfig(data);\n } catch (error: any) {\n setError(error);\n } finally {\n setIsLoading(false);\n }\n };\n fetchConfig();\n },\n };\n};\n","export const pluginPermissions = {\n purge: [{ action: 'plugin::strapi-cache.purge-cache', subject: null }],\n};\n","import { useRBAC } from '@strapi/strapi/admin';\nimport { pluginPermissions } from '../permission';\n\nexport const useCachePermissions = () => {\n const { allowedActions } = useRBAC(pluginPermissions);\n\n return {\n canPurgeCache: allowedActions.canPurgeCache,\n allowedActions,\n };\n};\n","import { useFetchClient } from '@strapi/strapi/admin';\nimport { CacheConfig } from './useCacheConfig';\n\nexport type CacheOperationResult = {\n success: boolean;\n message?: string;\n error?: Error;\n};\n\nexport const useCacheOperations = () => {\n const { post } = useFetchClient();\n\n const isCacheableRoute = (\n keyToUse?: string,\n contentTypeName?: string,\n config?: CacheConfig\n ): boolean => {\n if (!keyToUse || !config) {\n return false;\n }\n\n const { cacheableRoutes } = config;\n return (\n cacheableRoutes.length === 0 ||\n cacheableRoutes.some((route) => {\n return route.includes(keyToUse) || (contentTypeName && route.includes(contentTypeName));\n })\n );\n };\n\n const clearCache = async (keyToUse?: string): Promise<CacheOperationResult> => {\n if (!keyToUse) {\n return {\n success: false,\n message: 'No content type found',\n };\n }\n\n try {\n await post(`/strapi-cache/purge-cache/${keyToUse}`, undefined, {\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n return {\n success: true,\n message: `Cache purged successfully for key: \"${keyToUse}\"`,\n };\n } catch (error: any) {\n return {\n success: false,\n message: `Error purging cache for key: \"${keyToUse}\"`,\n error,\n };\n }\n };\n\n return {\n isCacheableRoute,\n clearCache,\n };\n};\n","import { useIntl } from 'react-intl';\nimport { useNotification } from '@strapi/strapi/admin';\nimport { CacheConfig } from './useCacheConfig';\n\nexport const useCacheNotifications = (config?: CacheConfig) => {\n const formatMessage = useIntl().formatMessage;\n const { toggleNotification } = useNotification();\n\n const showConfigFetchError = (error: Error) => {\n // only show error notification if its not a permissions error and popups are not disabled\n const isPermissionError =\n (error as any)?.response?.status === 403 || (error as any)?.response?.status === 401;\n\n if (!isPermissionError && !config?.disableAdminPopups) {\n toggleNotification({\n type: 'warning',\n message: formatMessage({\n id: 'strapi-cache.cache.routes.fetch-error',\n defaultMessage: 'Unable to fetch cache config. Cache purge may not work correctly.',\n }),\n });\n }\n };\n\n const showPurgeSuccess = (key: string) => {\n if (!config?.disableAdminPopups) {\n toggleNotification({\n type: 'success',\n message: formatMessage(\n {\n id: 'strapi-cache.cache.purge.success',\n defaultMessage: 'Cache purged successfully',\n },\n {\n key: `\"${key}\"`,\n }\n ),\n });\n }\n };\n\n const showPurgeError = (key: string) => {\n if (!config?.disableAdminPopups) {\n toggleNotification({\n type: 'danger',\n message: formatMessage(\n {\n id: 'strapi-cache.cache.purge.error',\n defaultMessage: 'Error purging cache',\n },\n {\n key: `\"${key}\"`,\n }\n ),\n });\n }\n };\n\n const showNoContentTypeWarning = () => {\n if (!config?.disableAdminPopups) {\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 }\n };\n\n return {\n showConfigFetchError,\n showPurgeSuccess,\n showPurgeError,\n showNoContentTypeWarning,\n };\n};\n","import { useIntl } from 'react-intl';\nimport { Archive } from '@strapi/icons';\nimport { Button, Modal } from '@strapi/design-system';\nimport { Typography } from '@strapi/design-system';\nimport { useEffect } from 'react';\nimport {\n useCacheConfig,\n useCachePermissions,\n useCacheOperations,\n useCacheNotifications,\n} from '../../hooks';\n\nexport type PurgeProps = {\n buttonText: string;\n buttonWidth?: string;\n keyToUse?: string;\n contentTypeName?: string;\n isDisabled: boolean;\n};\n\nfunction PurgeModal({\n buttonText,\n keyToUse,\n buttonWidth,\n contentTypeName,\n isDisabled,\n}: PurgeProps) {\n const { canPurgeCache } = useCachePermissions();\n const { config, error: configError } = useCacheConfig(canPurgeCache);\n const { isCacheableRoute, clearCache } = useCacheOperations();\n const { showConfigFetchError, showPurgeSuccess, showPurgeError, showNoContentTypeWarning } =\n useCacheNotifications(config);\n const formatMessage = useIntl().formatMessage;\n\n useEffect(() => {\n if (configError) {\n showConfigFetchError(configError);\n }\n }, [configError, showConfigFetchError]);\n\n const handleClearCache = async () => {\n if (!keyToUse) {\n showNoContentTypeWarning();\n return;\n }\n\n const result = await clearCache(keyToUse);\n\n if (result.success) {\n showPurgeSuccess(keyToUse);\n } else {\n showPurgeError(keyToUse);\n }\n };\n\n if (!canPurgeCache) {\n return null;\n }\n\n return (\n <Modal.Root>\n <Modal.Trigger>\n <Button width={buttonWidth} startIcon={<Archive />} disabled={isDisabled} variant=\"danger\">\n {buttonText}\n </Button>\n </Modal.Trigger>\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{buttonText}</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: `\"${keyToUse}\"` }\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={handleClearCache}>\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\nexport default PurgeModal;\n","import { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/strapi/admin';\nimport PurgeModal from '../PurgeModal';\nimport { useIntl } from 'react-intl';\n\nfunction PurgeCacheButton() {\n const { contentType } = useContentManagerContext();\n const { formatMessage } = useIntl();\n const keyToUse = contentType?.info.pluralName;\n\n return (\n <PurgeModal\n buttonText={formatMessage({\n id: 'strapi-cache.cache.purge',\n defaultMessage: 'Purge Cache',\n })}\n keyToUse={keyToUse}\n ></PurgeModal>\n );\n}\n\nexport default PurgeCacheButton;\n","import { unstable_useContentManagerContext as useContentManagerContext } from '@strapi/strapi/admin';\nimport PurgeModal from '../PurgeModal';\nimport { useIntl } from 'react-intl';\n\nfunction PurgeEntityButton() {\n const { formatMessage } = useIntl();\n const { id, isSingleType, contentType } = useContentManagerContext();\n const apiPath = isSingleType ? contentType?.info.singularName : id;\n\n if (!apiPath) {\n return null;\n }\n\n const keyToUse = encodeURIComponent(apiPath);\n const contentTypeName = isSingleType\n ? contentType?.info.singularName\n : contentType?.info.pluralName;\n\n return (\n <PurgeModal\n buttonWidth=\"100%\"\n buttonText={formatMessage({\n id: 'strapi-cache.cache.purge.entity',\n defaultMessage: 'Purge Entity Cache',\n })}\n keyToUse={keyToUse}\n contentTypeName={contentTypeName}\n ></PurgeModal>\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 app.createSettingSection(\n {\n id: PLUGIN_ID,\n intlLabel: {\n id: 'strapi-cache.settings.link',\n defaultMessage: 'Strapi Cache',\n },\n },\n [\n {\n intlLabel: {\n id: 'strapi-cache.settings.link',\n defaultMessage: 'Strapi Cache',\n },\n id: 'settings',\n to: `${PLUGIN_ID}/settings`,\n Component: () => import('./components/SettingsPage'),\n permissions: [],\n },\n ]\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":["error","useContentManagerContext"],"mappings":"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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
|
-
import { Typography, TextInput } from "@strapi/design-system";
|
|
3
|
-
import { useIntl } from "react-intl";
|
|
4
|
-
import { P as PurgeModal } from "./index-gWZp3d_B.mjs";
|
|
5
|
-
import { useState } from "react";
|
|
6
|
-
const SettingsPage = () => {
|
|
7
|
-
const { formatMessage } = useIntl();
|
|
8
|
-
const [keyToUse, setKeyToUse] = useState("");
|
|
9
|
-
return /* @__PURE__ */ jsxs("div", { style: { padding: "20px" }, children: [
|
|
10
|
-
/* @__PURE__ */ jsx(Typography, { variant: "alpha", as: "h1", children: formatMessage({
|
|
11
|
-
id: "strapi-cache.name",
|
|
12
|
-
defaultMessage: "Strapi Cache Settings"
|
|
13
|
-
}) }),
|
|
14
|
-
/* @__PURE__ */ jsx("div", { style: { marginTop: "16px", marginBottom: "24px" }, children: /* @__PURE__ */ jsx(Typography, { variant: "omega", children: formatMessage({
|
|
15
|
-
id: "strapi-cache.settings.description",
|
|
16
|
-
defaultMessage: 'Enter a cache key below and click "Purge Cache" to clear specific cached content.'
|
|
17
|
-
}) }) }),
|
|
18
|
-
/* @__PURE__ */ jsxs(
|
|
19
|
-
"div",
|
|
20
|
-
{
|
|
21
|
-
style: {
|
|
22
|
-
display: "flex",
|
|
23
|
-
justifyContent: "center",
|
|
24
|
-
alignItems: "center",
|
|
25
|
-
gap: "12px",
|
|
26
|
-
maxWidth: "400px"
|
|
27
|
-
},
|
|
28
|
-
children: [
|
|
29
|
-
/* @__PURE__ */ jsx("div", { style: { flex: 1 }, children: /* @__PURE__ */ jsx(
|
|
30
|
-
TextInput,
|
|
31
|
-
{
|
|
32
|
-
placeholder: formatMessage({
|
|
33
|
-
id: "strapi-cache.settings.key-placeholder",
|
|
34
|
-
defaultMessage: "Enter cache key to purge"
|
|
35
|
-
}),
|
|
36
|
-
size: "M",
|
|
37
|
-
type: "text",
|
|
38
|
-
value: keyToUse,
|
|
39
|
-
onChange: (e) => setKeyToUse(e.target.value)
|
|
40
|
-
}
|
|
41
|
-
) }),
|
|
42
|
-
/* @__PURE__ */ jsx(PurgeModal, { buttonText: "Purge Cache", keyToUse })
|
|
43
|
-
]
|
|
44
|
-
}
|
|
45
|
-
)
|
|
46
|
-
] });
|
|
47
|
-
};
|
|
48
|
-
export {
|
|
49
|
-
SettingsPage as default
|
|
50
|
-
};
|
|
51
|
-
//# sourceMappingURL=index-4_D-e55T.mjs.map
|