feat(admin-sdk,admin-bundler,admin-shared,medusa): Restructure admin packages (#8988)
**What** - Renames /admin-next -> /admin - Renames @medusajs/admin-sdk -> @medusajs/admin-bundler - Creates a new package called @medusajs/admin-sdk that will hold all tooling relevant to creating admin extensions. This is currently `defineRouteConfig` and `defineWidgetConfig`, but will eventually also export methods for adding custom fields, register translation, etc. - cc: @shahednasser we should update the examples in the docs so these functions are imported from `@medusajs/admin-sdk`. People will also need to install the package in their project, as it's no longer a transient dependency. - cc: @olivermrbl we might want to publish a changelog when this is merged, as it is a breaking change, and will require people to import the `defineXConfig` from the new package instead of `@medusajs/admin-shared`. - Updates CODEOWNERS so /admin packages does not require a review from the UI team.
This commit is contained in:
1 parent
beaa851302
commit
0fe1201435
1440 files changed
+122
-86
No files matched your search
@@ -0,0 +1 @@
|
||||
# @medusajs/admin-sdk
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
"name": "@medusajs/admin-sdk",
|
||||
"description": "SDK for building extension for the Medusa admin dashboard.",
|
||||
"version": "0.0.1",
|
||||
"author": "Kasper Kristensen <kasper@medusajs.com>",
|
||||
"types": "dist/index.d.ts",
|
||||
"main": "dist/index.js",
|
||||
"module": "dist/index.mjs",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/medusajs/medusa",
|
||||
"directory": "packages/admin/admin-sdk"
|
||||
},
|
||||
"files": [
|
||||
"dist",
|
||||
"package.json"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsup"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react": "^18.3.2",
|
||||
"tsup": "^8.0.1",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@medusajs/admin-shared": "^0.0.1"
|
||||
},
|
||||
"packageManager": "yarn@3.2.1"
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
export * from "./types"
|
||||
export * from "./utils"
|
||||
@@ -0,0 +1,11 @@
|
||||
import type { InjectionZone } from "@medusajs/admin-shared"
|
||||
import type { ComponentType } from "react"
|
||||
|
||||
export type WidgetConfig = {
|
||||
zone: InjectionZone | InjectionZone[]
|
||||
}
|
||||
|
||||
export type RouteConfig = {
|
||||
label?: string
|
||||
icon?: ComponentType
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
import { RouteConfig, WidgetConfig } from "./types"
|
||||
|
||||
function createConfigHelper<TConfig extends Record<string, unknown>>(
|
||||
config: TConfig
|
||||
): TConfig {
|
||||
return {
|
||||
...config,
|
||||
/**
|
||||
* This property is required to allow the config to be exported,
|
||||
* while still allowing HMR to work correctly.
|
||||
*
|
||||
* It tricks Fast Refresh into thinking that the config is a React component,
|
||||
* which allows it to be updated without a full page reload.
|
||||
*/
|
||||
$$typeof: Symbol.for("react.memo"),
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Define a widget configuration.
|
||||
*
|
||||
* @param config The widget configuration.
|
||||
* @returns The widget configuration.
|
||||
*/
|
||||
export function defineWidgetConfig(config: WidgetConfig) {
|
||||
return createConfigHelper(config)
|
||||
}
|
||||
|
||||
/**
|
||||
* Define a route configuration.
|
||||
*
|
||||
* @param config The route configuration.
|
||||
* @returns The route configuration.
|
||||
*/
|
||||
export function defineRouteConfig(config: RouteConfig) {
|
||||
return createConfigHelper(config)
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
export * from "./config"
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "ES2020",
|
||||
"useDefineForClassFields": true,
|
||||
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "Node",
|
||||
"skipLibCheck": true,
|
||||
"strict": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"esModuleInterop": true,
|
||||
"outDir": "dist",
|
||||
"declarationMap": true,
|
||||
"declaration": true
|
||||
},
|
||||
"include": ["src"]
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
import { defineConfig } from "tsup"
|
||||
|
||||
export default defineConfig({
|
||||
entry: ["src/index.ts"],
|
||||
format: ["cjs", "esm"],
|
||||
dts: true,
|
||||
clean: true,
|
||||
})
|
||||
Reference in new issue
Block a user