@lodashventure/medusa-banner 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/.medusa/server/src/admin/index.js +1298 -0
- package/.medusa/server/src/admin/index.mjs +1297 -0
- package/.medusa/server/src/api/admin/banners/reorder/route.js +17 -0
- package/.medusa/server/src/api/admin/banners/route.js +57 -0
- package/.medusa/server/src/api/middlewares.js +31 -0
- package/.medusa/server/src/modules/banner/index.js +13 -0
- package/.medusa/server/src/modules/banner/migrations/Migration20250414061948.js +15 -0
- package/.medusa/server/src/modules/banner/models/banner.js +10 -0
- package/.medusa/server/src/modules/banner/service.js +13 -0
- package/.medusa/server/src/workflows/delete-banners.js +24 -0
- package/.medusa/server/src/workflows/reorder-banners.js +23 -0
- package/.medusa/server/src/workflows/upload-banners.js +54 -0
- package/README.md +35 -0
- package/package.json +84 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = void 0;
|
|
4
|
+
const reorder_banners_1 = require("../../../../workflows/reorder-banners");
|
|
5
|
+
const POST = async (req, res) => {
|
|
6
|
+
const { ids } = req.body;
|
|
7
|
+
const { result: reorderedBanners } = await (0, reorder_banners_1.reorderBannersWorkflow)(req.scope).run({
|
|
8
|
+
input: {
|
|
9
|
+
ids,
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
res.json({
|
|
13
|
+
reorderedBanners,
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
exports.POST = POST;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Jhbm5lcnMvcmVvcmRlci9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSwyRUFBK0U7QUFFeEUsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUFrRCxFQUNsRCxHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFFekIsTUFBTSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sSUFBQSx3Q0FBc0IsRUFDL0QsR0FBRyxDQUFDLEtBQUssQ0FDVixDQUFDLEdBQUcsQ0FBQztRQUNKLEtBQUssRUFBRTtZQUNMLEdBQUc7U0FDSjtLQUNGLENBQUMsQ0FBQztJQUVILEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxnQkFBZ0I7S0FDakIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBakJXLFFBQUEsSUFBSSxRQWlCZiJ9
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DELETE = exports.POST = void 0;
|
|
4
|
+
exports.GET = GET;
|
|
5
|
+
const upload_banners_1 = require("../../../workflows/upload-banners");
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const framework_1 = require("@medusajs/framework");
|
|
8
|
+
const banner_1 = require("../../../modules/banner");
|
|
9
|
+
const delete_banners_1 = require("../../../workflows/delete-banners");
|
|
10
|
+
const POST = async (req, res) => {
|
|
11
|
+
const inputFiles = req.files;
|
|
12
|
+
if (!inputFiles?.length) {
|
|
13
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "No files were uploaded");
|
|
14
|
+
}
|
|
15
|
+
const { result: files } = await (0, upload_banners_1.uploadBannersWorkflow)(req.scope).run({
|
|
16
|
+
input: {
|
|
17
|
+
files: inputFiles?.map((f) => ({
|
|
18
|
+
/**
|
|
19
|
+
* docs: https://github.com/expressjs/multer/issues/1104#issuecomment-1152987772
|
|
20
|
+
*/
|
|
21
|
+
filename: Buffer.from(f.originalname, "latin1").toString("utf-8"),
|
|
22
|
+
mimeType: f.mimetype,
|
|
23
|
+
content: f.buffer.toString("binary"),
|
|
24
|
+
access: "public",
|
|
25
|
+
})),
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
res.json({
|
|
29
|
+
files,
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
exports.POST = POST;
|
|
33
|
+
async function GET(req, res) {
|
|
34
|
+
const bannerService = await framework_1.container.resolve(banner_1.BANNER_MODULE);
|
|
35
|
+
const [banners, count] = await bannerService.listAndCountBanners({}, {
|
|
36
|
+
order: {
|
|
37
|
+
order: "DESC",
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
res.json({
|
|
41
|
+
banners,
|
|
42
|
+
count,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const DELETE = async (req, res) => {
|
|
46
|
+
const { ids } = req.body;
|
|
47
|
+
const { result: deletedBanners } = await (0, delete_banners_1.deleteBannersWorkflow)(req.scope).run({
|
|
48
|
+
input: {
|
|
49
|
+
ids,
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
res.json({
|
|
53
|
+
deletedBanners,
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
exports.DELETE = DELETE;
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2Jhbm5lcnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBK0NBLGtCQWtCQztBQTdERCxzRUFBMEU7QUFDMUUscURBQXdEO0FBQ3hELG1EQUFnRDtBQUNoRCxvREFBd0Q7QUFDeEQsc0VBQTBFO0FBT25FLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7SUFFN0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix3QkFBd0IsQ0FDekIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sSUFBQSxzQ0FBcUIsRUFBQyxHQUFHLENBQUMsS0FBWSxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzFFLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRSxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM3Qjs7bUJBRUc7Z0JBQ0gsUUFBUSxFQUFHLE1BQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO2dCQUMxRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVE7Z0JBQ3BCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ3BDLE1BQU0sRUFBRSxRQUFRO2FBQ2pCLENBQUMsQ0FBQztTQUNKO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLEtBQUs7S0FDTixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUE5QlcsUUFBQSxJQUFJLFFBOEJmO0FBRUssS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBK0IsRUFDL0IsR0FBbUI7SUFFbkIsTUFBTSxhQUFhLEdBQUcsTUFBTSxxQkFBUyxDQUFDLE9BQU8sQ0FBc0Isc0JBQWEsQ0FBQyxDQUFDO0lBQ2xGLE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxhQUFhLENBQUMsbUJBQW1CLENBQzlELEVBQUUsRUFDRjtRQUNFLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRSxNQUFNO1NBQ2Q7S0FDRixDQUNGLENBQUM7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsT0FBTztRQUNQLEtBQUs7S0FDTixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRU0sTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUN6QixHQUFrRCxFQUNsRCxHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7SUFFekIsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUEsc0NBQXFCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FDM0U7UUFDRSxLQUFLLEVBQUU7WUFDTCxHQUFHO1NBQ0o7S0FDRixDQUNGLENBQUM7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsY0FBYztLQUNmLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQWpCVyxRQUFBLE1BQU0sVUFpQmpCIn0=
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const http_1 = require("@medusajs/framework/http");
|
|
7
|
+
const multer_1 = __importDefault(require("multer"));
|
|
8
|
+
const upload = (0, multer_1.default)({
|
|
9
|
+
storage: multer_1.default.memoryStorage(),
|
|
10
|
+
});
|
|
11
|
+
exports.default = (0, http_1.defineMiddlewares)({
|
|
12
|
+
routes: [
|
|
13
|
+
/**
|
|
14
|
+
* docs: https://docs.medusajs.com/learn/fundamentals/api-routes/parse-body#configure-file-uploads
|
|
15
|
+
*/
|
|
16
|
+
{
|
|
17
|
+
method: "POST",
|
|
18
|
+
matcher: "/admin/banners",
|
|
19
|
+
middlewares: [
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
upload.array("files"),
|
|
22
|
+
],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
method: "DELETE",
|
|
26
|
+
matcher: "/admin/banners",
|
|
27
|
+
middlewares: [],
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
});
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbURBQTZEO0FBQzdELG9EQUE0QjtBQUU1QixNQUFNLE1BQU0sR0FBRyxJQUFBLGdCQUFNLEVBQUM7SUFDcEIsT0FBTyxFQUFFLGdCQUFNLENBQUMsYUFBYSxFQUFFO0NBQ2hDLENBQUMsQ0FBQztBQUVILGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047O1dBRUc7UUFDSDtZQUNFLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixXQUFXLEVBQUU7Z0JBQ1gsYUFBYTtnQkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQzthQUN0QjtTQUNGO1FBQ0Q7WUFDRSxNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLFdBQVcsRUFBRSxFQUFFO1NBQ2hCO0tBQ0Y7Q0FDRixDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BANNER_MODULE = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const service_1 = __importDefault(require("./service"));
|
|
9
|
+
exports.BANNER_MODULE = "banner";
|
|
10
|
+
exports.default = (0, utils_1.Module)(exports.BANNER_MODULE, {
|
|
11
|
+
service: service_1.default,
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9iYW5uZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQW1EO0FBQ25ELHdEQUE0QztBQUUvQixRQUFBLGFBQWEsR0FBRyxRQUFRLENBQUM7QUFFdEMsa0JBQWUsSUFBQSxjQUFNLEVBQUMscUJBQWEsRUFBRTtJQUNuQyxPQUFPLEVBQUUsaUJBQW1CO0NBQzdCLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20250414061948 = void 0;
|
|
4
|
+
const migrations_1 = require("@mikro-orm/migrations");
|
|
5
|
+
class Migration20250414061948 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`create table if not exists "banner" ("id" text not null, "url" text not null, "order" integer not null, "created_at" timestamptz not null default now(), "updated_at" timestamptz not null default now(), "deleted_at" timestamptz null, constraint "banner_pkey" primary key ("id"));`);
|
|
8
|
+
this.addSql(`CREATE INDEX IF NOT EXISTS "IDX_banner_deleted_at" ON "banner" (deleted_at) WHERE deleted_at IS NULL;`);
|
|
9
|
+
}
|
|
10
|
+
async down() {
|
|
11
|
+
this.addSql(`drop table if exists "banner" cascade;`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.Migration20250414061948 = Migration20250414061948;
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNTA0MTQwNjE5NDguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9iYW5uZXIvbWlncmF0aW9ucy9NaWdyYXRpb24yMDI1MDQxNDA2MTk0OC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBa0Q7QUFFbEQsTUFBYSx1QkFBd0IsU0FBUSxzQkFBUztJQUUzQyxLQUFLLENBQUMsRUFBRTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsd1JBQXdSLENBQUMsQ0FBQztRQUN0UyxJQUFJLENBQUMsTUFBTSxDQUFDLHVHQUF1RyxDQUFDLENBQUM7SUFDdkgsQ0FBQztJQUVRLEtBQUssQ0FBQyxJQUFJO1FBQ2pCLElBQUksQ0FBQyxNQUFNLENBQUMsd0NBQXdDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBRUY7QUFYRCwwREFXQyJ9
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const Banner = utils_1.model.define("banner", {
|
|
5
|
+
id: utils_1.model.id().primaryKey(),
|
|
6
|
+
url: utils_1.model.text(),
|
|
7
|
+
order: utils_1.model.number(),
|
|
8
|
+
});
|
|
9
|
+
exports.default = Banner;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvYmFubmVyL21vZGVscy9iYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBa0Q7QUFFbEQsTUFBTSxNQUFNLEdBQUcsYUFBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7SUFDcEMsRUFBRSxFQUFFLGFBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUU7SUFDM0IsR0FBRyxFQUFFLGFBQUssQ0FBQyxJQUFJLEVBQUU7SUFDakIsS0FBSyxFQUFFLGFBQUssQ0FBQyxNQUFNLEVBQUU7Q0FDdEIsQ0FBQyxDQUFDO0FBRUgsa0JBQWUsTUFBTSxDQUFDIn0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const banner_1 = __importDefault(require("./models/banner"));
|
|
8
|
+
class BannerModuleService extends (0, utils_1.MedusaService)({
|
|
9
|
+
Banner: banner_1.default,
|
|
10
|
+
}) {
|
|
11
|
+
}
|
|
12
|
+
exports.default = BannerModuleService;
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2Jhbm5lci9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQTBEO0FBQzFELDZEQUFxQztBQUVyQyxNQUFNLG1CQUFvQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUM5QyxNQUFNLEVBQU4sZ0JBQU07Q0FDUCxDQUFDO0NBQUc7QUFFTCxrQkFBZSxtQkFBbUIsQ0FBQyJ9
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteBannersWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
6
|
+
const banner_1 = require("../modules/banner");
|
|
7
|
+
const deleteBannersStep = (0, workflows_sdk_1.createStep)("delete-banners", async ({ ids }, { container }) => {
|
|
8
|
+
const logger = container.resolve("logger");
|
|
9
|
+
const bannerModuleService = container.resolve(banner_1.BANNER_MODULE);
|
|
10
|
+
if (!ids.length) {
|
|
11
|
+
throw new Error("At least one banner ID is required");
|
|
12
|
+
}
|
|
13
|
+
logger.info(`Deleting ${ids.length} banners`);
|
|
14
|
+
await (0, core_flows_1.deleteFilesWorkflow)().run({
|
|
15
|
+
input: { ids: ids },
|
|
16
|
+
});
|
|
17
|
+
await bannerModuleService.deleteBanners(ids);
|
|
18
|
+
return new workflows_sdk_1.StepResponse(ids, ids);
|
|
19
|
+
});
|
|
20
|
+
exports.deleteBannersWorkflow = (0, workflows_sdk_1.createWorkflow)("delete-banners", (deleteInput) => {
|
|
21
|
+
const post = deleteBannersStep(deleteInput);
|
|
22
|
+
return new workflows_sdk_1.WorkflowResponse(post);
|
|
23
|
+
});
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWJhbm5lcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2RlbGV0ZS1iYW5uZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUsyQztBQUMzQyw0REFBa0U7QUFFbEUsOENBQWtEO0FBTWxELE1BQU0saUJBQWlCLEdBQUcsSUFBQSwwQkFBVSxFQUNsQyxnQkFBZ0IsRUFDaEIsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUE4QixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUMzRCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sbUJBQW1CLEdBQ3ZCLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFDO0lBRW5DLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLE1BQU0sVUFBVSxDQUFDLENBQUM7SUFFOUMsTUFBTSxJQUFBLGdDQUFtQixHQUFFLENBQUMsR0FBRyxDQUFDO1FBQzlCLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7S0FDcEIsQ0FBQyxDQUFDO0lBRUgsTUFBTSxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFN0MsT0FBTyxJQUFJLDRCQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FDRixDQUFDO0FBRVcsUUFBQSxxQkFBcUIsR0FBRyxJQUFBLDhCQUFjLEVBQ2pELGdCQUFnQixFQUNoQixDQUFDLFdBQXVDLEVBQUUsRUFBRTtJQUMxQyxNQUFNLElBQUksR0FBRyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksZ0NBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.reorderBannersWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const banner_1 = require("../modules/banner");
|
|
6
|
+
const reorderBannersStep = (0, workflows_sdk_1.createStep)("reorder-banners", async ({ ids }, { container }) => {
|
|
7
|
+
const logger = container.resolve("logger");
|
|
8
|
+
const bannerModuleService = container.resolve(banner_1.BANNER_MODULE);
|
|
9
|
+
if (!ids.length) {
|
|
10
|
+
throw new Error("At least one banner ID is required");
|
|
11
|
+
}
|
|
12
|
+
const banners = await bannerModuleService.listBanners();
|
|
13
|
+
if (banners.length !== ids.length) {
|
|
14
|
+
throw new Error("Banner IDs and banners length does not match");
|
|
15
|
+
}
|
|
16
|
+
await bannerModuleService.updateBanners(ids.map((id, index) => ({ id, order: ids.length - index })));
|
|
17
|
+
return new workflows_sdk_1.StepResponse(ids, ids);
|
|
18
|
+
});
|
|
19
|
+
exports.reorderBannersWorkflow = (0, workflows_sdk_1.createWorkflow)("reorder-banners", (reorderInput) => {
|
|
20
|
+
const post = reorderBannersStep(reorderInput);
|
|
21
|
+
return new workflows_sdk_1.WorkflowResponse(post);
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVvcmRlci1iYW5uZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9yZW9yZGVyLWJhbm5lcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzJDO0FBQzNDLDhDQUFrRDtBQVFsRCxNQUFNLGtCQUFrQixHQUFHLElBQUEsMEJBQVUsRUFDbkMsaUJBQWlCLEVBQ2pCLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBK0IsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDNUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMzQyxNQUFNLG1CQUFtQixHQUN2QixTQUFTLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQztJQUVuQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsTUFBTSxtQkFBbUIsQ0FBQyxhQUFhLENBQ3JDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FDNUQsQ0FBQztJQUVGLE9BQU8sSUFBSSw0QkFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQ0YsQ0FBQztBQUVXLFFBQUEsc0JBQXNCLEdBQUcsSUFBQSw4QkFBYyxFQUNsRCxpQkFBaUIsRUFDakIsQ0FBQyxZQUF5QyxFQUFFLEVBQUU7SUFDNUMsTUFBTSxJQUFJLEdBQUcsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUMsT0FBTyxJQUFJLGdDQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLENBQUMsQ0FDRixDQUFDIn0=
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uploadBannersWorkflow = void 0;
|
|
4
|
+
const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
|
|
5
|
+
const banner_1 = require("../modules/banner");
|
|
6
|
+
const core_flows_1 = require("@medusajs/medusa/core-flows");
|
|
7
|
+
const uploadBannersStep = (0, workflows_sdk_1.createStep)("upload-banners", async ({ files }, { container }) => {
|
|
8
|
+
const logger = container.resolve("logger");
|
|
9
|
+
const bannerModuleService = container.resolve(banner_1.BANNER_MODULE);
|
|
10
|
+
if (files.length === 0) {
|
|
11
|
+
throw new Error("at least 1 file is required");
|
|
12
|
+
}
|
|
13
|
+
logger.info(`Uploading ${files.length} banners`);
|
|
14
|
+
const { result } = await (0, core_flows_1.uploadFilesWorkflow)().run({
|
|
15
|
+
input: {
|
|
16
|
+
files: files.map((file) => ({
|
|
17
|
+
...file,
|
|
18
|
+
filename: `${file.filename.replace(/ /g, "_")}`,
|
|
19
|
+
})),
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
if (result.some((file) => !file.id || !file.url)) {
|
|
23
|
+
throw new Error(`some files don't have an id or url`);
|
|
24
|
+
}
|
|
25
|
+
const [maxOrderBanner] = await bannerModuleService.listBanners({}, { take: 1, order: { order: "DESC" } });
|
|
26
|
+
const maxOrder = maxOrderBanner?.order ?? 0;
|
|
27
|
+
const banners = await bannerModuleService.createBanners(result.map((banner, index) => ({
|
|
28
|
+
id: banner.id,
|
|
29
|
+
url: banner.url,
|
|
30
|
+
order: maxOrder + index + 1,
|
|
31
|
+
})));
|
|
32
|
+
return new workflows_sdk_1.StepResponse(banners, banners);
|
|
33
|
+
}, async (banners, { container }) => {
|
|
34
|
+
const logger = container.resolve("logger");
|
|
35
|
+
const bannerModuleService = container.resolve(banner_1.BANNER_MODULE);
|
|
36
|
+
if (banners) {
|
|
37
|
+
// delete files
|
|
38
|
+
await (0, core_flows_1.deleteFilesWorkflow)().run({
|
|
39
|
+
input: {
|
|
40
|
+
ids: banners.map((banner) => banner.id),
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
// delete banners
|
|
44
|
+
await bannerModuleService.deleteBanners(banners.map((banner) => banner.id));
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
logger.warn(`Banner not found`);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
exports.uploadBannersWorkflow = (0, workflows_sdk_1.createWorkflow)("upload-banners", (bannerInput) => {
|
|
51
|
+
const post = uploadBannersStep(bannerInput);
|
|
52
|
+
return new workflows_sdk_1.WorkflowResponse(post);
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkLWJhbm5lcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3VwbG9hZC1iYW5uZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUsyQztBQUMzQyw4Q0FBa0Q7QUFFbEQsNERBSXFDO0FBTXJDLE1BQU0saUJBQWlCLEdBQUcsSUFBQSwwQkFBVSxFQUNsQyxnQkFBZ0IsRUFDaEIsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUE4QixFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtJQUM3RCxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sbUJBQW1CLEdBQ3ZCLFNBQVMsQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFDO0lBRW5DLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxLQUFLLENBQUMsTUFBTSxVQUFVLENBQUMsQ0FBQztJQUVqRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLGdDQUFtQixHQUFFLENBQUMsR0FBRyxDQUFDO1FBQ2pELEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMxQixHQUFHLElBQUk7Z0JBQ1AsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2FBQ2hELENBQUMsQ0FBQztTQUNKO0tBQ0YsQ0FBQyxDQUFDO0lBRUgsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqRCxNQUFNLElBQUksS0FBSyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLG1CQUFtQixDQUFDLFdBQVcsQ0FDNUQsRUFBRSxFQUNGLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUUsQ0FDdEMsQ0FBQztJQUNGLE1BQU0sUUFBUSxHQUFHLGNBQWMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBRTVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sbUJBQW1CLENBQUMsYUFBYSxDQUNyRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUM3QixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7UUFDYixHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUc7UUFDZixLQUFLLEVBQUUsUUFBUSxHQUFHLEtBQUssR0FBRyxDQUFDO0tBQzVCLENBQUMsQ0FBQyxDQUNKLENBQUM7SUFFRixPQUFPLElBQUksNEJBQVksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxFQUVELEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQy9CLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0MsTUFBTSxtQkFBbUIsR0FDdkIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUM7SUFFbkMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNaLGVBQWU7UUFDZixNQUFNLElBQUEsZ0NBQW1CLEdBQUUsQ0FBQyxHQUFHLENBQUM7WUFDOUIsS0FBSyxFQUFFO2dCQUNMLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2FBQ3hDO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsaUJBQWlCO1FBQ2pCLE1BQU0sbUJBQW1CLENBQUMsYUFBYSxDQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQ25DLENBQUM7SUFDSixDQUFDO1NBQU0sQ0FBQztRQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNsQyxDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUM7QUFFVyxRQUFBLHFCQUFxQixHQUFHLElBQUEsOEJBQWMsRUFDakQsZ0JBQWdCLEVBQ2hCLENBQUMsV0FBdUMsRUFBRSxFQUFFO0lBQzFDLE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTVDLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQ0YsQ0FBQyJ9
|
package/README.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Medusa Plugin Banner
|
|
2
|
+
|
|
3
|
+
## How to install
|
|
4
|
+
1. add the plugin to your medusa backend
|
|
5
|
+
```bash
|
|
6
|
+
yarn add medusa-banner
|
|
7
|
+
```
|
|
8
|
+
2. configure your medusa backend `medusa-config.ts`
|
|
9
|
+
```ts
|
|
10
|
+
module.exports = defineConfig({
|
|
11
|
+
// ... rest of the config
|
|
12
|
+
plugins: [
|
|
13
|
+
// ... rest of the plugins
|
|
14
|
+
{
|
|
15
|
+
resolve: "medusa-banner",
|
|
16
|
+
options: {},
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
modules: [
|
|
20
|
+
// ... rest of the modules
|
|
21
|
+
{
|
|
22
|
+
resolve: "medusa-banner/modules/banner",
|
|
23
|
+
options: {},
|
|
24
|
+
},
|
|
25
|
+
]
|
|
26
|
+
});
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
3. run the migrations in your medusa core backend
|
|
30
|
+
```bash
|
|
31
|
+
yarn medusa db:migrate
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
4. all done now just start your medusa backend
|
|
35
|
+
`yarn dev` `yarn start` or whatever you use to start your backend
|
package/package.json
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@lodashventure/medusa-banner",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "A starter for Medusa plugins.",
|
|
5
|
+
"author": "Medusa (https://medusajs.com)",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"files": [
|
|
8
|
+
".medusa/server"
|
|
9
|
+
],
|
|
10
|
+
"exports": {
|
|
11
|
+
"./package.json": "./package.json",
|
|
12
|
+
"./workflows": "./.medusa/server/src/workflows/index.js",
|
|
13
|
+
"./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
|
|
14
|
+
"./modules/*": "./.medusa/server/src/modules/*/index.js",
|
|
15
|
+
"./providers/*": "./.medusa/server/src/providers/*/index.js",
|
|
16
|
+
"./admin": "./.medusa/server/src/admin/index.mjs",
|
|
17
|
+
"./*": "./.medusa/server/src/*.js"
|
|
18
|
+
},
|
|
19
|
+
"keywords": [
|
|
20
|
+
"medusa",
|
|
21
|
+
"plugin",
|
|
22
|
+
"medusa-plugin-other",
|
|
23
|
+
"medusa-plugin",
|
|
24
|
+
"medusa-v2"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "medusa plugin:build",
|
|
28
|
+
"dev": "medusa plugin:develop",
|
|
29
|
+
"prepublishOnly": "medusa plugin:build"
|
|
30
|
+
},
|
|
31
|
+
"devDependencies": {
|
|
32
|
+
"@medusajs/admin-sdk": "2.10.0",
|
|
33
|
+
"@medusajs/cli": "2.10.0",
|
|
34
|
+
"@medusajs/framework": "2.10.0",
|
|
35
|
+
"@medusajs/icons": "^2.10.0",
|
|
36
|
+
"@medusajs/medusa": "2.10.0",
|
|
37
|
+
"@medusajs/test-utils": "2.10.0",
|
|
38
|
+
"@medusajs/ui": "4.0.4",
|
|
39
|
+
"@mikro-orm/cli": "6.4.3",
|
|
40
|
+
"@mikro-orm/core": "6.4.3",
|
|
41
|
+
"@mikro-orm/knex": "6.4.3",
|
|
42
|
+
"@mikro-orm/migrations": "6.4.3",
|
|
43
|
+
"@mikro-orm/postgresql": "6.4.3",
|
|
44
|
+
"@swc/core": "1.5.7",
|
|
45
|
+
"@types/multer": "^1.4.12",
|
|
46
|
+
"@types/node": "^20.0.0",
|
|
47
|
+
"@types/react": "^18.3.2",
|
|
48
|
+
"@types/react-dom": "^18.2.25",
|
|
49
|
+
"awilix": "^8.0.1",
|
|
50
|
+
"pg": "^8.13.0",
|
|
51
|
+
"prop-types": "^15.8.1",
|
|
52
|
+
"react": "^18.2.0",
|
|
53
|
+
"react-dom": "^18.2.0",
|
|
54
|
+
"ts-node": "^10.9.2",
|
|
55
|
+
"typescript": "^5.6.2",
|
|
56
|
+
"vite": "^5.2.11",
|
|
57
|
+
"yalc": "^1.0.0-pre.53"
|
|
58
|
+
},
|
|
59
|
+
"peerDependencies": {
|
|
60
|
+
"@medusajs/admin-sdk": "2.10.0",
|
|
61
|
+
"@medusajs/cli": "2.10.0",
|
|
62
|
+
"@medusajs/framework": "2.10.0",
|
|
63
|
+
"@medusajs/icons": "^2.10.0",
|
|
64
|
+
"@medusajs/medusa": "2.10.0",
|
|
65
|
+
"@medusajs/test-utils": "2.10.0",
|
|
66
|
+
"@medusajs/ui": "4.0.3",
|
|
67
|
+
"@mikro-orm/cli": "6.4.3",
|
|
68
|
+
"@mikro-orm/core": "6.4.3",
|
|
69
|
+
"@mikro-orm/knex": "6.4.3",
|
|
70
|
+
"@mikro-orm/migrations": "6.4.3",
|
|
71
|
+
"@mikro-orm/postgresql": "6.4.3",
|
|
72
|
+
"@tanstack/react-query": "*",
|
|
73
|
+
"awilix": "^8.0.1",
|
|
74
|
+
"pg": "^8.13.0"
|
|
75
|
+
},
|
|
76
|
+
"engines": {
|
|
77
|
+
"node": ">=20"
|
|
78
|
+
},
|
|
79
|
+
"dependencies": {
|
|
80
|
+
"@dnd-kit/core": "^6.3.1",
|
|
81
|
+
"lucide-react": "^0.486.0",
|
|
82
|
+
"react-dropzone": "^14.3.8"
|
|
83
|
+
}
|
|
84
|
+
}
|