@primershop/strapi-plugin-status-manager 0.0.1
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 +52 -0
- package/dist/admin/components/Initializer.js +17 -0
- package/dist/admin/components/Initializer.js.map +1 -0
- package/dist/admin/components/Initializer.mjs +15 -0
- package/dist/admin/components/Initializer.mjs.map +1 -0
- package/dist/admin/components/PluginIcon.js +9 -0
- package/dist/admin/components/PluginIcon.js.map +1 -0
- package/dist/admin/components/PluginIcon.mjs +7 -0
- package/dist/admin/components/PluginIcon.mjs.map +1 -0
- package/dist/admin/components/ProductStatusField.js +104 -0
- package/dist/admin/components/ProductStatusField.js.map +1 -0
- package/dist/admin/components/ProductStatusField.mjs +102 -0
- package/dist/admin/components/ProductStatusField.mjs.map +1 -0
- package/dist/admin/components/StatusManager.js +367 -0
- package/dist/admin/components/StatusManager.js.map +1 -0
- package/dist/admin/components/StatusManager.mjs +365 -0
- package/dist/admin/components/StatusManager.mjs.map +1 -0
- package/dist/admin/index.js +46 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/index.mjs +44 -0
- package/dist/admin/index.mjs.map +1 -0
- package/dist/admin/listView/StatusFilter.js +76 -0
- package/dist/admin/listView/StatusFilter.js.map +1 -0
- package/dist/admin/listView/StatusFilter.mjs +74 -0
- package/dist/admin/listView/StatusFilter.mjs.map +1 -0
- package/dist/admin/listView/add-status-column-hook.js +34 -0
- package/dist/admin/listView/add-status-column-hook.js.map +1 -0
- package/dist/admin/listView/add-status-column-hook.mjs +32 -0
- package/dist/admin/listView/add-status-column-hook.mjs.map +1 -0
- package/dist/admin/listView/status-cell.js +28 -0
- package/dist/admin/listView/status-cell.js.map +1 -0
- package/dist/admin/listView/status-cell.mjs +26 -0
- package/dist/admin/listView/status-cell.mjs.map +1 -0
- package/dist/admin/pages/HomePage.js +51 -0
- package/dist/admin/pages/HomePage.js.map +1 -0
- package/dist/admin/pages/HomePage.mjs +49 -0
- package/dist/admin/pages/HomePage.mjs.map +1 -0
- package/dist/admin/pluginId.js +6 -0
- package/dist/admin/pluginId.js.map +1 -0
- package/dist/admin/pluginId.mjs +4 -0
- package/dist/admin/pluginId.mjs.map +1 -0
- package/dist/admin/src/components/Initializer.js +13 -0
- package/dist/admin/src/components/PluginIcon.js +4 -0
- package/dist/admin/src/components/ProductStatusField.js +64 -0
- package/dist/admin/src/components/StatusManager.js +239 -0
- package/dist/admin/src/index.js +43 -0
- package/dist/admin/src/listView/StatusFilter.js +47 -0
- package/dist/admin/src/listView/add-status-column-hook.js +18 -0
- package/dist/admin/src/listView/status-cell.js +18 -0
- package/dist/admin/src/pages/HomePage.js +18 -0
- package/dist/admin/src/pluginId.js +1 -0
- package/dist/server/bootstrap.js +29 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/bootstrap.mjs +27 -0
- package/dist/server/bootstrap.mjs.map +1 -0
- package/dist/server/content-types/index.js +16 -0
- package/dist/server/content-types/index.js.map +1 -0
- package/dist/server/content-types/index.mjs +14 -0
- package/dist/server/content-types/index.mjs.map +1 -0
- package/dist/server/content-types/status-link.js +43 -0
- package/dist/server/content-types/status-link.js.map +1 -0
- package/dist/server/content-types/status-link.mjs +41 -0
- package/dist/server/content-types/status-link.mjs.map +1 -0
- package/dist/server/content-types/status.js +50 -0
- package/dist/server/content-types/status.js.map +1 -0
- package/dist/server/content-types/status.mjs +48 -0
- package/dist/server/content-types/status.mjs.map +1 -0
- package/dist/server/controllers/content.js +33 -0
- package/dist/server/controllers/content.js.map +1 -0
- package/dist/server/controllers/content.mjs +31 -0
- package/dist/server/controllers/content.mjs.map +1 -0
- package/dist/server/controllers/index.js +12 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/index.mjs +10 -0
- package/dist/server/controllers/index.mjs.map +1 -0
- package/dist/server/controllers/status.js +106 -0
- package/dist/server/controllers/status.js.map +1 -0
- package/dist/server/controllers/status.mjs +104 -0
- package/dist/server/controllers/status.mjs.map +1 -0
- package/dist/server/index.js +23 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +21 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/middlewares/add-status-field.js +48 -0
- package/dist/server/middlewares/add-status-field.js.map +1 -0
- package/dist/server/middlewares/add-status-field.mjs +46 -0
- package/dist/server/middlewares/add-status-field.mjs.map +1 -0
- package/dist/server/middlewares/filter-by-status.js +42 -0
- package/dist/server/middlewares/filter-by-status.js.map +1 -0
- package/dist/server/middlewares/filter-by-status.mjs +40 -0
- package/dist/server/middlewares/filter-by-status.mjs.map +1 -0
- package/dist/server/middlewares/filter-published.js +35 -0
- package/dist/server/middlewares/filter-published.js.map +1 -0
- package/dist/server/middlewares/filter-published.mjs +33 -0
- package/dist/server/middlewares/filter-published.mjs.map +1 -0
- package/dist/server/permissions.js +46 -0
- package/dist/server/permissions.js.map +1 -0
- package/dist/server/permissions.mjs +44 -0
- package/dist/server/permissions.mjs.map +1 -0
- package/dist/server/pluginId.js +6 -0
- package/dist/server/pluginId.js.map +1 -0
- package/dist/server/pluginId.mjs +4 -0
- package/dist/server/pluginId.mjs.map +1 -0
- package/dist/server/register.js +27 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/register.mjs +25 -0
- package/dist/server/register.mjs.map +1 -0
- package/dist/server/routes/content-management.js +41 -0
- package/dist/server/routes/content-management.js.map +1 -0
- package/dist/server/routes/content-management.mjs +39 -0
- package/dist/server/routes/content-management.mjs.map +1 -0
- package/dist/server/routes/index.js +17 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/index.mjs +15 -0
- package/dist/server/routes/index.mjs.map +1 -0
- package/dist/server/routes/status-management.js +122 -0
- package/dist/server/routes/status-management.js.map +1 -0
- package/dist/server/routes/status-management.mjs +120 -0
- package/dist/server/routes/status-management.mjs.map +1 -0
- package/dist/server/services/index.js +12 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/index.mjs +10 -0
- package/dist/server/services/index.mjs.map +1 -0
- package/dist/server/services/status-link.js +38 -0
- package/dist/server/services/status-link.js.map +1 -0
- package/dist/server/services/status-link.mjs +36 -0
- package/dist/server/services/status-link.mjs.map +1 -0
- package/dist/server/services/status.js +110 -0
- package/dist/server/services/status.js.map +1 -0
- package/dist/server/services/status.mjs +108 -0
- package/dist/server/services/status.mjs.map +1 -0
- package/dist/server/src/bootstrap.js +32 -0
- package/dist/server/src/config/dev.js +13 -0
- package/dist/server/src/content-types/index.js +15 -0
- package/dist/server/src/content-types/status-link.js +40 -0
- package/dist/server/src/content-types/status.js +47 -0
- package/dist/server/src/controllers/content.js +44 -0
- package/dist/server/src/controllers/index.js +9 -0
- package/dist/server/src/controllers/status.js +106 -0
- package/dist/server/src/index.js +23 -0
- package/dist/server/src/middlewares/add-status-field.js +51 -0
- package/dist/server/src/middlewares/filter-by-status.js +44 -0
- package/dist/server/src/middlewares/filter-published.js +31 -0
- package/dist/server/src/permissions.js +41 -0
- package/dist/server/src/pluginId.js +4 -0
- package/dist/server/src/register.js +28 -0
- package/dist/server/src/routes/content-management.js +34 -0
- package/dist/server/src/routes/index.js +15 -0
- package/dist/server/src/routes/status-management.js +109 -0
- package/dist/server/src/services/index.js +9 -0
- package/dist/server/src/services/status-link.js +33 -0
- package/dist/server/src/services/status.js +96 -0
- package/package.json +104 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sources":["../../../server/src/content-types/status.ts"],"sourcesContent":["export default {\r\n kind: \"collectionType\",\r\n collectionName: \"status\",\r\n info: {\r\n singularName: \"status\",\r\n pluralName: \"statuses\",\r\n displayName: \"Status\",\r\n description: \"Status for products\",\r\n },\r\n options: {\r\n draftAndPublish: false,\r\n },\r\n pluginOptions: {\r\n \"content-manager\": {\r\n visible: false,\r\n },\r\n \"content-type-builder\": {\r\n visible: false,\r\n },\r\n },\r\n attributes: {\r\n name: {\r\n type: \"string\",\r\n minLength: 1,\r\n maxLength: 50,\r\n required: true,\r\n configurable: false,\r\n },\r\n published: {\r\n type: \"boolean\",\r\n default: false,\r\n },\r\n order: {\r\n type: \"integer\",\r\n default: 0,\r\n },\r\n links: {\r\n type: \"relation\",\r\n relation: \"oneToMany\",\r\n target: \"plugin::primershop-status-manager.status-link\",\r\n mappedBy: \"status\",\r\n configurable: false,\r\n },\r\n },\r\n};\r\n"],"names":["kind","collectionName","info","singularName","pluralName","displayName","description","options","draftAndPublish","pluginOptions","visible","attributes","name","type","minLength","maxLength","required","configurable","published","default","order","links","relation","target","mappedBy"],"mappings":";;AAAA,aAAe;IACbA,IAAAA,EAAM,gBAAA;IACNC,cAAAA,EAAgB,QAAA;IAChBC,IAAAA,EAAM;QACJC,YAAAA,EAAc,QAAA;QACdC,UAAAA,EAAY,UAAA;QACZC,WAAAA,EAAa,QAAA;QACbC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,IAAAA,EAAM;YACJC,IAAAA,EAAM,QAAA;YACNC,SAAAA,EAAW,CAAA;YACXC,SAAAA,EAAW,EAAA;YACXC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc;AAChB,SAAA;QACAC,SAAAA,EAAW;YACTL,IAAAA,EAAM,SAAA;YACNM,OAAAA,EAAS;AACX,SAAA;QACAC,KAAAA,EAAO;YACLP,IAAAA,EAAM,SAAA;YACNM,OAAAA,EAAS;AACX,SAAA;QACAE,KAAAA,EAAO;YACLR,IAAAA,EAAM,UAAA;YACNS,QAAAA,EAAU,WAAA;YACVC,MAAAA,EAAQ,+CAAA;YACRC,QAAAA,EAAU,QAAA;YACVP,YAAAA,EAAc;AAChB;AACF;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
var status = {
|
|
2
|
+
kind: "collectionType",
|
|
3
|
+
collectionName: "status",
|
|
4
|
+
info: {
|
|
5
|
+
singularName: "status",
|
|
6
|
+
pluralName: "statuses",
|
|
7
|
+
displayName: "Status",
|
|
8
|
+
description: "Status for products"
|
|
9
|
+
},
|
|
10
|
+
options: {
|
|
11
|
+
draftAndPublish: false
|
|
12
|
+
},
|
|
13
|
+
pluginOptions: {
|
|
14
|
+
"content-manager": {
|
|
15
|
+
visible: false
|
|
16
|
+
},
|
|
17
|
+
"content-type-builder": {
|
|
18
|
+
visible: false
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
attributes: {
|
|
22
|
+
name: {
|
|
23
|
+
type: "string",
|
|
24
|
+
minLength: 1,
|
|
25
|
+
maxLength: 50,
|
|
26
|
+
required: true,
|
|
27
|
+
configurable: false
|
|
28
|
+
},
|
|
29
|
+
published: {
|
|
30
|
+
type: "boolean",
|
|
31
|
+
default: false
|
|
32
|
+
},
|
|
33
|
+
order: {
|
|
34
|
+
type: "integer",
|
|
35
|
+
default: 0
|
|
36
|
+
},
|
|
37
|
+
links: {
|
|
38
|
+
type: "relation",
|
|
39
|
+
relation: "oneToMany",
|
|
40
|
+
target: "plugin::primershop-status-manager.status-link",
|
|
41
|
+
mappedBy: "status",
|
|
42
|
+
configurable: false
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
export { status as default };
|
|
48
|
+
//# sourceMappingURL=status.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.mjs","sources":["../../../server/src/content-types/status.ts"],"sourcesContent":["export default {\r\n kind: \"collectionType\",\r\n collectionName: \"status\",\r\n info: {\r\n singularName: \"status\",\r\n pluralName: \"statuses\",\r\n displayName: \"Status\",\r\n description: \"Status for products\",\r\n },\r\n options: {\r\n draftAndPublish: false,\r\n },\r\n pluginOptions: {\r\n \"content-manager\": {\r\n visible: false,\r\n },\r\n \"content-type-builder\": {\r\n visible: false,\r\n },\r\n },\r\n attributes: {\r\n name: {\r\n type: \"string\",\r\n minLength: 1,\r\n maxLength: 50,\r\n required: true,\r\n configurable: false,\r\n },\r\n published: {\r\n type: \"boolean\",\r\n default: false,\r\n },\r\n order: {\r\n type: \"integer\",\r\n default: 0,\r\n },\r\n links: {\r\n type: \"relation\",\r\n relation: \"oneToMany\",\r\n target: \"plugin::primershop-status-manager.status-link\",\r\n mappedBy: \"status\",\r\n configurable: false,\r\n },\r\n },\r\n};\r\n"],"names":["kind","collectionName","info","singularName","pluralName","displayName","description","options","draftAndPublish","pluginOptions","visible","attributes","name","type","minLength","maxLength","required","configurable","published","default","order","links","relation","target","mappedBy"],"mappings":"AAAA,aAAe;IACbA,IAAAA,EAAM,gBAAA;IACNC,cAAAA,EAAgB,QAAA;IAChBC,IAAAA,EAAM;QACJC,YAAAA,EAAc,QAAA;QACdC,UAAAA,EAAY,UAAA;QACZC,WAAAA,EAAa,QAAA;QACbC,WAAAA,EAAa;AACf,KAAA;IACAC,OAAAA,EAAS;QACPC,eAAAA,EAAiB;AACnB,KAAA;IACAC,aAAAA,EAAe;QACb,iBAAA,EAAmB;YACjBC,OAAAA,EAAS;AACX,SAAA;QACA,sBAAA,EAAwB;YACtBA,OAAAA,EAAS;AACX;AACF,KAAA;IACAC,UAAAA,EAAY;QACVC,IAAAA,EAAM;YACJC,IAAAA,EAAM,QAAA;YACNC,SAAAA,EAAW,CAAA;YACXC,SAAAA,EAAW,EAAA;YACXC,QAAAA,EAAU,IAAA;YACVC,YAAAA,EAAc;AAChB,SAAA;QACAC,SAAAA,EAAW;YACTL,IAAAA,EAAM,SAAA;YACNM,OAAAA,EAAS;AACX,SAAA;QACAC,KAAAA,EAAO;YACLP,IAAAA,EAAM,SAAA;YACNM,OAAAA,EAAS;AACX,SAAA;QACAE,KAAAA,EAAO;YACLR,IAAAA,EAAM,UAAA;YACNS,QAAAA,EAAU,WAAA;YACVC,MAAAA,EAAQ,+CAAA;YACRC,QAAAA,EAAU,QAAA;YACVP,YAAAA,EAAc;AAChB;AACF;AACF,CAAA;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const content = ({ strapi })=>({
|
|
4
|
+
async getStatusForTarget (ctx) {
|
|
5
|
+
const requestParams = ctx.request.URL.searchParams;
|
|
6
|
+
const contentTypeUid = requestParams.get("contentTypeUid");
|
|
7
|
+
if (!strapi.getModel(contentTypeUid)) return ctx.notFound("Unknown contentTypeUid");
|
|
8
|
+
const contentDocumentId = requestParams.get("contentDocumentId");
|
|
9
|
+
const exists = await strapi.documents(contentTypeUid).findOne({
|
|
10
|
+
documentId: contentDocumentId
|
|
11
|
+
});
|
|
12
|
+
if (!exists) return ctx.notFound("Target document not found");
|
|
13
|
+
const link = await strapi.plugin("primershop-status-manager").service("statusLink").getForTarget(contentTypeUid, contentDocumentId);
|
|
14
|
+
return ctx.send({
|
|
15
|
+
status: link?.status ?? null
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
async setStatusForTarget (ctx) {
|
|
19
|
+
const { contentTypeUid, contentDocumentId, statusId } = ctx.request.body;
|
|
20
|
+
if (!strapi.getModel(contentTypeUid)) return ctx.notFound("Unknown contentTypeUid");
|
|
21
|
+
const exists = await strapi.documents(contentTypeUid).findOne({
|
|
22
|
+
documentId: contentDocumentId
|
|
23
|
+
});
|
|
24
|
+
if (!exists) return ctx.notFound("Target document not found");
|
|
25
|
+
const link = await strapi.plugin("primershop-status-manager").service("statusLink").setForTarget(contentTypeUid, contentDocumentId, statusId);
|
|
26
|
+
return ctx.send({
|
|
27
|
+
status: link.status
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
exports.content = content;
|
|
33
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sources":["../../../server/src/controllers/content.ts"],"sourcesContent":["import type { Core } from \"@strapi/strapi\";\r\nimport type { Schema, ContentType } from \"@strapi/types/dist/uid\";\r\nimport type { Context } from \"koa\";\r\n\r\nconst content = ({ strapi }: { strapi: Core.Strapi }): Core.Controller => ({\r\n async getStatusForTarget(ctx: Context) {\r\n const requestParams = ctx.request.URL.searchParams;\r\n const contentTypeUid = requestParams.get(\"contentTypeUid\") as Schema;\r\n if (!strapi.getModel(contentTypeUid))\r\n return ctx.notFound(\"Unknown contentTypeUid\");\r\n\r\n const contentDocumentId = requestParams.get(\"contentDocumentId\") as string;\r\n const exists = await strapi\r\n .documents(contentTypeUid as ContentType)\r\n .findOne({\r\n documentId: contentDocumentId,\r\n });\r\n if (!exists) return ctx.notFound(\"Target document not found\");\r\n\r\n const link = await strapi\r\n .plugin(\"primershop-status-manager\")\r\n .service(\"statusLink\")\r\n .getForTarget(contentTypeUid as string, contentDocumentId);\r\n return ctx.send({ status: link?.status ?? null });\r\n },\r\n\r\n async setStatusForTarget(ctx: Context) {\r\n const { contentTypeUid, contentDocumentId, statusId } = ctx.request\r\n .body as {\r\n contentTypeUid: Schema;\r\n contentDocumentId: string;\r\n statusId: string;\r\n };\r\n\r\n if (!strapi.getModel(contentTypeUid))\r\n return ctx.notFound(\"Unknown contentTypeUid\");\r\n\r\n const exists = await strapi\r\n .documents(contentTypeUid as ContentType)\r\n .findOne({\r\n documentId: contentDocumentId,\r\n });\r\n if (!exists) return ctx.notFound(\"Target document not found\");\r\n\r\n const link = await strapi\r\n .plugin(\"primershop-status-manager\")\r\n .service(\"statusLink\")\r\n .setForTarget(contentTypeUid as string, contentDocumentId, statusId);\r\n return ctx.send({ status: link.status });\r\n },\r\n});\r\n\r\nexport { content };\r\n"],"names":["content","strapi","getStatusForTarget","ctx","requestParams","request","URL","searchParams","contentTypeUid","get","getModel","notFound","contentDocumentId","exists","documents","findOne","documentId","link","plugin","service","getForTarget","send","status","setStatusForTarget","statusId","body","setForTarget"],"mappings":";;AAIA,MAAMA,UAAU,CAAC,EAAEC,MAAM,EAA2B,IAAuB;AACzE,QAAA,MAAMC,oBAAmBC,GAAY,EAAA;AACnC,YAAA,MAAMC,gBAAgBD,GAAAA,CAAIE,OAAO,CAACC,GAAG,CAACC,YAAY;YAClD,MAAMC,cAAAA,GAAiBJ,aAAAA,CAAcK,GAAG,CAAC,gBAAA,CAAA;YACzC,IAAI,CAACR,OAAOS,QAAQ,CAACF,iBACnB,OAAOL,GAAAA,CAAIQ,QAAQ,CAAC,wBAAA,CAAA;YAEtB,MAAMC,iBAAAA,GAAoBR,aAAAA,CAAcK,GAAG,CAAC,mBAAA,CAAA;AAC5C,YAAA,MAAMI,SAAS,MAAMZ,MAAAA,CAClBa,SAAS,CAACN,cAAAA,CAAAA,CACVO,OAAO,CAAC;gBACPC,UAAAA,EAAYJ;AACd,aAAA,CAAA;AACF,YAAA,IAAI,CAACC,MAAAA,EAAQ,OAAOV,GAAAA,CAAIQ,QAAQ,CAAC,2BAAA,CAAA;YAEjC,MAAMM,IAAAA,GAAO,MAAMhB,MAAAA,CAChBiB,MAAM,CAAC,2BAAA,CAAA,CACPC,OAAO,CAAC,YAAA,CAAA,CACRC,YAAY,CAACZ,cAAAA,EAA0BI,iBAAAA,CAAAA;YAC1C,OAAOT,GAAAA,CAAIkB,IAAI,CAAC;AAAEC,gBAAAA,MAAAA,EAAQL,MAAMK,MAAAA,IAAU;AAAK,aAAA,CAAA;AACjD,QAAA,CAAA;AAEA,QAAA,MAAMC,oBAAmBpB,GAAY,EAAA;YACnC,MAAM,EAAEK,cAAc,EAAEI,iBAAiB,EAAEY,QAAQ,EAAE,GAAGrB,GAAAA,CAAIE,OAAO,CAChEoB,IAAI;YAMP,IAAI,CAACxB,OAAOS,QAAQ,CAACF,iBACnB,OAAOL,GAAAA,CAAIQ,QAAQ,CAAC,wBAAA,CAAA;AAEtB,YAAA,MAAME,SAAS,MAAMZ,MAAAA,CAClBa,SAAS,CAACN,cAAAA,CAAAA,CACVO,OAAO,CAAC;gBACPC,UAAAA,EAAYJ;AACd,aAAA,CAAA;AACF,YAAA,IAAI,CAACC,MAAAA,EAAQ,OAAOV,GAAAA,CAAIQ,QAAQ,CAAC,2BAAA,CAAA;AAEjC,YAAA,MAAMM,IAAAA,GAAO,MAAMhB,MAAAA,CAChBiB,MAAM,CAAC,2BAAA,CAAA,CACPC,OAAO,CAAC,YAAA,CAAA,CACRO,YAAY,CAAClB,cAAAA,EAA0BI,iBAAAA,EAAmBY,QAAAA,CAAAA;YAC7D,OAAOrB,GAAAA,CAAIkB,IAAI,CAAC;AAAEC,gBAAAA,MAAAA,EAAQL,KAAKK;AAAO,aAAA,CAAA;AACxC,QAAA;KACF;;;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const content = ({ strapi })=>({
|
|
2
|
+
async getStatusForTarget (ctx) {
|
|
3
|
+
const requestParams = ctx.request.URL.searchParams;
|
|
4
|
+
const contentTypeUid = requestParams.get("contentTypeUid");
|
|
5
|
+
if (!strapi.getModel(contentTypeUid)) return ctx.notFound("Unknown contentTypeUid");
|
|
6
|
+
const contentDocumentId = requestParams.get("contentDocumentId");
|
|
7
|
+
const exists = await strapi.documents(contentTypeUid).findOne({
|
|
8
|
+
documentId: contentDocumentId
|
|
9
|
+
});
|
|
10
|
+
if (!exists) return ctx.notFound("Target document not found");
|
|
11
|
+
const link = await strapi.plugin("primershop-status-manager").service("statusLink").getForTarget(contentTypeUid, contentDocumentId);
|
|
12
|
+
return ctx.send({
|
|
13
|
+
status: link?.status ?? null
|
|
14
|
+
});
|
|
15
|
+
},
|
|
16
|
+
async setStatusForTarget (ctx) {
|
|
17
|
+
const { contentTypeUid, contentDocumentId, statusId } = ctx.request.body;
|
|
18
|
+
if (!strapi.getModel(contentTypeUid)) return ctx.notFound("Unknown contentTypeUid");
|
|
19
|
+
const exists = await strapi.documents(contentTypeUid).findOne({
|
|
20
|
+
documentId: contentDocumentId
|
|
21
|
+
});
|
|
22
|
+
if (!exists) return ctx.notFound("Target document not found");
|
|
23
|
+
const link = await strapi.plugin("primershop-status-manager").service("statusLink").setForTarget(contentTypeUid, contentDocumentId, statusId);
|
|
24
|
+
return ctx.send({
|
|
25
|
+
status: link.status
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
export { content };
|
|
31
|
+
//# sourceMappingURL=content.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.mjs","sources":["../../../server/src/controllers/content.ts"],"sourcesContent":["import type { Core } from \"@strapi/strapi\";\r\nimport type { Schema, ContentType } from \"@strapi/types/dist/uid\";\r\nimport type { Context } from \"koa\";\r\n\r\nconst content = ({ strapi }: { strapi: Core.Strapi }): Core.Controller => ({\r\n async getStatusForTarget(ctx: Context) {\r\n const requestParams = ctx.request.URL.searchParams;\r\n const contentTypeUid = requestParams.get(\"contentTypeUid\") as Schema;\r\n if (!strapi.getModel(contentTypeUid))\r\n return ctx.notFound(\"Unknown contentTypeUid\");\r\n\r\n const contentDocumentId = requestParams.get(\"contentDocumentId\") as string;\r\n const exists = await strapi\r\n .documents(contentTypeUid as ContentType)\r\n .findOne({\r\n documentId: contentDocumentId,\r\n });\r\n if (!exists) return ctx.notFound(\"Target document not found\");\r\n\r\n const link = await strapi\r\n .plugin(\"primershop-status-manager\")\r\n .service(\"statusLink\")\r\n .getForTarget(contentTypeUid as string, contentDocumentId);\r\n return ctx.send({ status: link?.status ?? null });\r\n },\r\n\r\n async setStatusForTarget(ctx: Context) {\r\n const { contentTypeUid, contentDocumentId, statusId } = ctx.request\r\n .body as {\r\n contentTypeUid: Schema;\r\n contentDocumentId: string;\r\n statusId: string;\r\n };\r\n\r\n if (!strapi.getModel(contentTypeUid))\r\n return ctx.notFound(\"Unknown contentTypeUid\");\r\n\r\n const exists = await strapi\r\n .documents(contentTypeUid as ContentType)\r\n .findOne({\r\n documentId: contentDocumentId,\r\n });\r\n if (!exists) return ctx.notFound(\"Target document not found\");\r\n\r\n const link = await strapi\r\n .plugin(\"primershop-status-manager\")\r\n .service(\"statusLink\")\r\n .setForTarget(contentTypeUid as string, contentDocumentId, statusId);\r\n return ctx.send({ status: link.status });\r\n },\r\n});\r\n\r\nexport { content };\r\n"],"names":["content","strapi","getStatusForTarget","ctx","requestParams","request","URL","searchParams","contentTypeUid","get","getModel","notFound","contentDocumentId","exists","documents","findOne","documentId","link","plugin","service","getForTarget","send","status","setStatusForTarget","statusId","body","setForTarget"],"mappings":"AAIA,MAAMA,UAAU,CAAC,EAAEC,MAAM,EAA2B,IAAuB;AACzE,QAAA,MAAMC,oBAAmBC,GAAY,EAAA;AACnC,YAAA,MAAMC,gBAAgBD,GAAAA,CAAIE,OAAO,CAACC,GAAG,CAACC,YAAY;YAClD,MAAMC,cAAAA,GAAiBJ,aAAAA,CAAcK,GAAG,CAAC,gBAAA,CAAA;YACzC,IAAI,CAACR,OAAOS,QAAQ,CAACF,iBACnB,OAAOL,GAAAA,CAAIQ,QAAQ,CAAC,wBAAA,CAAA;YAEtB,MAAMC,iBAAAA,GAAoBR,aAAAA,CAAcK,GAAG,CAAC,mBAAA,CAAA;AAC5C,YAAA,MAAMI,SAAS,MAAMZ,MAAAA,CAClBa,SAAS,CAACN,cAAAA,CAAAA,CACVO,OAAO,CAAC;gBACPC,UAAAA,EAAYJ;AACd,aAAA,CAAA;AACF,YAAA,IAAI,CAACC,MAAAA,EAAQ,OAAOV,GAAAA,CAAIQ,QAAQ,CAAC,2BAAA,CAAA;YAEjC,MAAMM,IAAAA,GAAO,MAAMhB,MAAAA,CAChBiB,MAAM,CAAC,2BAAA,CAAA,CACPC,OAAO,CAAC,YAAA,CAAA,CACRC,YAAY,CAACZ,cAAAA,EAA0BI,iBAAAA,CAAAA;YAC1C,OAAOT,GAAAA,CAAIkB,IAAI,CAAC;AAAEC,gBAAAA,MAAAA,EAAQL,MAAMK,MAAAA,IAAU;AAAK,aAAA,CAAA;AACjD,QAAA,CAAA;AAEA,QAAA,MAAMC,oBAAmBpB,GAAY,EAAA;YACnC,MAAM,EAAEK,cAAc,EAAEI,iBAAiB,EAAEY,QAAQ,EAAE,GAAGrB,GAAAA,CAAIE,OAAO,CAChEoB,IAAI;YAMP,IAAI,CAACxB,OAAOS,QAAQ,CAACF,iBACnB,OAAOL,GAAAA,CAAIQ,QAAQ,CAAC,wBAAA,CAAA;AAEtB,YAAA,MAAME,SAAS,MAAMZ,MAAAA,CAClBa,SAAS,CAACN,cAAAA,CAAAA,CACVO,OAAO,CAAC;gBACPC,UAAAA,EAAYJ;AACd,aAAA,CAAA;AACF,YAAA,IAAI,CAACC,MAAAA,EAAQ,OAAOV,GAAAA,CAAIQ,QAAQ,CAAC,2BAAA,CAAA;AAEjC,YAAA,MAAMM,IAAAA,GAAO,MAAMhB,MAAAA,CAChBiB,MAAM,CAAC,2BAAA,CAAA,CACPC,OAAO,CAAC,YAAA,CAAA,CACRO,YAAY,CAAClB,cAAAA,EAA0BI,iBAAAA,EAAmBY,QAAAA,CAAAA;YAC7D,OAAOrB,GAAAA,CAAIkB,IAAI,CAAC;AAAEC,gBAAAA,MAAAA,EAAQL,KAAKK;AAAO,aAAA,CAAA;AACxC,QAAA;KACF;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var content = require('./content.js');
|
|
4
|
+
var status = require('./status.js');
|
|
5
|
+
|
|
6
|
+
const controllers = {
|
|
7
|
+
status_controller: status.status,
|
|
8
|
+
content_controller: content.content
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
exports.controllers = controllers;
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import { content } from \"./content\";\r\nimport { status } from \"./status\";\r\n\r\nexport const controllers = {\r\n status_controller: status,\r\n content_controller: content\r\n};\r\n"],"names":["controllers","status_controller","status","content_controller","content"],"mappings":";;;;;MAGaA,WAAAA,GAAc;IACzBC,iBAAAA,EAAmBC,aAAAA;IACnBC,kBAAAA,EAAoBC;AACtB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../server/src/controllers/index.ts"],"sourcesContent":["import { content } from \"./content\";\r\nimport { status } from \"./status\";\r\n\r\nexport const controllers = {\r\n status_controller: status,\r\n content_controller: content\r\n};\r\n"],"names":["controllers","status_controller","status","content_controller","content"],"mappings":";;;MAGaA,WAAAA,GAAc;IACzBC,iBAAAA,EAAmBC,MAAAA;IACnBC,kBAAAA,EAAoBC;AACtB;;;;"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const status = ({ strapi })=>({
|
|
4
|
+
async listStatuses (ctx) {
|
|
5
|
+
try {
|
|
6
|
+
const statuses = await strapi.documents("plugin::primershop-status-manager.status").findMany({
|
|
7
|
+
sort: {
|
|
8
|
+
order: "asc"
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
return ctx.send(statuses);
|
|
12
|
+
} catch (err) {
|
|
13
|
+
console.error("❌ Status controller: find error:", err);
|
|
14
|
+
ctx.throw(500, err);
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
async create (ctx) {
|
|
18
|
+
try {
|
|
19
|
+
const { name, published = false } = ctx.request.body;
|
|
20
|
+
// Validate name (only Latin characters)
|
|
21
|
+
if (!/^[a-zA-Z\s]+$/.test(name)) {
|
|
22
|
+
return ctx.badRequest("Status name must contain only Latin characters.");
|
|
23
|
+
}
|
|
24
|
+
// Get the highest order value
|
|
25
|
+
const existingStatuses = await strapi.documents("plugin::primershop-status-manager.status").findMany({
|
|
26
|
+
orderBy: {
|
|
27
|
+
order: "desc"
|
|
28
|
+
},
|
|
29
|
+
limit: 1
|
|
30
|
+
});
|
|
31
|
+
const newOrder = existingStatuses.length > 0 ? existingStatuses[0].order + 1 : 0;
|
|
32
|
+
// Create status
|
|
33
|
+
const newStatus = await strapi.documents("plugin::primershop-status-manager.status").create({
|
|
34
|
+
data: {
|
|
35
|
+
name,
|
|
36
|
+
published,
|
|
37
|
+
order: newOrder
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
return ctx.send(newStatus);
|
|
41
|
+
} catch (error) {
|
|
42
|
+
console.error("Status controller: create error:", error);
|
|
43
|
+
ctx.internalServerError(`Error adding status: ${error}`);
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
async reorder (ctx) {
|
|
47
|
+
try {
|
|
48
|
+
const { statuses } = ctx.request.body;
|
|
49
|
+
if (!Array.isArray(statuses)) {
|
|
50
|
+
return ctx.badRequest("Invalid data format");
|
|
51
|
+
}
|
|
52
|
+
// Update each status with new order
|
|
53
|
+
await Promise.all(statuses.map(({ documentId, order })=>strapi.documents("plugin::primershop-status-manager.status").update({
|
|
54
|
+
documentId,
|
|
55
|
+
data: {
|
|
56
|
+
order
|
|
57
|
+
}
|
|
58
|
+
})));
|
|
59
|
+
ctx.send({
|
|
60
|
+
message: "Order updated successfully"
|
|
61
|
+
});
|
|
62
|
+
} catch (error) {
|
|
63
|
+
console.error("Status controller: reorder error:", error);
|
|
64
|
+
ctx.internalServerError(`Error updating order: ${error}`);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
async publish (ctx) {
|
|
68
|
+
try {
|
|
69
|
+
const { id } = ctx.params;
|
|
70
|
+
const { published } = ctx.request.body;
|
|
71
|
+
await strapi.documents("plugin::primershop-status-manager.status").update({
|
|
72
|
+
documentId: id,
|
|
73
|
+
data: {
|
|
74
|
+
published
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
ctx.send({
|
|
78
|
+
message: "Status updated successfully"
|
|
79
|
+
});
|
|
80
|
+
} catch (error) {
|
|
81
|
+
console.error("Status controller: publish error:", error);
|
|
82
|
+
ctx.internalServerError(`Error updating status: ${error}`);
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
async delete (ctx) {
|
|
86
|
+
try {
|
|
87
|
+
const { statusId } = ctx.request.body;
|
|
88
|
+
if (!statusId) {
|
|
89
|
+
return ctx.badRequest("Status ID is required.");
|
|
90
|
+
}
|
|
91
|
+
// Delete the status
|
|
92
|
+
await strapi.documents("plugin::primershop-status-manager.status").delete({
|
|
93
|
+
documentId: statusId
|
|
94
|
+
});
|
|
95
|
+
return ctx.send({
|
|
96
|
+
message: "Status deleted successfully"
|
|
97
|
+
});
|
|
98
|
+
} catch (error) {
|
|
99
|
+
console.error("Status controller: delete error:", error);
|
|
100
|
+
ctx.internalServerError(`Error deleting status: ${error}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
exports.status = status;
|
|
106
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sources":["../../../server/src/controllers/status.ts"],"sourcesContent":["import type { Core } from \"@strapi/strapi\";\r\nimport type { Context } from \"koa\";\r\n\r\nconst status = ({ strapi }: { strapi: Core.Strapi }): Core.Controller => ({\r\n async listStatuses(ctx: Context) {\r\n try {\r\n const statuses = await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .findMany({\r\n sort: { order: \"asc\" },\r\n });\r\n return ctx.send(statuses);\r\n } catch (err) {\r\n console.error(\"❌ Status controller: find error:\", err);\r\n ctx.throw(500, err as string);\r\n }\r\n },\r\n\r\n async create(ctx: Context) {\r\n try {\r\n const { name, published = false } = ctx.request.body;\r\n\r\n // Validate name (only Latin characters)\r\n if (!/^[a-zA-Z\\s]+$/.test(name)) {\r\n return ctx.badRequest(\r\n \"Status name must contain only Latin characters.\"\r\n );\r\n }\r\n\r\n // Get the highest order value\r\n const existingStatuses = await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .findMany({\r\n orderBy: { order: \"desc\" },\r\n limit: 1,\r\n });\r\n\r\n const newOrder =\r\n existingStatuses.length > 0 ? existingStatuses[0].order + 1 : 0;\r\n\r\n // Create status\r\n const newStatus = await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .create({\r\n data: {\r\n name,\r\n published,\r\n order: newOrder,\r\n },\r\n });\r\n\r\n return ctx.send(newStatus);\r\n } catch (error) {\r\n console.error(\"Status controller: create error:\", error);\r\n ctx.internalServerError(`Error adding status: ${error}`);\r\n }\r\n },\r\n\r\n async reorder(ctx: Context) {\r\n try {\r\n const { statuses } = ctx.request.body;\r\n\r\n if (!Array.isArray(statuses)) {\r\n return ctx.badRequest(\"Invalid data format\");\r\n }\r\n\r\n // Update each status with new order\r\n await Promise.all(\r\n statuses.map(({ documentId, order }) =>\r\n strapi.documents(\"plugin::primershop-status-manager.status\").update({\r\n documentId,\r\n data: { order } as any,\r\n })\r\n )\r\n );\r\n\r\n ctx.send({ message: \"Order updated successfully\" });\r\n } catch (error) {\r\n console.error(\"Status controller: reorder error:\", error);\r\n ctx.internalServerError(`Error updating order: ${error}`);\r\n }\r\n },\r\n\r\n async publish(ctx: Context) {\r\n try {\r\n const { id } = ctx.params;\r\n const { published } = ctx.request.body;\r\n\r\n await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .update({\r\n documentId: id,\r\n data: { published } as any,\r\n });\r\n\r\n ctx.send({ message: \"Status updated successfully\" });\r\n } catch (error) {\r\n console.error(\"Status controller: publish error:\", error);\r\n ctx.internalServerError(`Error updating status: ${error}`);\r\n }\r\n },\r\n\r\n async delete(ctx: Context) {\r\n try {\r\n const { statusId } = ctx.request.body;\r\n\r\n if (!statusId) {\r\n return ctx.badRequest(\"Status ID is required.\");\r\n }\r\n\r\n // Delete the status\r\n await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .delete({\r\n documentId: statusId,\r\n });\r\n\r\n return ctx.send({ message: \"Status deleted successfully\" });\r\n } catch (error) {\r\n console.error(\"Status controller: delete error:\", error);\r\n ctx.internalServerError(`Error deleting status: ${error}`);\r\n }\r\n },\r\n});\r\n\r\nexport { status };\r\n"],"names":["status","strapi","listStatuses","ctx","statuses","documents","findMany","sort","order","send","err","console","error","throw","create","name","published","request","body","test","badRequest","existingStatuses","orderBy","limit","newOrder","length","newStatus","data","internalServerError","reorder","Array","isArray","Promise","all","map","documentId","update","message","publish","id","params","delete","statusId"],"mappings":"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"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
const status = ({ strapi })=>({
|
|
2
|
+
async listStatuses (ctx) {
|
|
3
|
+
try {
|
|
4
|
+
const statuses = await strapi.documents("plugin::primershop-status-manager.status").findMany({
|
|
5
|
+
sort: {
|
|
6
|
+
order: "asc"
|
|
7
|
+
}
|
|
8
|
+
});
|
|
9
|
+
return ctx.send(statuses);
|
|
10
|
+
} catch (err) {
|
|
11
|
+
console.error("❌ Status controller: find error:", err);
|
|
12
|
+
ctx.throw(500, err);
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
async create (ctx) {
|
|
16
|
+
try {
|
|
17
|
+
const { name, published = false } = ctx.request.body;
|
|
18
|
+
// Validate name (only Latin characters)
|
|
19
|
+
if (!/^[a-zA-Z\s]+$/.test(name)) {
|
|
20
|
+
return ctx.badRequest("Status name must contain only Latin characters.");
|
|
21
|
+
}
|
|
22
|
+
// Get the highest order value
|
|
23
|
+
const existingStatuses = await strapi.documents("plugin::primershop-status-manager.status").findMany({
|
|
24
|
+
orderBy: {
|
|
25
|
+
order: "desc"
|
|
26
|
+
},
|
|
27
|
+
limit: 1
|
|
28
|
+
});
|
|
29
|
+
const newOrder = existingStatuses.length > 0 ? existingStatuses[0].order + 1 : 0;
|
|
30
|
+
// Create status
|
|
31
|
+
const newStatus = await strapi.documents("plugin::primershop-status-manager.status").create({
|
|
32
|
+
data: {
|
|
33
|
+
name,
|
|
34
|
+
published,
|
|
35
|
+
order: newOrder
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
return ctx.send(newStatus);
|
|
39
|
+
} catch (error) {
|
|
40
|
+
console.error("Status controller: create error:", error);
|
|
41
|
+
ctx.internalServerError(`Error adding status: ${error}`);
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
async reorder (ctx) {
|
|
45
|
+
try {
|
|
46
|
+
const { statuses } = ctx.request.body;
|
|
47
|
+
if (!Array.isArray(statuses)) {
|
|
48
|
+
return ctx.badRequest("Invalid data format");
|
|
49
|
+
}
|
|
50
|
+
// Update each status with new order
|
|
51
|
+
await Promise.all(statuses.map(({ documentId, order })=>strapi.documents("plugin::primershop-status-manager.status").update({
|
|
52
|
+
documentId,
|
|
53
|
+
data: {
|
|
54
|
+
order
|
|
55
|
+
}
|
|
56
|
+
})));
|
|
57
|
+
ctx.send({
|
|
58
|
+
message: "Order updated successfully"
|
|
59
|
+
});
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error("Status controller: reorder error:", error);
|
|
62
|
+
ctx.internalServerError(`Error updating order: ${error}`);
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
async publish (ctx) {
|
|
66
|
+
try {
|
|
67
|
+
const { id } = ctx.params;
|
|
68
|
+
const { published } = ctx.request.body;
|
|
69
|
+
await strapi.documents("plugin::primershop-status-manager.status").update({
|
|
70
|
+
documentId: id,
|
|
71
|
+
data: {
|
|
72
|
+
published
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
ctx.send({
|
|
76
|
+
message: "Status updated successfully"
|
|
77
|
+
});
|
|
78
|
+
} catch (error) {
|
|
79
|
+
console.error("Status controller: publish error:", error);
|
|
80
|
+
ctx.internalServerError(`Error updating status: ${error}`);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
async delete (ctx) {
|
|
84
|
+
try {
|
|
85
|
+
const { statusId } = ctx.request.body;
|
|
86
|
+
if (!statusId) {
|
|
87
|
+
return ctx.badRequest("Status ID is required.");
|
|
88
|
+
}
|
|
89
|
+
// Delete the status
|
|
90
|
+
await strapi.documents("plugin::primershop-status-manager.status").delete({
|
|
91
|
+
documentId: statusId
|
|
92
|
+
});
|
|
93
|
+
return ctx.send({
|
|
94
|
+
message: "Status deleted successfully"
|
|
95
|
+
});
|
|
96
|
+
} catch (error) {
|
|
97
|
+
console.error("Status controller: delete error:", error);
|
|
98
|
+
ctx.internalServerError(`Error deleting status: ${error}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
export { status };
|
|
104
|
+
//# sourceMappingURL=status.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.mjs","sources":["../../../server/src/controllers/status.ts"],"sourcesContent":["import type { Core } from \"@strapi/strapi\";\r\nimport type { Context } from \"koa\";\r\n\r\nconst status = ({ strapi }: { strapi: Core.Strapi }): Core.Controller => ({\r\n async listStatuses(ctx: Context) {\r\n try {\r\n const statuses = await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .findMany({\r\n sort: { order: \"asc\" },\r\n });\r\n return ctx.send(statuses);\r\n } catch (err) {\r\n console.error(\"❌ Status controller: find error:\", err);\r\n ctx.throw(500, err as string);\r\n }\r\n },\r\n\r\n async create(ctx: Context) {\r\n try {\r\n const { name, published = false } = ctx.request.body;\r\n\r\n // Validate name (only Latin characters)\r\n if (!/^[a-zA-Z\\s]+$/.test(name)) {\r\n return ctx.badRequest(\r\n \"Status name must contain only Latin characters.\"\r\n );\r\n }\r\n\r\n // Get the highest order value\r\n const existingStatuses = await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .findMany({\r\n orderBy: { order: \"desc\" },\r\n limit: 1,\r\n });\r\n\r\n const newOrder =\r\n existingStatuses.length > 0 ? existingStatuses[0].order + 1 : 0;\r\n\r\n // Create status\r\n const newStatus = await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .create({\r\n data: {\r\n name,\r\n published,\r\n order: newOrder,\r\n },\r\n });\r\n\r\n return ctx.send(newStatus);\r\n } catch (error) {\r\n console.error(\"Status controller: create error:\", error);\r\n ctx.internalServerError(`Error adding status: ${error}`);\r\n }\r\n },\r\n\r\n async reorder(ctx: Context) {\r\n try {\r\n const { statuses } = ctx.request.body;\r\n\r\n if (!Array.isArray(statuses)) {\r\n return ctx.badRequest(\"Invalid data format\");\r\n }\r\n\r\n // Update each status with new order\r\n await Promise.all(\r\n statuses.map(({ documentId, order }) =>\r\n strapi.documents(\"plugin::primershop-status-manager.status\").update({\r\n documentId,\r\n data: { order } as any,\r\n })\r\n )\r\n );\r\n\r\n ctx.send({ message: \"Order updated successfully\" });\r\n } catch (error) {\r\n console.error(\"Status controller: reorder error:\", error);\r\n ctx.internalServerError(`Error updating order: ${error}`);\r\n }\r\n },\r\n\r\n async publish(ctx: Context) {\r\n try {\r\n const { id } = ctx.params;\r\n const { published } = ctx.request.body;\r\n\r\n await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .update({\r\n documentId: id,\r\n data: { published } as any,\r\n });\r\n\r\n ctx.send({ message: \"Status updated successfully\" });\r\n } catch (error) {\r\n console.error(\"Status controller: publish error:\", error);\r\n ctx.internalServerError(`Error updating status: ${error}`);\r\n }\r\n },\r\n\r\n async delete(ctx: Context) {\r\n try {\r\n const { statusId } = ctx.request.body;\r\n\r\n if (!statusId) {\r\n return ctx.badRequest(\"Status ID is required.\");\r\n }\r\n\r\n // Delete the status\r\n await strapi\r\n .documents(\"plugin::primershop-status-manager.status\")\r\n .delete({\r\n documentId: statusId,\r\n });\r\n\r\n return ctx.send({ message: \"Status deleted successfully\" });\r\n } catch (error) {\r\n console.error(\"Status controller: delete error:\", error);\r\n ctx.internalServerError(`Error deleting status: ${error}`);\r\n }\r\n },\r\n});\r\n\r\nexport { status };\r\n"],"names":["status","strapi","listStatuses","ctx","statuses","documents","findMany","sort","order","send","err","console","error","throw","create","name","published","request","body","test","badRequest","existingStatuses","orderBy","limit","newOrder","length","newStatus","data","internalServerError","reorder","Array","isArray","Promise","all","map","documentId","update","message","publish","id","params","delete","statusId"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var bootstrap = require('./bootstrap.js');
|
|
4
|
+
var index$2 = require('./content-types/index.js');
|
|
5
|
+
var index$3 = require('./controllers/index.js');
|
|
6
|
+
var register = require('./register.js');
|
|
7
|
+
var index$1 = require('./routes/index.js');
|
|
8
|
+
var index = require('./services/index.js');
|
|
9
|
+
|
|
10
|
+
const plugin = ()=>{
|
|
11
|
+
const pluginConfig = {
|
|
12
|
+
register: register.register,
|
|
13
|
+
controllers: index$3.controllers,
|
|
14
|
+
contentTypes: index$2,
|
|
15
|
+
routes: index$1.routes,
|
|
16
|
+
services: index.services,
|
|
17
|
+
bootstrap: bootstrap.bootstrap
|
|
18
|
+
};
|
|
19
|
+
return pluginConfig;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
module.exports = plugin;
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../server/src/index.ts"],"sourcesContent":["import { bootstrap } from \"./bootstrap\";\r\nimport contentTypes from \"./content-types/index\";\r\nimport { controllers } from \"./controllers\";\r\nimport { register } from \"./register\";\r\nimport { routes } from \"./routes\";\r\nimport { services } from \"./services\";\r\n\r\nconst plugin = () => {\r\n const pluginConfig = {\r\n register,\r\n controllers,\r\n contentTypes,\r\n routes,\r\n services,\r\n bootstrap,\r\n };\r\n\r\n return pluginConfig;\r\n};\r\n\r\nexport default plugin;\r\n"],"names":["plugin","pluginConfig","register","controllers","contentTypes","routes","services","bootstrap"],"mappings":";;;;;;;;;AAOA,MAAMA,MAAAA,GAAS,IAAA;AACb,IAAA,MAAMC,YAAAA,GAAe;AACnBC,kBAAAA,iBAAAA;AACAC,qBAAAA,mBAAAA;AACAC,sBAAAA,OAAAA;AACAC,gBAAAA,cAAAA;AACAC,kBAAAA,cAAAA;AACAC,mBAAAA;AACF,KAAA;IAEA,OAAON,YAAAA;AACT;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { bootstrap } from './bootstrap.mjs';
|
|
2
|
+
import contentTypes from './content-types/index.mjs';
|
|
3
|
+
import { controllers } from './controllers/index.mjs';
|
|
4
|
+
import { register } from './register.mjs';
|
|
5
|
+
import { routes } from './routes/index.mjs';
|
|
6
|
+
import { services } from './services/index.mjs';
|
|
7
|
+
|
|
8
|
+
const plugin = ()=>{
|
|
9
|
+
const pluginConfig = {
|
|
10
|
+
register,
|
|
11
|
+
controllers,
|
|
12
|
+
contentTypes,
|
|
13
|
+
routes,
|
|
14
|
+
services,
|
|
15
|
+
bootstrap
|
|
16
|
+
};
|
|
17
|
+
return pluginConfig;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { plugin as default };
|
|
21
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../server/src/index.ts"],"sourcesContent":["import { bootstrap } from \"./bootstrap\";\r\nimport contentTypes from \"./content-types/index\";\r\nimport { controllers } from \"./controllers\";\r\nimport { register } from \"./register\";\r\nimport { routes } from \"./routes\";\r\nimport { services } from \"./services\";\r\n\r\nconst plugin = () => {\r\n const pluginConfig = {\r\n register,\r\n controllers,\r\n contentTypes,\r\n routes,\r\n services,\r\n bootstrap,\r\n };\r\n\r\n return pluginConfig;\r\n};\r\n\r\nexport default plugin;\r\n"],"names":["plugin","pluginConfig","register","controllers","contentTypes","routes","services","bootstrap"],"mappings":";;;;;;;AAOA,MAAMA,MAAAA,GAAS,IAAA;AACb,IAAA,MAAMC,YAAAA,GAAe;AACnBC,QAAAA,QAAAA;AACAC,QAAAA,WAAAA;AACAC,QAAAA,YAAAA;AACAC,QAAAA,MAAAA;AACAC,QAAAA,QAAAA;AACAC,QAAAA;AACF,KAAA;IAEA,OAAON,YAAAA;AACT;;;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var addStatusField = (async (context, next)=>{
|
|
4
|
+
const uid = context.uid;
|
|
5
|
+
if (!uid.includes("api::")) {
|
|
6
|
+
return next();
|
|
7
|
+
}
|
|
8
|
+
const result = await next();
|
|
9
|
+
let documentIds = [];
|
|
10
|
+
if (Array.isArray(result)) {
|
|
11
|
+
documentIds = result.map((doc)=>doc.documentId).filter(Boolean);
|
|
12
|
+
} else if (result && typeof result === "object" && "documentId" in result) {
|
|
13
|
+
documentIds = [
|
|
14
|
+
result.documentId
|
|
15
|
+
].filter(Boolean);
|
|
16
|
+
}
|
|
17
|
+
if (documentIds.length === 0) {
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const statusLinks = await strapi.db.query("plugin::primershop-status-manager.status-link").findMany({
|
|
22
|
+
populate: {
|
|
23
|
+
status: true
|
|
24
|
+
},
|
|
25
|
+
where: {
|
|
26
|
+
targetUid: uid,
|
|
27
|
+
targetDocumentId: {
|
|
28
|
+
$in: documentIds
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
if (Array.isArray(result)) {
|
|
33
|
+
result.forEach((doc)=>{
|
|
34
|
+
doc.statusField = statusLinks.find((link)=>link.targetDocumentId === doc.documentId)?.status || undefined;
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (result && typeof result === "object") {
|
|
38
|
+
result.statusField = statusLinks.find((link)=>link.targetDocumentId === result.documentId)?.status || undefined;
|
|
39
|
+
}
|
|
40
|
+
} catch (error) {
|
|
41
|
+
// If status enrichment fails, just return original result
|
|
42
|
+
console.error("primershop-status-manager: status enrichment error", error);
|
|
43
|
+
}
|
|
44
|
+
return result;
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
module.exports = addStatusField;
|
|
48
|
+
//# sourceMappingURL=add-status-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-status-field.js","sources":["../../../server/src/middlewares/add-status-field.ts"],"sourcesContent":["import {\r\n AnyDocument,\r\n Middleware as DocumentMiddleware,\r\n} from \"@strapi/types/dist/modules/documents\";\r\n\r\nexport default async (\r\n context: DocumentMiddleware.Context,\r\n next: () => Promise<\r\n | number\r\n | AnyDocument\r\n | AnyDocument[]\r\n | { documentId: string; entries: AnyDocument[] }\r\n >\r\n) => {\r\n const uid = context.uid;\r\n if (!uid.includes(\"api::\")) {\r\n return next();\r\n }\r\n\r\n const result = await next();\r\n\r\n let documentIds: string[] = [];\r\n if (Array.isArray(result)) {\r\n documentIds = result\r\n .map((doc: AnyDocument) => doc.documentId)\r\n .filter(Boolean);\r\n } else if (result && typeof result === \"object\" && \"documentId\" in result) {\r\n documentIds = [(result as AnyDocument).documentId].filter(Boolean);\r\n }\r\n\r\n if (documentIds.length === 0) {\r\n return result;\r\n }\r\n\r\n try {\r\n const statusLinks = await strapi.db\r\n .query(\"plugin::primershop-status-manager.status-link\")\r\n .findMany({\r\n populate: {\r\n status: true,\r\n },\r\n where: {\r\n targetUid: uid,\r\n targetDocumentId: { $in: documentIds },\r\n },\r\n });\r\n\r\n if (Array.isArray(result)) {\r\n result.forEach((doc: AnyDocument) => {\r\n doc.statusField =\r\n statusLinks.find((link) => link.targetDocumentId === doc.documentId)\r\n ?.status || undefined;\r\n });\r\n }\r\n if (result && typeof result === \"object\") {\r\n (result as AnyDocument).statusField =\r\n statusLinks.find(\r\n (link) => link.targetDocumentId === (result as AnyDocument).documentId\r\n )?.status || undefined;\r\n }\r\n } catch (error) {\r\n // If status enrichment fails, just return original result\r\n console.error(\"primershop-status-manager: status enrichment error\", error);\r\n }\r\n\r\n return result;\r\n};\r\n"],"names":["context","next","uid","includes","result","documentIds","Array","isArray","map","doc","documentId","filter","Boolean","length","statusLinks","strapi","db","query","findMany","populate","status","where","targetUid","targetDocumentId","$in","forEach","statusField","find","link","undefined","error","console"],"mappings":";;AAKA,qBAAe,CAAA,OACbA,OAAAA,EACAC,IAAAA,GAAAA;IAOA,MAAMC,GAAAA,GAAMF,QAAQE,GAAG;AACvB,IAAA,IAAI,CAACA,GAAAA,CAAIC,QAAQ,CAAC,OAAA,CAAA,EAAU;QAC1B,OAAOF,IAAAA,EAAAA;AACT,IAAA;AAEA,IAAA,MAAMG,SAAS,MAAMH,IAAAA,EAAAA;AAErB,IAAA,IAAII,cAAwB,EAAE;IAC9B,IAAIC,KAAAA,CAAMC,OAAO,CAACH,MAAAA,CAAAA,EAAS;QACzBC,WAAAA,GAAcD,MAAAA,CACXI,GAAG,CAAC,CAACC,MAAqBA,GAAAA,CAAIC,UAAU,CAAA,CACxCC,MAAM,CAACC,OAAAA,CAAAA;AACZ,IAAA,CAAA,MAAO,IAAIR,MAAAA,IAAU,OAAOA,MAAAA,KAAW,QAAA,IAAY,gBAAgBA,MAAAA,EAAQ;QACzEC,WAAAA,GAAc;AAAED,YAAAA,MAAAA,CAAuBM;AAAW,SAAA,CAACC,MAAM,CAACC,OAAAA,CAAAA;AAC5D,IAAA;IAEA,IAAIP,WAAAA,CAAYQ,MAAM,KAAK,CAAA,EAAG;QAC5B,OAAOT,MAAAA;AACT,IAAA;IAEA,IAAI;QACF,MAAMU,WAAAA,GAAc,MAAMC,MAAAA,CAAOC,EAAE,CAChCC,KAAK,CAAC,+CAAA,CAAA,CACNC,QAAQ,CAAC;YACRC,QAAAA,EAAU;gBACRC,MAAAA,EAAQ;AACV,aAAA;YACAC,KAAAA,EAAO;gBACLC,SAAAA,EAAWpB,GAAAA;gBACXqB,gBAAAA,EAAkB;oBAAEC,GAAAA,EAAKnB;AAAY;AACvC;AACF,SAAA,CAAA;QAEF,IAAIC,KAAAA,CAAMC,OAAO,CAACH,MAAAA,CAAAA,EAAS;YACzBA,MAAAA,CAAOqB,OAAO,CAAC,CAAChB,GAAAA,GAAAA;AACdA,gBAAAA,GAAAA,CAAIiB,WAAW,GACbZ,WAAAA,CAAYa,IAAI,CAAC,CAACC,IAAAA,GAASA,IAAAA,CAAKL,gBAAgB,KAAKd,GAAAA,CAAIC,UAAU,GAC/DU,MAAAA,IAAUS,SAAAA;AAClB,YAAA,CAAA,CAAA;AACF,QAAA;QACA,IAAIzB,MAAAA,IAAU,OAAOA,MAAAA,KAAW,QAAA,EAAU;AACvCA,YAAAA,MAAAA,CAAuBsB,WAAW,GACjCZ,WAAAA,CAAYa,IAAI,CACd,CAACC,IAAAA,GAASA,IAAAA,CAAKL,gBAAgB,KAAMnB,MAAAA,CAAuBM,UAAU,GACrEU,MAAAA,IAAUS,SAAAA;AACjB,QAAA;AACF,IAAA,CAAA,CAAE,OAAOC,KAAAA,EAAO;;QAEdC,OAAAA,CAAQD,KAAK,CAAC,oDAAA,EAAsDA,KAAAA,CAAAA;AACtE,IAAA;IAEA,OAAO1B,MAAAA;AACT,CAAA;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
var addStatusField = (async (context, next)=>{
|
|
2
|
+
const uid = context.uid;
|
|
3
|
+
if (!uid.includes("api::")) {
|
|
4
|
+
return next();
|
|
5
|
+
}
|
|
6
|
+
const result = await next();
|
|
7
|
+
let documentIds = [];
|
|
8
|
+
if (Array.isArray(result)) {
|
|
9
|
+
documentIds = result.map((doc)=>doc.documentId).filter(Boolean);
|
|
10
|
+
} else if (result && typeof result === "object" && "documentId" in result) {
|
|
11
|
+
documentIds = [
|
|
12
|
+
result.documentId
|
|
13
|
+
].filter(Boolean);
|
|
14
|
+
}
|
|
15
|
+
if (documentIds.length === 0) {
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const statusLinks = await strapi.db.query("plugin::primershop-status-manager.status-link").findMany({
|
|
20
|
+
populate: {
|
|
21
|
+
status: true
|
|
22
|
+
},
|
|
23
|
+
where: {
|
|
24
|
+
targetUid: uid,
|
|
25
|
+
targetDocumentId: {
|
|
26
|
+
$in: documentIds
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
if (Array.isArray(result)) {
|
|
31
|
+
result.forEach((doc)=>{
|
|
32
|
+
doc.statusField = statusLinks.find((link)=>link.targetDocumentId === doc.documentId)?.status || undefined;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (result && typeof result === "object") {
|
|
36
|
+
result.statusField = statusLinks.find((link)=>link.targetDocumentId === result.documentId)?.status || undefined;
|
|
37
|
+
}
|
|
38
|
+
} catch (error) {
|
|
39
|
+
// If status enrichment fails, just return original result
|
|
40
|
+
console.error("primershop-status-manager: status enrichment error", error);
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
export { addStatusField as default };
|
|
46
|
+
//# sourceMappingURL=add-status-field.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-status-field.mjs","sources":["../../../server/src/middlewares/add-status-field.ts"],"sourcesContent":["import {\r\n AnyDocument,\r\n Middleware as DocumentMiddleware,\r\n} from \"@strapi/types/dist/modules/documents\";\r\n\r\nexport default async (\r\n context: DocumentMiddleware.Context,\r\n next: () => Promise<\r\n | number\r\n | AnyDocument\r\n | AnyDocument[]\r\n | { documentId: string; entries: AnyDocument[] }\r\n >\r\n) => {\r\n const uid = context.uid;\r\n if (!uid.includes(\"api::\")) {\r\n return next();\r\n }\r\n\r\n const result = await next();\r\n\r\n let documentIds: string[] = [];\r\n if (Array.isArray(result)) {\r\n documentIds = result\r\n .map((doc: AnyDocument) => doc.documentId)\r\n .filter(Boolean);\r\n } else if (result && typeof result === \"object\" && \"documentId\" in result) {\r\n documentIds = [(result as AnyDocument).documentId].filter(Boolean);\r\n }\r\n\r\n if (documentIds.length === 0) {\r\n return result;\r\n }\r\n\r\n try {\r\n const statusLinks = await strapi.db\r\n .query(\"plugin::primershop-status-manager.status-link\")\r\n .findMany({\r\n populate: {\r\n status: true,\r\n },\r\n where: {\r\n targetUid: uid,\r\n targetDocumentId: { $in: documentIds },\r\n },\r\n });\r\n\r\n if (Array.isArray(result)) {\r\n result.forEach((doc: AnyDocument) => {\r\n doc.statusField =\r\n statusLinks.find((link) => link.targetDocumentId === doc.documentId)\r\n ?.status || undefined;\r\n });\r\n }\r\n if (result && typeof result === \"object\") {\r\n (result as AnyDocument).statusField =\r\n statusLinks.find(\r\n (link) => link.targetDocumentId === (result as AnyDocument).documentId\r\n )?.status || undefined;\r\n }\r\n } catch (error) {\r\n // If status enrichment fails, just return original result\r\n console.error(\"primershop-status-manager: status enrichment error\", error);\r\n }\r\n\r\n return result;\r\n};\r\n"],"names":["context","next","uid","includes","result","documentIds","Array","isArray","map","doc","documentId","filter","Boolean","length","statusLinks","strapi","db","query","findMany","populate","status","where","targetUid","targetDocumentId","$in","forEach","statusField","find","link","undefined","error","console"],"mappings":"AAKA,qBAAe,CAAA,OACbA,OAAAA,EACAC,IAAAA,GAAAA;IAOA,MAAMC,GAAAA,GAAMF,QAAQE,GAAG;AACvB,IAAA,IAAI,CAACA,GAAAA,CAAIC,QAAQ,CAAC,OAAA,CAAA,EAAU;QAC1B,OAAOF,IAAAA,EAAAA;AACT,IAAA;AAEA,IAAA,MAAMG,SAAS,MAAMH,IAAAA,EAAAA;AAErB,IAAA,IAAII,cAAwB,EAAE;IAC9B,IAAIC,KAAAA,CAAMC,OAAO,CAACH,MAAAA,CAAAA,EAAS;QACzBC,WAAAA,GAAcD,MAAAA,CACXI,GAAG,CAAC,CAACC,MAAqBA,GAAAA,CAAIC,UAAU,CAAA,CACxCC,MAAM,CAACC,OAAAA,CAAAA;AACZ,IAAA,CAAA,MAAO,IAAIR,MAAAA,IAAU,OAAOA,MAAAA,KAAW,QAAA,IAAY,gBAAgBA,MAAAA,EAAQ;QACzEC,WAAAA,GAAc;AAAED,YAAAA,MAAAA,CAAuBM;AAAW,SAAA,CAACC,MAAM,CAACC,OAAAA,CAAAA;AAC5D,IAAA;IAEA,IAAIP,WAAAA,CAAYQ,MAAM,KAAK,CAAA,EAAG;QAC5B,OAAOT,MAAAA;AACT,IAAA;IAEA,IAAI;QACF,MAAMU,WAAAA,GAAc,MAAMC,MAAAA,CAAOC,EAAE,CAChCC,KAAK,CAAC,+CAAA,CAAA,CACNC,QAAQ,CAAC;YACRC,QAAAA,EAAU;gBACRC,MAAAA,EAAQ;AACV,aAAA;YACAC,KAAAA,EAAO;gBACLC,SAAAA,EAAWpB,GAAAA;gBACXqB,gBAAAA,EAAkB;oBAAEC,GAAAA,EAAKnB;AAAY;AACvC;AACF,SAAA,CAAA;QAEF,IAAIC,KAAAA,CAAMC,OAAO,CAACH,MAAAA,CAAAA,EAAS;YACzBA,MAAAA,CAAOqB,OAAO,CAAC,CAAChB,GAAAA,GAAAA;AACdA,gBAAAA,GAAAA,CAAIiB,WAAW,GACbZ,WAAAA,CAAYa,IAAI,CAAC,CAACC,IAAAA,GAASA,IAAAA,CAAKL,gBAAgB,KAAKd,GAAAA,CAAIC,UAAU,GAC/DU,MAAAA,IAAUS,SAAAA;AAClB,YAAA,CAAA,CAAA;AACF,QAAA;QACA,IAAIzB,MAAAA,IAAU,OAAOA,MAAAA,KAAW,QAAA,EAAU;AACvCA,YAAAA,MAAAA,CAAuBsB,WAAW,GACjCZ,WAAAA,CAAYa,IAAI,CACd,CAACC,IAAAA,GAASA,IAAAA,CAAKL,gBAAgB,KAAMnB,MAAAA,CAAuBM,UAAU,GACrEU,MAAAA,IAAUS,SAAAA;AACjB,QAAA;AACF,IAAA,CAAA,CAAE,OAAOC,KAAAA,EAAO;;QAEdC,OAAAA,CAAQD,KAAK,CAAC,oDAAA,EAAsDA,KAAAA,CAAAA;AACtE,IAAA;IAEA,OAAO1B,MAAAA;AACT,CAAA;;;;"}
|