medusa-dynamic-metadata 0.0.10 → 0.0.11
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.
|
@@ -1760,25 +1760,25 @@ const MetadataWidgetLoader = ({ data, entityType, queryKey }) => {
|
|
|
1760
1760
|
}
|
|
1761
1761
|
);
|
|
1762
1762
|
};
|
|
1763
|
-
const Widget$
|
|
1763
|
+
const Widget$f = ({ data }) => {
|
|
1764
1764
|
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "campaign.details.after" });
|
|
1765
1765
|
};
|
|
1766
1766
|
adminSdk.defineWidgetConfig({
|
|
1767
1767
|
zone: "campaign.details.after"
|
|
1768
1768
|
});
|
|
1769
|
-
const Widget$
|
|
1769
|
+
const Widget$e = ({ data }) => {
|
|
1770
1770
|
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "product_category.details.after" });
|
|
1771
1771
|
};
|
|
1772
1772
|
adminSdk.defineWidgetConfig({
|
|
1773
1773
|
zone: "product_category.details.after"
|
|
1774
1774
|
});
|
|
1775
|
-
const Widget$
|
|
1775
|
+
const Widget$d = ({ data }) => {
|
|
1776
1776
|
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "product_collection.details.after" });
|
|
1777
1777
|
};
|
|
1778
1778
|
adminSdk.defineWidgetConfig({
|
|
1779
1779
|
zone: "product_collection.details.after"
|
|
1780
1780
|
});
|
|
1781
|
-
const Widget$
|
|
1781
|
+
const Widget$c = ({ data }) => {
|
|
1782
1782
|
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "customer.details.after" });
|
|
1783
1783
|
};
|
|
1784
1784
|
adminSdk.defineWidgetConfig({
|
|
@@ -1840,24 +1840,36 @@ const ProductHideDefaultMetadata = () => {
|
|
|
1840
1840
|
adminSdk.defineWidgetConfig({
|
|
1841
1841
|
zone: "product.details.side.before"
|
|
1842
1842
|
});
|
|
1843
|
-
const Widget$
|
|
1843
|
+
const Widget$b = ({ data }) => {
|
|
1844
1844
|
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "inventory_item.details.after" });
|
|
1845
1845
|
};
|
|
1846
1846
|
adminSdk.defineWidgetConfig({
|
|
1847
1847
|
zone: "inventory_item.details.after"
|
|
1848
1848
|
});
|
|
1849
|
-
const Widget$
|
|
1849
|
+
const Widget$a = ({ data }) => {
|
|
1850
1850
|
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "order.details.after" });
|
|
1851
1851
|
};
|
|
1852
1852
|
adminSdk.defineWidgetConfig({
|
|
1853
1853
|
zone: "order.details.after"
|
|
1854
1854
|
});
|
|
1855
|
-
const Widget$
|
|
1855
|
+
const Widget$9 = ({ data }) => {
|
|
1856
1856
|
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "price_list.details.after" });
|
|
1857
1857
|
};
|
|
1858
1858
|
adminSdk.defineWidgetConfig({
|
|
1859
1859
|
zone: "price_list.details.after"
|
|
1860
1860
|
});
|
|
1861
|
+
const Widget$8 = ({ data }) => {
|
|
1862
|
+
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "product_tag.details.after" });
|
|
1863
|
+
};
|
|
1864
|
+
adminSdk.defineWidgetConfig({
|
|
1865
|
+
zone: "product_tag.details.after"
|
|
1866
|
+
});
|
|
1867
|
+
const Widget$7 = ({ data }) => {
|
|
1868
|
+
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "product_type.details.after" });
|
|
1869
|
+
};
|
|
1870
|
+
adminSdk.defineWidgetConfig({
|
|
1871
|
+
zone: "product_type.details.after"
|
|
1872
|
+
});
|
|
1861
1873
|
const Widget$6 = ({ data }) => {
|
|
1862
1874
|
return /* @__PURE__ */ jsxRuntime.jsx(UniversalMetadataWidget, { data, zone: "product_variant.details.after" });
|
|
1863
1875
|
};
|
|
@@ -1902,19 +1914,19 @@ adminSdk.defineWidgetConfig({
|
|
|
1902
1914
|
});
|
|
1903
1915
|
const widgetModule = { widgets: [
|
|
1904
1916
|
{
|
|
1905
|
-
Component: Widget$
|
|
1917
|
+
Component: Widget$f,
|
|
1906
1918
|
zone: ["campaign.details.after"]
|
|
1907
1919
|
},
|
|
1908
1920
|
{
|
|
1909
|
-
Component: Widget$
|
|
1921
|
+
Component: Widget$e,
|
|
1910
1922
|
zone: ["product_category.details.after"]
|
|
1911
1923
|
},
|
|
1912
1924
|
{
|
|
1913
|
-
Component: Widget$
|
|
1925
|
+
Component: Widget$d,
|
|
1914
1926
|
zone: ["product_collection.details.after"]
|
|
1915
1927
|
},
|
|
1916
1928
|
{
|
|
1917
|
-
Component: Widget$
|
|
1929
|
+
Component: Widget$c,
|
|
1918
1930
|
zone: ["customer.details.after"]
|
|
1919
1931
|
},
|
|
1920
1932
|
{
|
|
@@ -1922,17 +1934,25 @@ const widgetModule = { widgets: [
|
|
|
1922
1934
|
zone: ["product.details.side.before"]
|
|
1923
1935
|
},
|
|
1924
1936
|
{
|
|
1925
|
-
Component: Widget$
|
|
1937
|
+
Component: Widget$b,
|
|
1926
1938
|
zone: ["inventory_item.details.after"]
|
|
1927
1939
|
},
|
|
1928
1940
|
{
|
|
1929
|
-
Component: Widget$
|
|
1941
|
+
Component: Widget$a,
|
|
1930
1942
|
zone: ["order.details.after"]
|
|
1931
1943
|
},
|
|
1932
1944
|
{
|
|
1933
|
-
Component: Widget$
|
|
1945
|
+
Component: Widget$9,
|
|
1934
1946
|
zone: ["price_list.details.after"]
|
|
1935
1947
|
},
|
|
1948
|
+
{
|
|
1949
|
+
Component: Widget$8,
|
|
1950
|
+
zone: ["product_tag.details.after"]
|
|
1951
|
+
},
|
|
1952
|
+
{
|
|
1953
|
+
Component: Widget$7,
|
|
1954
|
+
zone: ["product_type.details.after"]
|
|
1955
|
+
},
|
|
1936
1956
|
{
|
|
1937
1957
|
Component: Widget$6,
|
|
1938
1958
|
zone: ["product_variant.details.after"]
|
|
@@ -1759,25 +1759,25 @@ const MetadataWidgetLoader = ({ data, entityType, queryKey }) => {
|
|
|
1759
1759
|
}
|
|
1760
1760
|
);
|
|
1761
1761
|
};
|
|
1762
|
-
const Widget$
|
|
1762
|
+
const Widget$f = ({ data }) => {
|
|
1763
1763
|
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "campaign.details.after" });
|
|
1764
1764
|
};
|
|
1765
1765
|
defineWidgetConfig({
|
|
1766
1766
|
zone: "campaign.details.after"
|
|
1767
1767
|
});
|
|
1768
|
-
const Widget$
|
|
1768
|
+
const Widget$e = ({ data }) => {
|
|
1769
1769
|
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "product_category.details.after" });
|
|
1770
1770
|
};
|
|
1771
1771
|
defineWidgetConfig({
|
|
1772
1772
|
zone: "product_category.details.after"
|
|
1773
1773
|
});
|
|
1774
|
-
const Widget$
|
|
1774
|
+
const Widget$d = ({ data }) => {
|
|
1775
1775
|
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "product_collection.details.after" });
|
|
1776
1776
|
};
|
|
1777
1777
|
defineWidgetConfig({
|
|
1778
1778
|
zone: "product_collection.details.after"
|
|
1779
1779
|
});
|
|
1780
|
-
const Widget$
|
|
1780
|
+
const Widget$c = ({ data }) => {
|
|
1781
1781
|
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "customer.details.after" });
|
|
1782
1782
|
};
|
|
1783
1783
|
defineWidgetConfig({
|
|
@@ -1839,24 +1839,36 @@ const ProductHideDefaultMetadata = () => {
|
|
|
1839
1839
|
defineWidgetConfig({
|
|
1840
1840
|
zone: "product.details.side.before"
|
|
1841
1841
|
});
|
|
1842
|
-
const Widget$
|
|
1842
|
+
const Widget$b = ({ data }) => {
|
|
1843
1843
|
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "inventory_item.details.after" });
|
|
1844
1844
|
};
|
|
1845
1845
|
defineWidgetConfig({
|
|
1846
1846
|
zone: "inventory_item.details.after"
|
|
1847
1847
|
});
|
|
1848
|
-
const Widget$
|
|
1848
|
+
const Widget$a = ({ data }) => {
|
|
1849
1849
|
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "order.details.after" });
|
|
1850
1850
|
};
|
|
1851
1851
|
defineWidgetConfig({
|
|
1852
1852
|
zone: "order.details.after"
|
|
1853
1853
|
});
|
|
1854
|
-
const Widget$
|
|
1854
|
+
const Widget$9 = ({ data }) => {
|
|
1855
1855
|
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "price_list.details.after" });
|
|
1856
1856
|
};
|
|
1857
1857
|
defineWidgetConfig({
|
|
1858
1858
|
zone: "price_list.details.after"
|
|
1859
1859
|
});
|
|
1860
|
+
const Widget$8 = ({ data }) => {
|
|
1861
|
+
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "product_tag.details.after" });
|
|
1862
|
+
};
|
|
1863
|
+
defineWidgetConfig({
|
|
1864
|
+
zone: "product_tag.details.after"
|
|
1865
|
+
});
|
|
1866
|
+
const Widget$7 = ({ data }) => {
|
|
1867
|
+
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "product_type.details.after" });
|
|
1868
|
+
};
|
|
1869
|
+
defineWidgetConfig({
|
|
1870
|
+
zone: "product_type.details.after"
|
|
1871
|
+
});
|
|
1860
1872
|
const Widget$6 = ({ data }) => {
|
|
1861
1873
|
return /* @__PURE__ */ jsx(UniversalMetadataWidget, { data, zone: "product_variant.details.after" });
|
|
1862
1874
|
};
|
|
@@ -1901,19 +1913,19 @@ defineWidgetConfig({
|
|
|
1901
1913
|
});
|
|
1902
1914
|
const widgetModule = { widgets: [
|
|
1903
1915
|
{
|
|
1904
|
-
Component: Widget$
|
|
1916
|
+
Component: Widget$f,
|
|
1905
1917
|
zone: ["campaign.details.after"]
|
|
1906
1918
|
},
|
|
1907
1919
|
{
|
|
1908
|
-
Component: Widget$
|
|
1920
|
+
Component: Widget$e,
|
|
1909
1921
|
zone: ["product_category.details.after"]
|
|
1910
1922
|
},
|
|
1911
1923
|
{
|
|
1912
|
-
Component: Widget$
|
|
1924
|
+
Component: Widget$d,
|
|
1913
1925
|
zone: ["product_collection.details.after"]
|
|
1914
1926
|
},
|
|
1915
1927
|
{
|
|
1916
|
-
Component: Widget$
|
|
1928
|
+
Component: Widget$c,
|
|
1917
1929
|
zone: ["customer.details.after"]
|
|
1918
1930
|
},
|
|
1919
1931
|
{
|
|
@@ -1921,17 +1933,25 @@ const widgetModule = { widgets: [
|
|
|
1921
1933
|
zone: ["product.details.side.before"]
|
|
1922
1934
|
},
|
|
1923
1935
|
{
|
|
1924
|
-
Component: Widget$
|
|
1936
|
+
Component: Widget$b,
|
|
1925
1937
|
zone: ["inventory_item.details.after"]
|
|
1926
1938
|
},
|
|
1927
1939
|
{
|
|
1928
|
-
Component: Widget$
|
|
1940
|
+
Component: Widget$a,
|
|
1929
1941
|
zone: ["order.details.after"]
|
|
1930
1942
|
},
|
|
1931
1943
|
{
|
|
1932
|
-
Component: Widget$
|
|
1944
|
+
Component: Widget$9,
|
|
1933
1945
|
zone: ["price_list.details.after"]
|
|
1934
1946
|
},
|
|
1947
|
+
{
|
|
1948
|
+
Component: Widget$8,
|
|
1949
|
+
zone: ["product_tag.details.after"]
|
|
1950
|
+
},
|
|
1951
|
+
{
|
|
1952
|
+
Component: Widget$7,
|
|
1953
|
+
zone: ["product_type.details.after"]
|
|
1954
|
+
},
|
|
1935
1955
|
{
|
|
1936
1956
|
Component: Widget$6,
|
|
1937
1957
|
zone: ["product_variant.details.after"]
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const metadata_options_1 = require("../../../config/metadata-options");
|
|
6
|
+
async function GET(req, res) {
|
|
7
|
+
const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
8
|
+
const options = (0, metadata_options_1.resolveDynamicMetadataOptions)(configModule);
|
|
9
|
+
const entity = req.query?.entity;
|
|
10
|
+
if (typeof entity === "string" && entity.length > 0) {
|
|
11
|
+
const entityConfig = options.entities[entity];
|
|
12
|
+
if (!entityConfig || !entityConfig.expose_client_helpers) {
|
|
13
|
+
res.json({
|
|
14
|
+
metadataDescriptors: [],
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
res.json({
|
|
19
|
+
metadataDescriptors: entityConfig.descriptors,
|
|
20
|
+
});
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const metadataDescriptorsByEntity = Object.fromEntries(Object.entries(options.entities)
|
|
24
|
+
.filter(([, config]) => config.expose_client_helpers)
|
|
25
|
+
.map(([entityType, config]) => [entityType, config.descriptors]));
|
|
26
|
+
res.json({
|
|
27
|
+
metadataDescriptorsByEntity,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL21ldGFkYXRhLWNvbmZpZy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLGtCQWlDQztBQXJDRCxxREFBcUU7QUFFckUsdUVBQWdGO0FBRXpFLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDcEMsaUNBQXlCLENBQUMsYUFBYSxDQUN4QyxDQUFBO0lBRUQsTUFBTSxPQUFPLEdBQUcsSUFBQSxnREFBNkIsRUFBQyxZQUFZLENBQUMsQ0FBQTtJQUMzRCxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQTtJQUVoQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3BELE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUE7UUFFN0MsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ3pELEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsbUJBQW1CLEVBQUUsRUFBRTthQUN4QixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxtQkFBbUIsRUFBRSxZQUFZLENBQUMsV0FBVztTQUM5QyxDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sMkJBQTJCLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FDcEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1NBQzdCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDO1NBQ3BELEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FDbkUsQ0FBQTtJQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCwyQkFBMkI7S0FDNUIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
|
|
@@ -46,6 +46,26 @@ exports.DEFAULT_DYNAMIC_METADATA_OPTIONS = {
|
|
|
46
46
|
entities: {},
|
|
47
47
|
};
|
|
48
48
|
const PLUGIN_NAME = "medusa-dynamic-metadata";
|
|
49
|
+
/**
|
|
50
|
+
* True when this plugin entry refers to medusa-dynamic-metadata, including
|
|
51
|
+
* absolute/relative paths and monorepo layouts (`.../medusa-dynamic-metadata/...`).
|
|
52
|
+
* Strict `resolve === "medusa-dynamic-metadata"` misses `file:` and `require.resolve()` paths.
|
|
53
|
+
*/
|
|
54
|
+
function isDynamicMetadataPluginResolve(resolve) {
|
|
55
|
+
if (resolve === PLUGIN_NAME) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
const norm = resolve
|
|
59
|
+
.replace(/\\/g, "/")
|
|
60
|
+
.split("?")[0]
|
|
61
|
+
?.split("#")[0] ?? "";
|
|
62
|
+
if (!norm.length) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
const segments = norm.split("/").filter(Boolean);
|
|
66
|
+
return (segments.includes(PLUGIN_NAME) ||
|
|
67
|
+
segments[segments.length - 1] === PLUGIN_NAME);
|
|
68
|
+
}
|
|
49
69
|
function normalizeDynamicMetadataOptions(input) {
|
|
50
70
|
const parsed = DynamicMetadataOptionsSchema.parse(input ?? {});
|
|
51
71
|
const normalizedEntities = {};
|
|
@@ -83,14 +103,14 @@ function resolveDynamicMetadataOptions(configModule) {
|
|
|
83
103
|
for (const plugin of plugins) {
|
|
84
104
|
if ((0, utils_1.isString)(plugin)) {
|
|
85
105
|
if (plugin === PLUGIN_NAME) {
|
|
86
|
-
|
|
106
|
+
return normalizeDynamicMetadataOptions({});
|
|
87
107
|
}
|
|
88
108
|
continue;
|
|
89
109
|
}
|
|
90
|
-
if (plugin?.resolve
|
|
110
|
+
if (plugin?.resolve && isDynamicMetadataPluginResolve(plugin.resolve)) {
|
|
91
111
|
return normalizeDynamicMetadataOptions(plugin.options);
|
|
92
112
|
}
|
|
93
113
|
}
|
|
94
114
|
return exports.DEFAULT_DYNAMIC_METADATA_OPTIONS;
|
|
95
115
|
}
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb25maWcvbWV0YWRhdGEtb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2R0EsMEVBMkNDO0FBRUQsc0VBbUJDO0FBN0tELHFEQUFvRDtBQUNwRCw2QkFBdUI7QUFFdkIsb0RBSWlDO0FBQ2pDLG9EQUF1RTtBQUN2RSxtREFBZ0Y7QUFDaEYsdURBQXlEO0FBRXpELE1BQU0sa0JBQWtCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNsQyxLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDeEIsS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDcEMsQ0FBQyxDQUFBO0FBRUYsTUFBTSx3QkFBd0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3hDLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFCLEdBQUcsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzFCLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzdCLENBQUMsQ0FBQTtBQUVGLE1BQU0sd0JBQXdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxHQUFHLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEIsS0FBSyxFQUFFLE9BQUM7U0FDTCxNQUFNLEVBQUU7U0FDUixJQUFJLEVBQUU7U0FDTixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMs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
|
package/README.md
CHANGED
|
@@ -177,7 +177,42 @@ Environment variable usage found in plugin source:
|
|
|
177
177
|
- Reads plugin config with `resolveDynamicMetadataOptions`.
|
|
178
178
|
- Returns empty descriptor array when entity is not configured (no 404).
|
|
179
179
|
|
|
180
|
-
### 2) `
|
|
180
|
+
### 2) `GET /store/metadata-config`
|
|
181
|
+
|
|
182
|
+
- **Auth:** Storefront (store route namespace)
|
|
183
|
+
- **Query params:**
|
|
184
|
+
- `entity` (`string`, optional)
|
|
185
|
+
- **Response (when `entity` is provided and exposed):**
|
|
186
|
+
```json
|
|
187
|
+
{
|
|
188
|
+
"metadataDescriptors": [
|
|
189
|
+
{
|
|
190
|
+
"key": "brand",
|
|
191
|
+
"type": "text",
|
|
192
|
+
"label": "Brand"
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
- **Response (when `entity` is omitted):**
|
|
198
|
+
```json
|
|
199
|
+
{
|
|
200
|
+
"metadataDescriptorsByEntity": {
|
|
201
|
+
"products": [
|
|
202
|
+
{
|
|
203
|
+
"key": "brand",
|
|
204
|
+
"type": "text",
|
|
205
|
+
"label": "Brand"
|
|
206
|
+
}
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
- **Behavior:**
|
|
212
|
+
- Returns only entities with `expose_client_helpers: true`.
|
|
213
|
+
- Returns empty descriptor array when the requested entity is hidden/not configured.
|
|
214
|
+
|
|
215
|
+
### 3) `POST /admin/product-variants/:id`
|
|
181
216
|
|
|
182
217
|
- **Auth:** Admin (admin route namespace)
|
|
183
218
|
- **Path params:**
|
|
@@ -285,6 +320,8 @@ Each file is a minimal wrapper around `UniversalMetadataWidget` with a fixed zon
|
|
|
285
320
|
| `shipping_profiles` | `shipping_profile.details.after` |
|
|
286
321
|
| `inventory_items` | `inventory_item.details.after` |
|
|
287
322
|
| `product_variants` | `product_variant.details.after` |
|
|
323
|
+
| `product_tags` | `product_tag.details.after` |
|
|
324
|
+
| `product_types` | `product_type.details.after` |
|
|
288
325
|
|
|
289
326
|
### Additional Widget
|
|
290
327
|
|
|
@@ -336,6 +373,13 @@ The plugin operates on existing Medusa entities by reading/writing their `metada
|
|
|
336
373
|
- **Cause:** no descriptors configured for that entity.
|
|
337
374
|
- **Fix:** add `entities.<entityType>.descriptors` in plugin options; rebuild/restart app.
|
|
338
375
|
|
|
376
|
+
### Product type / tag / settings pages: config exists but widget never shows
|
|
377
|
+
|
|
378
|
+
- **Cause:** the admin UI only renders the dynamic table after `/admin/metadata-config?entity=…` returns descriptors. If the server cannot associate your `plugins[]` entry with this package (for example `resolve` is a filesystem path, `file:…`, or `require.resolve("medusa-dynamic-metadata")`), options were previously ignored and the widget hid itself (built-in **Metadata** can still show **0 keys**).
|
|
379
|
+
- **Fix:** use `resolve: "medusa-dynamic-metadata"` when possible, or any path whose segments include the folder `medusa-dynamic-metadata` (path-based `resolve` values are supported). Restart the server after changing config.
|
|
380
|
+
- **Verify:** `curl -sS "http://localhost:9000/admin/metadata-config?entity=product_types" -H "Authorization: Bearer <token>"` should return a non-empty `metadataDescriptors` array when `product_types` is configured.
|
|
381
|
+
- **Admin bundle:** after upgrading or developing the plugin locally, run `medusa plugin:build` (or `npm run build` in the package) and restart so Admin loads the latest widgets (for example `product-types-metadata-table`).
|
|
382
|
+
|
|
339
383
|
### “Unable to load metadata configuration”
|
|
340
384
|
|
|
341
385
|
- **Cause:** admin can’t reach `/admin/metadata-config` or plugin not loaded.
|