From c3440e5e3812e3d1c6b82e9d4e41287398451611 Mon Sep 17 00:00:00 2001 From: Riqwan Thamir Date: Mon, 17 Mar 2025 20:11:46 +0100 Subject: [PATCH] feat(medusa,types): add enabled plugins route (#11876) --- .changeset/giant-llamas-study.md | 7 ++++++ packages/core/js-sdk/src/admin/index.ts | 6 +++++ packages/core/js-sdk/src/admin/plugin.ts | 21 +++++++++++++++++ packages/core/types/src/http/index.ts | 1 + .../types/src/http/plugins/admin/responses.ts | 10 ++++++++ packages/core/types/src/http/plugins/index.ts | 1 + .../medusa/src/api/admin/plugins/route.ts | 23 +++++++++++++++++++ 7 files changed, 69 insertions(+) create mode 100644 .changeset/giant-llamas-study.md create mode 100644 packages/core/js-sdk/src/admin/plugin.ts create mode 100644 packages/core/types/src/http/plugins/admin/responses.ts create mode 100644 packages/core/types/src/http/plugins/index.ts create mode 100644 packages/medusa/src/api/admin/plugins/route.ts diff --git a/.changeset/giant-llamas-study.md b/.changeset/giant-llamas-study.md new file mode 100644 index 0000000000..5f70c3088a --- /dev/null +++ b/.changeset/giant-llamas-study.md @@ -0,0 +1,7 @@ +--- +"@medusajs/types": patch +"@medusajs/medusa": patch +"@medusajs/js-sdk": patch +--- + +feat(medusa,types,js-sdk): add enabled plugins route diff --git a/packages/core/js-sdk/src/admin/index.ts b/packages/core/js-sdk/src/admin/index.ts index f6c9b0d90a..d734bbe241 100644 --- a/packages/core/js-sdk/src/admin/index.ts +++ b/packages/core/js-sdk/src/admin/index.ts @@ -17,6 +17,7 @@ import { Order } from "./order" import { OrderEdit } from "./order-edit" import { Payment } from "./payment" import { PaymentCollection } from "./payment-collection" +import { Plugin } from "./plugin" import { PriceList } from "./price-list" import { PricePreference } from "./price-preference" import { Product } from "./product" @@ -211,6 +212,10 @@ export class Admin { * @tags promotion */ public campaign: Campaign + /** + * @tags plugin + */ + public plugin: Plugin constructor(client: Client) { this.invite = new Invite(client) @@ -255,5 +260,6 @@ export class Admin { this.customerGroup = new CustomerGroup(client) this.promotion = new Promotion(client) this.campaign = new Campaign(client) + this.plugin = new Plugin(client) } } diff --git a/packages/core/js-sdk/src/admin/plugin.ts b/packages/core/js-sdk/src/admin/plugin.ts new file mode 100644 index 0000000000..c665ebc6f4 --- /dev/null +++ b/packages/core/js-sdk/src/admin/plugin.ts @@ -0,0 +1,21 @@ +import { HttpTypes } from "@medusajs/types" +import { Client } from "../client" +import { ClientHeaders } from "../types" + +export class Plugin { + private client: Client + + constructor(client: Client) { + this.client = client + } + + async list(headers?: ClientHeaders) { + return await this.client.fetch( + `/admin/plugins`, + { + headers, + query: {}, + } + ) + } +} diff --git a/packages/core/types/src/http/index.ts b/packages/core/types/src/http/index.ts index 6b03f73528..7a1af0bb65 100644 --- a/packages/core/types/src/http/index.ts +++ b/packages/core/types/src/http/index.ts @@ -22,6 +22,7 @@ export * from "./notification" export * from "./order" export * from "./order-edit" export * from "./payment" +export * from "./plugins" export * from "./price-list" export * from "./pricing" export * from "./product" diff --git a/packages/core/types/src/http/plugins/admin/responses.ts b/packages/core/types/src/http/plugins/admin/responses.ts new file mode 100644 index 0000000000..854e304f07 --- /dev/null +++ b/packages/core/types/src/http/plugins/admin/responses.ts @@ -0,0 +1,10 @@ +export interface AdminPlugin { + name: string +} + +export interface AdminPluginsListResponse { + /** + * The plugin's details. + */ + plugins: AdminPlugin[] +} diff --git a/packages/core/types/src/http/plugins/index.ts b/packages/core/types/src/http/plugins/index.ts new file mode 100644 index 0000000000..dc4fd187a8 --- /dev/null +++ b/packages/core/types/src/http/plugins/index.ts @@ -0,0 +1 @@ +export * from "./admin/responses" diff --git a/packages/medusa/src/api/admin/plugins/route.ts b/packages/medusa/src/api/admin/plugins/route.ts new file mode 100644 index 0000000000..f4d182976f --- /dev/null +++ b/packages/medusa/src/api/admin/plugins/route.ts @@ -0,0 +1,23 @@ +import { MedusaRequest, MedusaResponse } from "@medusajs/framework/http" +import { HttpTypes } from "@medusajs/framework/types" +import { ContainerRegistrationKeys } from "@medusajs/framework/utils" +import { isString } from "lodash" + +export const GET = async ( + req: MedusaRequest, + res: MedusaResponse +) => { + const configModule = req.scope.resolve( + ContainerRegistrationKeys.CONFIG_MODULE + ) + + const configPlugins = configModule.plugins ?? [] + + const plugins = configPlugins.map((plugin) => ({ + name: isString(plugin) ? plugin : plugin.resolve, + })) + + res.json({ + plugins, + }) +}